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:
parent
5cdff2990b
commit
53b982112d
@ -36,6 +36,10 @@
|
||||
#include "wx/textctrl.h"
|
||||
#endif
|
||||
|
||||
#if wxUSE_TOOLTIPS
|
||||
#include "wx/tooltip.h"
|
||||
#endif
|
||||
|
||||
#include "wx/sizer.h"
|
||||
|
||||
#include "widgets.h"
|
||||
@ -53,15 +57,27 @@ enum
|
||||
SliderPage_SetValue,
|
||||
SliderPage_SetMinAndMax,
|
||||
SliderPage_SetTickFreq,
|
||||
SliderPage_SetThumbLen,
|
||||
SliderPage_CurValueText,
|
||||
SliderPage_ValueText,
|
||||
SliderPage_MinText,
|
||||
SliderPage_MaxText,
|
||||
SliderPage_TickFreqText,
|
||||
SliderPage_OtherSide,
|
||||
SliderPage_ThumbLenText,
|
||||
SliderPage_RadioSides,
|
||||
SliderPage_BothSides,
|
||||
SliderPage_Slider
|
||||
};
|
||||
|
||||
// sides radiobox values
|
||||
enum
|
||||
{
|
||||
StaticSides_Top,
|
||||
StaticSides_Bottom,
|
||||
StaticSides_Left,
|
||||
StaticSides_Right
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// SliderWidgetsPage
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -79,15 +95,18 @@ protected:
|
||||
void OnButtonSetValue(wxCommandEvent& event);
|
||||
void OnButtonSetMinAndMax(wxCommandEvent& event);
|
||||
void OnButtonSetTickFreq(wxCommandEvent& event);
|
||||
void OnButtonSetThumbLen(wxCommandEvent& event);
|
||||
|
||||
void OnCheckOrRadioBox(wxCommandEvent& event);
|
||||
|
||||
void OnSlider(wxScrollEvent& event);
|
||||
|
||||
void OnUpdateUIOtherSide(wxUpdateUIEvent& event);
|
||||
void OnUpdateUIValueButton(wxUpdateUIEvent& event);
|
||||
void OnUpdateUIMinMaxButton(wxUpdateUIEvent& event);
|
||||
void OnUpdateUITickFreq(wxUpdateUIEvent& event);
|
||||
void OnUpdateUIThumbLen(wxUpdateUIEvent& event);
|
||||
void OnUpdateUIRadioSides(wxUpdateUIEvent& event);
|
||||
void OnUpdateUIBothSides(wxUpdateUIEvent& event);
|
||||
|
||||
void OnUpdateUIResetButton(wxUpdateUIEvent& event);
|
||||
|
||||
@ -102,6 +121,9 @@ protected:
|
||||
// set the tick frequency from the text field value
|
||||
void DoSetTickFreq();
|
||||
|
||||
// set the thumb len from the text field value
|
||||
void DoSetThumbLen();
|
||||
|
||||
// is this slider value in range?
|
||||
bool IsValidValue(int val) const
|
||||
{ return (val >= m_min) && (val <= m_max); }
|
||||
@ -114,9 +136,11 @@ protected:
|
||||
|
||||
// the check/radio boxes for styles
|
||||
wxCheckBox *m_chkLabels,
|
||||
*m_chkOtherSide,
|
||||
*m_chkVert,
|
||||
*m_chkTicks;
|
||||
*m_chkTicks,
|
||||
*m_chkBothSides;
|
||||
|
||||
wxRadioBox *m_radioSides;
|
||||
|
||||
// the slider itself and the sizer it is in
|
||||
wxSlider *m_slider;
|
||||
@ -126,7 +150,8 @@ protected:
|
||||
wxTextCtrl *m_textValue,
|
||||
*m_textMin,
|
||||
*m_textMax,
|
||||
*m_textTickFreq;
|
||||
*m_textTickFreq,
|
||||
*m_textThumbLen;
|
||||
|
||||
private:
|
||||
DECLARE_EVENT_TABLE()
|
||||
@ -142,13 +167,15 @@ BEGIN_EVENT_TABLE(SliderWidgetsPage, WidgetsPage)
|
||||
EVT_BUTTON(SliderPage_SetValue, SliderWidgetsPage::OnButtonSetValue)
|
||||
EVT_BUTTON(SliderPage_SetMinAndMax, SliderWidgetsPage::OnButtonSetMinAndMax)
|
||||
EVT_BUTTON(SliderPage_SetTickFreq, SliderWidgetsPage::OnButtonSetTickFreq)
|
||||
|
||||
EVT_UPDATE_UI(SliderPage_OtherSide, SliderWidgetsPage::OnUpdateUIOtherSide)
|
||||
EVT_BUTTON(SliderPage_SetThumbLen, SliderWidgetsPage::OnButtonSetThumbLen)
|
||||
|
||||
EVT_UPDATE_UI(SliderPage_SetValue, SliderWidgetsPage::OnUpdateUIValueButton)
|
||||
EVT_UPDATE_UI(SliderPage_SetMinAndMax, SliderWidgetsPage::OnUpdateUIMinMaxButton)
|
||||
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_RadioSides, SliderWidgetsPage::OnUpdateUIRadioSides)
|
||||
EVT_UPDATE_UI(SliderPage_BothSides, SliderWidgetsPage::OnUpdateUIBothSides)
|
||||
|
||||
EVT_UPDATE_UI(SliderPage_Reset, SliderWidgetsPage::OnUpdateUIResetButton)
|
||||
|
||||
@ -179,7 +206,9 @@ SliderWidgetsPage::SliderWidgetsPage(wxNotebook *notebook,
|
||||
m_chkVert =
|
||||
m_chkTicks =
|
||||
m_chkLabels =
|
||||
m_chkOtherSide = (wxCheckBox *)NULL;
|
||||
m_chkBothSides = (wxCheckBox *)NULL;
|
||||
|
||||
m_radioSides = (wxRadioBox *)NULL;
|
||||
|
||||
m_slider = (wxSlider *)NULL;
|
||||
m_sizerSlider = (wxSizer *)NULL;
|
||||
@ -193,12 +222,23 @@ SliderWidgetsPage::SliderWidgetsPage(wxNotebook *notebook,
|
||||
m_chkVert = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Vertical"));
|
||||
m_chkTicks = CreateCheckBoxAndAddToSizer(sizerLeft, _T("Show &ticks"));
|
||||
m_chkLabels = CreateCheckBoxAndAddToSizer(sizerLeft, _T("Show &labels"));
|
||||
m_chkOtherSide = CreateCheckBoxAndAddToSizer
|
||||
(
|
||||
sizerLeft,
|
||||
_T("On &other side"),
|
||||
SliderPage_OtherSide
|
||||
);
|
||||
static const wxString sides[] =
|
||||
{
|
||||
_T("top"),
|
||||
_T("bottom"),
|
||||
_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
|
||||
|
||||
@ -245,9 +285,16 @@ SliderWidgetsPage::SliderWidgetsPage(wxNotebook *notebook,
|
||||
|
||||
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
|
||||
wxSizer *sizerRight = new wxBoxSizer(wxHORIZONTAL);
|
||||
sizerRight->SetMinSize(150, 0);
|
||||
sizerRight->SetMinSize(150, 40);
|
||||
m_sizerSlider = sizerRight; // save it to modify it later
|
||||
|
||||
Reset();
|
||||
@ -275,10 +322,12 @@ SliderWidgetsPage::~SliderWidgetsPage()
|
||||
|
||||
void SliderWidgetsPage::Reset()
|
||||
{
|
||||
m_chkLabels->SetValue(TRUE);
|
||||
m_chkTicks->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()
|
||||
@ -294,11 +343,6 @@ void SliderWidgetsPage::CreateSlider()
|
||||
if ( m_chkLabels->GetValue() )
|
||||
{
|
||||
flags |= wxSL_LABELS;
|
||||
|
||||
if ( m_chkOtherSide->GetValue() )
|
||||
flags |= isVert ? wxSL_RIGHT : wxSL_BOTTOM;
|
||||
else
|
||||
flags |= isVert ? wxSL_LEFT : wxSL_TOP;
|
||||
}
|
||||
|
||||
if ( m_chkTicks->GetValue() )
|
||||
@ -306,6 +350,30 @@ void SliderWidgetsPage::CreateSlider()
|
||||
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;
|
||||
if ( m_slider )
|
||||
{
|
||||
@ -364,6 +432,19 @@ void SliderWidgetsPage::DoSetTickFreq()
|
||||
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
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -380,6 +461,11 @@ void SliderWidgetsPage::OnButtonSetTickFreq(wxCommandEvent& WXUNUSED(event))
|
||||
DoSetTickFreq();
|
||||
}
|
||||
|
||||
void SliderWidgetsPage::OnButtonSetThumbLen(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
DoSetThumbLen();
|
||||
}
|
||||
|
||||
void SliderWidgetsPage::OnButtonSetMinAndMax(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
long minNew,
|
||||
@ -426,6 +512,12 @@ void SliderWidgetsPage::OnUpdateUITickFreq(wxUpdateUIEvent& event)
|
||||
(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)
|
||||
{
|
||||
long mn, mx;
|
||||
@ -437,9 +529,9 @@ void SliderWidgetsPage::OnUpdateUIMinMaxButton(wxUpdateUIEvent& event)
|
||||
void SliderWidgetsPage::OnUpdateUIResetButton(wxUpdateUIEvent& event)
|
||||
{
|
||||
event.Enable( m_chkVert->GetValue() ||
|
||||
!m_chkTicks->GetValue() ||
|
||||
!m_chkLabels->GetValue() ||
|
||||
m_chkOtherSide->GetValue() ||
|
||||
m_chkTicks->GetValue() );
|
||||
m_chkBothSides->GetValue() );
|
||||
}
|
||||
|
||||
void SliderWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& event)
|
||||
@ -452,9 +544,18 @@ void SliderWidgetsPage::OnUpdateUICurValueText(wxUpdateUIEvent& event)
|
||||
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)
|
||||
|
Loading…
Reference in New Issue
Block a user