X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/206d3a16caa7a4e626395ae52cc8f7e0225e202d..0e41582e529b14dab0f6da62451b133b85227176:/samples/widgets/radiobox.cpp?ds=sidebyside diff --git a/samples/widgets/radiobox.cpp b/samples/widgets/radiobox.cpp index 612c3fe515..ddb8456084 100644 --- a/samples/widgets/radiobox.cpp +++ b/samples/widgets/radiobox.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Program: wxWindows Widgets Sample +// Program: wxWidgets Widgets Sample // Name: radiobox.cpp // Purpose: Part of the widgets sample showing wxRadioBox // Author: Vadim Zeitlin @@ -24,6 +24,8 @@ #pragma hdrstop #endif +#if wxUSE_RADIOBOX + // for all others, include the necessary headers #ifndef WX_PRECOMP #include "wx/log.h" @@ -39,7 +41,7 @@ #include "wx/sizer.h" #include "widgets.h" -#if 1 + #include "icons/radiobox.xpm" // ---------------------------------------------------------------------------- @@ -54,6 +56,8 @@ enum RadioPage_Selection, RadioPage_Label, RadioPage_LabelBtn, + RadioPage_EnableItem, + RadioPage_ShowItem, RadioPage_Radio }; @@ -69,6 +73,9 @@ enum static const unsigned int DEFAULT_NUM_ENTRIES = 12; static const unsigned int DEFAULT_MAJOR_DIM = 3; +// this item is enabled/disabled shown/hidden by the test checkboxes +static const int TEST_BUTTON = 1; + // ---------------------------------------------------------------------------- // RadioWidgetsPage // ---------------------------------------------------------------------------- @@ -76,8 +83,10 @@ static const unsigned int DEFAULT_MAJOR_DIM = 3; class RadioWidgetsPage : public WidgetsPage { public: - RadioWidgetsPage(wxNotebook *notebook, wxImageList *imaglist); - virtual ~RadioWidgetsPage(); + RadioWidgetsPage(wxBookCtrlBase *book, wxImageList *imaglist); + virtual ~RadioWidgetsPage(){}; + + virtual wxControl *GetWidget() const { return m_radio; } protected: // event handlers @@ -90,9 +99,14 @@ protected: void OnButtonSelection(wxCommandEvent& event); void OnButtonSetLabel(wxCommandEvent& event); + void OnEnableItem(wxCommandEvent& event); + void OnShowItem(wxCommandEvent& event); + void OnUpdateUIReset(wxUpdateUIEvent& event); void OnUpdateUIUpdate(wxUpdateUIEvent& event); void OnUpdateUISelection(wxUpdateUIEvent& event); + void OnUpdateUIEnableItem(wxUpdateUIEvent& event); + void OnUpdateUIShowItem(wxUpdateUIEvent& event); // reset the wxRadioBox parameters void Reset(); @@ -105,6 +119,8 @@ protected: // the check/radio boxes for styles wxCheckBox *m_chkVert; + wxCheckBox *m_chkEnableItem; + wxCheckBox *m_chkShowItem; wxRadioBox *m_radioDir; // the gauge itself and the sizer it is in @@ -142,6 +158,12 @@ BEGIN_EVENT_TABLE(RadioWidgetsPage, WidgetsPage) EVT_RADIOBOX(RadioPage_Radio, RadioWidgetsPage::OnRadioBox) + EVT_CHECKBOX(RadioPage_EnableItem, RadioWidgetsPage::OnEnableItem) + EVT_CHECKBOX(RadioPage_ShowItem, RadioWidgetsPage::OnShowItem) + + EVT_UPDATE_UI(RadioPage_EnableItem, RadioWidgetsPage::OnUpdateUIEnableItem) + EVT_UPDATE_UI(RadioPage_ShowItem, RadioWidgetsPage::OnUpdateUIShowItem) + EVT_CHECKBOX(wxID_ANY, RadioWidgetsPage::OnCheckOrRadioBox) EVT_RADIOBOX(wxID_ANY, RadioWidgetsPage::OnCheckOrRadioBox) END_EVENT_TABLE() @@ -152,14 +174,16 @@ END_EVENT_TABLE() IMPLEMENT_WIDGETS_PAGE(RadioWidgetsPage, _T("Radio")); -RadioWidgetsPage::RadioWidgetsPage(wxNotebook *notebook, - wxImageList *imaglist) - : WidgetsPage(notebook) +RadioWidgetsPage::RadioWidgetsPage(wxBookCtrlBase *book, + wxImageList *imaglist) + : WidgetsPage(book) { imaglist->Add(wxBitmap(radio_xpm)); // init everything m_chkVert = (wxCheckBox *)NULL; + m_chkEnableItem = (wxCheckBox *)NULL; + m_chkShowItem = (wxCheckBox *)NULL; m_textNumBtns = m_textLabelBtns = @@ -243,6 +267,13 @@ RadioWidgetsPage::RadioWidgetsPage(wxNotebook *notebook, &m_textLabelBtns); sizerMiddle->Add(sizerRow, 0, wxGROW | wxALL, 5); + m_chkEnableItem = CreateCheckBoxAndAddToSizer(sizerMiddle, + _T("Disable &2nd item"), + RadioPage_EnableItem); + m_chkShowItem = CreateCheckBoxAndAddToSizer(sizerMiddle, + _T("Hide 2nd &item"), + RadioPage_ShowItem); + // right pane wxSizer *sizerRight = new wxBoxSizer(wxHORIZONTAL); sizerRight->SetMinSize(150, 0); @@ -262,10 +293,6 @@ RadioWidgetsPage::RadioWidgetsPage(wxNotebook *notebook, sizerTop->Fit(this); } -RadioWidgetsPage::~RadioWidgetsPage() -{ -} - // ---------------------------------------------------------------------------- // operations // ---------------------------------------------------------------------------- @@ -278,6 +305,8 @@ void RadioWidgetsPage::Reset() m_textLabelBtns->SetValue(_T("item")); m_chkVert->SetValue(false); + m_chkEnableItem->SetValue(true); + m_chkShowItem->SetValue(true); m_radioDir->SetSelection(RadioDir_Default); } @@ -363,6 +392,9 @@ void RadioWidgetsPage::CreateRadio() m_sizerRadio->Add(m_radio, 1, wxGROW); m_sizerRadio->Layout(); + + m_chkEnableItem->SetValue(true); + m_chkEnableItem->SetValue(true); } // ---------------------------------------------------------------------------- @@ -384,10 +416,12 @@ void RadioWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event)) void RadioWidgetsPage::OnRadioBox(wxCommandEvent& event) { int sel = m_radio->GetSelection(); + int event_sel = event.GetSelection(); + wxUnusedVar(event_sel); wxLogMessage(_T("Radiobox selection changed, now %d"), sel); - wxASSERT_MSG( sel == event.GetSelection(), + wxASSERT_MSG( sel == event_sel, _T("selection should be the same in event and radiobox") ); m_textCurSel->SetValue(wxString::Format(_T("%d"), sel)); @@ -417,6 +451,16 @@ void RadioWidgetsPage::OnButtonSelection(wxCommandEvent& WXUNUSED(event)) } } +void RadioWidgetsPage::OnEnableItem(wxCommandEvent& event) +{ + m_radio->Enable(TEST_BUTTON, event.IsChecked()); +} + +void RadioWidgetsPage::OnShowItem(wxCommandEvent& event) +{ + m_radio->Show(TEST_BUTTON, event.IsChecked()); +} + void RadioWidgetsPage::OnUpdateUIUpdate(wxUpdateUIEvent& event) { unsigned long n; @@ -455,4 +499,16 @@ void RadioWidgetsPage::OnUpdateUIReset(wxUpdateUIEvent& event) event.Enable(enable); } -#endif +void RadioWidgetsPage::OnUpdateUIEnableItem(wxUpdateUIEvent& event) +{ + event.SetText(m_radio->IsItemEnabled(TEST_BUTTON) ? _T("Disable &2nd item") + : _T("Enable &2nd item")); +} + +void RadioWidgetsPage::OnUpdateUIShowItem(wxUpdateUIEvent& event) +{ + event.SetText(m_radio->IsItemShown(TEST_BUTTON) ? _T("Hide 2nd &item") + : _T("Show 2nd &item")); +} + +#endif // wxUSE_RADIOBOX