X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fd008b87e310c3c1ab42f9b79573cebecedad21c..3a9a01661aa51c52b734b16abdceec2f905c5f25:/samples/controls/controls.cpp diff --git a/samples/controls/controls.cpp b/samples/controls/controls.cpp index 8c696f260e..e29c0b5236 100644 --- a/samples/controls/controls.cpp +++ b/samples/controls/controls.cpp @@ -29,12 +29,13 @@ #include "wx/tglbtn.h" #include "wx/notebook.h" #include "wx/imaglist.h" +#include "wx/artprov.h" #if wxUSE_TOOLTIPS #include "wx/tooltip.h" #endif -#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) || defined(__WXMGL__) +#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) || defined(__WXMGL__) || defined(__WXX11__) #define USE_XPM #endif @@ -111,6 +112,9 @@ public: #if wxUSE_SPINCTRL void OnSpinCtrl(wxSpinEvent& event); + void OnSpinCtrlUp(wxSpinEvent& event); + void OnSpinCtrlDown(wxSpinEvent& event); + void OnSpinCtrlText(wxCommandEvent& event); #endif // wxUSE_SPINCTRL void OnEnableAll(wxCommandEvent& event); @@ -183,10 +187,12 @@ private: if ( m_frameStatusBar ) { wxString msg; - wxSize sizeCl = GetClientSize(); - msg.Printf(_("pos=(%d, %d), size=%dx%d (client=%dx%d)"), + wxSize sizeAll = GetSize(), + sizeCl = GetClientSize(); + msg.Printf(_("pos=(%d, %d), size=%dx%d or %dx%d (client=%dx%d)"), pos.x, pos.y, size.x, size.y, + sizeAll.x, sizeAll.y, sizeCl.x, sizeCl.y); SetStatusText(msg, 1); } @@ -266,7 +272,7 @@ public: const wxValidator& validator = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr) : wxRadioBox(parent, id, title, pos, size, n, choices, majorDim, - style, validator, name) { } + style, validator, name) { SetForegroundColour(*wxRED); } protected: void OnFocusGot(wxFocusEvent& event) @@ -448,6 +454,9 @@ EVT_BUTTON (ID_BTNPROGRESS, MyPanel::OnShowProgress) #endif // wxUSE_SPINBTN #if wxUSE_SPINCTRL EVT_SPINCTRL (ID_SPINCTRL, MyPanel::OnSpinCtrl) +EVT_SPIN_UP (ID_SPINCTRL, MyPanel::OnSpinCtrlUp) +EVT_SPIN_DOWN (ID_SPINCTRL, MyPanel::OnSpinCtrlDown) +EVT_TEXT (ID_SPINCTRL, MyPanel::OnSpinCtrlText) #endif // wxUSE_SPINCTRL #if wxUSE_TOGGLEBTN EVT_TOGGLEBUTTON(ID_BUTTON_LABEL, MyPanel::OnUpdateLabel) @@ -480,10 +489,34 @@ END_EVENT_TABLE() // ============================================================================ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) - : wxPanel( frame, -1, wxPoint(x, y), wxSize(w, h) ), - m_text(NULL), m_notebook(NULL) + : wxPanel( frame, -1, wxPoint(x, y), wxSize(w, h) ) { - wxLayoutConstraints *c; + m_listbox = NULL; + m_listboxSorted = NULL; +#if wxUSE_CHOICE + m_choice = NULL; + m_choiceSorted = NULL; +#endif + m_combo = NULL; + m_radio = NULL; + m_gauge = NULL; + m_gaugeVert = NULL; + m_slider = NULL; + m_fontButton = NULL; + m_lbSelectNum = NULL; + m_lbSelectThis = NULL; +#if wxUSE_SPINBTN + m_spinbutton = NULL; + m_btnProgress = NULL; +#endif // wxUSE_SPINBTN +#if wxUSE_SPINCTRL + m_spinctrl = NULL; +#endif // wxUSE_SPINCTRL + m_spintext = NULL; + m_checkbox = NULL; + m_text = NULL; + m_notebook = NULL; + m_label = NULL; m_text = new wxTextCtrl(this, -1, "This is the log window.\n", wxPoint(0, 250), wxSize(100, 50), wxTE_MULTILINE); @@ -649,6 +682,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) panel = new wxPanel(m_notebook); (void)new MyRadioBox( panel, ID_RADIOBOX, "&That", wxPoint(10,160), wxSize(-1,-1), WXSIZEOF(choices2), choices2, 1, wxRA_SPECIFY_ROWS ); m_radio = new wxRadioBox( panel, ID_RADIOBOX, "T&his", wxPoint(10,10), wxSize(-1,-1), WXSIZEOF(choices), choices, 1, wxRA_SPECIFY_COLS ); + m_radio->SetForegroundColour(*wxRED); #if wxUSE_TOOLTIPS m_combo->SetToolTip("This is a natural\ncombobox - can you believe me?"); @@ -676,7 +710,14 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) m_slider = new wxSlider( panel, ID_SLIDER, 0, 0, 200, wxPoint(18,90), wxSize(155,-1), wxSL_AUTOTICKS | wxSL_LABELS ); m_slider->SetTickFreq(40, 0); - (void)new wxStaticBox( panel, -1, "&Explanation", wxPoint(230,10), wxSize(270,130) ); +#if wxUSE_TOOLTIPS + m_slider->SetToolTip(_T("This is a sliding slider")); +#endif // wxUSE_TOOLTIPS + + (void)new wxStaticBox( panel, -1, "&Explanation", + wxPoint(230,10), wxSize(270,130), + wxALIGN_CENTER ); + #ifdef __WXMOTIF__ // No wrapping text in wxStaticText yet :-( (void)new wxStaticText( panel, -1, @@ -702,7 +743,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) m_spintext = new wxTextCtrl( panel, -1, s, wxPoint(20,160), wxSize(80,-1) ); #if wxUSE_SPINBTN m_spinbutton = new wxSpinButton( panel, ID_SPIN, wxPoint(103,160), wxSize(80, -1) ); - m_spinbutton->SetRange(-10,30); + m_spinbutton->SetRange(-40,30); m_spinbutton->SetValue(initialSpinValue); m_btnProgress = new wxButton( panel, ID_BTNPROGRESS, "&Show progress dialog", @@ -720,12 +761,12 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) panel = new wxPanel(m_notebook); #if !defined(__WXMOTIF__) && !defined(__WIN16__) // wxStaticBitmap not working under Motif yet; and icons not allowed under WIN16. - wxIcon icon = wxTheApp->GetStdIcon(wxICON_INFORMATION); - wxStaticBitmap *bmpStatic = new wxStaticBitmap(panel, -1, icon, - wxPoint(10, 10)); + wxIcon icon = wxArtProvider::GetIcon(wxART_INFORMATION); + (void) new wxStaticBitmap( panel, -1, icon, wxPoint(10, 10) ); - bmpStatic = new wxStaticBitmap(panel, -1, wxNullIcon, wxPoint(50, 10)); - bmpStatic->SetIcon(wxTheApp->GetStdIcon(wxICON_QUESTION)); + // VZ: don't leak memory + // bmpStatic = new wxStaticBitmap(panel, -1, wxNullIcon, wxPoint(50, 10)); + // bmpStatic->SetIcon(wxArtProvider::GetIcon(wxART_QUESTION)); #endif // !Motif wxBitmap bitmap( 100, 100 ); @@ -750,9 +791,9 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) } #endif - wxBitmap bmp1(wxTheApp->GetStdIcon(wxICON_INFORMATION)), - bmp2(wxTheApp->GetStdIcon(wxICON_WARNING)), - bmp3(wxTheApp->GetStdIcon(wxICON_QUESTION)); + wxBitmap bmp1(wxArtProvider::GetBitmap(wxART_INFORMATION)), + bmp2(wxArtProvider::GetBitmap(wxART_WARNING)), + bmp3(wxArtProvider::GetBitmap(wxART_QUESTION)); wxBitmapButton *bmpBtn = new wxBitmapButton ( panel, -1, @@ -776,6 +817,8 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) m_notebook->AddPage(panel, "wxBitmapXXX"); // layout constraints +#if wxUSE_CONSTRAINTS + wxLayoutConstraints *c; panel = new wxPanel(m_notebook); panel->SetAutoLayout( TRUE ); @@ -799,7 +842,8 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) pMyButton2->SetConstraints( c ); m_notebook->AddPage(panel, "wxLayoutConstraint"); - +#endif + // sizer panel = new wxPanel(m_notebook); @@ -809,7 +853,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) sizer->Add( new wxButton(panel, -1, "Test Button &1" ), 3, wxALL, 10 ); sizer->Add( 20,20, 1 ); - sizer->Add( new wxButton(panel, -1, "Test Button &2" ), 3, wxGROW|wxALL, 10 ); + sizer->Add( new wxButton(panel, -1, "Multiline\nbutton" ), 3, wxGROW|wxALL, 10 ); panel->SetSizer( sizer ); @@ -1100,10 +1144,12 @@ void MyPanel::OnCombo( wxCommandEvent &event ) m_text->AppendText( "\n" ); } -void MyPanel::OnComboTextChanged(wxCommandEvent& WXUNUSED(event)) +void MyPanel::OnComboTextChanged(wxCommandEvent& event) { - wxLogMessage(_T("Text in the combobox changed: now is '%s'."), - m_combo->GetValue().c_str()); + wxString str; + str.Printf( wxT("Text in the combobox changed: now is '%s'."), + event.GetString().c_str() ); + wxLogMessage( str.c_str() ); } void MyPanel::OnComboTextEnter(wxCommandEvent& WXUNUSED(event)) @@ -1183,6 +1229,8 @@ void MyPanel::OnRadioButtons( wxCommandEvent &event ) } case ID_RADIOBOX_FONT: { + m_radio->SetForegroundColour(*wxGREEN); + m_radio->SetFont( *wxITALIC_FONT ); break; } @@ -1209,12 +1257,46 @@ void MyPanel::OnSliderUpdate( wxCommandEvent &WXUNUSED(event) ) #if wxUSE_SPINCTRL +void MyPanel::OnSpinCtrlText(wxCommandEvent& event) +{ + if ( m_spinctrl ) + { + wxString s; + s.Printf( _T("Spin ctrl text changed: now %d (from event: %s)\n"), + m_spinctrl->GetValue(), event.GetString().c_str() ); + m_text->AppendText(s); + } +} + void MyPanel::OnSpinCtrl(wxSpinEvent& event) { - wxString s; - s.Printf(_T("Spin ctrl changed: now %d (from event: %d)\n"), - m_spinctrl->GetValue(), event.GetInt()); - m_text->AppendText(s); + if ( m_spinctrl ) + { + wxString s; + s.Printf( _T("Spin ctrl changed: now %d (from event: %ld)\n"), + m_spinctrl->GetValue(), event.GetInt() ); + m_text->AppendText(s); + } +} + +void MyPanel::OnSpinCtrlUp(wxSpinEvent& event) +{ + if ( m_spinctrl ) + { + m_text->AppendText( wxString::Format( + _T("Spin up: %d (from event: %ld)\n"), + m_spinctrl->GetValue(), event.GetInt() ) ); + } +} + +void MyPanel::OnSpinCtrlDown(wxSpinEvent& event) +{ + if ( m_spinctrl ) + { + m_text->AppendText( wxString::Format( + _T("Spin down: %d (from event: %ld)\n"), + m_spinctrl->GetValue(), event.GetInt() ) ); + } } #endif // wxUSE_SPINCTRL @@ -1226,7 +1308,7 @@ void MyPanel::OnSpinUp( wxSpinEvent &event ) value.Printf( _T("Spin control up: current = %d\n"), m_spinbutton->GetValue()); - if ( m_spinbutton->GetValue() > 17 ) + if ( event.GetPosition() > 17 ) { value += _T("Preventing the spin button from going above 17.\n"); @@ -1242,7 +1324,7 @@ void MyPanel::OnSpinDown( wxSpinEvent &event ) value.Printf( _T("Spin control down: current = %d\n"), m_spinbutton->GetValue()); - if ( m_spinbutton->GetValue() < -17 ) + if ( event.GetPosition() < -17 ) { value += _T("Preventing the spin button from going below -17.\n"); @@ -1273,6 +1355,13 @@ void MyPanel::OnUpdateShowProgress( wxUpdateUIEvent& event ) void MyPanel::OnShowProgress( wxCommandEvent& WXUNUSED(event) ) { int max = m_spinbutton->GetValue(); + + if ( max <= 0 ) + { + wxLogError(_T("You must set positive range!")); + return; + } + wxProgressDialog dialog("Progress dialog example", "An informative message", max, // range @@ -1480,7 +1569,7 @@ void MyFrame::OnIdle( wxIdleEvent& WXUNUSED(event) ) #endif s_windowFocus->GetClassInfo()->GetClassName() #ifdef __WXMSW__ - , s_windowFocus->GetHWND() + , (unsigned int) s_windowFocus->GetHWND() #endif );