2. Scale Widgets

Scale widgets are used to allow the user to visually select and
manipulate a value within a specific range. You might want to use a
scale widget, for example, to adjust the magnification level on a
zoomed preview of a picture, or to control the brightness of a color,
or to specify the number of minutes of inactivity before a screensaver
takes over the screen.

2.1. Creating a Scale Widget

As with scrollbars, there are separate widget types for horizontal and
vertical scale widgets. (Most programmers seem to favour horizontal
scale widgets.) Since they work essentially the same way, there's no
need to treat them separately here. The following functions create vertical and
horizontal scale widgets, respectively:

The adjustment argument can either be an
adjustment which has already been created with
Gtk2::Adjustment::new(), or undef, in which
case, an anonymous Adjustment is created with all of its values set to
0.0 (which isn't very useful in this case). In
order to avoid confusing yourself, you probably want to create your
adjustment with a page_size of
0.0 so that its upper value
actually corresponds to the highest value the user can select. The
_new_with_range() variants take care of creating a suitable
adjustment. (If you're already thoroughly
confused, read the section on Adjustments again for an explanation
of what exactly adjustments do and how to create and manipulate
them.)

2.2. Functions and Signals (well, functions, at least)

Scale widgets can display their current value as a number beside the
trough. The default behaviour is to show the value, but you can change
this with this function:

Gtk2::Scale->set_draw_value($scale, $draw_value);

As you might have guessed, draw_value is
either TRUE or FALSE, with
predictable consequences for either one.

The value displayed by a scale widget is rounded to one decimal
point by default, as is the value field in its
Adjustment. You can change this with:

Gtk2::Scale->set_digits($scale, $digits);

where digits is the number of decimal places
you want. You can set digits to anything you like,
but no more than 13 decimal places will actually be drawn on
screen.

Finally, the value can be drawn in different positions
relative to the trough:

Gtk2::Scale->set_value_pos($scale, $pos);

The argument pos is of type Gtk2::PositionType,
which can take one of the following values: