Applied patch [ 665806 ] Better slider test in widget sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18899 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -36,6 +36,10 @@
|
|||||||
#include "wx/textctrl.h"
|
#include "wx/textctrl.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if wxUSE_TOOLTIPS
|
||||||
|
#include "wx/tooltip.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "wx/sizer.h"
|
#include "wx/sizer.h"
|
||||||
|
|
||||||
#include "widgets.h"
|
#include "widgets.h"
|
||||||
@@ -53,15 +57,27 @@ enum
|
|||||||
SliderPage_SetValue,
|
SliderPage_SetValue,
|
||||||
SliderPage_SetMinAndMax,
|
SliderPage_SetMinAndMax,
|
||||||
SliderPage_SetTickFreq,
|
SliderPage_SetTickFreq,
|
||||||
|
SliderPage_SetThumbLen,
|
||||||
SliderPage_CurValueText,
|
SliderPage_CurValueText,
|
||||||
SliderPage_ValueText,
|
SliderPage_ValueText,
|
||||||
SliderPage_MinText,
|
SliderPage_MinText,
|
||||||
SliderPage_MaxText,
|
SliderPage_MaxText,
|
||||||
SliderPage_TickFreqText,
|
SliderPage_TickFreqText,
|
||||||
SliderPage_OtherSide,
|
SliderPage_ThumbLenText,
|
||||||
|
SliderPage_RadioSides,
|
||||||
|
SliderPage_BothSides,
|
||||||
SliderPage_Slider
|
SliderPage_Slider
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// sides radiobox values
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
StaticSides_Top,
|
||||||
|
StaticSides_Bottom,
|
||||||
|
StaticSides_Left,
|
||||||
|
StaticSides_Right
|
||||||
|
};
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// SliderWidgetsPage
|
// SliderWidgetsPage
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -79,15 +95,18 @@ protected:
|
|||||||
void OnButtonSetValue(wxCommandEvent& event);
|
void OnButtonSetValue(wxCommandEvent& event);
|
||||||
void OnButtonSetMinAndMax(wxCommandEvent& event);
|
void OnButtonSetMinAndMax(wxCommandEvent& event);
|
||||||
void OnButtonSetTickFreq(wxCommandEvent& event);
|
void OnButtonSetTickFreq(wxCommandEvent& event);
|
||||||
|
void OnButtonSetThumbLen(wxCommandEvent& event);
|
||||||
|
|
||||||
void OnCheckOrRadioBox(wxCommandEvent& event);
|
void OnCheckOrRadioBox(wxCommandEvent& event);
|
||||||
|
|
||||||
void OnSlider(wxScrollEvent& event);
|
void OnSlider(wxScrollEvent& event);
|
||||||
|
|
||||||
void OnUpdateUIOtherSide(wxUpdateUIEvent& event);
|
|
||||||
void OnUpdateUIValueButton(wxUpdateUIEvent& event);
|
void OnUpdateUIValueButton(wxUpdateUIEvent& event);
|
||||||
void OnUpdateUIMinMaxButton(wxUpdateUIEvent& event);
|
void OnUpdateUIMinMaxButton(wxUpdateUIEvent& event);
|
||||||
void OnUpdateUITickFreq(wxUpdateUIEvent& event);
|
void OnUpdateUITickFreq(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateUIThumbLen(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateUIRadioSides(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateUIBothSides(wxUpdateUIEvent& event);
|
||||||
|
|
||||||
void OnUpdateUIResetButton(wxUpdateUIEvent& event);
|
void OnUpdateUIResetButton(wxUpdateUIEvent& event);
|
||||||
|
|
||||||
@@ -102,6 +121,9 @@ protected:
|
|||||||
// set the tick frequency from the text field value
|
// set the tick frequency from the text field value
|
||||||
void DoSetTickFreq();
|
void DoSetTickFreq();
|
||||||
|
|
||||||
|
// set the thumb len from the text field value
|
||||||
|
void DoSetThumbLen();
|
||||||
|
|
||||||
// is this slider value in range?
|
// is this slider value in range?
|
||||||
bool IsValidValue(int val) const
|
bool IsValidValue(int val) const
|
||||||
{ return (val >= m_min) && (val <= m_max); }
|
{ return (val >= m_min) && (val <= m_max); }
|
||||||
@@ -114,9 +136,11 @@ protected:
|
|||||||
|
|
||||||
// the check/radio boxes for styles
|
// the check/radio boxes for styles
|
||||||
wxCheckBox *m_chkLabels,
|
wxCheckBox *m_chkLabels,
|
||||||
*m_chkOtherSide,
|
|
||||||
*m_chkVert,
|
*m_chkVert,
|
||||||
*m_chkTicks;
|
*m_chkTicks,
|
||||||
|
*m_chkBothSides;
|
||||||
|
|
||||||
|
wxRadioBox *m_radioSides;
|
||||||
|
|
||||||
// the slider itself and the sizer it is in
|
// the slider itself and the sizer it is in
|
||||||
wxSlider *m_slider;
|
wxSlider *m_slider;
|
||||||
@@ -126,7 +150,8 @@ protected:
|
|||||||
wxTextCtrl *m_textValue,
|
wxTextCtrl *m_textValue,
|
||||||
*m_textMin,
|
*m_textMin,
|
||||||
*m_textMax,
|
*m_textMax,
|
||||||
*m_textTickFreq;
|
*m_textTickFreq,
|
||||||
|
*m_textThumbLen;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
@@ -142,13 +167,15 @@ BEGIN_EVENT_TABLE(SliderWidgetsPage, WidgetsPage)
|
|||||||
EVT_BUTTON(SliderPage_SetValue, SliderWidgetsPage::OnButtonSetValue)
|
EVT_BUTTON(SliderPage_SetValue, SliderWidgetsPage::OnButtonSetValue)
|
||||||
EVT_BUTTON(SliderPage_SetMinAndMax, SliderWidgetsPage::OnButtonSetMinAndMax)
|
EVT_BUTTON(SliderPage_SetMinAndMax, SliderWidgetsPage::OnButtonSetMinAndMax)
|
||||||
EVT_BUTTON(SliderPage_SetTickFreq, SliderWidgetsPage::OnButtonSetTickFreq)
|
EVT_BUTTON(SliderPage_SetTickFreq, SliderWidgetsPage::OnButtonSetTickFreq)
|
||||||
|
EVT_BUTTON(SliderPage_SetThumbLen, SliderWidgetsPage::OnButtonSetThumbLen)
|
||||||
EVT_UPDATE_UI(SliderPage_OtherSide, SliderWidgetsPage::OnUpdateUIOtherSide)
|
|
||||||
|
|
||||||
EVT_UPDATE_UI(SliderPage_SetValue, SliderWidgetsPage::OnUpdateUIValueButton)
|
EVT_UPDATE_UI(SliderPage_SetValue, SliderWidgetsPage::OnUpdateUIValueButton)
|
||||||
EVT_UPDATE_UI(SliderPage_SetMinAndMax, SliderWidgetsPage::OnUpdateUIMinMaxButton)
|
EVT_UPDATE_UI(SliderPage_SetMinAndMax, SliderWidgetsPage::OnUpdateUIMinMaxButton)
|
||||||
EVT_UPDATE_UI(SliderPage_SetTickFreq, SliderWidgetsPage::OnUpdateUITickFreq)
|
EVT_UPDATE_UI(SliderPage_SetTickFreq, SliderWidgetsPage::OnUpdateUITickFreq)
|
||||||
|
EVT_UPDATE_UI(SliderPage_SetThumbLen, SliderWidgetsPage::OnUpdateUIThumbLen)
|
||||||
EVT_UPDATE_UI(SliderPage_TickFreqText, SliderWidgetsPage::OnUpdateUITickFreq)
|
EVT_UPDATE_UI(SliderPage_TickFreqText, SliderWidgetsPage::OnUpdateUITickFreq)
|
||||||
|
EVT_UPDATE_UI(SliderPage_RadioSides, SliderWidgetsPage::OnUpdateUIRadioSides)
|
||||||
|
EVT_UPDATE_UI(SliderPage_BothSides, SliderWidgetsPage::OnUpdateUIBothSides)
|
||||||
|
|
||||||
EVT_UPDATE_UI(SliderPage_Reset, SliderWidgetsPage::OnUpdateUIResetButton)
|
EVT_UPDATE_UI(SliderPage_Reset, SliderWidgetsPage::OnUpdateUIResetButton)
|
||||||
|
|
||||||
@@ -179,7 +206,9 @@ SliderWidgetsPage::SliderWidgetsPage(wxNotebook *notebook,
|
|||||||
m_chkVert =
|
m_chkVert =
|
||||||
m_chkTicks =
|
m_chkTicks =
|
||||||
m_chkLabels =
|
m_chkLabels =
|
||||||
m_chkOtherSide = (wxCheckBox *)NULL;
|
m_chkBothSides = (wxCheckBox *)NULL;
|
||||||
|
|
||||||
|
m_radioSides = (wxRadioBox *)NULL;
|
||||||
|
|
||||||
m_slider = (wxSlider *)NULL;
|
m_slider = (wxSlider *)NULL;
|
||||||
m_sizerSlider = (wxSizer *)NULL;
|
m_sizerSlider = (wxSizer *)NULL;
|
||||||
@@ -193,12 +222,23 @@ SliderWidgetsPage::SliderWidgetsPage(wxNotebook *notebook,
|
|||||||
m_chkVert = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Vertical"));
|
m_chkVert = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Vertical"));
|
||||||
m_chkTicks = CreateCheckBoxAndAddToSizer(sizerLeft, _T("Show &ticks"));
|
m_chkTicks = CreateCheckBoxAndAddToSizer(sizerLeft, _T("Show &ticks"));
|
||||||
m_chkLabels = CreateCheckBoxAndAddToSizer(sizerLeft, _T("Show &labels"));
|
m_chkLabels = CreateCheckBoxAndAddToSizer(sizerLeft, _T("Show &labels"));
|
||||||
m_chkOtherSide = CreateCheckBoxAndAddToSizer
|
static const wxString sides[] =
|
||||||
(
|
{
|
||||||
sizerLeft,
|
_T("top"),
|
||||||
_T("On &other side"),
|
_T("bottom"),
|
||||||
SliderPage_OtherSide
|
_T("left"),
|
||||||
);
|
_T("right"),
|
||||||
|
};
|
||||||
|
m_radioSides = new wxRadioBox(this, SliderPage_RadioSides, _T("&Ticks/Labels"),
|
||||||
|
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);
|
||||||
|
#if wxUSE_TOOLTIPS
|
||||||
|
m_chkBothSides->SetToolTip( _T("\"Both sides\" is only supported \nin Win95 and Universal") );
|
||||||
|
#endif // wxUSE_TOOLTIPS
|
||||||
|
|
||||||
sizerLeft->Add(5, 5, 0, wxGROW | wxALL, 5); // spacer
|
sizerLeft->Add(5, 5, 0, wxGROW | wxALL, 5); // spacer
|
||||||
|
|
||||||
@@ -245,9 +285,16 @@ SliderWidgetsPage::SliderWidgetsPage(wxNotebook *notebook,
|
|||||||
|
|
||||||
sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5);
|
sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5);
|
||||||
|
|
||||||
|
sizerRow = CreateSizerWithTextAndButton(SliderPage_SetThumbLen,
|
||||||
|
_T("Thumb &lenght"),
|
||||||
|
SliderPage_ThumbLenText,
|
||||||
|
&m_textThumbLen);
|
||||||
|
|
||||||
|
sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5);
|
||||||
|
|
||||||
// right pane
|
// right pane
|
||||||
wxSizer *sizerRight = new wxBoxSizer(wxHORIZONTAL);
|
wxSizer *sizerRight = new wxBoxSizer(wxHORIZONTAL);
|
||||||
sizerRight->SetMinSize(150, 0);
|
sizerRight->SetMinSize(150, 40);
|
||||||
m_sizerSlider = sizerRight; // save it to modify it later
|
m_sizerSlider = sizerRight; // save it to modify it later
|
||||||
|
|
||||||
Reset();
|
Reset();
|
||||||
@@ -275,10 +322,12 @@ SliderWidgetsPage::~SliderWidgetsPage()
|
|||||||
|
|
||||||
void SliderWidgetsPage::Reset()
|
void SliderWidgetsPage::Reset()
|
||||||
{
|
{
|
||||||
m_chkLabels->SetValue(TRUE);
|
|
||||||
m_chkTicks->SetValue(FALSE);
|
|
||||||
m_chkVert->SetValue(FALSE);
|
m_chkVert->SetValue(FALSE);
|
||||||
m_chkOtherSide->SetValue(FALSE);
|
m_chkTicks->SetValue(TRUE);
|
||||||
|
m_chkLabels->SetValue(TRUE);
|
||||||
|
m_chkBothSides->SetValue(FALSE);
|
||||||
|
|
||||||
|
m_radioSides->SetSelection(StaticSides_Top);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SliderWidgetsPage::CreateSlider()
|
void SliderWidgetsPage::CreateSlider()
|
||||||
@@ -294,11 +343,6 @@ void SliderWidgetsPage::CreateSlider()
|
|||||||
if ( m_chkLabels->GetValue() )
|
if ( m_chkLabels->GetValue() )
|
||||||
{
|
{
|
||||||
flags |= wxSL_LABELS;
|
flags |= wxSL_LABELS;
|
||||||
|
|
||||||
if ( m_chkOtherSide->GetValue() )
|
|
||||||
flags |= isVert ? wxSL_RIGHT : wxSL_BOTTOM;
|
|
||||||
else
|
|
||||||
flags |= isVert ? wxSL_LEFT : wxSL_TOP;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( m_chkTicks->GetValue() )
|
if ( m_chkTicks->GetValue() )
|
||||||
@@ -306,6 +350,30 @@ void SliderWidgetsPage::CreateSlider()
|
|||||||
flags |= wxSL_AUTOTICKS;
|
flags |= wxSL_AUTOTICKS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch ( m_radioSides->GetSelection() )
|
||||||
|
{
|
||||||
|
case StaticSides_Top:
|
||||||
|
flags |= wxSL_TOP;
|
||||||
|
break;
|
||||||
|
case StaticSides_Left:
|
||||||
|
flags |= wxSL_LEFT;
|
||||||
|
break;
|
||||||
|
case StaticSides_Bottom:
|
||||||
|
flags |= wxSL_BOTTOM;
|
||||||
|
break;
|
||||||
|
case StaticSides_Right:
|
||||||
|
flags |= wxSL_RIGHT;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
wxFAIL_MSG(_T("unexpected radiobox selection"));
|
||||||
|
// fall through
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( m_chkBothSides->GetValue() )
|
||||||
|
{
|
||||||
|
flags |= wxSL_BOTH;
|
||||||
|
}
|
||||||
|
|
||||||
int val = m_min;
|
int val = m_min;
|
||||||
if ( m_slider )
|
if ( m_slider )
|
||||||
{
|
{
|
||||||
@@ -364,6 +432,19 @@ void SliderWidgetsPage::DoSetTickFreq()
|
|||||||
m_slider->SetTickFreq(freq, 0 /* unused */);
|
m_slider->SetTickFreq(freq, 0 /* unused */);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SliderWidgetsPage::DoSetThumbLen()
|
||||||
|
{
|
||||||
|
long len;
|
||||||
|
if ( !m_textThumbLen->GetValue().ToLong(&len) )
|
||||||
|
{
|
||||||
|
wxLogWarning(_T("Invalid slider thumb lenght"));
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_slider->SetThumbLength(len);
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// event handlers
|
// event handlers
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -380,6 +461,11 @@ void SliderWidgetsPage::OnButtonSetTickFreq(wxCommandEvent& WXUNUSED(event))
|
|||||||
DoSetTickFreq();
|
DoSetTickFreq();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SliderWidgetsPage::OnButtonSetThumbLen(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
DoSetThumbLen();
|
||||||
|
}
|
||||||
|
|
||||||
void SliderWidgetsPage::OnButtonSetMinAndMax(wxCommandEvent& WXUNUSED(event))
|
void SliderWidgetsPage::OnButtonSetMinAndMax(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
long minNew,
|
long minNew,
|
||||||
@@ -426,6 +512,12 @@ void SliderWidgetsPage::OnUpdateUITickFreq(wxUpdateUIEvent& event)
|
|||||||
(freq > 0) && (freq <= m_max - m_min) );
|
(freq > 0) && (freq <= m_max - m_min) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SliderWidgetsPage::OnUpdateUIThumbLen(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
long val;
|
||||||
|
event.Enable( m_textThumbLen->GetValue().ToLong(&val));
|
||||||
|
}
|
||||||
|
|
||||||
void SliderWidgetsPage::OnUpdateUIMinMaxButton(wxUpdateUIEvent& event)
|
void SliderWidgetsPage::OnUpdateUIMinMaxButton(wxUpdateUIEvent& event)
|
||||||
{
|
{
|
||||||
long mn, mx;
|
long mn, mx;
|
||||||
@@ -437,9 +529,9 @@ void SliderWidgetsPage::OnUpdateUIMinMaxButton(wxUpdateUIEvent& event)
|
|||||||
void SliderWidgetsPage::OnUpdateUIResetButton(wxUpdateUIEvent& event)
|
void SliderWidgetsPage::OnUpdateUIResetButton(wxUpdateUIEvent& event)
|
||||||
{
|
{
|
||||||
event.Enable( m_chkVert->GetValue() ||
|
event.Enable( m_chkVert->GetValue() ||
|
||||||
|
!m_chkTicks->GetValue() ||
|
||||||
!m_chkLabels->GetValue() ||
|
!m_chkLabels->GetValue() ||
|
||||||
m_chkOtherSide->GetValue() ||
|
m_chkBothSides->GetValue() );
|
||||||
m_chkTicks->GetValue() );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SliderWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& event)
|
void SliderWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& event)
|
||||||
@@ -452,9 +544,18 @@ void SliderWidgetsPage::OnUpdateUICurValueText(wxUpdateUIEvent& event)
|
|||||||
event.SetText( wxString::Format(_T("%d"), m_slider->GetValue()) );
|
event.SetText( wxString::Format(_T("%d"), m_slider->GetValue()) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void SliderWidgetsPage::OnUpdateUIOtherSide(wxUpdateUIEvent& event)
|
void SliderWidgetsPage::OnUpdateUIRadioSides(wxUpdateUIEvent& event)
|
||||||
{
|
{
|
||||||
event.Enable( m_chkLabels->GetValue() );
|
event.Enable( m_chkLabels->GetValue() || m_chkTicks->GetValue() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void SliderWidgetsPage::OnUpdateUIBothSides(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
#if defined(__WIN95__) || defined(__WXUNIVERSAL__)
|
||||||
|
event.Enable( m_chkTicks->GetValue() );
|
||||||
|
#else
|
||||||
|
event.Enable( FALSE );
|
||||||
|
#endif // defined(__WIN95__) || defined(__WXUNIVERSAL__)
|
||||||
}
|
}
|
||||||
|
|
||||||
void SliderWidgetsPage::OnSlider(wxScrollEvent& event)
|
void SliderWidgetsPage::OnSlider(wxScrollEvent& event)
|
||||||
|
Reference in New Issue
Block a user