X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a4c970041c50477c181eaf7bd974e320c74cd6e8..2a31049201e9c1ff9f515eb9d144ae392f4b4e5a:/src/generic/numdlgg.cpp?ds=sidebyside diff --git a/src/generic/numdlgg.cpp b/src/generic/numdlgg.cpp index 96b70f53a3..e0d39f7153 100644 --- a/src/generic/numdlgg.cpp +++ b/src/generic/numdlgg.cpp @@ -18,8 +18,8 @@ // ---------------------------------------------------------------------------- #ifdef __GNUG__ - #pragma interface "numdlgg.h" - #pragma implementation "numdlgg.h" + #pragma interface "numdlgg.cpp" + #pragma implementation "numdlgg.cpp" #endif // For compilers that support precompilation, includes "wx.h". @@ -45,9 +45,16 @@ #include "wx/statline.h" #endif +#include "wx/spinctrl.h" + // this is where wxGetNumberFromUser() is declared #include "wx/generic/textdlgg.h" +#if !wxUSE_SPINCTRL + // wxTextCtrl will do instead of wxSpinCtrl if we don't have it + #define wxSpinCtrl wxTextCtrl +#endif + // ---------------------------------------------------------------------------- // private classes // ---------------------------------------------------------------------------- @@ -69,7 +76,7 @@ public: void OnCancel(wxCommandEvent& event); protected: - wxTextCtrl *m_spinctrl; // TODO replace it with wxSpinCtrl once it's done + wxSpinCtrl *m_spinctrl; long m_value, m_min, m_max; @@ -107,12 +114,12 @@ wxNumberEntryDialog::wxNumberEntryDialog(wxWindow *parent, m_min = min; wxBeginBusyCursor(); - + wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL ); // 1) text message topsizer->Add( CreateTextSizer( message ), 0, wxALL, 10 ); - + // 2) prompt and text ctrl wxBoxSizer *inputsizer = new wxBoxSizer( wxHORIZONTAL ); // prompt if any @@ -120,10 +127,11 @@ wxNumberEntryDialog::wxNumberEntryDialog(wxWindow *parent, inputsizer->Add( new wxStaticText( this, -1, prompt ), 0, wxCENTER | wxLEFT, 10 ); // spin ctrl wxString valStr; - valStr.Printf(_T("%lu"), m_value); - m_spinctrl = new wxTextCtrl(this, -1, valStr, wxDefaultPosition, wxSize( 140, -1 ) ); + valStr.Printf(wxT("%lu"), m_value); + m_spinctrl = new wxSpinCtrl(this, -1, valStr, wxDefaultPosition, wxSize( 140, -1 ) ); + m_spinctrl->SetRange((int)m_min, (int)m_max); inputsizer->Add( m_spinctrl, 1, wxCENTER | wxLEFT | wxRIGHT, 10 ); - // add both + // add both topsizer->Add( inputsizer, 1, wxEXPAND | wxLEFT|wxRIGHT, 5 ); #if wxUSE_STATLINE @@ -133,7 +141,7 @@ wxNumberEntryDialog::wxNumberEntryDialog(wxWindow *parent, // 4) buttons topsizer->Add( CreateButtonSizer( wxOK|wxCANCEL ), 0, wxCENTRE | wxALL, 10 ); - + SetSizer( topsizer ); SetAutoLayout( TRUE ); @@ -149,8 +157,15 @@ wxNumberEntryDialog::wxNumberEntryDialog(wxWindow *parent, void wxNumberEntryDialog::OnOK(wxCommandEvent& WXUNUSED(event)) { - if ( (wxSscanf(m_spinctrl->GetValue(), _T("%lu"), &m_value) != 1) || - (m_value < m_min) || (m_value > m_max) ) +#if !wxUSE_SPINCTRL + wxString tmp = m_spinctrl->GetValue(); + if ( wxSscanf(tmp, _T("%ld"), &m_value) != 1 ) + m_value = -1; + else +#else + m_value = m_spinctrl->GetValue(); +#endif + if ( m_value < m_min || m_value > m_max ) { // not a number or out of range m_value = -1;