void SpectraMainFrame::InitMainMenu(void) { wxMenu* file_menu = new wxMenu(); file_menu->Append(wxID_OPEN); file_menu->Append( SpectraMainFrameID_GenerateDoc, wxGetTranslation(wxT("&Generate\tCtrl-Shift-G"), wxT("Document")) ); file_menu->AppendSeparator(); file_menu->Append(wxID_EXIT); main_menu->Append( file_menu, wxGetStockLabel(wxID_FILE) ); wxMenu* view_menu = new wxMenu(); renderer_menu = new wxMenu(); renderer_menu->AppendRadioItem( SpectraMainFrameID_DefaultRenderer, wxGetTranslation(wxT("&Default renderer"), wxT("Menu")) ); renderer_menu->AppendRadioItem( SpectraMainFrameID_XSectionRenderer, wxGetTranslation(wxT("&Cross-section renderer"), wxT("Menu")) ); view_menu->AppendSubMenu( renderer_menu, wxGetTranslation(wxT("&Renderer"), wxT("Menu")) ); main_menu->Append( view_menu, wxGetTranslation(wxT("&View"), wxT("Menu")) ); wxMenu* help_menu = new wxMenu(); help_menu->Append(wxID_ABOUT); main_menu->Append( help_menu, wxGetStockLabel(wxID_HELP) ); SetMenuBar(main_menu); }
void MyApp::CreateMenuBarForFrame(wxFrame *frame, wxMenu *file, wxMenu *edit) { wxMenuBar *menubar = new wxMenuBar; menubar->Append(file, wxGetStockLabel(wxID_FILE)); if ( edit ) menubar->Append(edit, wxGetStockLabel(wxID_EDIT)); wxMenu *help= new wxMenu; help->Append(wxID_ABOUT); menubar->Append(help, wxGetStockLabel(wxID_HELP)); frame->SetMenuBar(menubar); }
void FindPopupMenu(wxWindow* win, const std::list < std::string > & l, const wxPoint& pos) { wxMenu* menu = new wxMenu(); const int max_size = 25; int i = 0; for (const auto& it : l) { menu->Append(new wxMenuItem(menu, ID_FIND_FIRST + i++, (it.size() >= max_size - 3 ? it.substr(0, max_size) + "..." : it))); if (i >= FIND_MAX_FINDS) break; } if (menu->GetMenuItemCount() > 0) { menu->AppendSeparator(); menu->Append(ID_CLEAR_FINDS, wxGetStockLabel(wxID_CLEAR)); win->PopupMenu(menu, pos); } delete menu; }
wxAuiToolBarItem* wxExToolBar::AddTool( int toolId, const wxString& label, const wxBitmap& bitmap, const wxString& shortHelp, wxItemKind kind) { const wxExStockArt art(toolId); if (art.GetBitmap(wxART_TOOLBAR).IsOk()) { return wxAuiToolBar::AddTool( toolId, wxEmptyString, // no label #ifdef __WXGTK__ art.GetBitmap(wxART_TOOLBAR), #else art.GetBitmap(wxART_MENU, wxSize(16, 16)), #endif wxGetStockLabel(toolId, wxSTOCK_NOFLAGS), // short help kind); } else if (bitmap.IsOk()) { return wxAuiToolBar::AddTool( toolId, label, bitmap, shortHelp, kind); } return nullptr; }
wxMenuItem::wxMenuItem(wxMenu *pParentMenu, int id, const wxString& t, const wxString& strHelp, wxItemKind kind, wxMenu *pSubMenu) :wxMenuItemBase(pParentMenu, id, t, strHelp, kind, pSubMenu) { wxASSERT_MSG( id != 0 || pSubMenu != NULL , wxT("A MenuItem ID of Zero does not work under Mac") ) ; // In other languages there is no difference in naming the Exit/Quit menu item between MacOS and Windows guidelines // therefore these item must not be translated if (pParentMenu != NULL && !pParentMenu->GetNoEventsMode()) if ( wxStripMenuCodes(m_text).Upper() == wxT("EXIT") ) m_text = wxT("Quit\tCtrl+Q") ; m_radioGroup.start = -1; m_isRadioGroupStart = false; wxString text = wxStripMenuCodes(m_text, (pParentMenu != NULL && pParentMenu->GetNoEventsMode()) ? wxStrip_Accel : wxStrip_All); if (text.IsEmpty() && !IsSeparator()) { wxASSERT_MSG(wxIsStockID(GetId()), wxT("A non-stock menu item with an empty label?")); text = wxGetStockLabel(GetId(), wxSTOCK_WITH_ACCELERATOR|wxSTOCK_WITH_MNEMONIC); } wxAcceleratorEntry *entry = wxAcceleratorEntry::Create( m_text ) ; // use accessors for ID and Kind because they might have been changed in the base constructor m_peer = wxMenuItemImpl::Create( this, pParentMenu, GetId(), text, entry, strHelp, GetKind(), pSubMenu ); delete entry; }
void wxButton::SetLabel( const wxString &lbl ) { wxCHECK_RET( m_widget != NULL, wxT("invalid button") ); wxString label(lbl); if (label.empty() && wxIsStockID(m_windowId)) label = wxGetStockLabel(m_windowId); wxControl::SetLabel(label); const wxString labelGTK = GTKConvertMnemonics(label); if (wxIsStockID(m_windowId) && wxIsStockLabel(m_windowId, label)) { const char *stock = wxGetStockGtkID(m_windowId); if (stock) { gtk_button_set_label(GTK_BUTTON(m_widget), stock); gtk_button_set_use_stock(GTK_BUTTON(m_widget), TRUE); return; } } gtk_button_set_label(GTK_BUTTON(m_widget), wxGTK_CONV(labelGTK)); gtk_button_set_use_stock(GTK_BUTTON(m_widget), FALSE); ApplyWidgetStyle( false ); }
bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& lbl, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) { wxString label(lbl); if (label.empty() && wxIsStockID(id) && !(id == wxID_HELP)) label = wxGetStockLabel(id); m_macIsUserPane = false ; if ( !wxButtonBase::Create(parent, id, pos, size, style, validator, name) ) return false; m_labelOrig = m_label = label ; m_peer = wxWidgetImpl::CreateButton( this, parent, id, label, pos, size, style, GetExtraStyle() ); MacPostControlCreate( pos, size ); return true; }
void wxExFrameWithHistory::FileHistoryPopupMenu() { wxMenu* menu = new wxMenu(); for (int i = 0; i < m_FileHistory.GetCount(); i++) { const wxFileName file(m_FileHistory.GetHistoryFile(i)); if (file.FileExists()) { wxMenuItem* item = new wxMenuItem( menu, wxID_FILE1 + i, file.GetFullName()); item->SetBitmap(wxTheFileIconsTable->GetSmallImageList()->GetBitmap( wxExGetIconID(file))); menu->Append(item); } } if (menu->GetMenuItemCount() > 0) { menu->AppendSeparator(); menu->Append(ID_CLEAR, wxGetStockLabel(wxID_CLEAR)); PopupMenu(menu); } delete menu; }
void wxButton::SetLabel( const wxString &lbl ) { wxCHECK_RET( m_widget != NULL, wxT("invalid button") ); wxString label(lbl); if (label.empty() && wxIsStockID(m_windowId)) label = wxGetStockLabel(m_windowId); wxControl::SetLabel(label); #ifdef __WXGTK20__ if (wxIsStockID(m_windowId) && wxIsStockLabel(m_windowId, label)) { const char *stock = wxGetStockGtkID(m_windowId); if (stock) { gtk_button_set_label(GTK_BUTTON(m_widget), stock); gtk_button_set_use_stock(GTK_BUTTON(m_widget), TRUE); return; } } wxString label2 = PrepareLabelMnemonics(label); gtk_button_set_label(GTK_BUTTON(m_widget), wxGTK_CONV(label2)); gtk_button_set_use_stock(GTK_BUTTON(m_widget), FALSE); ApplyWidgetStyle( false ); #else gtk_label_set(GTK_LABEL(BUTTON_CHILD(m_widget)), wxGTK_CONV(GetLabel())); #endif }
void wxTopLevelWindowMSW::ButtonMenu::SetButton(int id, const wxString& label, wxMenu *subMenu) { m_assigned = true; m_id = id; if(label.empty() && wxIsStockID(id)) m_label = wxGetStockLabel(id, false); else m_label = label; m_menu = subMenu; }
wxString wxMessageDialog::GetDefaultHelpLabel() const { #ifdef __WXGTK4__ return wxConvertMnemonicsToGTK(wxGetStockLabel(wxID_HELP)); #else wxGCC_WARNING_SUPPRESS(deprecated-declarations) return GTK_STOCK_HELP; wxGCC_WARNING_RESTORE() #endif }
void wxAuiMDIParentFrame::AddWindowMenu(wxMenuBar *pMenuBar) { if (pMenuBar && m_pWindowMenu) { int pos = pMenuBar->FindMenu(wxGetStockLabel(wxID_HELP,wxSTOCK_NOFLAGS)); if (pos == wxNOT_FOUND) pMenuBar->Append(m_pWindowMenu, _("&Window")); else pMenuBar->Insert(pos, m_pWindowMenu, _("&Window")); } }
void SpectraDocumentFrame::InitMainMenu(void) { wxMenu* file_menu = new wxMenu(); file_menu->Append(wxID_ADD, wxGetTranslation(wxT("New &view"))); file_menu->AppendSeparator(); file_menu->Append(wxID_CLOSE); main_menu->Append(file_menu, wxGetStockLabel(wxID_FILE)); SetMenuBar(main_menu); }
void wxMenuItemBase::SetText(const wxString& str) { m_text = str; if ( m_text.empty() && !IsSeparator() ) { wxASSERT_MSG( wxIsStockID(GetId()), wxT("A non-stock menu item with an empty label?") ); m_text = wxGetStockLabel(GetId(), wxSTOCK_WITH_ACCELERATOR | wxSTOCK_WITH_MNEMONIC); } }
bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name ) { QtCreate(parent); SetLabel( wxIsStockID( id ) ? wxGetStockLabel( id ) : label ); return QtCreateControl( parent, id, pos, size, style, validator, name ); }
bool MainFrame::Create(wxDocManager* docManager, const wxString& title) { bool ok = wxDocMDIParentFrame::Create(docManager, NULL, wxID_ANY, title); if (ok) { SetIcon(wxICON(text)); wxMenu* menu; menu = new wxMenu(); menu->Append(wxID_NEW); menu->Append(wxID_OPEN); menu->AppendSeparator(); menu->Append(wxID_EXIT, wxGetStockLabel(wxID_EXIT) + wxT("\t") + _("Ctrl+Q")); docManager->FileHistoryUseMenu(menu); docManager->FileHistoryLoad(*wxConfig::Get()); wxMenuBar* menubar = new wxMenuBar(); menubar->Append(menu, wxGetStockLabel(wxID_FILE)); menu = new wxMenu(); menu->Append(wxID_ABOUT, wxGetStockLabel(wxID_ABOUT) + wxT("\t") + _("Shift+F1")); menubar->Append(menu, wxGetStockLabel(wxID_HELP)); SetMenuBar(menubar); CreateStatusBar(); #ifdef _WX_PERSIST_H_ if (!wxPersistentRegisterAndRestore(this, wxT("Main"))) #endif { wxFrame_SetInitialPosition(this); } this->Connect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(MainFrame::OnCloseWindow)); } return ok; }
BombsFrame::BombsFrame(BombsGame *game) : wxFrame(NULL, wxID_ANY, wxT("wxBombs"), wxDefaultPosition, wxSize(300, 300), wxDEFAULT_DIALOG_STYLE|wxMINIMIZE_BOX) { m_game = game; m_easyCorner = false; m_lastLevel = bombsID_EASY; SetIcon(wxICON(bombs)); #if wxUSE_STATUSBAR CreateStatusBar(); #endif // Create a menu bar for the frame wxMenuBar *menuBar = new wxMenuBar; wxMenu *menuFile = new wxMenu; wxMenu *menuLevel = new wxMenu; menuLevel->AppendRadioItem(bombsID_EASY, wxT("&Easy (10x10)\tCtrl-1")); menuLevel->AppendRadioItem(bombsID_MEDIUM, wxT("&Medium (15x15)\tCtrl-2")); menuLevel->AppendRadioItem(bombsID_HARD, wxT("&Hard (25x20)\tCtrl-3")); menuFile->Append(wxID_NEW, wxT("&New game\tCtrl-N")); menuFile->Append(bombsID_LEVEL, wxT("&Level"),menuLevel, wxT("Starts a new game")); menuFile->AppendCheckItem(bombsID_EASYCORNER, wxT("&Easy corner")); menuFile->AppendSeparator(); menuFile->Append(wxID_EXIT, wxGetStockLabel(wxID_EXIT), wxT("Quits the application")); menuBar->Append(menuFile, wxT("&File")); wxMenu *menuHelp = new wxMenu; menuHelp->Append(wxID_ABOUT, wxT("&About"), wxT("Displays the program information") ); menuBar->Append(menuHelp, wxT("&Help")); SetMenuBar(menuBar); // Create child subwindows. m_canvas = new BombsCanvas(this, m_game); // Ensure the subwindows get resized o.k. // OnSize(width, height); // Centre frame on the screen. Centre(wxBOTH); // Show the frame. Show(); }
DIALOG_YES_NO_CANCEL( wxWindow *aParent, const wxString& aPrimaryMessage, const wxString& aSecondaryMessage = wxEmptyString, const wxString& aYesButtonText = wxEmptyString, const wxString& aNoButtonText = wxEmptyString, const wxString& aCancelButtonText = wxEmptyString ) : DIALOG_EXIT( aParent, aSecondaryMessage ) { m_TextInfo->SetLabel( aPrimaryMessage ); if( aSecondaryMessage.IsEmpty() ) m_staticText2->Hide(); m_buttonSaveAndExit->SetLabel( aYesButtonText.IsEmpty() ? wxGetStockLabel( wxID_YES ) : aYesButtonText ); m_buttonExitNoSave->SetLabel( aNoButtonText.IsEmpty() ? wxGetStockLabel( wxID_NO ) : aNoButtonText ); m_buttonCancel->SetLabel( aCancelButtonText.IsEmpty() ? wxGetStockLabel( wxID_CANCEL ) : aCancelButtonText ); GetSizer()->Fit( this ); GetSizer()->SetSizeHints( this ); };
bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& lbl, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) { wxString label(lbl); if (label.empty() && wxIsStockID(id)) label = wxGetStockLabel(id); if( !CreateControl( parent, id, pos, size, style, validator, name ) ) return false; wxXmString text( GetLabelText(label) ); Widget parentWidget = (Widget) parent->GetClientWidget(); /* * Patch Note (important) * There is no major reason to put a defaultButtonThickness here. * Not requesting it give the ability to put wxButton with a spacing * as small as requested. However, if some button become a DefaultButton, * other buttons are no more aligned -- This is why we set * defaultButtonThickness of ALL buttons belonging to the same wxPanel, * in the ::SetDefaultButton method. */ m_mainWidget = (WXWidget) XtVaCreateManagedWidget ("button", xmPushButtonWidgetClass, parentWidget, wxFont::GetFontTag(), m_font.GetFontTypeC(XtDisplay(parentWidget)), XmNlabelString, text(), XmNrecomputeSize, False, // See comment for wxButton::SetDefault // XmNdefaultButtonShadowThickness, 1, NULL); XtAddCallback ((Widget) m_mainWidget, XmNactivateCallback, (XtCallbackProc) wxButtonCallback, (XtPointer) this); wxSize best = GetBestSize(); if( size.x != -1 ) best.x = size.x; if( size.y != -1 ) best.y = size.y; AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, best.x, best.y); ChangeBackgroundColour(); return true; }
bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& labelOrig, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) { DontCreatePeer(); m_marginX = m_marginY = 0; // FIXME: this hack is needed because we're called from // wxBitmapButton::Create() with this style and we currently use a // different wxWidgetImpl method (CreateBitmapButton() rather than // CreateButton()) for creating bitmap buttons, but we really ought // to unify the creation of buttons of all kinds and then remove // this check if ( style & wxBU_NOTEXT ) { return wxControl::Create(parent, id, pos, size, style, validator, name); } wxString label; // Ignore the standard label for help buttons if possible, they use "?" // label under Mac which looks better. if ( !IsHelpButtonWithStandardLabel(id, labelOrig) ) { label = labelOrig.empty() && wxIsStockID(id) ? wxGetStockLabel(id) : labelOrig; } if ( !wxButtonBase::Create(parent, id, pos, size, style, validator, name) ) return false; m_labelOrig = m_label = label ; SetPeer(wxWidgetImpl::CreateButton( this, parent, id, label, pos, size, style, GetExtraStyle() )); MacPostControlCreate( pos, size ); return true; }
void wxGenericMDIParentFrame::AddWindowMenu(wxMenuBar *pMenuBar) { if (pMenuBar && m_windowMenu) { int pos = pMenuBar->FindMenu(wxGetStockLabel(wxID_HELP,false)); if (pos == wxNOT_FOUND) { pMenuBar->Append(m_windowMenu, _("&Window")); } else { pMenuBar->Insert(pos, m_windowMenu, _("&Window")); } } }
void wxButton::SetLabel( const wxString &lbl ) { wxCHECK_RET( m_widget != NULL, wxT("invalid button") ); wxString label(lbl); if (label.empty() && wxIsStockID(m_windowId)) label = wxGetStockLabel(m_windowId); wxControl::SetLabel(label); const wxString labelGTK = GTKRemoveMnemonics(label); gtk_label_set(GTK_LABEL(BUTTON_CHILD(m_widget)), wxGTK_CONV(labelGTK)); }
bool wxToggleButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) { // create a checkable push button m_qtPushButton = new wxQtToggleButton( parent, this ); // this button is toggleable and has a text label SetLabel( wxIsStockID( id ) ? wxGetStockLabel( id ) : label ); return QtCreateControl( parent, id, pos, size, style, validator, name ); }
void wxMenuItem::UpdateItemText() { if ( !m_parentMenu ) return ; wxString text = wxStripMenuCodes(m_text, m_parentMenu != NULL && m_parentMenu->GetNoEventsMode() ? wxStrip_Accel : wxStrip_All); if (text.IsEmpty() && !IsSeparator()) { wxASSERT_MSG(wxIsStockID(GetId()), wxT("A non-stock menu item with an empty label?")); text = wxGetStockLabel(GetId(), wxSTOCK_WITH_ACCELERATOR|wxSTOCK_WITH_MNEMONIC); } wxAcceleratorEntry *entry = wxAcceleratorEntry::Create( m_text ) ; GetPeer()->SetLabel( text, entry ); delete entry ; }
bool wxIsStockLabel(wxWindowID id, const wxString& label) { if (label.empty()) return true; wxString stock = wxGetStockLabel(id); if (label == stock) return true; stock.Replace(wxT("&"), wxEmptyString); if (label == stock) return true; return false; }
void wxMessageDialog::DoSetCustomLabel(wxString& var, const ButtonLabel& label) { int stockId = label.GetStockId(); if ( stockId == wxID_NONE ) { wxMessageDialogBase::DoSetCustomLabel(var, label); var = wxConvertMnemonicsToGTK(var); } else // stock label { #ifdef __WXGTK4__ var = wxConvertMnemonicsToGTK(wxGetStockLabel(stockId)); #else var = wxGetStockGtkID(stockId); #endif } }
bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& lbl, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) { wxString label(lbl); if (label.empty() && wxIsStockID(id)) { // On Windows, some buttons aren't supposed to have // mnemonics, so strip them out. label = wxGetStockLabel(id #if defined(__WXMSW__) || defined(__WXWINCE__) , ( id != wxID_OK && id != wxID_CANCEL && id != wxID_CLOSE ) #endif ); } if ( !CreateControl(parent, id, pos, size, style, validator, name) ) return false; WXDWORD exstyle; WXDWORD msStyle = MSWGetStyle(style, &exstyle); #ifdef __WIN32__ // if the label contains several lines we must explicitly tell the button // about it or it wouldn't draw it correctly ("\n"s would just appear as // black boxes) // // NB: we do it here and not in MSWGetStyle() because we need the label // value and m_label is not set yet when MSWGetStyle() is called; // besides changing BS_MULTILINE during run-time is pointless anyhow if ( label.find(_T('\n')) != wxString::npos ) { msStyle |= BS_MULTILINE; } #endif // __WIN32__ return MSWCreateControl(_T("BUTTON"), msStyle, pos, size, label, exstyle); }
bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, const wxString &lbl, const wxPoint &pos, const wxSize &size, long style, const wxValidator& validator, const wxString &name) { wxString label(lbl); if (label.empty() && wxIsStockID(id)) label = wxGetStockLabel(id); long ctrl_style = style & ~wxBU_ALIGN_MASK; ctrl_style = ctrl_style & ~wxALIGN_MASK; if((style & wxBU_RIGHT) == wxBU_RIGHT) ctrl_style |= wxALIGN_RIGHT; else if((style & wxBU_LEFT) == wxBU_LEFT) ctrl_style |= wxALIGN_LEFT; else ctrl_style |= wxALIGN_CENTRE_HORIZONTAL; if((style & wxBU_TOP) == wxBU_TOP) ctrl_style |= wxALIGN_TOP; else if((style & wxBU_BOTTOM) == wxBU_BOTTOM) ctrl_style |= wxALIGN_BOTTOM; else ctrl_style |= wxALIGN_CENTRE_VERTICAL; if ( !wxControl::Create(parent, id, pos, size, ctrl_style, validator, name) ) return false; SetLabel(label); if (bitmap.IsOk()) SetBitmap(bitmap); // SetInitialSize called by SetBitmap() else SetInitialSize(size); CreateInputHandler(wxINP_HANDLER_BUTTON); return true; }
GtkWidget *wxInfoBar::GTKAddButton(wxWindowID btnid, const wxString& label) { // as GTK+ lays out the buttons vertically, adding another button changes // our best size (at least in vertical direction) InvalidateBestSize(); GtkWidget* button = gtk_info_bar_add_button(GTK_INFO_BAR(m_widget), #ifdef __WXGTK4__ wxGTK_CONV(label.empty() ? wxConvertMnemonicsToGTK(wxGetStockLabel(btnid)) : label), #else label.empty() ? wxGetStockGtkID(btnid) : static_cast<const char*>(wxGTK_CONV(label)), #endif btnid); wxASSERT_MSG( button, "unexpectedly failed to add button to info bar" ); return button; }
bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, const wxString &lbl, const wxPoint &pos, const wxSize &size, long style, const wxValidator& validator, const wxString &name) { wxString label(lbl); if (label.empty() && wxIsStockID(id)) label = wxGetStockLabel(id); long ctrl_style = style & !wxBU_ALIGN_MASK; wxASSERT_MSG( (ctrl_style & wxALIGN_MASK) == 0, _T("Some style conflicts with align flags") ); if((style & wxBU_RIGHT) == wxBU_RIGHT) ctrl_style |= wxALIGN_RIGHT; else if((style & wxBU_LEFT) == wxBU_LEFT) ctrl_style |= wxALIGN_LEFT; else ctrl_style |= wxALIGN_CENTRE_HORIZONTAL; if((style & wxBU_TOP) == wxBU_TOP) ctrl_style |= wxALIGN_TOP; else if((style & wxBU_BOTTOM) == wxBU_BOTTOM) ctrl_style |= wxALIGN_BOTTOM; else ctrl_style |= wxALIGN_CENTRE_VERTICAL; if ( !wxControl::Create(parent, id, pos, size, ctrl_style, validator, name) ) return false; SetLabel(label); SetImageLabel(bitmap); // SetBestSize(size); -- called by SetImageLabel() CreateInputHandler(wxINP_HANDLER_BUTTON); return true; }