| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Program:     wxWidgets Widgets Sample
 
- // Name:        searchctrl.cpp
 
- // Purpose:     Shows wxSearchCtrl
 
- // Author:      Robin Dunn
 
- // Created:     9-Dec-2006
 
- // Copyright:   (c) 2006
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- // ============================================================================
 
- // declarations
 
- // ============================================================================
 
- // ----------------------------------------------------------------------------
 
- // headers
 
- // ----------------------------------------------------------------------------
 
- // for compilers that support precompilation, includes "wx/wx.h".
 
- #include "wx/wxprec.h"
 
- #ifdef __BORLANDC__
 
-     #pragma hdrstop
 
- #endif
 
- #if wxUSE_SEARCHCTRL
 
- // for all others, include the necessary headers
 
- #ifndef WX_PRECOMP
 
-     #include "wx/app.h"
 
-     #include "wx/log.h"
 
-     #include "wx/radiobox.h"
 
-     #include "wx/statbox.h"
 
- #endif
 
- #include "wx/artprov.h"
 
- #include "wx/sizer.h"
 
- #include "wx/stattext.h"
 
- #include "wx/checkbox.h"
 
- #include "wx/menu.h"
 
- #include "wx/srchctrl.h"
 
- #include "widgets.h"
 
- #include "icons/text.xpm"
 
- // ----------------------------------------------------------------------------
 
- // constants
 
- // ----------------------------------------------------------------------------
 
- // control ids
 
- enum
 
- {
 
-      ID_SEARCH_CB = wxID_HIGHEST,
 
-      ID_CANCEL_CB,
 
-      ID_MENU_CB,
 
-      ID_SEARCHMENU
 
- };
 
- // ----------------------------------------------------------------------------
 
- // ColourPickerWidgetsPage
 
- // ----------------------------------------------------------------------------
 
- class SearchCtrlWidgetsPage : public WidgetsPage
 
- {
 
- public:
 
-     SearchCtrlWidgetsPage(WidgetsBookCtrl *book, wxImageList *imaglist);
 
-     virtual ~SearchCtrlWidgetsPage(){};
 
-     virtual wxControl *GetWidget() const { return m_srchCtrl; }
 
-     virtual wxTextEntryBase *GetTextEntry() const { return m_srchCtrl; }
 
-     virtual void RecreateWidget();
 
-     // lazy creation of the content
 
-     virtual void CreateContent();
 
- protected:
 
-     void OnToggleSearchButton(wxCommandEvent&);
 
-     void OnToggleCancelButton(wxCommandEvent&);
 
-     void OnToggleSearchMenu(wxCommandEvent&);
 
-     void OnSearch(wxCommandEvent& event);
 
-     void OnSearchCancel(wxCommandEvent& event);
 
-     wxMenu* CreateTestMenu();
 
-     // (re)create the control
 
-     void CreateControl();
 
-     wxSearchCtrl*       m_srchCtrl;
 
-     wxCheckBox*         m_searchBtnCheck;
 
-     wxCheckBox*         m_cancelBtnCheck;
 
-     wxCheckBox*         m_menuBtnCheck;
 
- private:
 
-     wxDECLARE_EVENT_TABLE();
 
-     DECLARE_WIDGETS_PAGE(SearchCtrlWidgetsPage)
 
- };
 
- // ----------------------------------------------------------------------------
 
- // event tables
 
- // ----------------------------------------------------------------------------
 
- wxBEGIN_EVENT_TABLE(SearchCtrlWidgetsPage, WidgetsPage)
 
-     EVT_CHECKBOX(ID_SEARCH_CB, SearchCtrlWidgetsPage::OnToggleSearchButton)
 
-     EVT_CHECKBOX(ID_CANCEL_CB, SearchCtrlWidgetsPage::OnToggleCancelButton)
 
-     EVT_CHECKBOX(ID_MENU_CB, SearchCtrlWidgetsPage::OnToggleSearchMenu)
 
-     EVT_SEARCHCTRL_SEARCH_BTN(wxID_ANY, SearchCtrlWidgetsPage::OnSearch)
 
-     EVT_SEARCHCTRL_CANCEL_BTN(wxID_ANY, SearchCtrlWidgetsPage::OnSearchCancel)
 
- wxEND_EVENT_TABLE()
 
- // ============================================================================
 
- // implementation
 
- // ============================================================================
 
- #if defined(__WXMAC__)
 
-     #define FAMILY_CTRLS NATIVE_CTRLS
 
- #else
 
-     #define FAMILY_CTRLS GENERIC_CTRLS
 
- #endif
 
- IMPLEMENT_WIDGETS_PAGE(SearchCtrlWidgetsPage, wxT("SearchCtrl"),
 
-                        FAMILY_CTRLS | EDITABLE_CTRLS | ALL_CTRLS);
 
