예제 #1
0
파일: KEYBOARD.CPP 프로젝트: jcbaar/BCC
// Refresh page contents.
void KeyboardPage::RefreshData( LPPARSER pParser )
{
	_ASSERT_VALID( pParser );

	// Save parser.
	m_pParser = pParser;

	// Reset list box.
	m_Keys.SetRedraw( FALSE );
	m_Keys.ResetContent();

	// Go through the key hashes.
	LPHASH lpHash, lpNext;
	TCHAR szKeyString[ 256 ];
	for ( int i = 0; i < HASHSIZE; i++ )
	{
                for ( lpHash = pParser->aHash[ i ]; lpHash; lpHash = lpNext )
		{
			// Pick up next hash in this chain.
			lpNext = lpHash->lpNext;

			// Convert code and qualifier into
			// a string.
			::CodeQual2Str( lpHash->cCode, lpHash->cQual, szKeyString, 256 );

			// Add the string to the list.
			m_Keys.AddString( szKeyString );
		}
	}
	m_Keys.SetRedraw();

	// Setup the GUI.
	SetupControls();
}
bool CGUIWindowSettingsCategory::OnAction(const CAction &action)
{
  switch (action.GetID())
  {
    case ACTION_SETTINGS_LEVEL_CHANGE:
    {
      //Test if we can access the new level
      if (!g_passwordManager.CheckSettingLevelLock(CViewStateSettings::GetInstance().GetNextSettingLevel(), true))
        return false;
      
      CViewStateSettings::GetInstance().CycleSettingLevel();
      CSettings::GetInstance().Save();

      // try to keep the current position
      std::string oldCategory;
      if (m_iCategory >= 0 && m_iCategory < (int)m_categories.size())
        oldCategory = m_categories[m_iCategory]->GetId();

      SET_CONTROL_LABEL(CONTRL_BTN_LEVELS, 10036 + (int)CViewStateSettings::GetInstance().GetSettingLevel());
      // only re-create the categories, the settings will be created later
      SetupControls(false);

      m_iCategory = 0;
      // try to find the category that was previously selected
      if (!oldCategory.empty())
      {
        for (int i = 0; i < (int)m_categories.size(); i++)
        {
          if (m_categories[i]->GetId() == oldCategory)
          {
            m_iCategory = i;
            break;
          }
        }
      }

      CreateSettings();
      return true;
    }

    default:
      break;
  }

  return CGUIDialogSettingsManagerBase::OnAction(action);
}
예제 #3
0
파일: KEYWORDS.CPP 프로젝트: jcbaar/BCC
// WM_INITDIALOG handler.
LRESULT KeywordEdit::OnInitDialog( LPPROPSHEETPAGE pPsp )
{
	// Setup controls.
	m_Tools.Attach( GetDlgItemHandle( IDC_TOOLS ));
	m_Tools.SetupToolbar( TRUE, FALSE, FALSE, TRUE, TRUE );
	m_Keys.Attach( GetDlgItemHandle( IDC_KEYS ));
	m_Keys.SetupToolbar( FALSE, FALSE, TRUE, FALSE );
	m_List.Attach( GetDlgItemHandle( IDC_LIST ));
	m_KeyList.Attach( GetDlgItemHandle( IDC_WORDS ));
	m_Case.Attach( GetDlgItemHandle( IDC_CASE ));

	// Setup values.
	m_Case.SetCheck( m_bCase ? BST_CHECKED : BST_UNCHECKED );
	m_List.SetKeywordList( &m_KeyLst );
	
	// Setup the GUI.
	SetupControls();
	return TRUE;
}
예제 #4
0
void
MsnWepDlg::Show()
{
	FormWindow::Show();
	ShowMsnDlg();

	if (mission) {
		for (int i = 0; i < mission->GetElements().size(); i++) {
			MissionElement* e = mission->GetElements().at(i);
			if (e->Player()) {
				elem = e;
				break;
			}
		}
	}

	if (elem) {
		SetupControls();
	}
}
예제 #5
0
void CSettingsPage::UpdateBrother()
{
	if(!m_dad->m_Brother){
		TRACE0("No brother on update\n");
		return;
	}
	if(::IsWindow(m_hWnd))
		UpdateData();
CBrother toCompare;
	toCompare = *m_dad->m_Brother;
	m_dad->m_Brother->m_IntervalBad=m_IntervalBad;
	m_dad->m_Brother->m_IntervalGood=m_IntervalGood;
	if(m_OverrideIntervals)
		m_dad->m_Brother->flags|=CBrother::flagsOverrideIntervals;
	else
		m_dad->m_Brother->flags&=~CBrother::flagsOverrideIntervals;
	m_dad->m_Brother->m_Retries=m_Retries;
	if(m_OverrideRetries)
		m_dad->m_Brother->flags|=CBrother::flagsOverrideRetries;
	else
		m_dad->m_Brother->flags&=~CBrother::flagsOverrideRetries;
	m_dad->m_Brother->m_TimeOut=m_TimeOut;
	if(m_OverrideTimeout)
		m_dad->m_Brother->flags|=CBrother::flagsOverrideTimeout;
	else
		m_dad->m_Brother->flags&=~CBrother::flagsOverrideTimeout;
	m_dad->m_Brother->ParentalAdjust();
	if(toCompare!=(*m_dad->m_Brother)){
	CDocument *pDoc = m_dad->m_Daddy->GetDocument();
		ASSERT(pDoc);
		pDoc->SetModifiedFlag();
	}
	if(::IsWindow(m_hWnd)){
		UpdateData(FALSE);
		SetupControls();
	}
}
예제 #6
0
void CSettingsPage::UpdatePage()
{
	if(!m_dad->m_Brother)
		return;
	if(::IsWindow(m_hWnd)){
		if(m_dad->m_Brother->m_Daddy){
			m_OverrideIntervalsCtl.EnableWindow(TRUE);
			m_OverrideRetriesCtl.EnableWindow(TRUE);
			m_OverrideTimeoutCtl.EnableWindow(TRUE);
		}else{
			m_OverrideIntervalsCtl.EnableWindow(FALSE);
			m_OverrideRetriesCtl.EnableWindow(FALSE);
			m_OverrideTimeoutCtl.EnableWindow(FALSE);
		}
	}
	if(m_dad->m_Brother->flags&CBrother::flagsOverrideIntervals)
		m_OverrideIntervals=TRUE;
	else
		m_OverrideIntervals=FALSE;
	if(m_dad->m_Brother->flags&CBrother::flagsOverrideTimeout)
		m_OverrideTimeout=TRUE;
	else
		m_OverrideTimeout=FALSE;
	if(m_dad->m_Brother->flags&CBrother::flagsOverrideRetries)
		m_OverrideRetries=TRUE;
	else
		m_OverrideRetries=FALSE;
	m_IntervalBad=m_dad->m_Brother->m_IntervalBad;
	m_IntervalGood=m_dad->m_Brother->m_IntervalGood;
	m_Retries=m_dad->m_Brother->m_Retries;
	m_TimeOut=m_dad->m_Brother->m_TimeOut;
	if(::IsWindow(m_hWnd)){
		UpdateData(FALSE);
		SetupControls();
	}
}
예제 #7
0
void psMovementManager::SetActor(GEMClientActor* a)
{
    actor = a ? a : psengine->GetCelClient()->GetMainPlayer() ;
    CS_ASSERT(actor);
    SetupControls();
}
예제 #8
0
/* This processes SDL events */
void I_GetEvent()
{
    static  event_t  event;
    static  event_t  kbevent;

	unsigned long key;
	if(!controls_set)
        SetupControls();

	event.type = ev_joystick;
	event.data1 = 0;
	event.data2 = 0;
	event.data3 = 0;

	key = Read_Key();

	if (analog) {
 	    if (ctl.ly >= 0xD0) event.data3 = 1;  // DOWN
 	    if (ctl.ly <= 0x10) event.data3 = -1;    // UP
 	    if (ctl.lx <= 0x10) event.data2 = -1;  // LEFT
 	    if (ctl.lx >= 0xD0) event.data2 = 1;  // RIGHT
	}
    else {
        if (ctl.buttons & SCE_CTRL_DOWN)	event.data3 = 1;  // DOWN
        if (ctl.buttons & SCE_CTRL_UP) 	event.data3 = -1;    // UP
        if (ctl.buttons & SCE_CTRL_LEFT)	event.data2 = -1;  // LEFT
        if (ctl.buttons & SCE_CTRL_RIGHT)	event.data2 = 1;  // RIGHT
    }

    //printf("I_GetEvent: buttons: 0x%x data1: %d data2: %d data3: %d", ctl.buttons, event.data1, event.data2, event.data3);

	D_PostEvent(&event);
	
    if (key & SCE_CTRL_LTRIGGER) {
        if (key & SCE_CTRL_RTRIGGER) {
            if (key & SCE_CTRL_START) {
	            NewPrompter();
	            I_FinishUpdate2();
	        }
	    }
	}
	else {
	
	if (d_controls[1] == KEY_ENTER || d_controls[1] == KEY_ESCAPE ||
	    d_controls[1] == ' ' || d_controls[1] == KEY_TAB) {
	    if (key & SCE_CTRL_START)
	    {
	    kbevent.type = ev_keydown;
	    kbevent.data1 = d_controls[1];
	    D_PostEvent(&kbevent);
	    }
	    else  
	    {
	    kbevent.type = ev_keyup;
	    kbevent.data1 = d_controls[1];
	    D_PostEvent(&kbevent);
	    }  
	}
	else {
	    if (ctl.buttons & SCE_CTRL_START)
	    {
	    kbevent.type = ev_keydown;
	    kbevent.data1 = d_controls[1];
	    D_PostEvent(&kbevent);
	    }
	    else  
	    {
	    kbevent.type = ev_keyup;
	    kbevent.data1 = d_controls[1];
	    D_PostEvent(&kbevent);
	    }
	}
	if (d_controls[2] == KEY_ENTER || d_controls[2] == KEY_ESCAPE ||
	    d_controls[2] == ' ' || d_controls[2] == KEY_TAB) {
 	    if (key & SCE_CTRL_SELECT)
	    {
	    kbevent.type = ev_keydown;
	    kbevent.data1 = d_controls[2];
	    D_PostEvent(&kbevent);
	    }
	    else  
	    {
	    kbevent.type = ev_keyup;
	    kbevent.data1 = d_controls[2];
	    D_PostEvent(&kbevent);
	    }  
	}
	else {
	    if (ctl.buttons & SCE_CTRL_SELECT)
	    {
	    kbevent.type = ev_keydown;
	    kbevent.data1 = d_controls[2];
	    D_PostEvent(&kbevent);
	    }
	    else  
	    {
	    kbevent.type = ev_keyup;
	    kbevent.data1 = d_controls[2];
	    D_PostEvent(&kbevent);
	    }
	}
	if (d_controls[3] == KEY_ENTER || d_controls[3] == KEY_ESCAPE ||
	    d_controls[3] == ' ' || d_controls[3] == KEY_TAB) {
	    if (key & SCE_CTRL_CROSS)
	    {
	    kbevent.type = ev_keydown;
	    kbevent.data1 = d_controls[3];
	    D_PostEvent(&kbevent);
	    }
	    else
	    {
	    kbevent.type = ev_keyup;
	    kbevent.data1 = d_controls[3];
	    D_PostEvent(&kbevent);
	    }
	}
	else {
	    if (ctl.buttons & SCE_CTRL_CROSS)
	    {
	    kbevent.type = ev_keydown;
	    kbevent.data1 = d_controls[3];
	    D_PostEvent(&kbevent);
	    }
	    else
	    {
	    kbevent.type = ev_keyup;
	    kbevent.data1 = d_controls[3];
	    D_PostEvent(&kbevent);
	    }
	}

	if (gamestate == GS_LEVEL)
	{
        boolean looped = false;

		plyrweap = &players[consoleplayer];

		num = plyrweap->readyweapon;
		
		if (analog) {
		
		
		if (key & SCE_CTRL_UP)
		{
            looped = false;

			while (1)
            {
				++num;
                if (num > wp_supershotgun)
                {
                    if (looped)
                    {
                        num = plyrweap->readyweapon;
                        break;
                    }

                    num = wp_fist;
                    looped = true;
                }

				if (plyrweap->weaponowned[num])
				{
					plyrweap->pendingweapon = num;
					break;
				}

				
			}

		kbevent.type = ev_keydown;
		kbevent.data1 = KEY_1 + num;
		D_PostEvent(&kbevent);
		}
		else  
		{

		kbevent.type = ev_keyup;
		kbevent.data1 = KEY_1 + num;
		D_PostEvent(&kbevent);
		}  
		
		if (key & SCE_CTRL_DOWN)
        {
            looped = false;

			while (1)
            {
				--num;
                if (num == -1)
                {
                    if (looped)
                    {
                        num = plyrweap->readyweapon;
                        break;
                    }

                    num = wp_supershotgun;
                    looped = true;
                }
				if (plyrweap->weaponowned[num])
				{
					plyrweap->pendingweapon = num;
					break;
				}
			}

			kbevent.type = ev_keydown;
			kbevent.data1 = KEY_1 + num;
			D_PostEvent(&kbevent);
		}
		}

		if (!analog) {
		if (ctl.ly <= 0x10)
		{
            looped = false;

			while (1)
            {
				++num;
				if (num > wp_supershotgun)
                {
                    if (looped)
                    {
                        num = plyrweap->readyweapon;
                        break;
                    }

                    num = wp_fist;
                    looped = true;
                }

				if (plyrweap->weaponowned[num])
				{
					plyrweap->pendingweapon = num;
					break;
				}
			}

			kbevent.type = ev_keydown;
			kbevent.data1 = KEY_1 + num;
			D_PostEvent(&kbevent);
		}
		else  
        {
			kbevent.type = ev_keyup;
			kbevent.data1 = KEY_1 + num;
			D_PostEvent(&kbevent);
		}
		if (ctl.ly >= 0xD0)
		{
            looped = false;

			while (1)
            {
                --num;
                if (num == -1)
                {
                    if (looped)
                    {
                        num = plyrweap->readyweapon;
                        break;
                    }

                    num = wp_supershotgun;
                    looped = true;
                }

				if (plyrweap->weaponowned[num])
				{
					plyrweap->pendingweapon = num;
					break;
				}
			}

			kbevent.type = ev_keydown;
			kbevent.data1 = KEY_1 + num;
			D_PostEvent(&kbevent);
		}
        }
    }

	if (d_controls[5] == KEY_ENTER || d_controls[5] == KEY_ESCAPE ||
	    d_controls[5] == ' ' || d_controls[5] == KEY_TAB) {
	    if (key & SCE_CTRL_TRIANGLE)
	    {
	    	kbevent.type = ev_keydown;
	    	kbevent.data1 = d_controls[5];
	    	D_PostEvent(&kbevent);
	    }
	    else  
	    {
	    kbevent.type = ev_keyup;
	    kbevent.data1 = d_controls[5];
	    D_PostEvent(&kbevent);
	    }
	}
	else {
	    if (ctl.buttons & SCE_CTRL_TRIANGLE)
	    {
	    kbevent.type = ev_keydown;
	    kbevent.data1 = d_controls[5];
	    D_PostEvent(&kbevent);
	    }
	    else  
	    {
	    kbevent.type = ev_keyup;
	    kbevent.data1 = d_controls[5];
	    D_PostEvent(&kbevent);
	    }
	}
	if (d_controls[8] == KEY_ENTER || d_controls[8] == KEY_ESCAPE ||
	    d_controls[8] == ' ' || d_controls[8] == KEY_TAB) {
        if (key & SCE_CTRL_LTRIGGER)
	    {
	    kbevent.type = ev_keydown;
	    kbevent.data1 = d_controls[8];
	    D_PostEvent(&kbevent);
	    }
	    else  
	    {
	    kbevent.type = ev_keyup;
	    kbevent.data1 = d_controls[8];
	    D_PostEvent(&kbevent);
	    }
	}
	else {
        if (ctl.buttons & SCE_CTRL_LTRIGGER)
	    {
	    kbevent.type = ev_keydown;
	    kbevent.data1 = d_controls[8];
	    D_PostEvent(&kbevent);
	    }
	    else  
	    {
	    kbevent.type = ev_keyup;
	    kbevent.data1 = d_controls[8];
	    D_PostEvent(&kbevent);
	    }
	}
	if (d_controls[9] == KEY_ENTER || d_controls[9] == KEY_ESCAPE ||
	    d_controls[9] == ' ' || d_controls[9] == KEY_TAB) {
        if (key & SCE_CTRL_RTRIGGER)
	    {
	    kbevent.type = ev_keydown;
	    kbevent.data1 = d_controls[9];
	    D_PostEvent(&kbevent);
	    }
	    else  
	    {
	    kbevent.type = ev_keyup;
	    kbevent.data1 = d_controls[9];
	    D_PostEvent(&kbevent);
	    }
	}
	else {
        if (ctl.buttons & SCE_CTRL_RTRIGGER)
	    {
	    kbevent.type = ev_keydown;
	    kbevent.data1 = d_controls[9];
	    D_PostEvent(&kbevent);
	    }
	    else  
	    {
	    kbevent.type = ev_keyup;
	    kbevent.data1 = d_controls[9];
	    D_PostEvent(&kbevent);
	    }
	}
	if (d_controls[6] == KEY_ENTER || d_controls[6] == KEY_ESCAPE ||
	    d_controls[6] == ' ' || d_controls[6] == KEY_TAB) {
	    if(key & SCE_CTRL_SQUARE){
	    kbevent.type = ev_keydown;
	    kbevent.data1 = d_controls[6];
	    D_PostEvent(&kbevent);
	    }
	    else  
	    {
	    kbevent.type = ev_keyup;
	    kbevent.data1 = d_controls[6];
	    D_PostEvent(&kbevent);
	    }
	}
	else {
	    if(ctl.buttons & SCE_CTRL_SQUARE){
	    kbevent.type = ev_keydown;
	    kbevent.data1 = d_controls[6];
	    D_PostEvent(&kbevent);
	    }
	    else  
	    {
	    kbevent.type = ev_keyup;
	    kbevent.data1 = d_controls[6];
	    D_PostEvent(&kbevent);
	    }
	}
	if (d_controls[7] == KEY_ENTER || d_controls[7] == KEY_ESCAPE ||
	    d_controls[7] == ' ' || d_controls[7] == KEY_TAB) {
	    if(key & SCE_CTRL_CIRCLE) {
	        kbevent.type = ev_keydown;
		kbevent.data1 = d_controls[7];
		D_PostEvent(&kbevent);
	    }
	    else  
	    {
	    kbevent.type = ev_keyup;
	    kbevent.data1 = d_controls[7];
	    D_PostEvent(&kbevent);
	    }
	}
	else {
	    if(ctl.buttons & SCE_CTRL_CIRCLE) {
	        kbevent.type = ev_keydown;
		kbevent.data1 = d_controls[7];
		D_PostEvent(&kbevent);
	    }
	    else  
	    {
	    kbevent.type = ev_keyup;
	    kbevent.data1 = d_controls[7];
	    D_PostEvent(&kbevent);
	    }
	}
	}
}
예제 #9
0
파일: KEYBOARD.CPP 프로젝트: jcbaar/BCC
// WM_COMMAND handler.
LRESULT KeyboardPage::OnCommand( UINT nNotifyCode, UINT nCtrlID, HWND hWndCtrl )
{
	// What's up?
	switch ( nCtrlID )
	{
		case	EditToolbar::ETID_NEW:
			// Command toolbar?
			if ( hWndCtrl == m_ComTools )
			{
				// Obtain button rectangle.
				ClsRect rc;
				m_ComTools.GetItemRect( 0, rc );

				// Convert rectangle to screen
				// coordinates.
				m_ComTools.ClientToScreen( rc );

				// Show the menu.
				::TrackPopupMenuEx( m_Menu,//*m_Menu.GetSubMenu( 0 ),
						  TPM_LEFTALIGN,
						  rc.Left(),
						  rc.Bottom(),
						  GetSafeHWND(),
						  NULL );
			}
			else
			{
				// Show the key recorder.
				KeyRec kr;
				ClsString str;
				if ( kr.KeyRecord( *GetParent(), str ))
					AddKeyMapping( str );
			}
			return 0;

		case	EditToolbar::ETID_DELETE:
			// Command toolbar?
			if ( hWndCtrl == m_ComTools )
			{
				// Get current selection.
				LPCNODE pCNode = ( LPCNODE )m_Commands.GetItemData( m_Commands.GetCurSel());
				if ( pCNode != ( LPCNODE )LB_ERR )
				{
					// Save selection position.
					int nSel = m_Commands.GetCurSel();
					int nPos = nSel;
					int nMax = m_Commands.GetCount();
					
					// Select the next or previous
					// entry.
					if ( nSel == nMax - 1 && nSel ) nSel--;
					else				nSel++;

					// Select the new item
					m_Commands.SetCurSel( nSel );

					// Remove the node from the listview.
					m_Commands.DeleteString( nPos );

					// Remove it from the command list.
					Remove(( LPNODE )pCNode );

					// Free the node
					// data.
					if ( pCNode->nType != CTYPE_HARDCODED )
						::FreePooled( pParserPool, pCNode->pcStr );

					// And the node itself.
					::FreePooled( pParserPool, pCNode );

					// Setup GUI.
					SetupControls();
					pSettings->Changed( m_pParser );
				}
				return 0;
			}
			else
			{
				// Get the key descriptor.
				TCHAR szKeyString[ 64 ];
				int nSel = m_Keys.GetCurSel(), nMax = m_Keys.GetCount();
				if ( nSel != LB_ERR )
				{
					if ( m_Keys.GetText( nSel, szKeyString ) != LB_ERR )
					{
						// Convert to a code and qualifier.
						TCHAR cCode, cQual;
						if ( ::Str2CodeQual( szKeyString, &cCode, &cQual ))
						{
							// Remove the hash. This will automatically destroy
							// the command-list aswell.
							::RemHash( pParserPool, m_pParser->aHash, cCode, cQual );

							// Remove it from the listview.
							m_Keys.DeleteString( nSel );

							// Was it the last one?
							if ( nSel == nMax - 1 ) nSel--;

							// Select the next or previous key.
							m_Keys.SetCurSel( nSel );
							SendMessage( WM_COMMAND, MAKEWPARAM( IDC_KEYS, LBN_SELCHANGE ), ( LPARAM )m_Keys.GetSafeHWND());

							// Changes made...
							pSettings->Changed( m_pParser );
						}
					}
				}
			}
			return 0;

		case	EditToolbar::ETID_UP:
		{
			// Valid node?
			LPCNODE pCNode = ( LPCNODE )m_Commands.GetItemData( m_Commands.GetCurSel());
			if ( pCNode != ( LPCNODE )LB_ERR )
			{
				// Get it's predecessor.
				LPCNODE pCPrev = pCNode->lpPrev;

				// Swap both data entries.
				CNODE cTemp;
				cTemp.nType	  = pCPrev->nType;
				cTemp.uCommand	  = pCPrev->uCommand;
				pCPrev->nType	  = pCNode->nType;
				pCPrev->uCommand  = pCNode->uCommand;
				pCNode->nType	  = cTemp.nType;
				pCNode->uCommand  = cTemp.uCommand;

				// Select the previous item which
				// in fact is the already selected
				// item.
				m_Commands.SetCurSel( m_Commands.GetCurSel() - 1 );
				SetupControls();
				pSettings->Changed( m_pParser );
				return 0;
			}
		}

		case	EditToolbar::ETID_DOWN:
		{
			// Valid node?
			LPCNODE pCNode = ( LPCNODE )m_Commands.GetItemData( m_Commands.GetCurSel());
			if ( pCNode != ( LPCNODE )LB_ERR )
			{
				// Get it's successor.
				LPCNODE pCNext = pCNode->lpNext;
				
				// Swap both data entries.
				CNODE cTemp;
				cTemp.nType	  = pCNext->nType;
				cTemp.uCommand	  = pCNext->uCommand;
				pCNext->nType	  = pCNode->nType;
				pCNext->uCommand  = pCNode->uCommand;
				pCNode->nType	  = cTemp.nType;
				pCNode->uCommand  = cTemp.uCommand;

				// Select the next item which
				// in fact is the already selected
				// item.
				m_Commands.SetCurSel( m_Commands.GetCurSel() + 1 );
				SetupControls();
				pSettings->Changed( m_pParser );
				return 0;
			}
		}

		case	IDS_INSERT:
			CreateNode( CTYPE_TEXT, ( LPVOID )( LPCTSTR )ClsString( MAKEINTRESOURCE( IDS_NEWINSERT )));
			return 0;

		case	IDS_HARDCODED:
			CreateNode( CTYPE_HARDCODED, ( LPVOID )( ::GetCommandTable()->nCommandID ));
			return 0;

		case	IDS_RUN:
			CreateNode( CTYPE_RUN, ( LPVOID )( _T( "Calc.exe" )));
			return 0;

		case	IDS_OPEN:
			CreateNode( CTYPE_SHELLOPEN, ( LPVOID )( _T( "ReadMe.txt" )));
			return 0;

		case	IDC_KEYS:
			if ( nNotifyCode == LBN_SELCHANGE )
			{
				// Get the current selection.
				LPHASH pSel = GetSelection();
				if ( pSel )
				{
					// Clear the contents of the command list.
					m_Commands.ResetContent();

					// Add commands.
					LPCNODE pNode;
					for ( pNode = pSel->lpCommands->lpFirst; pNode->lpNext; pNode = pNode->lpNext )
						m_Commands.AddString(( LPCTSTR )pNode );
				}
			}
			// Setup controls.
			SetupControls();
			return 0;

		case	IDC_COMMANDS:
			// Double-click?
			if ( nNotifyCode == LBN_DBLCLK )
			{
				// Find the command node.
				LPCNODE pCNode = ( LPCNODE )m_Commands.GetItemData( m_Commands.GetCurSel());
				if ( pCNode != ( LPCNODE )LB_ERR )
				{
					// What's the type?
					switch ( pCNode->nType )
					{
						case	CTYPE_HARDCODED:
						{
							// Open the editor.
							Hardcoded h;
							if ( h.Select( *GetParent(), pCNode ))
							{
								// Refresh list.
								m_Commands.Invalidate();
								pSettings->Changed( m_pParser );
							}
							break;
						}

						case	CTYPE_TEXT:
						{
							// Open the editor.
							TextInsert ti;
							HICON hIcon = ImageList_GetIcon( m_hImages, 1, ILD_NORMAL );
							if ( ti.Edit( *GetParent(), pCNode, hIcon ))
							{
								// Refresh list.
								m_Commands.Invalidate();
								pSettings->Changed( m_pParser );
							}
							if ( hIcon ) ::DestroyIcon( hIcon );
							return 0;
						}
						
						case	CTYPE_RUN:
						case	CTYPE_SHELLOPEN:
						{
							// Open the editor.
							Run r;
							if ( r.Edit( *GetParent(), pCNode ))
							{
								// Refresh list.
								m_Commands.Invalidate();
								pSettings->Changed( m_pParser );
							}
						}
					}
				}
			}
			else
				// Setup GUI.
				SetupControls();
			return 0;
	}
	// Pass to the base class.
	return Page::OnCommand( nNotifyCode, nCtrlID, hWndCtrl );
}
예제 #10
0
파일: KEYBOARD.CPP 프로젝트: jcbaar/BCC
// Create a command list node.
void KeyboardPage::CreateNode( int nType, LPVOID lpvData )
{
	// Get the currently selected keyboard hash.
	LPHASH pHash = GetSelection();
	LPCNODE pCNode = NULL;
	if ( pHash )
	{
		// Allocate node.
		pCNode = ( LPCNODE )::AllocPooled( pParserPool, sizeof( CNODE ));
		if ( pCNode != NULL )
		{
			// Setup type.
			pCNode->nType = nType;

			// Hardcoded?
			if ( nType == CTYPE_HARDCODED )
				// Setup function.
				pCNode->lpFunc = ::FindCommand(( int )lpvData );
			else
			{
				// Allocate string copy.
				pCNode->pcStr = ::CopyStringPool( pParserPool, ( LPCTSTR )lpvData );
				if ( pCNode->pcStr == NULL )
				{
					// Failure.
					MessageBox( ClsString( MAKEINTRESOURCE( IDS_NO_MEMORY )), ClsGetApp()->GetAppTitle(), MB_ICONERROR | MB_OK );
					::FreePooled( pParserPool, pCNode );
					pCNode = NULL;
				}
			}
		}
		else
			MessageBox( ClsString( MAKEINTRESOURCE( IDS_NO_MEMORY )), ClsGetApp()->GetAppTitle(), MB_ICONERROR | MB_OK );
	}

	// Still there?
	if ( pCNode )
	{
		// Add the node to the list.
		AddTail(( LPLIST )pHash->lpCommands, ( LPNODE )pCNode );

		// Add it to the listview.
		int nSel = m_Commands.AddString(( LPCTSTR )pCNode );
		if ( nSel != LB_ERR )
		{
			// Select the entry.
			m_Commands.SetCurSel( nSel );

			// Edit the node.
			SendMessage( WM_COMMAND, MAKEWPARAM( IDC_COMMANDS, LBN_DBLCLK ), ( LPARAM )m_Commands.GetSafeHWND());

			// Changes have been made.
			pSettings->Changed( m_pParser );
			SetupControls();
		}
		else
		{
			// Show out of memory error. Guess this should be the
			// only reason this could fail.
			MessageBox( ClsString( MAKEINTRESOURCE( IDS_NO_MEMORY )), ClsGetApp()->GetAppTitle(), MB_ICONERROR | MB_OK );

			// Free the node and
			// it's string.
			if ( nType != CTYPE_HARDCODED ) ::FreePooled( pParserPool, pCNode->pcStr );
			::FreePooled( pParserPool, pCNode );
		}
	}
}
예제 #11
0
void CGUIDialogSettingsBase::SetupView()
{
  SetupControls();
}
예제 #12
0
파일: KEYWORDS.CPP 프로젝트: jcbaar/BCC
// WM_COMMAND message handler.
LRESULT KeywordEdit::OnCommand( UINT nNotifyCode, UINT nCtrlID, HWND hWndCtrl )
{
	// What's the ID?
	switch ( nCtrlID )
	{
		case	EditToolbar::ETID_EDIT:
		{
			// Valid entry?
			LPKEYWORDS pKW = ( LPKEYWORDS )m_List.GetItemData( m_List.GetCurSel());
			if ( pKW != ( LPKEYWORDS )LB_ERR )
			{
				// Edit the keywords.
				KWEdit kwe;
				kwe.Edit( *this, pKW, this );
			}
			return 0;
		}

		case	EditToolbar::ETID_INSERT:
		{
			// Popup the file dialog.
			ClsFileDialog fd;
			fd.Filters() = _T( "Text files (*.txt)\0*.txt\0All files (*.*)\0*.*\0\0" );
			fd.Caption().LoadString( IDS_INSERT_KEYWORDS );
			
			if ( fd.DoModal( this, NULL, NULL, TRUE, OFN_FILEMUSTEXIST ))
			{
				// Get the selected filename.
				ClsString name;
				fd.GetName( 0, name );

				// Read the file and add the read keywords
				// to the selected node.
				ReadKeywords( name );

				// Make sure the keywords are
				// displayed.
				SendMessage( WM_COMMAND, MAKEWPARAM( IDC_LIST, LBN_SELCHANGE ), ( LPARAM )m_List.GetSafeHWND());
			}
			return 0;
		}

			
		case	EditToolbar::ETID_COLOR:
		{
			// Get the current selection.
			int nSel = m_List.GetCurSel();

			// Only show the popup when there is
			// a valid selection.
			if ( nSel != LB_ERR )
			{
				// Get the position of the selected entry.
				ClsRect rc;
				m_Tools.GetItemRect( 6, rc );
				m_Tools.ClientToScreen( rc );

				// Obtain the entry data.
				LPKEYWORDS pKW = ( LPKEYWORDS )m_List.GetItemData( nSel );
				if ( pKW != ( LPKEYWORDS )LB_ERR )
				{
					// Create the popup. The popup will automatically destroy
					// itself.
					new ClsColorPopup( ClsPoint( rc.Left(), rc.Bottom()), 
							   pKW->crColor, 
							   this,
							   CS_FORE,
							   NULL, 
							   ClsString( MAKEINTRESOURCE( IDS_CUSTOM )), 
							   NULL, 
							   TRUE,
							   FALSE );
				}
			}
			return 0;
		}

		case	EditToolbar::ETID_BGCOLOR:
		{
			// Get the current selection.
			int nSel = m_List.GetCurSel();

			// Only show the popup when there is
			// a valid selection.
			if ( nSel != LB_ERR )
			{
				// Get the position of the selected entry.
				ClsRect rc;
				m_Tools.GetItemRect( 7, rc );
				m_Tools.ClientToScreen( rc );

				// Obtain the entry data.
				LPKEYWORDS pKW = ( LPKEYWORDS )m_List.GetItemData( nSel );
				if ( pKW != ( LPKEYWORDS )LB_ERR )
				{
					// Create the popup. The popup will automatically destroy
					// itself.
					new ClsColorPopup( ClsPoint( rc.Left(), rc.Bottom()), 
							   pKW->crBgColor, 
							   this,
							   CS_BACK,
							   ClsString( MAKEINTRESOURCE( IDS_TRANSPARENT )), 
							   ClsString( MAKEINTRESOURCE( IDS_CUSTOM )), 
							   NULL, 
							   TRUE,
							   FALSE );
				}
			}
			return 0;
		}

		case	IDC_LIST:
		{
			// Selection change?
			if ( nNotifyCode == LBN_SELCHANGE )
			{
				// Valid entry?
				LPKEYWORDS pKW = ( LPKEYWORDS )m_List.GetItemData( m_List.GetCurSel());
				if ( pKW != ( LPKEYWORDS )LB_ERR )
				{
					// Reset words content.
					m_KeyList.ResetContent();

					// Add keywords.
					m_KeyList.SetRedraw( FALSE );
					for ( int i = 0; i < ::ArrayGetSize( pKW->lpaKeywords ); i++ )
						m_KeyList.AddString(( LPCTSTR )*(( LPTSTR * )::ArrayGetAt( pKW->lpaKeywords, i )));
					m_KeyList.SetRedraw();

					// Setup UI.
					SetupControls();
				}
			}
			return 0;
		}

		case	EditToolbar::ETID_DELETE:
		{			
			// Valid entry?
			LPKEYWORDS pKW = ( LPKEYWORDS )m_List.GetItemData( m_List.GetCurSel());
			if ( pKW != ( LPKEYWORDS )LB_ERR )
			{
				ClsMessageBox mb;
				mb.Title() = ClsGetApp()->GetAppTitle();
				mb.Buttons().LoadString( IDS_YESNO );
				mb.Body().LoadString( IDS_KEYWORD_DELETE );
				mb.Flags() = ClsMessageBox::MBF_ICONEXCLAMATION;
				// Sure?
				if ( mb.MsgBox( GetSafeHWND()))
				{
					// Save current selection
					// position.
					int nSel = m_List.GetCurSel();
					int nPos = nSel;

					// Select the next one or
					// the previous one.
					if ( nSel == m_List.GetCount() - 1 ) nSel--;
					else				     nSel++;

					// Select the other item.
					m_List.SetCurSel( nSel );
					
					// Setup UI.
					SetupControls();

					// Clear the list contents
					m_KeyList.ResetContent();

					// Reset selection.
					SendMessage( WM_COMMAND, MAKEWPARAM( IDC_LIST, LBN_SELCHANGE ), ( LPARAM )m_List.GetSafeHWND());

					// Remove the selection.
					m_List.DeleteString( nPos );

					// Remove the node.
					Remove(( LPNODE )pKW );

					// Free the keyword array and the node.
					if ( pKW->lpaKeywords ) ::ArrayDelete( pKW->lpaKeywords );
					::FreePooled( pParserPool, pKW );
				}	
			}
			return 0;
		}

		case	EditToolbar::ETID_NEW:
		{
			// Allocate a new node.
			LPKEYWORDS pKW = ( LPKEYWORDS )::AllocPooled( pParserPool, sizeof( KEYWORDS ));
			if ( pKW )
			{
				// Allocate an array.
				pKW->lpaKeywords = ::ArrayCreate( 0, 500, sizeof( LPTSTR * ));
				if ( pKW->lpaKeywords )
				{
					// Set color.
					pKW->crColor   = ::GetSysColor( COLOR_WINDOWTEXT );
					pKW->crBgColor = CLR_DEFAULT;

					// Add the node to the list.
					AddTail(( LPLIST )&m_KeyLst, ( LPNODE )pKW );

					// Add it to the listview and select it.
					int nPos = m_List.AddString(( LPCTSTR )pKW );
					m_List.SetCurSel( nPos );

					// Clear the keywords list.
					m_KeyList.ResetContent();

					// Setup UI.
					SetupControls();
					return 0;
				}
				else
					::FreePooled( pParserPool, pKW );
			}
			// Error.
			MessageBox( ClsString( MAKEINTRESOURCE( IDS_NO_MEMORY )), ClsGetApp()->GetAppTitle(), MB_ICONERROR | MB_OK );
			return 0;
		}

		case	IDC_CASE:
			// Get value.
			m_bCase = ( BOOL )( m_Case.GetCheck() == BST_CHECKED );
			return 0;

		case	IDC_OK:
			// Return OK
			EndDialog( TRUE );
			return 0;

		case	IDC_CANCEL:
			// Cancel.
			EndDialog( FALSE );
			return 0;
	}
	// Pass onto the base class.
	return ClsDialog::OnCommand( nNotifyCode, nCtrlID, hWndCtrl );
}