void APRWindow::MessageReceived(BMessage *message) { switch (message->what) { case kMsgUpdate: _UpdateButtons(); break; case kMsgSetDefaults: fFontSettings->SetDefaults(); fColorsView->SetDefaults(); fLookAndFeelSettings->SetDefaults(); fAntialiasingSettings->SetDefaults(); _UpdateButtons(); break; case kMsgRevert: fColorsView->Revert(); fAntialiasingSettings->Revert(); fLookAndFeelSettings->Revert(); fFontSettings->Revert(); _UpdateButtons(); break; default: BWindow::MessageReceived(message); break; } }
void CGroupStructDlg::OnButtonTo() { int nCount = m_lstAll.GetSelCount(); if(nCount > 0) { CWaitCursor wait; LockWindowUpdate(); nCount = m_lstAll.GetCount(); for(int i = nCount - 1; i >= 0; i--) { if(m_lstAll.GetSel(i)) { CString strName; m_lstAll.GetText(i, strName); CNamesMap::iterator it = m_mapDefSyms.find(strName); ASSERT(it != m_mapDefSyms.end()); m_lstSel.AddString(strName); m_lstSel.SetSel(m_lstSel.FindStringExact(-1, strName)); m_mapCurSyms[strName] = it->second; m_lstAll.DeleteString(i); m_mapDefSyms.erase(it); } } UnlockWindowUpdate(); _UpdateButtons(); } }
void TrackerSettingsWindow::Show() { if (Lock()) { int32 itemCount = fSettingsTypeListView->CountItems(); for (int32 i = 0; i < itemCount; i++) { _ViewAt(i)->RecordRevertSettings(); _ViewAt(i)->ShowCurrentSettings(); } fSettingsTypeListView->Invalidate(); _UpdateButtons(); Unlock(); } if (IsHidden()) { // move to current workspace SetWorkspaces(B_CURRENT_WORKSPACE); } _inherited::Show(); }
void BreakpointsView::WatchpointChanged(Watchpoint* watchpoint) { fListView->WatchpointChanged(watchpoint); _UpdateButtons(); }
void CGroupStructDlg::OnRuleEdit() { int nIdx = m_cmbRule.GetCurSel(); if(LB_ERR != nIdx) { long nRuleIdx = m_cmbRule.GetItemData(nIdx); ASSERT(nRuleIdx >= 0 && nRuleIdx < m_vecRules.size()); CRuleDefinitionDlg dlg(NULL, m_vecRules, nRuleIdx); CRuleData& rdCur = m_vecRules[nRuleIdx]; if(dlg.DoModal() == IDOK) { // change listbox string m_cmbRule.DeleteString(nIdx); m_cmbRule.AddString(rdCur.m_strName); nIdx = m_cmbRule.FindStringExact(-1, rdCur.m_strName); m_cmbRule.SetItemData(nIdx, nRuleIdx); m_cmbRule.SetCurSel(nIdx); _UpdateButtons(); } } }
nwxShiftSizer::nwxShiftSizer( wxScrolledWindow *pPeerWindow, InwxShiftReceiver *pReceiver, int nBorder, int nWaitInterval, bool bUseExternalTimer) : wxBoxSizer(wxHORIZONTAL), m_pReceiver(pReceiver), m_pTimer(NULL), m_pPeerWindow(pPeerWindow), m_pCurrent(NULL), m_nTotalInterval(0), m_nWaitInterval(nWaitInterval), m_nBorder(nBorder), m_bUseExternalTimer(bUseExternalTimer) { wxWindow *parent = pPeerWindow->GetParent(); m_pButtonLeft = new nwxArrowBitmap(parent,this,true); m_pButtonRight = new nwxArrowBitmap(parent,this,false); _SetupLayout(); if(!m_bUseExternalTimer) { m_pTimer = new wxTimer(m_pButtonLeft,wxID_ANY); } _UpdateButtons(); }
void BreakpointsView::UserBreakpointChanged(UserBreakpoint* breakpoint) { fListView->UserBreakpointChanged(breakpoint); _UpdateButtons(); }
bool nwxShiftSizer::_DoShift() { bool bRtn = false; if(m_pCurrent != NULL) { bool bShift = nwxKeyState::Shift(); if(m_pCurrent == m_pButtonLeft) { m_pReceiver->ShiftLeft(bShift); bRtn = m_pReceiver->CanShiftLeft(); } else if(m_pCurrent == m_pButtonRight) { m_pReceiver->ShiftRight(bShift); bRtn = m_pReceiver->CanShiftRight(); } } if(!bRtn) { EndShift(); } else { _UpdateButtons(); } return bRtn; }
void TrackerSettingsWindow::_HandleChangedContents() { fSettingsTypeListView->Invalidate(); _UpdateButtons(); TrackerSettings().SaveSettings(false); }
void nwxShiftSizer::EndShift() { m_pCurrent = NULL; m_nTotalInterval = 0; if((m_pTimer != NULL) && m_pTimer->IsRunning()) { m_pTimer->Stop(); } _UpdateButtons(); }
void CDialogEditGridColours::OnButtonReverse(wxCommandEvent &) { wxColour cBG = m_pGridColor->GetCellBackgroundColour(m_nRowColor,0); wxColour cFG = m_pGridColor->GetCellTextColour(m_nRowColor,0); m_pGridColor->SetCellBackgroundColour(m_nRowColor,0,cFG); m_pGridColor->SetCellTextColour(m_nRowColor,0,cBG); _UpdateColorsEdited(); m_pGridColor->Refresh(); _UpdateButtons(-1,m_nRowAttr); m_pGridColor->SetFocus(); }
void CDialogEditGridColours::OnButtonDefault(wxCommandEvent &) { CParmOsirisGlobal pParm; CParmOsiris Parm(*pParm.Get()); Parm.SetDefaultColours(); _SetupGridColoursAttr(&Parm); _UpdateButtons(-1,-1); m_pGridColor->Refresh(); m_pGridAttr->Refresh(); m_pGridColor->SetFocus(); }
void BreakpointsView::_SetSelection(BreakpointProxyList& proxies) { for (int32 i = 0; i < fSelectedBreakpoints.CountItems(); i++) fSelectedBreakpoints.ItemAt(i)->ReleaseReference(); fSelectedBreakpoints.MakeEmpty(); for (int32 i = 0; i < proxies.CountItems(); i++) { BreakpointProxy* proxy = proxies.ItemAt(i); if (!fSelectedBreakpoints.AddItem(proxy)) return; proxy->AcquireReference(); } _UpdateButtons(); }
APRWindow::APRWindow(BRect frame) : BWindow(frame, B_TRANSLATE_SYSTEM_NAME("Appearance"), B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_AUTO_UPDATE_SIZE_LIMITS | B_QUIT_ON_WINDOW_CLOSE, B_ALL_WORKSPACES) { SetLayout(new BGroupLayout(B_HORIZONTAL)); fDefaultsButton = new BButton("defaults", B_TRANSLATE("Defaults"), new BMessage(kMsgSetDefaults), B_WILL_DRAW); fRevertButton = new BButton("revert", B_TRANSLATE("Revert"), new BMessage(kMsgRevert), B_WILL_DRAW); BTabView* tabView = new BTabView("tabview", B_WIDTH_FROM_LABEL); fFontSettings = new FontView(B_TRANSLATE("Fonts")); fColorsView = new APRView(B_TRANSLATE("Colors")); fLookAndFeelSettings = new LookAndFeelSettingsView( B_TRANSLATE("Look and feel")); fAntialiasingSettings = new AntialiasingSettingsView( B_TRANSLATE("Antialiasing")); tabView->AddTab(fFontSettings); tabView->AddTab(fColorsView); tabView->AddTab(fLookAndFeelSettings); tabView->AddTab(fAntialiasingSettings); _UpdateButtons(); AddChild(BGroupLayoutBuilder(B_VERTICAL, 0) .Add(tabView) .Add(BSpaceLayoutItem::CreateVerticalStrut(5)) .Add(BGroupLayoutBuilder(B_HORIZONTAL) .Add(fDefaultsButton) .Add(fRevertButton) .AddGlue() ) .SetInsets(B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING) ); }
LRESULT CUIDialog::OnChangePage(WPARAM wParam, LPARAM lParam) { int curPos = (int)wParam; int oldPos = (int)lParam; if(curPos == oldPos) return 0L; _TogglePage(oldPos, FALSE); _TogglePage(curPos, TRUE); m_nAtualPage = curPos; _UpdateButtons(); _UpdatePanel(); m_scroll.SetScrollPos(curPos); return 0L; }
void KeymapWindow::_SwitchShortcutKeys() { uint32 leftCommand = fCurrentMap.Map().left_command_key; uint32 leftControl = fCurrentMap.Map().left_control_key; uint32 rightCommand = fCurrentMap.Map().right_command_key; uint32 rightControl = fCurrentMap.Map().right_control_key; // switch left side fCurrentMap.Map().left_command_key = leftControl; fCurrentMap.Map().left_control_key = leftCommand; // switch right side fCurrentMap.Map().right_command_key = rightControl; fCurrentMap.Map().right_control_key = rightCommand; fKeyboardLayoutView->SetKeymap(&fCurrentMap); _UpdateButtons(); }
bool nwxShiftSizer::Show(bool bShow) { bool bRtn = false; if(m_pPeerWindow->IsShown() != bShow) { bRtn = true; m_pPeerWindow->Show(bShow); if(bShow) { _UpdateButtons(); } else { _ShowButtons(false); } _SetupLayout(bShow); m_pPeerWindow->GetParent()->Layout(); } return bRtn; }
void BreakpointsView::_Init() { BLayoutBuilder::Group<>(this, B_VERTICAL, 0.0f) .Add(fListView = BreakpointListView::Create(fTeam, this, this)) .AddGroup(B_HORIZONTAL, B_USE_SMALL_SPACING) .SetInsets(B_USE_SMALL_SPACING) .AddGlue() .Add(fRemoveBreakpointButton = new BButton("Remove")) .Add(fEditBreakpointButton = new BButton("Edit" B_UTF8_ELLIPSIS)) .Add(fToggleBreakpointButton = new BButton("Toggle")) .End(); fToggleBreakpointButton->SetMessage(new BMessage(MSG_ENABLE_BREAKPOINT)); fRemoveBreakpointButton->SetMessage(new BMessage(MSG_CLEAR_BREAKPOINT)); fEditBreakpointButton->SetMessage( new BMessage(MSG_SHOW_BREAKPOINT_EDIT_WINDOW)); _UpdateButtons(); }
void CDialogEditGridColours::OnGrid(wxGridEvent &e) { int nRowColor = m_nRowColor; int nRowAttr = m_nRowAttr; int nRow = e.GetRow(); wxGrid *pGrid = (wxGrid *)e.GetEventObject(); if(pGrid == m_pGridAttr) { nRowAttr = nRow; } else if(pGrid == m_pGridColor) { nRowColor = nRow; } else { nRowColor = -1; nRowAttr = -1; wxASSERT_MSG(0,_T("CDialogEditGridColours::OnGrid() unknown grid")); } _UpdateButtons(nRowColor,nRowAttr); e.Skip(true); }
void nwxShiftSizer::UpdateSize() { _UpdateButtons(); }
void CGroupStructDlg::OnListAllSelChange() { _UpdateButtons(); }
BOOL CGroupStructDlg::OnInitDialog() { CWaitCursor wait; CDialog::OnInitDialog(); m_bInitNow = true; /* m_edtName.SetFlat(TRUE); m_btnOK.SetFlatLook(); m_btnCancel.SetFlatLook(); m_btnRuleEdit.SetFlatLook(); m_btnTo.SetFlatLook(); m_btnFrom.SetFlatLook(); */ const CGroupData& gdCur = m_vecGroups[m_nCurGroupIdx]; m_edtName.SetWindowText(gdCur.m_strName); m_edtName.SetLimitText(250); size_t i, nIdx; m_mapNames.clear(); for(i = 1; i < m_vecGroups.size(); i++) { m_mapNames[m_vecGroups[i].m_strName] = m_vecGroups[i].m_nID; } if(gdCur.m_bIsNew) { SetWindowText(_T("New Group")); } for(i = 0; i < m_vecRules.size(); i++) { const CRuleData& rd = m_vecRules[i]; m_cmbRule.AddString(rd.m_strName); nIdx = m_cmbRule.FindStringExact(-1, rd.m_strName); m_cmbRule.SetItemData(nIdx, i); if(rd.m_nID == gdCur.m_nRuleID && gdCur.m_nRuleID > 0 || gdCur.m_nRuleID == 0 && rd.m_bIsDefault) { m_cmbRule.SetCurSel(nIdx); } } m_mapCurSyms.clear(); for(i = 0; i < gdCur.m_vecSymbols.size(); i++) { const CGroupSymbolData& gsd = gdCur.m_vecSymbols[i]; m_lstSel.AddString(gsd.m_strName); m_mapCurSyms[gsd.m_strName] = i; //m_lstSel.SetItemData(m_lstSel.FindStringExact(gsd.m_strName), gsd.m_nID); } const CGroupData& gdDef = m_vecGroups[m_nDefGroupIdx]; m_mapDefSyms.clear(); for(i = 0; i < gdDef.m_vecSymbols.size(); i++) { const CGroupSymbolData& gsd = gdDef.m_vecSymbols[i]; m_lstAll.AddString(gsd.m_strName); m_mapDefSyms[gsd.m_strName] = i; //m_lstAll.SetItemData(m_lstAll.FindStringExact(gsd.m_strName), gsd.m_nID); } if(m_lstAll.GetCount() > 0) m_lstAll.SetSel(0); if(m_lstSel.GetCount() > 0) m_lstSel.SetSel(0); _UpdateButtons(); m_bInitNow = false; return TRUE; }
CDialogEditGridColours::CDialogEditGridColours(mainFrame *parent) : wxDialog(parent, wxID_ANY, _T("Edit Grid Colors"), wxDefaultPosition, wxDefaultSize, mainApp::DIALOG_STYLE & ~wxRESIZE_BORDER), m_nRowColor(-1), m_nRowAttr(-1), m_nInSelect(0), m_bModified(false) { wxFont fnt; wxSize sz; wxSize sz2; int nw; int nw2; wxStaticText *pTextTop; wxStaticText *pTextAttributes; wxButton *pButtonReset; wxBoxSizer *pSizerAll; wxBoxSizer *pSizerColors; wxBoxSizer *pSizerAttributes; wxBoxSizer *pSizerWin; wxFlexGridSizer *pSizer2x2; wxSizer *pSizerButtons; pTextTop = new wxStaticText( this,wxID_ANY,_T( "Select a line in the lists below and use the\n" "buttons to modify its colors or attributes\n\nColors")); m_pGridColor = new CGridColorGrid(this,wxID_ANY); m_pTextFG = new wxStaticText(this,wxID_ANY,_T("Foreground Color: ")); m_pButtonFG = _CreateButton(this,IDbuttonEditFGcolor); m_pTextBG = new wxStaticText(this,wxID_ANY,_T("Background Color: ")); m_pButtonBG = _CreateButton(this,IDbuttonEditBGcolor); m_pButtonReverse = new wxButton(this,IDbuttonReverse,_T("Reverse")); pSizer2x2 = new wxFlexGridSizer(2,2,ID_BORDER,ID_BORDER); pSizer2x2->Add(m_pTextFG,0,wxALIGN_CENTER_VERTICAL); pSizer2x2->Add(m_pButtonFG,0,wxALIGN_CENTER_VERTICAL); pSizer2x2->Add(m_pTextBG,0,wxALIGN_CENTER_VERTICAL); pSizer2x2->Add(m_pButtonBG,0,wxALIGN_CENTER_VERTICAL); pSizerColors = new wxBoxSizer(wxHORIZONTAL); pSizerColors->Add(pSizer2x2,0,wxALIGN_CENTER_VERTICAL); pSizerColors->Add(m_pButtonReverse,0, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT | wxLEFT, ID_BORDER); pTextAttributes = new wxStaticText(this,wxID_ANY,_T("Attributes")); m_pGridAttr = new CGridAttrGrid(this,wxID_ANY); m_pToggleBold = new wxToggleButton(this,wxID_ANY,_T("Bold")); m_pToggleItalic = new wxToggleButton(this,wxID_ANY,_T("Italic")); m_pToggleReverse = new wxToggleButton(this,wxID_ANY,_T("Reverse")); fnt = m_pToggleItalic->GetFont(); fnt.SetStyle(wxFONTSTYLE_ITALIC); m_pToggleItalic->SetFont(fnt); fnt.SetStyle(wxFONTSTYLE_NORMAL); fnt.SetWeight(wxFONTWEIGHT_BOLD); m_pToggleBold->SetFont(fnt); pButtonReset = new wxButton( this,IDbuttonResetDefault, _T("Reset Defaults")); { CParmOsirisGlobal pParm; _SetupGridColoursAttr(pParm.Get()); } m_nRowColor = -1; m_nRowAttr = -1; _UpdateButtons(0,0); m_pGridColor->SetGridCursor(0,0); m_pGridAttr->SetGridCursor(0,0); m_pGridColor->AutoSizeColumns(true); m_pGridAttr->AutoSizeColumns(true); m_pGridColor->AutoSizeRows(true); m_pGridAttr->AutoSizeRows(true); // do full layout sz = _ComputeGridSize(m_pGridColor); sz2 = _ComputeGridSize(m_pGridAttr); nw = sz.GetWidth(); nw2 = sz2.GetWidth(); if(nw2 > nw) { sz.SetWidth(nw2); m_pGridColor->SetColSize(0,m_pGridAttr->GetColSize(0)); } else { sz2.SetWidth(nw); m_pGridAttr->SetColSize(0,m_pGridColor->GetColSize(0)); } m_pGridColor->SetSize(sz); m_pGridAttr->SetSize(sz2); pSizerAttributes = new wxBoxSizer(wxHORIZONTAL); pSizerAttributes->Add(m_pToggleBold,0,0,0); pSizerAttributes->Add(m_pToggleItalic,0,wxLEFT, ID_BORDER); pSizerAttributes->Add(m_pToggleReverse,0,wxLEFT, ID_BORDER); pSizerAll = new wxBoxSizer(wxVERTICAL); pSizerAll->Add(pTextTop,0,wxALL | wxALIGN_LEFT, ID_BORDER); pSizerAll->Add(m_pGridColor,0,wxEXPAND | (wxALL ^ wxTOP),ID_BORDER); pSizerAll->Add(pSizerColors,0, wxALIGN_CENTER_HORIZONTAL | (wxALL ^ wxTOP), ID_BORDER); pSizerAll->Add(pTextAttributes,0,wxEXPAND | wxALL , ID_BORDER); pSizerAll->Add(m_pGridAttr,0,wxEXPAND | (wxALL ^ wxTOP), ID_BORDER); pSizerAll->Add(pSizerAttributes,0,wxALIGN_CENTER_HORIZONTAL | wxALL, ID_BORDER); pSizerAll->Add(pButtonReset,0,wxALIGN_CENTER_HORIZONTAL | (wxALL ^ wxBOTTOM),ID_BORDER); pSizerButtons = CreateButtonSizer(wxOK | wxCANCEL); pSizerWin = new wxBoxSizer(wxVERTICAL); pSizerWin->Add(pSizerAll,1,wxEXPAND,0); pSizerWin->Add(pSizerButtons,0,wxALIGN_CENTER_HORIZONTAL | wxALL, ID_BORDER); SetSizer(pSizerWin); pSizerWin->Layout(); Fit(); CentreOnParent(); m_pGridColor->SetFocus(); }
void KeymapWindow::MessageReceived(BMessage* message) { switch (message->what) { case B_SIMPLE_DATA: case B_REFS_RECEIVED: { entry_ref ref; int32 i = 0; while (message->FindRef("refs", i++, &ref) == B_OK) { fCurrentMap.Load(ref); fAppliedMap = fCurrentMap; } fKeyboardLayoutView->SetKeymap(&fCurrentMap); fSystemListView->DeselectAll(); fUserListView->DeselectAll(); break; } case B_SAVE_REQUESTED: { entry_ref ref; const char* name; if (message->FindRef("directory", &ref) == B_OK && message->FindString("name", &name) == B_OK) { BDirectory directory(&ref); BEntry entry(&directory, name); entry.GetRef(&ref); fCurrentMap.SetName(name); fCurrentMap.Save(ref); fAppliedMap = fCurrentMap; _FillUserMaps(); fCurrentMapName = name; _SelectCurrentMap(); } break; } case kMsgMenuFileOpen: fOpenPanel->Show(); break; case kMsgMenuFileSaveAs: fSavePanel->Show(); break; case kMsgShowModifierKeysWindow: be_app->PostMessage(kMsgShowModifierKeysWindow); break; case kChangeKeyboardLayout: { entry_ref ref; BPath path; if (message->FindRef("ref", &ref) == B_OK) path.SetTo(&ref); _SetKeyboardLayout(path.Path()); break; } case kMsgSwitchShortcuts: _SwitchShortcutKeys(); break; case kMsgMenuFontChanged: { BMenuItem* item = fFontMenu->FindMarked(); if (item != NULL) { BFont font; font.SetFamilyAndStyle(item->Label(), NULL); fKeyboardLayoutView->SetBaseFont(font); fTextControl->TextView()->SetFontAndColor(&font); } break; } case kMsgSystemMapSelected: case kMsgUserMapSelected: { BListView* listView; BListView* otherListView; if (message->what == kMsgSystemMapSelected) { listView = fSystemListView; otherListView = fUserListView; } else { listView = fUserListView; otherListView = fSystemListView; } int32 index = listView->CurrentSelection(); if (index < 0) break; // Deselect item in other BListView otherListView->DeselectAll(); if (index == 0 && listView == fUserListView) { // we can safely ignore the "(Current)" item break; } KeymapListItem* item = static_cast<KeymapListItem*>(listView->ItemAt(index)); if (item != NULL) { fCurrentMap.Load(item->EntryRef()); fAppliedMap = fCurrentMap; fKeyboardLayoutView->SetKeymap(&fCurrentMap); _UseKeymap(); _UpdateButtons(); } break; } case kMsgDefaultKeymap: _DefaultKeymap(); _UpdateButtons(); break; case kMsgRevertKeymap: _RevertKeymap(); _UpdateButtons(); break; case kMsgUpdateNormalKeys: { uint32 keyCode; if (message->FindUInt32("keyCode", &keyCode) != B_OK) break; bool unset; if (message->FindBool("unset", &unset) == B_OK && unset) { fCurrentMap.SetKey(keyCode, modifiers(), 0, "", 0); _UpdateButtons(); fKeyboardLayoutView->SetKeymap(&fCurrentMap); } break; } case kMsgUpdateModifierKeys: { uint32 keyCode; bool unset; if (message->FindBool("unset", &unset) != B_OK) unset = false; if (message->FindUInt32("left_shift_key", &keyCode) == B_OK) { fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_LEFT_SHIFT_KEY); } if (message->FindUInt32("right_shift_key", &keyCode) == B_OK) { fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_RIGHT_SHIFT_KEY); } if (message->FindUInt32("left_control_key", &keyCode) == B_OK) { fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_LEFT_CONTROL_KEY); } if (message->FindUInt32("right_control_key", &keyCode) == B_OK) { fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_RIGHT_CONTROL_KEY); } if (message->FindUInt32("left_option_key", &keyCode) == B_OK) { fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_LEFT_OPTION_KEY); } if (message->FindUInt32("right_option_key", &keyCode) == B_OK) { fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_RIGHT_OPTION_KEY); } if (message->FindUInt32("left_command_key", &keyCode) == B_OK) { fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_LEFT_COMMAND_KEY); } if (message->FindUInt32("right_command_key", &keyCode) == B_OK) { fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_RIGHT_COMMAND_KEY); } if (message->FindUInt32("menu_key", &keyCode) == B_OK) fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_MENU_KEY); if (message->FindUInt32("caps_key", &keyCode) == B_OK) fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_CAPS_LOCK); if (message->FindUInt32("num_key", &keyCode) == B_OK) fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_NUM_LOCK); if (message->FindUInt32("scroll_key", &keyCode) == B_OK) fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_SCROLL_LOCK); _UpdateButtons(); fKeyboardLayoutView->SetKeymap(&fCurrentMap); break; } case kMsgKeymapUpdated: _UpdateButtons(); fSystemListView->DeselectAll(); fUserListView->Select(0L); break; case kMsgDeadKeyAcuteChanged: { BMenuItem* item = fAcuteMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyAcute, trigger); fKeyboardLayoutView->Invalidate(); } break; } case kMsgDeadKeyCircumflexChanged: { BMenuItem* item = fCircumflexMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyCircumflex, trigger); fKeyboardLayoutView->Invalidate(); } break; } case kMsgDeadKeyDiaeresisChanged: { BMenuItem* item = fDiaeresisMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyDiaeresis, trigger); fKeyboardLayoutView->Invalidate(); } break; } case kMsgDeadKeyGraveChanged: { BMenuItem* item = fGraveMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyGrave, trigger); fKeyboardLayoutView->Invalidate(); } break; } case kMsgDeadKeyTildeChanged: { BMenuItem* item = fTildeMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyTilde, trigger); fKeyboardLayoutView->Invalidate(); } break; } default: BWindow::MessageReceived(message); break; } }
KeymapWindow::KeymapWindow() : BWindow(BRect(80, 50, 880, 380), TR("Keymap"), B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS) { SetLayout(new BGroupLayout(B_VERTICAL)); fKeyboardLayoutView = new KeyboardLayoutView("layout"); fKeyboardLayoutView->SetKeymap(&fCurrentMap); fTextControl = new BTextControl(TR("Sample and clipboard:"), "", NULL); fSwitchShortcutsButton = new BButton("switch", "", new BMessage(kMsgSwitchShortcuts)); fRevertButton = new BButton("revertButton", TR("Revert"), new BMessage(kMsgRevertKeymap)); // controls pane AddChild(BGroupLayoutBuilder(B_VERTICAL) .Add(_CreateMenu()) .Add(BGroupLayoutBuilder(B_HORIZONTAL, 10) .Add(_CreateMapLists(), 0.25) .Add(BGroupLayoutBuilder(B_VERTICAL, 10) .Add(fKeyboardLayoutView) //.Add(new BStringView("text label", "Sample and clipboard:")) .Add(BGroupLayoutBuilder(B_HORIZONTAL, 10) .Add(_CreateDeadKeyMenuField(), 0.0) .AddGlue() .Add(fSwitchShortcutsButton)) .Add(fTextControl) .AddGlue(0.0) .Add(BGroupLayoutBuilder(B_HORIZONTAL, 10) .AddGlue(0.0) .Add(fRevertButton))) .SetInsets(10, 10, 10, 10))); fKeyboardLayoutView->SetTarget(fTextControl->TextView()); fTextControl->MakeFocus(); // Make sure the user keymap directory exists BPath path; find_directory(B_USER_SETTINGS_DIRECTORY, &path); path.Append("Keymap"); entry_ref ref; get_ref_for_path(path.Path(), &ref); BDirectory userKeymapsDir(&ref); if (userKeymapsDir.InitCheck() != B_OK) create_directory(path.Path(), S_IRWXU | S_IRWXG | S_IRWXO); BMessenger messenger(this); fOpenPanel = new BFilePanel(B_OPEN_PANEL, &messenger, &ref, B_FILE_NODE, false, NULL); fSavePanel = new BFilePanel(B_SAVE_PANEL, &messenger, &ref, B_FILE_NODE, false, NULL); BRect windowFrame; BString keyboardLayout; _LoadSettings(windowFrame, keyboardLayout); _SetKeyboardLayout(keyboardLayout.String()); ResizeTo(windowFrame.Width(), windowFrame.Height()); MoveTo(windowFrame.LeftTop()); // TODO: this might be a bug in the interface kit, but scrolling to // selection does not correctly work unless the window is shown. Show(); Lock(); // Try and find the current map name in the two list views (if the name // was read at all) _SelectCurrentMap(); KeymapListItem* current = static_cast<KeymapListItem*>(fUserListView->FirstItem()); fCurrentMap.Load(current->EntryRef()); fPreviousMap = fCurrentMap; fAppliedMap = fCurrentMap; fCurrentMap.SetTarget(this, new BMessage(kMsgKeymapUpdated)); _UpdateButtons(); _UpdateDeadKeyMenu(); _UpdateSwitchShortcutButton(); Unlock(); }
void KeymapWindow::MessageReceived(BMessage* message) { switch (message->what) { case B_SIMPLE_DATA: case B_REFS_RECEIVED: { entry_ref ref; int32 i = 0; while (message->FindRef("refs", i++, &ref) == B_OK) { fCurrentMap.Load(ref); fAppliedMap = fCurrentMap; } fKeyboardLayoutView->SetKeymap(&fCurrentMap); fSystemListView->DeselectAll(); fUserListView->DeselectAll(); break; } case B_SAVE_REQUESTED: { entry_ref ref; const char *name; if (message->FindRef("directory", &ref) == B_OK && message->FindString("name", &name) == B_OK) { BDirectory directory(&ref); BEntry entry(&directory, name); entry.GetRef(&ref); fCurrentMap.SetName(name); fCurrentMap.Save(ref); fAppliedMap = fCurrentMap; _FillUserMaps(); fCurrentMapName = name; _SelectCurrentMap(); } break; } case kMsgMenuFileOpen: fOpenPanel->Show(); break; case kMsgMenuFileSaveAs: fSavePanel->Show(); break; case kChangeKeyboardLayout: { entry_ref ref; BPath path; if (message->FindRef("ref", &ref) == B_OK) path.SetTo(&ref); _SetKeyboardLayout(path.Path()); break; } case kMsgSwitchShortcuts: _SwitchShortcutKeys(); break; case kMsgMenuFontChanged: { BMenuItem *item = fFontMenu->FindMarked(); if (item != NULL) { BFont font; font.SetFamilyAndStyle(item->Label(), NULL); fKeyboardLayoutView->SetFont(font); fTextControl->TextView()->SetFontAndColor(&font); } break; } case kMsgSystemMapSelected: case kMsgUserMapSelected: { BListView* listView; BListView* otherListView; if (message->what == kMsgSystemMapSelected) { listView = fSystemListView; otherListView = fUserListView; } else { listView = fUserListView; otherListView = fSystemListView; } int32 index = listView->CurrentSelection(); if (index < 0) break; // Deselect item in other BListView otherListView->DeselectAll(); if (index == 0 && listView == fUserListView) { // we can safely ignore the "(Current)" item break; } KeymapListItem* item = static_cast<KeymapListItem*>(listView->ItemAt(index)); if (item != NULL) { fCurrentMap.Load(item->EntryRef()); fAppliedMap = fCurrentMap; fKeyboardLayoutView->SetKeymap(&fCurrentMap); _UseKeymap(); _UpdateButtons(); } break; } case kMsgRevertKeymap: _RevertKeymap(); _UpdateButtons(); break; case kMsgKeymapUpdated: _UpdateButtons(); fSystemListView->DeselectAll(); fUserListView->Select(0L); break; case kMsgDeadKeyAcuteChanged: { BMenuItem* item = fAcuteMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyAcute, trigger); fKeyboardLayoutView->Invalidate(); } break; } case kMsgDeadKeyCircumflexChanged: { BMenuItem* item = fCircumflexMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyCircumflex, trigger); fKeyboardLayoutView->Invalidate(); } break; } case kMsgDeadKeyDiaeresisChanged: { BMenuItem* item = fDiaeresisMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyDiaeresis, trigger); fKeyboardLayoutView->Invalidate(); } break; } case kMsgDeadKeyGraveChanged: { BMenuItem* item = fGraveMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyGrave, trigger); fKeyboardLayoutView->Invalidate(); } break; } case kMsgDeadKeyTildeChanged: { BMenuItem* item = fTildeMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyTilde, trigger); fKeyboardLayoutView->Invalidate(); } break; } default: BWindow::MessageReceived(message); break; } }