From 6a8d7937368f78c44b70a175477ecde6bd448119 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 29 Jun 2008 00:35:35 +0000 Subject: [PATCH] add a new menu for wxTextEntry-specific tests, currently it allows to check how auto-completion works (#9614) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54414 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- samples/widgets/combobox.cpp | 1 + samples/widgets/odcombobox.cpp | 2 + samples/widgets/searchctrl.cpp | 1 + samples/widgets/textctrl.cpp | 1 + samples/widgets/widgets.cpp | 80 +++++++++++++++++++++++++++++++++- samples/widgets/widgets.h | 3 ++ 6 files changed, 87 insertions(+), 1 deletion(-) diff --git a/samples/widgets/combobox.cpp b/samples/widgets/combobox.cpp index 6f004365c2..5916101b6e 100644 --- a/samples/widgets/combobox.cpp +++ b/samples/widgets/combobox.cpp @@ -93,6 +93,7 @@ public: ComboboxWidgetsPage(WidgetsBookCtrl *book, wxImageList *imaglist); virtual wxControl *GetWidget() const { return m_combobox; } + virtual wxTextEntryBase *GetTextEntry() const { return m_combobox; } virtual wxItemContainer* GetContainer() const { return m_combobox; } virtual void RecreateWidget() { CreateCombo(); } diff --git a/samples/widgets/odcombobox.cpp b/samples/widgets/odcombobox.cpp index b5201e3e3f..34d90347a7 100644 --- a/samples/widgets/odcombobox.cpp +++ b/samples/widgets/odcombobox.cpp @@ -92,6 +92,8 @@ public: ODComboboxWidgetsPage(WidgetsBookCtrl *book, wxImageList *imaglist); virtual wxControl *GetWidget() const { return m_combobox; } + virtual wxTextEntryBase *GetTextEntry() const + { return m_combobox ? m_combobox->GetTextCtrl() : NULL; } virtual wxItemContainer* GetContainer() const { return m_combobox; } virtual void RecreateWidget() { CreateCombo(); } diff --git a/samples/widgets/searchctrl.cpp b/samples/widgets/searchctrl.cpp index 80a95995c8..e87c599f08 100644 --- a/samples/widgets/searchctrl.cpp +++ b/samples/widgets/searchctrl.cpp @@ -72,6 +72,7 @@ public: virtual ~SearchCtrlWidgetsPage(){}; virtual wxControl *GetWidget() const { return m_srchCtrl; } + virtual wxTextEntryBase *GetTextEntry() const { return m_srchCtrl; } virtual void RecreateWidget() { CreateControl(); } // lazy creation of the content diff --git a/samples/widgets/textctrl.cpp b/samples/widgets/textctrl.cpp index e3f6c7845e..f0ad274d1b 100644 --- a/samples/widgets/textctrl.cpp +++ b/samples/widgets/textctrl.cpp @@ -138,6 +138,7 @@ public: virtual ~TextWidgetsPage(){}; virtual wxControl *GetWidget() const { return m_text; } + virtual wxTextEntryBase *GetTextEntry() const { return m_text; } virtual void RecreateWidget() { CreateText(); } // lazy creation of the content diff --git a/samples/widgets/widgets.cpp b/samples/widgets/widgets.cpp index 1637eb113b..ada1bd3364 100644 --- a/samples/widgets/widgets.cpp +++ b/samples/widgets/widgets.cpp @@ -87,7 +87,14 @@ enum Widgets_BusyCursor, Widgets_GoToPage, - Widgets_GoToPageLast = Widgets_GoToPage + 100 + Widgets_GoToPageLast = Widgets_GoToPage + 100, + + + TextEntry_Begin, + TextEntry_DisableAutoComplete = TextEntry_Begin, + TextEntry_AutoCompleteFixed, + TextEntry_AutoCompleteFilenames, + TextEntry_End }; const wxChar *WidgetsCategories[MAX_PAGES] = { @@ -153,6 +160,15 @@ protected: void OnToggleGlobalBusyCursor(wxCommandEvent& event); void OnToggleBusyCursor(wxCommandEvent& event); + + void OnDisableAutoComplete(wxCommandEvent& event); + void OnAutoCompleteFixed(wxCommandEvent& event); + void OnAutoCompleteFilenames(wxCommandEvent& event); + + void OnUpdateTextUI(wxUpdateUIEvent& event) + { + event.Enable( CurrentPage()->GetTextEntry() != NULL ); + } #endif // wxUSE_MENUS // initialize the book: add all pages to it @@ -285,6 +301,13 @@ BEGIN_EVENT_TABLE(WidgetsFrame, wxFrame) EVT_MENU(Widgets_GlobalBusyCursor, WidgetsFrame::OnToggleGlobalBusyCursor) EVT_MENU(Widgets_BusyCursor, WidgetsFrame::OnToggleBusyCursor) + EVT_MENU(TextEntry_DisableAutoComplete, WidgetsFrame::OnDisableAutoComplete) + EVT_MENU(TextEntry_AutoCompleteFixed, WidgetsFrame::OnAutoCompleteFixed) + EVT_MENU(TextEntry_AutoCompleteFilenames, WidgetsFrame::OnAutoCompleteFilenames) + + EVT_UPDATE_UI_RANGE(TextEntry_Begin, TextEntry_End - 1, + WidgetsFrame::OnUpdateTextUI) + EVT_MENU(wxID_EXIT, WidgetsFrame::OnExit) #endif // wxUSE_MENUS END_EVENT_TABLE() @@ -384,6 +407,17 @@ WidgetsFrame::WidgetsFrame(const wxString& title) menuWidget->AppendSeparator(); menuWidget->Append(wxID_EXIT, _T("&Quit\tCtrl-Q")); mbar->Append(menuWidget, _T("&Widget")); + + wxMenu *menuTextEntry = new wxMenu; + menuTextEntry->AppendRadioItem(TextEntry_DisableAutoComplete, + _T("&Disable auto-completion")); + menuTextEntry->AppendRadioItem(TextEntry_AutoCompleteFixed, + _T("Fixed-&list auto-completion")); + menuTextEntry->AppendRadioItem(TextEntry_AutoCompleteFilenames, + _T("&Files names auto-completion")); + + mbar->Append(menuTextEntry, _T("&Text")); + SetMenuBar(mbar); mbar->Check(Widgets_Enable, true); @@ -858,6 +892,50 @@ void WidgetsFrame::OnToggleBusyCursor(wxCommandEvent& event) : wxSTANDARD_CURSOR)); } +void WidgetsFrame::OnDisableAutoComplete(wxCommandEvent& WXUNUSED(event)) +{ + wxTextEntryBase *entry = CurrentPage()->GetTextEntry(); + wxCHECK_RET( entry, "menu item should be disabled" ); + + if ( entry->AutoComplete(wxArrayString()) ) + wxLogMessage("Disabled auto completion."); + else + wxLogMessage("AutoComplete() failed."); +} + +void WidgetsFrame::OnAutoCompleteFixed(wxCommandEvent& WXUNUSED(event)) +{ + wxTextEntryBase *entry = CurrentPage()->GetTextEntry(); + wxCHECK_RET( entry, "menu item should be disabled" ); + + wxArrayString completion_choices; + + // add a few strings so a completion occurs on any letter typed + for ( char idxc = 'a'; idxc < 'z'; ++idxc ) + completion_choices.push_back(wxString::Format("%c%c", idxc, idxc)); + + completion_choices.push_back("is this string for test?"); + completion_choices.push_back("this is a test string"); + completion_choices.push_back("this is another test string"); + completion_choices.push_back("this string is for test"); + + if ( entry->AutoComplete(completion_choices) ) + wxLogMessage("Enabled auto completion of a set of fixed strings."); + else + wxLogMessage("AutoComplete() failed."); +} + +void WidgetsFrame::OnAutoCompleteFilenames(wxCommandEvent& WXUNUSED(event)) +{ + wxTextEntryBase *entry = CurrentPage()->GetTextEntry(); + wxCHECK_RET( entry, "menu item should be disabled" ); + + if ( entry->AutoCompleteFileNames() ) + wxLogMessage("Enable auto completion of file names."); + else + wxLogMessage("AutoCompleteFileNames() failed."); +} + #endif // wxUSE_MENUS // ---------------------------------------------------------------------------- diff --git a/samples/widgets/widgets.h b/samples/widgets/widgets.h index a3f25a6a04..b0ed066f58 100644 --- a/samples/widgets/widgets.h +++ b/samples/widgets/widgets.h @@ -97,6 +97,9 @@ public: // return the control shown by this page virtual wxControl *GetWidget() const = 0; + // return the control shown by this page, if it supports text entry interface + virtual wxTextEntryBase *GetTextEntry() const { return NULL; } + // lazy creation of the content virtual void CreateContent() = 0; -- 2.47.2