+ const Widgets widgets = page->GetWidgets();
+ for ( Widgets::const_iterator it = widgets.begin();
+ it != widgets.end();
+ ++it )
+ {
+ (*it)->SetBackgroundColour(m_colBg);
+ (*it)->Refresh();
+ }
+}
+
+void WidgetsFrame::OnSetPageBg(wxCommandEvent& WXUNUSED(event))
+{
+ wxColour col = GetColourFromUser(this, GetBackgroundColour());
+ if ( !col.Ok() )
+ return;
+
+ CurrentPage()->SetBackgroundColour(col);
+ CurrentPage()->Refresh();
+}
+
+void WidgetsFrame::OnSetFont(wxCommandEvent& WXUNUSED(event))
+{
+#if wxUSE_FONTDLG
+ WidgetsPage *page = CurrentPage();
+
+ if (!m_font.Ok())
+ m_font = page->GetFont();
+
+ wxFont font = wxGetFontFromUser(this, m_font);
+ if ( !font.Ok() )
+ return;
+
+ m_font = font;
+
+ const Widgets widgets = page->GetWidgets();
+ for ( Widgets::const_iterator it = widgets.begin();
+ it != widgets.end();
+ ++it )
+ {
+ (*it)->SetFont(m_font);
+ (*it)->Refresh();
+ }
+#else
+ wxLogMessage(wxT("Font selection dialog not available in current build."));
+#endif
+}
+
+void WidgetsFrame::OnEnable(wxCommandEvent& event)
+{
+ const Widgets widgets = CurrentPage()->GetWidgets();
+ for ( Widgets::const_iterator it = widgets.begin();
+ it != widgets.end();
+ ++it )
+ {
+ (*it)->Enable(event.IsChecked());
+ }
+}
+
+void WidgetsFrame::OnSetBorder(wxCommandEvent& event)
+{
+ int border;
+ switch ( event.GetId() )
+ {
+ case Widgets_BorderNone: border = wxBORDER_NONE; break;
+ case Widgets_BorderStatic: border = wxBORDER_STATIC; break;
+ case Widgets_BorderSimple: border = wxBORDER_SIMPLE; break;
+ case Widgets_BorderRaised: border = wxBORDER_RAISED; break;
+ case Widgets_BorderSunken: border = wxBORDER_SUNKEN; break;
+ case Widgets_BorderDouble: border = wxBORDER_DOUBLE; break;
+
+ default:
+ wxFAIL_MSG( wxT("unknown border style") );
+ // fall through
+
+ case Widgets_BorderDefault: border = wxBORDER_DEFAULT; break;
+ }
+
+ WidgetsPage::ms_defaultFlags &= ~wxBORDER_MASK;
+ WidgetsPage::ms_defaultFlags |= border;
+
+ WidgetsPage *page = CurrentPage();
+
+ page->RecreateWidget();
+}
+
+void WidgetsFrame::OnToggleGlobalBusyCursor(wxCommandEvent& event)
+{
+ if ( event.IsChecked() )
+ wxBeginBusyCursor();
+ else
+ wxEndBusyCursor();
+}
+
+void WidgetsFrame::OnToggleBusyCursor(wxCommandEvent& event)
+{
+ wxCursor cursor(*(event.IsChecked() ? wxHOURGLASS_CURSOR
+ : wxSTANDARD_CURSOR));
+
+ const Widgets widgets = CurrentPage()->GetWidgets();
+ for ( Widgets::const_iterator it = widgets.begin();
+ it != widgets.end();
+ ++it )
+ {
+ (*it)->SetCursor(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.");
+ }
+}
+
+void WidgetsFrame::OnSetHint(wxCommandEvent& WXUNUSED(event))
+{
+ wxTextEntryBase *entry = CurrentPage()->GetTextEntry();
+ wxCHECK_RET( entry, "menu item should be disabled" );
+
+ static wxString s_hint("Type here");
+ wxString
+ hint = wxGetTextFromUser("Text hint:", "Widgets sample", s_hint, this);
+ if ( hint.empty() )
+ return;
+
+ s_hint = hint;
+
+ if ( entry->SetHint(hint) )
+ {
+ wxLogMessage("Set hint to \"%s\".", hint);
+ }
+ else
+ {
+ wxLogMessage("Text hints not supported.");
+ }