- SearchCtrlWidgetsPage::SearchCtrlWidgetsPage(WidgetsBookCtrl *book,
 
-                                      wxImageList *imaglist)
 
-                   : WidgetsPage(book, imaglist, text_xpm)
 
- {
 
- }
 
- void SearchCtrlWidgetsPage::CreateContent()
 
- {
 
-     m_srchCtrl = NULL;
 
-     CreateControl();
 
-     wxSizer* box = new wxStaticBoxSizer(
 
-         new wxStaticBox(this, -1, wxT("Options")),
 
-         wxVERTICAL);
 
-     m_searchBtnCheck = new wxCheckBox(this, ID_SEARCH_CB, wxT("Search button"));
 
-     m_cancelBtnCheck = new wxCheckBox(this, ID_CANCEL_CB, wxT("Cancel button"));
 
-     m_menuBtnCheck   = new wxCheckBox(this, ID_MENU_CB,   wxT("Search menu"));
 
-     m_searchBtnCheck->SetValue(true);
 
-     box->Add(m_searchBtnCheck, 0, wxALL, 5);
 
-     box->Add(m_cancelBtnCheck, 0, wxALL, 5);
 
-     box->Add(m_menuBtnCheck,   0, wxALL, 5);
 
-     wxSizer* sizer = new wxBoxSizer(wxHORIZONTAL);
 
-     sizer->Add(box, 0,  wxALL|wxEXPAND, 15);
 
-     sizer->Add(m_srchCtrl, 0, wxALL|wxALIGN_CENTER, 15);
 
-     SetSizer(sizer);
 
- }
 
- void SearchCtrlWidgetsPage::CreateControl()
 
- {
 
-     if (m_srchCtrl)
 
-         m_srchCtrl->Destroy();
 
-     int style = 0;
 
-     m_srchCtrl = new wxSearchCtrl(this, -1, wxEmptyString, wxDefaultPosition,
 
-                                   wxSize(150, -1), style);
 
- }
 
- void SearchCtrlWidgetsPage::RecreateWidget()
 
- {
 
-     CreateControl();
 
-     GetSizer()->Add(m_srchCtrl, wxSizerFlags().Centre().TripleBorder());
 
-     Layout();
 
- }
 
- wxMenu* SearchCtrlWidgetsPage::CreateTestMenu()
 
- {
 
-     wxMenu* menu = new wxMenu;
 
-     const int SEARCH_MENU_SIZE = 5;
 
-     wxMenuItem* menuItem = menu->Append(wxID_ANY, wxT("Recent Searches"), wxT(""), wxITEM_NORMAL);
 
-     menuItem->Enable(false);
 
-     for ( int i = 0; i < SEARCH_MENU_SIZE; i++ )
 
-     {
 
-         wxString itemText = wxString::Format(wxT("item %i"),i);
 
-         wxString tipText = wxString::Format(wxT("tip %i"),i);
 
-         menu->Append(ID_SEARCHMENU+i, itemText, tipText, wxITEM_NORMAL);
 
-     }
 
- //     target->Connect(
 
- //         ID_SEARCHMENU,
 
- //         ID_SEARCHMENU+SEARCH_MENU_SIZE,
 
- //         wxEVT_MENU,
 
- //         wxCommandEventHandler(MySearchCtrl::OnSearchMenu)
 
- //         );
 
-     return menu;
 
- }
 
- // ----------------------------------------------------------------------------
 
- // event handlers
 
- // ----------------------------------------------------------------------------
 
- void SearchCtrlWidgetsPage::OnToggleSearchButton(wxCommandEvent&)
 
- {
 
-     m_srchCtrl->ShowSearchButton( m_searchBtnCheck->GetValue() );
 
- }
 
- void SearchCtrlWidgetsPage::OnToggleCancelButton(wxCommandEvent&)
 
- {
 
-     m_srchCtrl->ShowCancelButton( m_cancelBtnCheck->GetValue() );
 
- }
 
- void SearchCtrlWidgetsPage::OnToggleSearchMenu(wxCommandEvent&)
 
- {
 
-     if ( m_menuBtnCheck->GetValue() )
 
-         m_srchCtrl->SetMenu( CreateTestMenu() );
 
-     else
 
-         m_srchCtrl->SetMenu(NULL);
 
- }
 
- void SearchCtrlWidgetsPage::OnSearch(wxCommandEvent& event)
 
- {
 
-     wxLogMessage("Search button: search for \"%s\".", event.GetString());
 
- }
 
- void SearchCtrlWidgetsPage::OnSearchCancel(wxCommandEvent& event)
 
- {
 
-     wxLogMessage("Cancel button pressed.");
 
-     event.Skip();
 
- }
 
- #endif  //  wxUSE_SEARCHCTRL
 
 
  |