Implement support for wxSL_<DIR> in wxGTK, show them better in the sample.
Support wxSL_{LEFT,TOP,RIGHT,BOTTOM} in wxGTL version of wxSlider. Make the display of the orientations in the slider page of the widgets sample more clear. Also document wxSL_<DIR> meaning better. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62655 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -45,6 +45,13 @@
|
|||||||
compatible with wxSL_SELRANGE.
|
compatible with wxSL_SELRANGE.
|
||||||
@endStyleTable
|
@endStyleTable
|
||||||
|
|
||||||
|
Notice that @c wxSL_LEFT, @c wxSL_TOP, @c wxSL_RIGHT and @c wxSL_BOTTOM
|
||||||
|
specify the position of the slider ticks in MSW implementation and that the
|
||||||
|
slider labels, if any, are positioned on the opposite side. So, to have a
|
||||||
|
label on the left side of a vertical slider, @b wxSL_RIGHT must be used (or
|
||||||
|
none of these styles at all should be specified as left and top are default
|
||||||
|
positions for the vertical and horizontal sliders respectively).
|
||||||
|
|
||||||
@beginEventEmissionTable{wxScrollEvent}
|
@beginEventEmissionTable{wxScrollEvent}
|
||||||
You can use EVT_COMMAND_SCROLL... macros with window IDs for when intercepting
|
You can use EVT_COMMAND_SCROLL... macros with window IDs for when intercepting
|
||||||
scroll events from controls, or EVT_SCROLL... macros without window IDs for
|
scroll events from controls, or EVT_SCROLL... macros without window IDs for
|
||||||
|
@@ -80,6 +80,7 @@ enum
|
|||||||
// sides radiobox values
|
// sides radiobox values
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
|
SliderTicks_None,
|
||||||
SliderTicks_Top,
|
SliderTicks_Top,
|
||||||
SliderTicks_Bottom,
|
SliderTicks_Bottom,
|
||||||
SliderTicks_Left,
|
SliderTicks_Left,
|
||||||
@@ -263,12 +264,13 @@ void SliderWidgetsPage::CreateContent()
|
|||||||
m_chkValueLabel = CreateCheckBoxAndAddToSizer(sizerLeft, wxT("Show &value label"));
|
m_chkValueLabel = CreateCheckBoxAndAddToSizer(sizerLeft, wxT("Show &value label"));
|
||||||
static const wxString sides[] =
|
static const wxString sides[] =
|
||||||
{
|
{
|
||||||
|
wxT("default"),
|
||||||
wxT("top"),
|
wxT("top"),
|
||||||
wxT("bottom"),
|
wxT("bottom"),
|
||||||
wxT("left"),
|
wxT("left"),
|
||||||
wxT("right"),
|
wxT("right"),
|
||||||
};
|
};
|
||||||
m_radioSides = new wxRadioBox(this, SliderPage_RadioSides, wxT("&Ticks/Labels"),
|
m_radioSides = new wxRadioBox(this, SliderPage_RadioSides, wxT("&Label position"),
|
||||||
wxDefaultPosition, wxDefaultSize,
|
wxDefaultPosition, wxDefaultSize,
|
||||||
WXSIZEOF(sides), sides,
|
WXSIZEOF(sides), sides,
|
||||||
1, wxRA_SPECIFY_COLS);
|
1, wxRA_SPECIFY_COLS);
|
||||||
@@ -377,7 +379,7 @@ void SliderWidgetsPage::Reset()
|
|||||||
m_chkMinMaxLabels->SetValue(true);
|
m_chkMinMaxLabels->SetValue(true);
|
||||||
m_chkBothSides->SetValue(false);
|
m_chkBothSides->SetValue(false);
|
||||||
|
|
||||||
m_radioSides->SetSelection(SliderTicks_Top);
|
m_radioSides->SetSelection(SliderTicks_None);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SliderWidgetsPage::CreateSlider()
|
void SliderWidgetsPage::CreateSlider()
|
||||||
@@ -404,24 +406,30 @@ void SliderWidgetsPage::CreateSlider()
|
|||||||
flags |= wxSL_AUTOTICKS;
|
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() )
|
switch ( m_radioSides->GetSelection() )
|
||||||
{
|
{
|
||||||
|
case SliderTicks_None:
|
||||||
|
break;
|
||||||
|
|
||||||
case SliderTicks_Top:
|
case SliderTicks_Top:
|
||||||
flags |= wxSL_TOP;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SliderTicks_Left:
|
|
||||||
flags |= wxSL_LEFT | wxSL_VERTICAL;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SliderTicks_Bottom:
|
|
||||||
flags |= wxSL_BOTTOM;
|
flags |= wxSL_BOTTOM;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SliderTicks_Right:
|
case SliderTicks_Left:
|
||||||
flags |= wxSL_RIGHT | wxSL_VERTICAL;
|
flags |= wxSL_RIGHT | wxSL_VERTICAL;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SliderTicks_Bottom:
|
||||||
|
flags |= wxSL_TOP;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SliderTicks_Right:
|
||||||
|
flags |= wxSL_LEFT | wxSL_VERTICAL;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
wxFAIL_MSG(wxT("unexpected radiobox selection"));
|
wxFAIL_MSG(wxT("unexpected radiobox selection"));
|
||||||
// fall through
|
// fall through
|
||||||
@@ -657,7 +665,7 @@ void SliderWidgetsPage::OnUpdateUIResetButton(wxUpdateUIEvent& event)
|
|||||||
!m_chkValueLabel->GetValue() ||
|
!m_chkValueLabel->GetValue() ||
|
||||||
!m_chkMinMaxLabels->GetValue() ||
|
!m_chkMinMaxLabels->GetValue() ||
|
||||||
m_chkBothSides->GetValue() ||
|
m_chkBothSides->GetValue() ||
|
||||||
m_radioSides->GetSelection() != SliderTicks_Top );
|
m_radioSides->GetSelection() != SliderTicks_None );
|
||||||
}
|
}
|
||||||
|
|
||||||
void SliderWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event))
|
void SliderWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event))
|
||||||
|
@@ -357,16 +357,30 @@ bool wxSlider::Create(wxWindow *parent,
|
|||||||
m_minLabel = NULL;
|
m_minLabel = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (style & wxSL_VALUE_LABEL)
|
const bool showValueLabel = (style & wxSL_VALUE_LABEL) != 0;
|
||||||
|
gtk_scale_set_draw_value(GTK_SCALE (m_scale), showValueLabel );
|
||||||
|
if ( showValueLabel )
|
||||||
{
|
{
|
||||||
gtk_scale_set_draw_value(GTK_SCALE (m_scale), TRUE );
|
// position the label appropriately: notice that wxSL_DIRECTION flags
|
||||||
|
// specify the position of the ticks, not label, under MSW and so the
|
||||||
|
// label is on the opposite side
|
||||||
|
GtkPositionType posLabel;
|
||||||
|
if ( style & wxSL_VERTICAL )
|
||||||
|
{
|
||||||
|
if ( style & wxSL_LEFT )
|
||||||
|
posLabel = GTK_POS_RIGHT;
|
||||||
|
else // if ( style & wxSL_RIGHT ) -- this is also the default
|
||||||
|
posLabel = GTK_POS_LEFT;
|
||||||
|
}
|
||||||
|
else // horizontal slider
|
||||||
|
{
|
||||||
|
if ( style & wxSL_TOP )
|
||||||
|
posLabel = GTK_POS_BOTTOM;
|
||||||
|
else // if ( style & wxSL_BOTTOM) -- this is again the default
|
||||||
|
posLabel = GTK_POS_TOP;
|
||||||
|
}
|
||||||
|
|
||||||
if (style & wxSL_VERTICAL)
|
gtk_scale_set_value_pos( GTK_SCALE(m_scale), posLabel );
|
||||||
gtk_scale_set_value_pos( GTK_SCALE(m_scale), GTK_POS_LEFT );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
gtk_scale_set_draw_value(GTK_SCALE (m_scale), FALSE );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Keep full precision in position value
|
// Keep full precision in position value
|
||||||
|
Reference in New Issue
Block a user