/*! * Creates the search bar and keeps it hidden */ void PasswordSafeSearch::CreateSearchBar() { wxASSERT(m_toolbar == 0); wxPanel *panel = new wxPanel(m_parentFrame, wxID_ANY); wxBoxSizer *panelSizer = new wxBoxSizer(wxVERTICAL); panel->SetSizer(panelSizer); m_toolbar = new wxToolBar(panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE | wxTB_BOTTOM | wxTB_HORIZONTAL, wxT("SearchBar")); panelSizer->Add(m_toolbar, wxSizerFlags().Proportion(1).Expand()); m_toolbar->AddTool(ID_FIND_CLOSE, wxT(""), wxBitmap(findclose_xpm), wxNullBitmap, wxITEM_NORMAL, _("Close SearchBar")); wxSize srchCtrlSize(m_parentFrame->GetSize().GetWidth()/5, wxDefaultSize.GetHeight()); wxSearchCtrl* srchCtrl = new wxSearchCtrl(m_toolbar, ID_FIND_EDITBOX, wxEmptyString, wxDefaultPosition, srchCtrlSize, wxTE_PROCESS_ENTER); srchCtrl->ShowCancelButton(true); srchCtrl->ShowSearchButton(true); m_toolbar->AddControl(srchCtrl); m_toolbar->AddTool(ID_FIND_NEXT, wxT(""), wxBitmap(find_xpm), wxBitmap(find_disabled_xpm), wxITEM_NORMAL, _("Find Next")); m_toolbar->AddCheckTool(ID_FIND_IGNORE_CASE, wxT(""), wxBitmap(findcase_i_xpm), wxBitmap(findcase_s_xpm), _("Case Insensitive Search")); m_toolbar->AddTool(ID_FIND_ADVANCED_OPTIONS, wxT(""), wxBitmap(findadvanced_xpm), wxNullBitmap, wxITEM_CHECK, _("Advanced Find Options")); m_toolbar->AddTool(ID_FIND_CREATE_REPORT, wxT(""), wxBitmap(findreport_xpm), wxNullBitmap, wxITEM_NORMAL, _("Create report of previous Find search")); m_toolbar->AddTool(ID_FIND_CLEAR, wxT(""), wxBitmap(findclear_xpm), wxNullBitmap, wxITEM_NORMAL, _("Clear Find")); m_toolbar->AddControl(new wxStaticText(m_toolbar, ID_FIND_STATUS_AREA, wxEmptyString, wxDefaultPosition, srchCtrlSize.Scale(3,1), wxTE_READONLY)); RefreshButtons(); if (!m_toolbar->Realize()) wxMessageBox(_("Could not create Search Bar"), _("Lumimaja")); wxSizer* origSizer = m_parentFrame->GetSizer(); wxASSERT(origSizer); if (!origSizer) return; wxASSERT(origSizer->IsKindOf(wxBoxSizer(wxVERTICAL).GetClassInfo())); wxASSERT(((wxBoxSizer*)origSizer)->GetOrientation() == wxVERTICAL); origSizer->Add(panel, 0, wxEXPAND); origSizer->Layout(); if (!m_toolbar->Show(true) && !m_toolbar->IsShownOnScreen()) wxMessageBox(_("Could not display searchbar")); //This gross hack is the only way I could think of to get ESC keystrokes from the text ctrl user is typing into if (wxDynamicCast(static_cast<wxControl*>(srchCtrl), wxTextCtrl)) { //searchCtrl is a wxTextCtrl derivative, like on Mac OS X 10.3+ wxDynamicCast(static_cast<wxControl*>(srchCtrl), wxTextCtrl)->Connect(wxEVT_CHAR, wxCharEventHandler(PasswordSafeSearch::OnSearchBarTextChar), NULL, this); } else { //The wxTextCtrl is buried inside the wxSearchCtrl wxWindowList& srchChildren = srchCtrl->GetChildren(); for( wxWindowList::const_iterator itr = srchChildren.begin(); itr != srchChildren.end(); ++itr) { wxTextCtrl* txtCtrl = wxDynamicCast(*itr, wxTextCtrl); if (txtCtrl) { txtCtrl->Connect(wxEVT_CHAR, wxCharEventHandler(PasswordSafeSearch::OnSearchBarTextChar), NULL, this); break; } } } srchCtrl->Connect(wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler(PasswordSafeSearch::OnSearchTextChanged), NULL, this); srchCtrl->Connect(wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN, wxCommandEventHandler(PasswordSafeSearch::OnDoSearch), NULL, this); srchCtrl->Connect(wxEVT_COMMAND_TEXT_ENTER, wxTextEventHandler(PasswordSafeSearch::OnDoSearch), NULL, this); m_toolbar->Connect(ID_FIND_CLOSE, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler(PasswordSafeSearch::OnSearchClose), NULL, this); m_toolbar->Connect(ID_FIND_ADVANCED_OPTIONS, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler(PasswordSafeSearch::OnAdvancedSearchOptions), NULL, this); m_toolbar->Connect(ID_FIND_NEXT, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler(PasswordSafeSearch::OnDoSearch), NULL, this); m_toolbar->Connect(ID_FIND_CLEAR, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler(PasswordSafeSearch::OnSearchClear), NULL, this); }
MemoryView::MemoryView( wxWindow* parent ) : MemoryViewBase( parent ) { m_buttonUpdate->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( MemoryView::OnUpdateUI ), NULL, this ); m_textCtrlExpression->Connect( wxEVT_COMMAND_TEXT_ENTER, wxTextEventHandler( MemoryView::OnEvaluate ), NULL, this ); }