X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ddaa6e899bcc1be211e269ed2947a04b6d190be8..e9cec36348072df16d6cd649f82a92c86ba3b662:/samples/controls/controls.cpp diff --git a/samples/controls/controls.cpp b/samples/controls/controls.cpp index aa66f2672c..2ab570ed62 100644 --- a/samples/controls/controls.cpp +++ b/samples/controls/controls.cpp @@ -190,6 +190,8 @@ public: #endif // wxUSE_TOOLTIPS void OnEnableAll(wxCommandEvent& event); + void OnHideAll(wxCommandEvent& event); + void OnHideList(wxCommandEvent& event); void OnContextHelp(wxCommandEvent& event); void OnIdle( wxIdleEvent& event ); @@ -381,6 +383,8 @@ enum // panel menu CONTROLS_ENABLE_ALL, + CONTROLS_HIDE_ALL, + CONTROLS_HIDE_LIST, CONTROLS_CONTEXT_HELP }; @@ -1310,8 +1314,9 @@ void MyPanel::OnListBoxButtons( wxCommandEvent &event ) static const wxChar *GetDataString(wxClientData *data) { - return data ? wx_static_cast(wxStringClientData *, data)->GetData().c_str() - : _T("none"); + return ( + data ? wx_static_cast(wxStringClientData *, data)->GetData() : wxString("none") + ).c_str(); } void MyPanel::OnChoice( wxCommandEvent &event ) @@ -1739,6 +1744,8 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) #endif // wxUSE_TOOLTIPS EVT_MENU(CONTROLS_ENABLE_ALL, MyFrame::OnEnableAll) + EVT_MENU(CONTROLS_HIDE_ALL, MyFrame::OnHideAll) + EVT_MENU(CONTROLS_HIDE_LIST, MyFrame::OnHideList) EVT_MENU(CONTROLS_CONTEXT_HELP, MyFrame::OnContextHelp) EVT_ICONIZE(MyFrame::OnIconized) @@ -1786,6 +1793,10 @@ MyFrame::MyFrame(const wxChar *title, int x, int y) wxMenu *panel_menu = new wxMenu; panel_menu->Append(CONTROLS_ENABLE_ALL, _T("&Disable all\tCtrl-E"), _T("Enable/disable all panel controls"), true); + panel_menu->Append(CONTROLS_HIDE_ALL, _T("&Hide all\tCtrl-I"), + _T("Show/hide thoe whole panel controls"), true); + panel_menu->Append(CONTROLS_HIDE_LIST, _T("Hide &list ctrl\tCtrl-S"), + _T("Enable/disable all panel controls"), true); panel_menu->Append(CONTROLS_CONTEXT_HELP, _T("&Context help...\tCtrl-H"), _T("Get context help for a control")); menu_bar->Append(panel_menu, _T("&Panel")); @@ -1857,6 +1868,31 @@ void MyFrame::OnEnableAll(wxCommandEvent& WXUNUSED(event)) s_enable = !s_enable; m_panel->Enable(s_enable); + static bool s_enableCheckbox = true; + if ( !s_enable ) + { + // this is a test for correct behaviour of either enabling or disabling + // a child when its parent is disabled: the checkbox should have the + // correct state when the parent is enabled back + m_panel->m_checkbox->Enable(s_enableCheckbox); + s_enableCheckbox = !s_enableCheckbox; + } +} + +void MyFrame::OnHideAll(wxCommandEvent& WXUNUSED(event)) +{ + static bool s_show = true; + + s_show = !s_show; + m_panel->Show(s_show); +} + +void MyFrame::OnHideList(wxCommandEvent& WXUNUSED(event)) +{ + static bool s_show = true; + + s_show = !s_show; + m_panel->m_listbox->Show(s_show); } void MyFrame::OnContextHelp(wxCommandEvent& WXUNUSED(event)) @@ -1898,24 +1934,30 @@ void MyFrame::OnSize( wxSizeEvent& event ) void MyFrame::OnIdle( wxIdleEvent& WXUNUSED(event) ) { // track the window which has the focus in the status bar - static wxWindow *s_windowFocus = (wxWindow *)NULL; + static wxWindow *s_windowFocus = NULL; wxWindow *focus = wxWindow::FindFocus(); - if ( focus && (focus != s_windowFocus) ) + if ( focus != s_windowFocus ) { s_windowFocus = focus; wxString msg; - msg.Printf( + if ( focus ) + { + msg.Printf( + _T("Focus: %s") #ifdef __WXMSW__ - _T("Focus: %s, HWND = %08x"), -#else - _T("Focus: %s"), + , _T(", HWND = %08x") #endif - s_windowFocus->GetClassInfo()->GetClassName() + , s_windowFocus->GetName().c_str() #ifdef __WXMSW__ - , (unsigned int) s_windowFocus->GetHWND() + , (unsigned int) s_windowFocus->GetHWND() #endif - ); + ); + } + else + { + msg = _T("No focus"); + } #if wxUSE_STATUSBAR SetStatusText(msg);