X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d6c1aef837c0bbf3845b24f17bbc4a63fb4fc721..d13b34d3f2be575d59747a5926000be7b28a45dc:/samples/widgets/slider.cpp diff --git a/samples/widgets/slider.cpp b/samples/widgets/slider.cpp index 214be60ae1..c4f5135444 100644 --- a/samples/widgets/slider.cpp +++ b/samples/widgets/slider.cpp @@ -6,7 +6,7 @@ // Created: 16.04.01 // Id: $Id$ // Copyright: (c) 2001 Vadim Zeitlin -// License: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -80,6 +80,7 @@ enum // sides radiobox values enum { + SliderTicks_None, SliderTicks_Top, SliderTicks_Bottom, SliderTicks_Left, @@ -159,7 +160,8 @@ protected: // ------------ // the check/radio boxes for styles - wxCheckBox *m_chkLabels, + wxCheckBox *m_chkMinMaxLabels, + *m_chkValueLabel, *m_chkInverse, *m_chkTicks, *m_chkBothSides; @@ -226,7 +228,7 @@ END_EVENT_TABLE() #define FAMILY_CTRLS NATIVE_CTRLS #endif -IMPLEMENT_WIDGETS_PAGE(SliderWidgetsPage, _T("Slider"), FAMILY_CTRLS ); +IMPLEMENT_WIDGETS_PAGE(SliderWidgetsPage, wxT("Slider"), FAMILY_CTRLS ); SliderWidgetsPage::SliderWidgetsPage(WidgetsBookCtrl *book, wxImageList *imaglist) @@ -238,7 +240,8 @@ SliderWidgetsPage::SliderWidgetsPage(WidgetsBookCtrl *book, m_chkInverse = m_chkTicks = - m_chkLabels = + m_chkMinMaxLabels = + m_chkValueLabel = m_chkBothSides = (wxCheckBox *)NULL; m_radioSides = (wxRadioBox *)NULL; @@ -252,41 +255,43 @@ void SliderWidgetsPage::CreateContent() wxSizer *sizerTop = new wxBoxSizer(wxHORIZONTAL); // left pane - wxStaticBox *box = new wxStaticBox(this, wxID_ANY, _T("&Set style")); + wxStaticBox *box = new wxStaticBox(this, wxID_ANY, wxT("&Set style")); wxSizer *sizerLeft = new wxStaticBoxSizer(box, wxVERTICAL); - m_chkInverse = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Inverse")); - m_chkTicks = CreateCheckBoxAndAddToSizer(sizerLeft, _T("Show &ticks")); - m_chkLabels = CreateCheckBoxAndAddToSizer(sizerLeft, _T("Show &labels")); + m_chkInverse = CreateCheckBoxAndAddToSizer(sizerLeft, wxT("&Inverse")); + m_chkTicks = CreateCheckBoxAndAddToSizer(sizerLeft, wxT("Show &ticks")); + m_chkMinMaxLabels = CreateCheckBoxAndAddToSizer(sizerLeft, wxT("Show min/max &labels")); + m_chkValueLabel = CreateCheckBoxAndAddToSizer(sizerLeft, wxT("Show &value label")); static const wxString sides[] = { - _T("top"), - _T("bottom"), - _T("left"), - _T("right"), + wxT("default"), + wxT("top"), + wxT("bottom"), + wxT("left"), + wxT("right"), }; - m_radioSides = new wxRadioBox(this, SliderPage_RadioSides, _T("&Ticks/Labels"), + m_radioSides = new wxRadioBox(this, SliderPage_RadioSides, wxT("&Label position"), wxDefaultPosition, wxDefaultSize, WXSIZEOF(sides), sides, 1, wxRA_SPECIFY_COLS); sizerLeft->Add(m_radioSides, 0, wxGROW | wxALL, 5); m_chkBothSides = CreateCheckBoxAndAddToSizer - (sizerLeft, _T("&Both sides"), SliderPage_BothSides); + (sizerLeft, wxT("&Both sides"), SliderPage_BothSides); #if wxUSE_TOOLTIPS - m_chkBothSides->SetToolTip( _T("\"Both sides\" is only supported \nin Win95 and Universal") ); + m_chkBothSides->SetToolTip( wxT("\"Both sides\" is only supported \nin Win95 and Universal") ); #endif // wxUSE_TOOLTIPS sizerLeft->Add(5, 5, 0, wxGROW | wxALL, 5); // spacer - wxButton *btn = new wxButton(this, SliderPage_Reset, _T("&Reset")); + wxButton *btn = new wxButton(this, SliderPage_Reset, wxT("&Reset")); sizerLeft->Add(btn, 0, wxALIGN_CENTRE_HORIZONTAL | wxALL, 15); // middle pane - wxStaticBox *box2 = new wxStaticBox(this, wxID_ANY, _T("&Change slider value")); + wxStaticBox *box2 = new wxStaticBox(this, wxID_ANY, wxT("&Change slider value")); wxSizer *sizerMiddle = new wxStaticBoxSizer(box2, wxVERTICAL); wxTextCtrl *text; - wxSizer *sizerRow = CreateSizerWithTextAndLabel(_T("Current value"), + wxSizer *sizerRow = CreateSizerWithTextAndLabel(wxT("Current value"), SliderPage_CurValueText, &text); text->SetEditable(false); @@ -294,49 +299,49 @@ void SliderWidgetsPage::CreateContent() sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5); sizerRow = CreateSizerWithTextAndButton(SliderPage_SetValue, - _T("Set &value"), + wxT("Set &value"), SliderPage_ValueText, &m_textValue); sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5); sizerRow = CreateSizerWithTextAndButton(SliderPage_SetMinAndMax, - _T("&Min and max"), + wxT("&Min and max"), SliderPage_MinText, &m_textMin); m_textMax = new wxTextCtrl(this, SliderPage_MaxText, wxEmptyString); sizerRow->Add(m_textMax, 1, wxLEFT | wxALIGN_CENTRE_VERTICAL, 5); - m_textMin->SetValue( wxString::Format(_T("%d"), m_min) ); - m_textMax->SetValue( wxString::Format(_T("%d"), m_max) ); + m_textMin->SetValue( wxString::Format(wxT("%d"), m_min) ); + m_textMax->SetValue( wxString::Format(wxT("%d"), m_max) ); sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5); sizerRow = CreateSizerWithTextAndButton(SliderPage_SetLineSize, - _T("Li&ne size"), + wxT("Li&ne size"), SliderPage_LineSizeText, &m_textLineSize); sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5); sizerRow = CreateSizerWithTextAndButton(SliderPage_SetPageSize, - _T("P&age size"), + wxT("P&age size"), SliderPage_PageSizeText, &m_textPageSize); sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5); sizerRow = CreateSizerWithTextAndButton(SliderPage_SetTickFreq, - _T("Tick &frequency"), + wxT("Tick &frequency"), SliderPage_TickFreqText, &m_textTickFreq); - m_textTickFreq->SetValue(_T("10")); + m_textTickFreq->SetValue(wxT("10")); sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5); sizerRow = CreateSizerWithTextAndButton(SliderPage_SetThumbLen, - _T("Thumb &length"), + wxT("Thumb &length"), SliderPage_ThumbLenText, &m_textThumbLen); @@ -350,8 +355,8 @@ void SliderWidgetsPage::CreateContent() Reset(); CreateSlider(); - m_textLineSize->SetValue(wxString::Format(_T("%d"), m_slider->GetLineSize())); - m_textPageSize->SetValue(wxString::Format(_T("%d"), m_slider->GetPageSize())); + m_textLineSize->SetValue(wxString::Format(wxT("%d"), m_slider->GetLineSize())); + m_textPageSize->SetValue(wxString::Format(wxT("%d"), m_slider->GetPageSize())); // the 3 panes panes compose the window sizerTop->Add(sizerLeft, 0, wxGROW | (wxALL & ~wxLEFT), 10); @@ -360,8 +365,6 @@ void SliderWidgetsPage::CreateContent() // final initializations SetSizer(sizerTop); - - sizerTop->Fit(this); } // ---------------------------------------------------------------------------- @@ -372,10 +375,11 @@ void SliderWidgetsPage::Reset() { m_chkInverse->SetValue(false); m_chkTicks->SetValue(true); - m_chkLabels->SetValue(true); + m_chkValueLabel->SetValue(true); + m_chkMinMaxLabels->SetValue(true); m_chkBothSides->SetValue(false); - m_radioSides->SetSelection(SliderTicks_Top); + m_radioSides->SetSelection(SliderTicks_None); } void SliderWidgetsPage::CreateSlider() @@ -387,9 +391,14 @@ void SliderWidgetsPage::CreateSlider() flags |= wxSL_INVERSE; } - if ( m_chkLabels->GetValue() ) + if ( m_chkMinMaxLabels->GetValue() ) { - flags |= wxSL_LABELS; + flags |= wxSL_MIN_MAX_LABELS; + } + + if ( m_chkValueLabel->GetValue() ) + { + flags |= wxSL_VALUE_LABEL; } if ( m_chkTicks->GetValue() ) @@ -397,26 +406,32 @@ void SliderWidgetsPage::CreateSlider() flags |= wxSL_AUTOTICKS; } + // notice that the style names refer to the _ticks_ positions while we want + // to allow the user to select the label(s) positions and the labels are on + // the opposite side from the ticks, hence the apparent reversal below switch ( m_radioSides->GetSelection() ) { + case SliderTicks_None: + break; + case SliderTicks_Top: - flags |= wxSL_TOP; + flags |= wxSL_BOTTOM; break; case SliderTicks_Left: - flags |= wxSL_LEFT; + flags |= wxSL_RIGHT | wxSL_VERTICAL; break; case SliderTicks_Bottom: - flags |= wxSL_BOTTOM; + flags |= wxSL_TOP; break; case SliderTicks_Right: - flags |= wxSL_RIGHT; + flags |= wxSL_LEFT | wxSL_VERTICAL; break; default: - wxFAIL_MSG(_T("unexpected radiobox selection")); + wxFAIL_MSG(wxT("unexpected radiobox selection")); // fall through } @@ -475,7 +490,7 @@ void SliderWidgetsPage::DoSetLineSize() long lineSize; if ( !m_textLineSize->GetValue().ToLong(&lineSize) ) { - wxLogWarning(_T("Invalid slider line size")); + wxLogWarning(wxT("Invalid slider line size")); return; } @@ -484,7 +499,7 @@ void SliderWidgetsPage::DoSetLineSize() if ( m_slider->GetLineSize() != lineSize ) { - wxLogWarning(_T("Invalid line size in slider.")); + wxLogWarning(wxT("Invalid line size in slider.")); } } @@ -493,7 +508,7 @@ void SliderWidgetsPage::DoSetPageSize() long pageSize; if ( !m_textPageSize->GetValue().ToLong(&pageSize) ) { - wxLogWarning(_T("Invalid slider page size")); + wxLogWarning(wxT("Invalid slider page size")); return; } @@ -502,7 +517,7 @@ void SliderWidgetsPage::DoSetPageSize() if ( m_slider->GetPageSize() != pageSize ) { - wxLogWarning(_T("Invalid page size in slider.")); + wxLogWarning(wxT("Invalid page size in slider.")); } } @@ -511,12 +526,12 @@ void SliderWidgetsPage::DoSetTickFreq() long freq; if ( !m_textTickFreq->GetValue().ToLong(&freq) ) { - wxLogWarning(_T("Invalid slider tick frequency")); + wxLogWarning(wxT("Invalid slider tick frequency")); return; } - m_slider->SetTickFreq(freq, 0 /* unused */); + m_slider->SetTickFreq(freq); } void SliderWidgetsPage::DoSetThumbLen() @@ -524,7 +539,7 @@ void SliderWidgetsPage::DoSetThumbLen() long len; if ( !m_textThumbLen->GetValue().ToLong(&len) ) { - wxLogWarning(_T("Invalid slider thumb length")); + wxLogWarning(wxT("Invalid slider thumb length")); return; } @@ -571,7 +586,7 @@ void SliderWidgetsPage::OnButtonSetMinAndMax(wxCommandEvent& WXUNUSED(event)) !m_textMax->GetValue().ToLong(&maxNew) || minNew >= maxNew ) { - wxLogWarning(_T("Invalid min/max values for the slider.")); + wxLogWarning(wxT("Invalid min/max values for the slider.")); return; } @@ -584,7 +599,7 @@ void SliderWidgetsPage::OnButtonSetMinAndMax(wxCommandEvent& WXUNUSED(event)) if ( m_slider->GetMin() != m_min || m_slider->GetMax() != m_max ) { - wxLogWarning(_T("Invalid range in slider.")); + wxLogWarning(wxT("Invalid range in slider.")); } } @@ -593,7 +608,7 @@ void SliderWidgetsPage::OnButtonSetValue(wxCommandEvent& WXUNUSED(event)) long val; if ( !m_textValue->GetValue().ToLong(&val) || !IsValidValue(val) ) { - wxLogWarning(_T("Invalid slider value.")); + wxLogWarning(wxT("Invalid slider value.")); return; } @@ -647,9 +662,10 @@ void SliderWidgetsPage::OnUpdateUIResetButton(wxUpdateUIEvent& event) { event.Enable( m_chkInverse->GetValue() || !m_chkTicks->GetValue() || - !m_chkLabels->GetValue() || + !m_chkValueLabel->GetValue() || + !m_chkMinMaxLabels->GetValue() || m_chkBothSides->GetValue() || - m_radioSides->GetSelection() != SliderTicks_Top ); + m_radioSides->GetSelection() != SliderTicks_None ); } void SliderWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event)) @@ -659,12 +675,12 @@ void SliderWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event)) void SliderWidgetsPage::OnUpdateUICurValueText(wxUpdateUIEvent& event) { - event.SetText( wxString::Format(_T("%d"), m_slider->GetValue()) ); + event.SetText( wxString::Format(wxT("%d"), m_slider->GetValue()) ); } void SliderWidgetsPage::OnUpdateUIRadioSides(wxUpdateUIEvent& event) { - event.Enable( m_chkLabels->GetValue() || m_chkTicks->GetValue() ); + event.Enable( m_chkValueLabel->GetValue() || m_chkTicks->GetValue() ); } void SliderWidgetsPage::OnUpdateUIBothSides(wxUpdateUIEvent& event)