X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/33cf9a192231cb815d089a9e1d4188a324b762bb..a9a56347b84be54a9d48df2cfe08ddf761aaf491:/samples/widgets/spinbtn.cpp diff --git a/samples/widgets/spinbtn.cpp b/samples/widgets/spinbtn.cpp index a1ea73f112..a774835921 100644 --- a/samples/widgets/spinbtn.cpp +++ b/samples/widgets/spinbtn.cpp @@ -54,7 +54,7 @@ // control ids enum { - SpinBtnPage_Reset = 100, + SpinBtnPage_Reset = wxID_HIGHEST, SpinBtnPage_Clear, SpinBtnPage_SetValue, SpinBtnPage_SetMinAndMax, @@ -73,13 +73,16 @@ enum class SpinBtnWidgetsPage : public WidgetsPage { public: - SpinBtnWidgetsPage(wxBookCtrlBase *book, wxImageList *imaglist); + SpinBtnWidgetsPage(WidgetsBookCtrl *book, wxImageList *imaglist); virtual ~SpinBtnWidgetsPage(){}; virtual wxControl *GetWidget() const { return m_spinbtn; } virtual wxControl *GetWidget2() const { return m_spinctrl; } virtual void RecreateWidget() { CreateSpin(); } + // lazy creation of the content + virtual void CreateContent(); + protected: // event handlers void OnButtonReset(wxCommandEvent& event); @@ -93,6 +96,7 @@ protected: void OnSpinBtnUp(wxSpinEvent& event); void OnSpinBtnDown(wxSpinEvent& event); void OnSpinCtrl(wxSpinEvent& event); + void OnSpinText(wxCommandEvent& event); void OnUpdateUIValueButton(wxUpdateUIEvent& event); void OnUpdateUIMinMaxButton(wxUpdateUIEvent& event); @@ -157,6 +161,7 @@ BEGIN_EVENT_TABLE(SpinBtnWidgetsPage, WidgetsPage) EVT_SPIN_UP(SpinBtnPage_SpinBtn, SpinBtnWidgetsPage::OnSpinBtnUp) EVT_SPIN_DOWN(SpinBtnPage_SpinBtn, SpinBtnWidgetsPage::OnSpinBtnDown) EVT_SPINCTRL(SpinBtnPage_SpinCtrl, SpinBtnWidgetsPage::OnSpinCtrl) + EVT_TEXT(SpinBtnPage_SpinCtrl, SpinBtnWidgetsPage::OnSpinText) EVT_CHECKBOX(wxID_ANY, SpinBtnWidgetsPage::OnCheckOrRadioBox) EVT_RADIOBOX(wxID_ANY, SpinBtnWidgetsPage::OnCheckOrRadioBox) @@ -166,11 +171,19 @@ END_EVENT_TABLE() // implementation // ============================================================================ -IMPLEMENT_WIDGETS_PAGE(SpinBtnWidgetsPage, _T("Spin")); +#if defined(__WXUNIVERSAL__) + #define FAMILY_CTRLS UNIVERSAL_CTRLS +#else + #define FAMILY_CTRLS NATIVE_CTRLS +#endif + +IMPLEMENT_WIDGETS_PAGE(SpinBtnWidgetsPage, _T("Spin"), + FAMILY_CTRLS | EDITABLE_CTRLS + ); -SpinBtnWidgetsPage::SpinBtnWidgetsPage(wxBookCtrlBase *book, +SpinBtnWidgetsPage::SpinBtnWidgetsPage(WidgetsBookCtrl *book, wxImageList *imaglist) - : WidgetsPage(book) + : WidgetsPage(book, imaglist, spinbtn_xpm) { m_chkVert = NULL; m_chkWrap = NULL; @@ -179,7 +192,6 @@ SpinBtnWidgetsPage::SpinBtnWidgetsPage(wxBookCtrlBase *book, m_textValue = NULL; m_textMin = NULL; m_textMax = NULL; - imaglist->Add(wxBitmap(spinbtn_xpm)); // init everything m_min = 0; @@ -190,7 +202,10 @@ SpinBtnWidgetsPage::SpinBtnWidgetsPage(wxBookCtrlBase *book, m_spinbtn = (wxSpinButton *)NULL; m_sizerSpin = (wxSizer *)NULL; +} +void SpinBtnWidgetsPage::CreateContent() +{ wxSizer *sizerTop = new wxBoxSizer(wxHORIZONTAL); // left pane @@ -253,8 +268,6 @@ SpinBtnWidgetsPage::SpinBtnWidgetsPage(wxBookCtrlBase *book, // final initializations SetSizer(sizerTop); - - sizerTop->Fit(this); } // ---------------------------------------------------------------------------- @@ -340,7 +353,7 @@ void SpinBtnWidgetsPage::OnButtonSetMinAndMax(wxCommandEvent& WXUNUSED(event)) maxNew = 0; // init to suppress compiler warning if ( !m_textMin->GetValue().ToLong(&minNew) || !m_textMax->GetValue().ToLong(&maxNew) || - minNew >= maxNew ) + minNew > maxNew ) { wxLogWarning(_T("Invalid min/max values for the spinbtn.")); @@ -379,7 +392,7 @@ void SpinBtnWidgetsPage::OnUpdateUIMinMaxButton(wxUpdateUIEvent& event) long mn, mx; event.Enable( m_textMin->GetValue().ToLong(&mn) && m_textMax->GetValue().ToLong(&mx) && - mn < mx); + mn <= mx); } void SpinBtnWidgetsPage::OnUpdateUIResetButton(wxUpdateUIEvent& event) @@ -421,8 +434,6 @@ void SpinBtnWidgetsPage::OnSpinBtnDown(wxSpinEvent& event) void SpinBtnWidgetsPage::OnSpinCtrl(wxSpinEvent& event) { - if (!m_spinctrl) - return; int value = event.GetInt(); wxASSERT_MSG( value == m_spinctrl->GetValue(), @@ -430,5 +441,11 @@ void SpinBtnWidgetsPage::OnSpinCtrl(wxSpinEvent& event) wxLogMessage(_T("Spin control value changed, now %d"), value); } -#endif - // wxUSE_SPINBTN + +void SpinBtnWidgetsPage::OnSpinText(wxCommandEvent& event) +{ + wxLogMessage(_T("Text changed in spin control, now \"%s\""), + event.GetString().c_str()); +} + +#endif // wxUSE_SPINBTN