Beispiel #1
0
bool wxRegKey::GetFirstKey(wxString& strKeyName, long& lIndex)
{
  if ( !Open(Read) )
    return false;

  lIndex = 0;
  return GetNextKey(strKeyName, lIndex);
}
Beispiel #2
0
void XKeyScale::Execute( XSPActObj spActObj, XSPBaseLayer spLayer, float fOverSec )
{
// 	const auto bPlaying = spActObj->GetpSprObj()->IsPlaying();
	auto pSprObj = spActObj->GetpSprObj();
	auto bPlaying = pSprObj->IsPlaying();
	if( pSprObj->GetpParent() )
		bPlaying = pSprObj->GetpParent()->IsPlaying();
	auto spLayerMove = std::static_pointer_cast<XLayerMove>( spLayer );
	if( XASSERT( spLayerMove ) ) {
		auto& cn = spLayerMove->GetcnScaleMutable();
		// 실시간으로 이 키의 뒤에 같은타입의 키가 있는지 찾는다
		auto pNextKey = dynamic_cast<XKeyScale *>( GetNextKey() );
		if( pNextKey ) {
			cn.interpolation = m_Interpolation;
			if( bPlaying )
				cn.vScaleDest = pNextKey->GetvScaleRandomed();
			else
				cn.vScaleDest = pNextKey->GetvScaleOrig();
//			cn.vScaleSrc = m_vScaleOrig;
			cn.vScaleSrc = GetvScaleRandomed();
			cn.fNextKeyFrame = pNextKey->GetfFrame();
			cn.fStartKeyFrame = GetfFrame();
		} else {
			cn.interpolation = xSpr::xNONE;
			cn.vScaleDest = m_vScaleOrig;
			cn.vScaleSrc = GetvScaleRandomed();
			cn.fNextKeyFrame = GetfFrame();
			cn.fStartKeyFrame = GetfFrame();
		}
		if( bPlaying )
			m_vScaleRandomed = AssignRandom();		// 다음 보간을 위해 랜덤값 만듬.
		else
			m_vScaleRandomed = m_vScaleOrig;		// 에디팅 모드에선 오리지날 값만 씀.
	}
// 	if( XASSERT( spLayerMove ) ) {
// 		spLayerMove->SetScale( m_vScale );
// 		CHANNEL_SCALE cn;
// 		cn.vScale = m_vScale;
// 		cn.interpolation = m_Interpolation;
// 		// 		spLayerMove->SetScale( m_fScaleX, m_fScaleY );
// 		// 실시간으로 이 키의 뒤에 같은타입의 키가 있는지 찾는다
// 		auto pNextKey = dynamic_cast<XKeyScale *>( GetNextKey() );
// 		if( m_Interpolation && pNextKey ) {			// 다음키가 있으면 보간으로 움직이도록 한다
// 			cn.vScaleDest = pNextKey->GetvScale();
// 			cn.vScaleSrc = m_vScale;
// 			cn.fNextKeyFrame = pNextKey->GetfFrame();
// 			cn.fStartKeyFrame = GetfFrame();
// 		} else {
// 			cn.interpolation = xSpr::xNONE;
// 			cn.vScaleDest.Set( 1.f );
// 			cn.vScaleSrc.Set( 1.f );
// 			cn.fNextKeyFrame = 0;
// 			cn.fStartKeyFrame = 0;
// 		}
// 		// 채널정보 씀
// 		spLayerMove->SetcnScale( cn );
// 	}
}
Beispiel #3
0
// ----------------------------------------------------------------------------
// delete keys/values
// ----------------------------------------------------------------------------
bool wxRegKey::DeleteSelf()
{
  {
    wxLogNull nolog;
    if ( !Open() ) {
      // it already doesn't exist - ok!
      return true;
    }
  }

  // prevent a buggy program from erasing one of the root registry keys or an
  // immediate subkey (i.e. one which doesn't have '\\' inside) of any other
  // key except HKCR (HKCR has some "deleteable" subkeys)
  if ( m_strKey.empty() ||
       ((m_hRootKey != (WXHKEY) aStdKeys[HKCR].hkey) &&
        (m_strKey.Find(REG_SEPARATOR) == wxNOT_FOUND)) ) {
      wxLogError(_("Registry key '%s' is needed for normal system operation,\ndeleting it will leave your system in unusable state:\noperation aborted."),
                 GetFullName(this));

      return false;
  }

  // we can't delete keys while enumerating because it confuses GetNextKey, so
  // we first save the key names and then delete them all
  wxArrayString astrSubkeys;

  wxString strKey;
  long lIndex;
  bool bCont = GetFirstKey(strKey, lIndex);
  while ( bCont ) {
    astrSubkeys.Add(strKey);

    bCont = GetNextKey(strKey, lIndex);
  }

  size_t nKeyCount = astrSubkeys.Count();
  for ( size_t nKey = 0; nKey < nKeyCount; nKey++ ) {
    wxRegKey key(*this, astrSubkeys[nKey]);
    if ( !key.DeleteSelf() )
      return false;
  }

  // now delete this key itself
  Close();

  m_dwLastError = RegDeleteKey((HKEY) m_hRootKey, m_strKey.t_str());
  // deleting a key which doesn't exist is not considered an error
  if ( m_dwLastError != ERROR_SUCCESS &&
          m_dwLastError != ERROR_FILE_NOT_FOUND ) {
    wxLogSysError(m_dwLastError, _("Can't delete key '%s'"),
                  GetName().c_str());
    return false;
  }

  return true;
}
Beispiel #4
0
HRESULT RegistryClassEnum::GetKey (LPTSTR lpName, const DWORD dwNameLen, PFILETIME lpftLastWriteTime, const bool fGetFirst)
{
	if ((NULL == lpName) || (dwNameLen <= 1))
		return ERROR_BAD_ARGUMENTS;

	DWORD		cbName=dwNameLen;
	HRESULT	hr=(fGetFirst ? GetFirstKey(lpName, &cbName, lpftLastWriteTime) : GetNextKey(lpName, &cbName, lpftLastWriteTime));
	if (hr != S_OK)
		return hr;
	if (cbName >= dwNameLen)
		return ERROR_BUFFER_OVERFLOW;
	lpName[cbName] = _T('\0');	// just making sure

	return S_OK;
}
Beispiel #5
0
bool wxRegKey::Copy(wxRegKey& keyDst)
{
    bool ok = true;

    // copy all sub keys to the new location
    wxString strKey;
    long lIndex;
    bool bCont = GetFirstKey(strKey, lIndex);
    while ( ok && bCont ) {
        wxRegKey key(*this, strKey);
        wxString keyName;
        keyName << GetFullName(&keyDst) << REG_SEPARATOR << strKey;
        ok = key.Copy(keyName);

        if ( ok )
            bCont = GetNextKey(strKey, lIndex);
        else
            wxLogError(_("Failed to copy the registry subkey '%s' to '%s'."),
                   GetFullName(&key), keyName.c_str());

    }

    // copy all values
    wxString strVal;
    bCont = GetFirstValue(strVal, lIndex);
    while ( ok && bCont ) {
        ok = CopyValue(strVal, keyDst);

        if ( !ok ) {
            wxLogSysError(m_dwLastError,
                          _("Failed to copy registry value '%s'"),
                          strVal.c_str());
        }
        else {
            bCont = GetNextValue(strVal, lIndex);
        }
    }

    if ( !ok ) {
        wxLogError(_("Failed to copy the contents of registry key '%s' to '%s'."),
                   GetFullName(this), GetFullName(&keyDst));
    }

    return ok;
}
Beispiel #6
0
char* CNWNXHashSet::OnRequest(char* gameObject, char* Request, char* Parameters)
{
    char* presult = NULL;

    Log(2, "Request: \"%s\"\n", Request);
    Log(3, "Params:  \"%s\"\n", Parameters);

    if (strcmp(Request, "LOOKUP") == 0)
        presult = Lookup(gameObject, Parameters);
    else if (strcmp(Request, "INSERT") == 0)
        presult = Insert(gameObject, Parameters);
    else if (strcmp(Request, "DELETE") == 0)
        presult = Delete(gameObject, Parameters);
    else if (strcmp(Request, "STATUS") == 0)
        presult = (char *)(iLastOperation ? "1" : "0");
    else if (strcmp(Request, "VALID") == 0)
        presult = Valid(gameObject, Parameters);
    else if (strcmp(Request, "EXISTS") == 0)
        presult = Exists(gameObject, Parameters);
    else if (strcmp(Request, "GETFIRSTKEY") == 0)
        presult = GetFirstKey(gameObject, Parameters);
    else if (strcmp(Request, "GETNEXTKEY") == 0)
        presult = GetNextKey(gameObject, Parameters);
    else if (strcmp(Request, "GETCURRENTKEY") == 0)
        presult = GetCurrentKey(gameObject, Parameters);
    else if (strcmp(Request, "GETNTHKEY") == 0)
        presult = GetNthKey(gameObject, Parameters);
    else if (strcmp(Request, "HASNEXT") == 0)
        presult = HasNext(gameObject, Parameters);
    else if (strcmp(Request, "GETSIZE") == 0)
        presult = GetSize(gameObject, Parameters);
    else if (strcmp(Request, "DESTROY") == 0)
        presult = Destroy(gameObject, Parameters);
    else if (strcmp(Request, "CREATE") == 0)
        presult = Create(gameObject, Parameters);

    Log(4, "hashset returns[%s]\n", presult);

    // a return value of NULL tells NWNX that it shouldn't copy
    // any values, a non zero pointer tells NWNX that it should copy
    // the null terminated string pointed to by that pointer back into NWN.
    return presult;
}
Beispiel #7
0
bool wxRegKey::DoExport(wxOutputStream& ostr) const
{
    // write out this key name
    if ( !WriteAsciiChar(ostr, '[') )
        return false;

    if ( !WriteAsciiString(ostr, GetName(false /* no short prefix */)) )
        return false;

    if ( !WriteAsciiChar(ostr, ']') || !WriteAsciiEOL(ostr) )
        return false;

    // dump all our values
    long dummy;
    wxString name;
    wxRegKey& self = const_cast<wxRegKey&>(*this);
    bool cont = self.GetFirstValue(name, dummy);
    while ( cont )
    {
        if ( !DoExportValue(ostr, name) )
            return false;

        cont = GetNextValue(name, dummy);
    }

    // always terminate values by blank line, even if there were no values
    if ( !WriteAsciiEOL(ostr) )
        return false;

    // recurse to subkeys
    cont = self.GetFirstKey(name, dummy);
    while ( cont )
    {
        wxRegKey subkey(*this, name);
        if ( !subkey.DoExport(ostr) )
            return false;

        cont = GetNextKey(name, dummy);
    }

    return true;
}
Beispiel #8
0
int VP8LBuildHuffmanTable(HuffmanCode* const root_table, int root_bits,
                          const int code_lengths[], int code_lengths_size) {
  HuffmanCode* table = root_table;  // next available space in table
  int total_size = 1 << root_bits;  // total size root table + 2nd level table
  int* sorted = NULL;               // symbols sorted by code length
  int len;                          // current code length
  int symbol;                       // symbol index in original or sorted table
  // number of codes of each length:
  int count[MAX_ALLOWED_CODE_LENGTH + 1] = { 0 };
  // offsets in sorted table for each length:
  int offset[MAX_ALLOWED_CODE_LENGTH + 1];

  assert(code_lengths_size != 0);
  assert(code_lengths != NULL);
  assert(root_table != NULL);
  assert(root_bits > 0);

  // Build histogram of code lengths.
  for (symbol = 0; symbol < code_lengths_size; ++symbol) {
    if (code_lengths[symbol] > MAX_ALLOWED_CODE_LENGTH) {
      return 0;
    }
    ++count[code_lengths[symbol]];
  }

  // Error, all code lengths are zeros.
  if (count[0] == code_lengths_size) {
    return 0;
  }

  // Generate offsets into sorted symbol table by code length.
  offset[1] = 0;
  for (len = 1; len < MAX_ALLOWED_CODE_LENGTH; ++len) {
    if (count[len] > (1 << len)) {
      return 0;
    }
    offset[len + 1] = offset[len] + count[len];
  }

  sorted = (int*)WebPSafeMalloc(code_lengths_size, sizeof(*sorted));
  if (sorted == NULL) {
    return 0;
  }

  // Sort symbols by length, by symbol order within each length.
  for (symbol = 0; symbol < code_lengths_size; ++symbol) {
    const int symbol_code_length = code_lengths[symbol];
    if (code_lengths[symbol] > 0) {
      sorted[offset[symbol_code_length]++] = symbol;
    }
  }

  // Special case code with only one value.
  if (offset[MAX_ALLOWED_CODE_LENGTH] == 1) {
    HuffmanCode code;
    code.bits = 0;
    code.value = (uint16_t)sorted[0];
    ReplicateValue(table, 1, total_size, code);
    WebPSafeFree(sorted);
    return total_size;
  }

  {
    int step;              // step size to replicate values in current table
    uint32_t low = -1;     // low bits for current root entry
    uint32_t mask = total_size - 1;    // mask for low bits
    uint32_t key = 0;      // reversed prefix code
    int num_nodes = 1;     // number of Huffman tree nodes
    int num_open = 1;      // number of open branches in current tree level
    int table_bits = root_bits;        // key length of current table
    int table_size = 1 << table_bits;  // size of current table
    symbol = 0;
    // Fill in root table.
    for (len = 1, step = 2; len <= root_bits; ++len, step <<= 1) {
      num_open <<= 1;
      num_nodes += num_open;
      num_open -= count[len];
      if (num_open < 0) {
        WebPSafeFree(sorted);
        return 0;
      }
      for (; count[len] > 0; --count[len]) {
        HuffmanCode code;
        code.bits = (uint8_t)len;
        code.value = (uint16_t)sorted[symbol++];
        ReplicateValue(&table[key], step, table_size, code);
        key = GetNextKey(key, len);
      }
    }

    // Fill in 2nd level tables and add pointers to root table.
    for (len = root_bits + 1, step = 2; len <= MAX_ALLOWED_CODE_LENGTH;
         ++len, step <<= 1) {
      num_open <<= 1;
      num_nodes += num_open;
      num_open -= count[len];
      if (num_open < 0) {
        WebPSafeFree(sorted);
        return 0;
      }
      for (; count[len] > 0; --count[len]) {
        HuffmanCode code;
        if ((key & mask) != low) {
          table += table_size;
          table_bits = NextTableBitSize(count, len, root_bits);
          table_size = 1 << table_bits;
          total_size += table_size;
          low = key & mask;
          root_table[low].bits = (uint8_t)(table_bits + root_bits);
          root_table[low].value = (uint16_t)((table - root_table) - low);
        }
        code.bits = (uint8_t)(len - root_bits);
        code.value = (uint16_t)sorted[symbol++];
        ReplicateValue(&table[key >> root_bits], step, table_size, code);
        key = GetNextKey(key, len);
      }
    }

    // Check if tree is full.
    if (num_nodes != 2 * offset[MAX_ALLOWED_CODE_LENGTH] - 1) {
      WebPSafeFree(sorted);
      return 0;
    }
  }

  WebPSafeFree(sorted);
  return total_size;
}
Beispiel #9
0
bool pgRegKey::GetFirstKey(pgRegKey *&pkey, long &lIndex) const
{
	lIndex = 0;
	return GetNextKey(pkey, lIndex);
}
Beispiel #10
0
// ----------------------------------------------------------------------------
// delete keys/values
// ----------------------------------------------------------------------------
bool wxRegKey::DeleteSelf()
{
  {
    wxLogNull nolog;
    if ( !Open() ) {
      // it already doesn't exist - ok!
      return true;
    }
  }

  // prevent a buggy program from erasing one of the root registry keys or an
  // immediate subkey (i.e. one which doesn't have '\\' inside) of any other
  // key except HKCR (HKCR has some "deleteable" subkeys)
  if ( m_strKey.empty() ||
       ((m_hRootKey != (WXHKEY) aStdKeys[HKCR].hkey) &&
        (m_strKey.Find(REG_SEPARATOR) == wxNOT_FOUND)) ) {
      wxLogError(_("Registry key '%s' is needed for normal system operation,\ndeleting it will leave your system in unusable state:\noperation aborted."),
                 GetFullName(this));

      return false;
  }

  // we can't delete keys while enumerating because it confuses GetNextKey, so
  // we first save the key names and then delete them all
  wxArrayString astrSubkeys;

  wxString strKey;
  long lIndex;
  bool bCont = GetFirstKey(strKey, lIndex);
  while ( bCont ) {
    astrSubkeys.Add(strKey);

    bCont = GetNextKey(strKey, lIndex);
  }

  size_t nKeyCount = astrSubkeys.Count();
  for ( size_t nKey = 0; nKey < nKeyCount; nKey++ ) {
    wxRegKey key(*this, astrSubkeys[nKey]);
    if ( !key.DeleteSelf() )
      return false;
  }

  // now delete this key itself
  Close();

  // deleting a key which doesn't exist is not considered an error
#if wxUSE_DYNLIB_CLASS
  wxDynamicLibrary dllAdvapi32(wxT("advapi32"));
  // Minimum supported OS for RegDeleteKeyEx: Vista, XP Pro x64, Win Server 2008, Win Server 2003 SP1
  if(dllAdvapi32.HasSymbol(wxT("RegDeleteKeyEx")))
  {
    typedef LONG (WINAPI *RegDeleteKeyEx_t)(HKEY, LPCTSTR, REGSAM, DWORD);
    wxDYNLIB_FUNCTION(RegDeleteKeyEx_t, RegDeleteKeyEx, dllAdvapi32);

    m_dwLastError = (*pfnRegDeleteKeyEx)((HKEY) m_hRootKey, m_strKey.t_str(),
        GetMSWViewFlags(m_viewMode),
        0);    // This parameter is reserved and must be zero.
  }
  else
#endif // wxUSE_DYNLIB_CLASS
  {
    m_dwLastError = RegDeleteKey((HKEY) m_hRootKey, m_strKey.t_str());
  }

  if ( m_dwLastError != ERROR_SUCCESS &&
          m_dwLastError != ERROR_FILE_NOT_FOUND ) {
    wxLogSysError(m_dwLastError, _("Can't delete key '%s'"),
                  GetName().c_str());
    return false;
  }

  return true;
}
Beispiel #11
0
//--------------------------------------------------------
//
void ConfigActionHandler(dword key)
{
	int		count, result;

	switch ( chosenConfigLine )
	{
		case 1 :    switch ( key )										// Model type
					{
						case RKEY_VolUp:	if ( currentModelType == TF5800 )
						    				{
											    currentModelType = TF5000;
												CreateTF5000Keys( &localKeyCodes );
											}
											else
											{
                                                currentModelType = TF5800;
												CreateTF5800Keys( &localKeyCodes );
											}
											DisplayConfigLine( chosenConfigLine );
											DisplayConfigLine( 3 );					// update the activation key code
											break;

											
						case RKEY_VolDown:	if ( currentModelType == TF5800 )
						    				{
											    currentModelType = TF5000;
												CreateTF5000Keys( &localKeyCodes );
											}
											else
											{
                                                currentModelType = TF5800;
												CreateTF5800Keys( &localKeyCodes );
											}
											DisplayConfigLine( chosenConfigLine );
											DisplayConfigLine( 3 );					// update the activation key code
											break;


						case RKEY_Ok :		break;

						default :			break;
					}
					break;

		case 2 :														// Language
				    break;

					
		case 3 :	switch ( key )										// Activation key
					{
						case RKEY_VolUp:	CurrentActivationKey = GetNextKey( &localKeyCodes, CurrentActivationKey );
											DisplayConfigLine( chosenConfigLine );
											break;

						case RKEY_VolDown:	CurrentActivationKey = GetPreviousKey( &localKeyCodes, CurrentActivationKey );
											DisplayConfigLine( chosenConfigLine );
											break;


						case RKEY_Ok :		DirectEnterActivateKey();
											break;

						default :			break;
					}
					break;


		case 4 :	switch ( key )										// Logo highlight
					{
						case RKEY_VolUp:	SelectNextHighlight( &currentHighlight );
											DisplayConfigLine( chosenConfigLine );
											break;

						case RKEY_VolDown:	SelectPreviousHighlight( &currentHighlight );
											DisplayConfigLine( chosenConfigLine );
											break;

						default :			break;
					}
					break;



		case 5 :	switch ( key )										// Selection sytle
					{
						case RKEY_VolUp:	if ( displayOption < 1 ) displayOption++; else displayOption = 0;
											DisplayConfigLine( chosenConfigLine );
											break;

						case RKEY_VolDown:	if ( displayOption > 0 ) displayOption--; else displayOption = 1;
											DisplayConfigLine( chosenConfigLine );
											break;

						default :			break;
					}
					break;

		case 6 :	switch ( key )										// NowNext Tag
					{
						case RKEY_VolUp:	if ( currentNowNextTag < 1 ) currentNowNextTag++; else currentNowNextTag = 0;
											DisplayConfigLine( chosenConfigLine );
											break;

						case RKEY_VolDown:	if ( currentNowNextTag > 0 ) currentNowNextTag--; else currentNowNextTag = 1;
											DisplayConfigLine( chosenConfigLine );
											break;

						default :			break;
					}
					break;
					
					
		case 7 :	switch ( key )										// Progress Information
					{
						case RKEY_VolUp:	if ( currentProgressInfo < 1 ) currentProgressInfo++; else currentProgressInfo = 0;
											DisplayConfigLine( chosenConfigLine );
											break;

						case RKEY_VolDown:	if ( currentProgressInfo > 0 ) currentProgressInfo--; else currentProgressInfo = 1;
											DisplayConfigLine( chosenConfigLine );
											break;

						default :			break;
					}
					break;
					
		case 8 :	switch ( key )										// Recall Key Option
					{
						case RKEY_VolUp:	if ( currentRecallKey < 1 ) currentRecallKey++; else currentRecallKey = 0;
											DisplayConfigLine( chosenConfigLine );
											break;

						case RKEY_VolDown:	if ( currentRecallKey > 0 ) currentRecallKey--; else currentRecallKey = 1;
											DisplayConfigLine( chosenConfigLine );
											break;

						default :			break;
					}
					break;
					
		case 9 :	switch ( key )										// Screen Fade Options  0 - 600seconds
					{
						case RKEY_VolUp:	if ( currentScreenFade < 600 ) currentScreenFade++; else currentScreenFade = 0;
											DisplayConfigLine( chosenConfigLine );
											break;

						case RKEY_Forward:	if (currentScreenFade > 2)
                                            { if ( currentScreenFade < 591 ) currentScreenFade=currentScreenFade+10; 
                                              else currentScreenFade = 600;
                                            }
                                            else currentScreenFade = 10;
				                            DisplayConfigLine( chosenConfigLine );
                                            break;

						case RKEY_VolDown:	if ( currentScreenFade > 0 ) currentScreenFade--; else currentScreenFade = 600;
											DisplayConfigLine( chosenConfigLine );
											break;

						case RKEY_Rewind:	if (currentScreenFade > 2) 
                                            { if (currentScreenFade >11) currentScreenFade=currentScreenFade-10; 
                                              else currentScreenFade = 2; 
											  DisplayConfigLine( chosenConfigLine );
                                            }  
											break;

						default :			break;
					}
					break;

		case 11 :	switch ( key )										// Channel Start Option
					{
						case RKEY_VolUp:	if ( currentStartChannel < 1 ) currentStartChannel++; else currentStartChannel = 0;
											DisplayConfigLine( chosenConfigLine );
											break;

						case RKEY_VolDown:	if ( currentStartChannel > 0 ) currentStartChannel--; else currentStartChannel = 1;
											DisplayConfigLine( chosenConfigLine );
											break;

						default :			break;
					}
					break;

		case 12 :	switch ( key )										// Timer Start Offset  0 - 60minutes
					{
						case RKEY_VolUp:	if ( currentStartOffset < 60 ) currentStartOffset++; else currentStartOffset = 0;
											DisplayConfigLine( chosenConfigLine );
											break;

						case RKEY_Forward:	if ( currentStartOffset < 55 ) currentStartOffset=currentStartOffset+5; else currentStartOffset = 60;
				                            DisplayConfigLine( chosenConfigLine );
                                            break;

						case RKEY_VolDown:	if ( currentStartOffset > 0 ) currentStartOffset--; else currentStartOffset = 60;
											DisplayConfigLine( chosenConfigLine );
											break;

						case RKEY_Rewind:	if (currentStartOffset >6) currentStartOffset=currentStartOffset-5; else currentStartOffset = 0; 
				                            DisplayConfigLine( chosenConfigLine );
                                            break;

						default :			break;
					}
					break;

		case 13 :	switch ( key )										// Timer End Offset  0 - 60minutes
					{
						case RKEY_VolUp:	if ( currentEndOffset < 60 ) currentEndOffset++; else currentEndOffset = 0;
											DisplayConfigLine( chosenConfigLine );
											break;

						case RKEY_Forward:	if ( currentEndOffset < 55 ) currentEndOffset=currentEndOffset+5; else currentEndOffset = 60;
				                            DisplayConfigLine( chosenConfigLine );
                                            break;

						case RKEY_VolDown:	if ( currentEndOffset > 0 ) currentEndOffset--; else currentEndOffset = 60;
											DisplayConfigLine( chosenConfigLine );
											break;

						case RKEY_Rewind:	if (currentEndOffset >6) currentEndOffset=currentEndOffset-5; else currentEndOffset = 0; 
				                            DisplayConfigLine( chosenConfigLine );
                                            break;

						default :			break;
					}
					break;

		case 14 :	switch ( key )										// Guide Startup Option
					{
						case RKEY_VolUp:	if ( currentGuideStart < 2 ) currentGuideStart++; else currentGuideStart = 0;
											DisplayConfigLine( chosenConfigLine );
											break;

						case RKEY_VolDown:	if ( currentGuideStart > 0 ) currentGuideStart--; else currentGuideStart = 2;
											DisplayConfigLine( chosenConfigLine );
											break;

						default :			break;
					}
					break;
					
		case 15 :	switch ( key )										// TV Ratio Option
					{
						case RKEY_VolUp:	if ( currentTvRatio < 1 ) currentTvRatio++; else currentTvRatio = 0;
											DisplayConfigLine( chosenConfigLine );
											break;

						case RKEY_VolDown:	if ( currentTvRatio > 0 ) currentTvRatio--; else currentTvRatio = 1;
											DisplayConfigLine( chosenConfigLine );
											break;

						default :			break;
					}
					break;

		case 16 :	switch ( key )										// Guide Window Option
					{
						case RKEY_VolUp:	if ( currentGuideWindowOption < 1 ) currentGuideWindowOption++; else currentGuideWindowOption = 0;
											DisplayConfigLine( chosenConfigLine );
											break;

						case RKEY_VolDown:	if ( currentGuideWindowOption > 0 ) currentGuideWindowOption--; else currentGuideWindowOption = 1;
											DisplayConfigLine( chosenConfigLine );
											break;

						default :			break;
					}
					break;

		case 17 :	switch ( key )										// Progress Bar colours
					{
		            	case RKEY_VolUp:	if (currentProgressBarOption < 3) currentProgressBarOption = currentProgressBarOption + 1;
		            	                    else currentProgressBarOption = 0;
											DisplayConfigLine( chosenConfigLine );
											break;

											
						case RKEY_VolDown:	if (currentProgressBarOption > 0) currentProgressBarOption = currentProgressBarOption - 1;
		            	                    else currentProgressBarOption = 3;
											DisplayConfigLine( chosenConfigLine );
											break;

						default :			break;
					}
					break;

		case 18 :	switch ( key )										// Progress Bar colours
					{
						case RKEY_VolDown:
		            	case RKEY_VolUp:	currentChannelNumberOption = !currentChannelNumberOption;
											DisplayConfigLine( chosenConfigLine );
											break;

						default :			break;
					}
					break;

		case 10 :
        case 20 :														// bottom line commands : Save, or Cancel
						switch ( key )
						{
							case RKEY_VolUp:	if ( configOption < 1 ) configOption++;
												else configOption = 0;
												break;

							case RKEY_VolDown:	if ( configOption > 0 ) configOption--;
												else configOption = 1;
												break;


							case RKEY_Ok :		switch ( configOption )
												{
													case 0 :	SaveConfiguration();		// save
																break;
																
													case 1 :	break;						// cancel
													default :	break;
												}

												CloseConfigWindow();		// Close the edit window
												redrawWindow = TRUE;		// will cause a redraw of timer list
												break;

							default :			break;
						}

						DisplayConfigLine( chosenConfigLine );
					    break;
						
		default :		break;
	}

}
bool CEntityMapData::GetFirstKey( char *keyName, char *value )
{
	m_pCurrentKey = m_pEntData; // reset the status pointer
	return GetNextKey( keyName, value );
}
Beispiel #13
0
int CKeyFile::GetFirstKey( CKeyPair * key )
{
    ReOpen( "rt" );
    return GetNextKey(key);
}