home *** CD-ROM | disk | FTP | other *** search
- # Copyright (c) 1990-1994 The Regents of the University of California.
- # Copyright (c) 1994-1996 Sun Microsystems, Inc.
- # See the file "license.terms" for information on usage and redistribution
- # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- #
- #
-
- =head1 NAME
-
- Tk::Scale - Create and manipulate Scale widgets
-
- =for category Tk Widget Classes
-
- =head1 SYNOPSIS
-
- I<$scale> = I<$parent>-E<gt>B<Scale>(?I<options>?);
-
- =head1 STANDARD OPTIONS
-
- B<-activebackground> B<-font> B<-highlightthickness> B<-repeatinterval>
- B<-background> B<-foreground> B<-orient> B<-takefocus>
- B<-borderwidth> B<-highlightbackground> B<-relief> B<-troughcolor>
- B<-cursor> B<-highlightcolor> B<-repeatdelay>
-
- See L<Tk::options> for details of the standard options.
-
- =head1 WIDGET-SPECIFIC OPTIONS
-
- =over 4
-
- =item Name: B<bigIncrement>
-
- =item Class: B<BigIncrement>
-
- =item Switch: B<-bigincrement>
-
- Some interactions with the scale cause its value to change by
- ``large'' increments; this option specifies the size of the
- large increments. If specified as 0, the large increments default
- to 1/10 the range of the scale.
-
- =item Name: B<command>
-
- =item Class: B<Command>
-
- =item Switch: B<-command>
-
- Specifies the prefix of a L<perl/Tk callback|Tk::callbacks> to invoke whenever the scale's
- value is changed via a method.
- The actual command consists
- of this option followed by a space and a real number indicating the
- new value of the scale.
-
- =item Name: B<digits>
-
- =item Class: B<Digits>
-
- =item Switch: B<-digits>
-
- An integer specifying how many significant digits should be retained
- when converting the value of the scale to a string.
- If the number is less than or equal to zero, then the scale picks
- the smallest value that guarantees that every possible slider
- position prints as a different string.
-
- =item Name: B<from>
-
- =item Class: B<From>
-
- =item Switch: B<-from>
-
- A real value corresponding to the left or top end of the scale.
-
- =item Name: B<label>
-
- =item Class: B<Label>
-
- =item Switch: B<-label>
-
- A string to display as a label for the scale. For
- vertical scales the label is displayed just to the right of the
- top end of the scale. For horizontal scales the label is displayed
- just above the left end of the scale. If the option is specified
- as an empty string, no label is displayed.
-
- =item Name: B<length>
-
- =item Class: B<Length>
-
- =item Switch: B<-length>
-
- Specifies the desired long dimension of the scale in screen units
- (i.e. any of the forms acceptable to B<Tk_GetPixels>).
- For vertical scales this is the scale's height; for horizontal scales
- it is the scale's width.
-
- =item Name: B<resolution>
-
- =item Class: B<Resolution>
-
- =item Switch: B<-resolution>
-
- A real value specifying the resolution for the scale.
- If this value is greater than zero then the scale's value will always be
- rounded to an even multiple of this value, as will tick marks and
- the endpoints of the scale. If the value is less than zero then no
- rounding occurs. Defaults to 1 (i.e., the value will be integral).
-
- =item Name: B<showValue>
-
- =item Class: B<ShowValue>
-
- =item Switch: B<-showvalue>
-
- Specifies a boolean value indicating whether or not the current
- value of the scale is to be displayed.
-
- =item Name: B<sliderLength>
-
- =item Class: B<SliderLength>
-
- =item Switch: B<-sliderlength>
-
- Specfies the size of the slider, measured in screen units along the slider's
- long dimension. The value may be specified in any of the forms acceptable
- to B<Tk_GetPixels>.
-
- =item Name: B<sliderRelief>
-
- =item Class: B<SliderRelief>
-
- =item Switch: B<-sliderrelief>
-
- Specifies the relief to use when drawing the slider, such as B<raised>
- or B<sunken>.
-
- =item Name: B<state>
-
- =item Class: B<State>
-
- =item Switch: B<-state>
-
- Specifies one of three states for the scale: B<normal>,
- B<active>, or B<disabled>.
- If the scale is disabled then the value may not be changed and the scale
- won't activate.
- If the scale is active, the slider is displayed using the color
- specified by the B<activeBackground> option.
-
- =item Name: B<tickInterval>
-
- =item Class: B<TickInterval>
-
- =item Switch: B<-tickinterval>
-
- Must be a real value.
- Determines the spacing between numerical
- tick marks displayed below or to the left of the slider.
- If 0, no tick marks will be displayed.
-
- =item Name: B<to>
-
- =item Class: B<To>
-
- =item Switch: B<-to>
-
- Specifies a real value corresponding
- to the right or bottom end of the scale.
- This value may be either less than or greater than the B<from> option.
-
- =item Name: B<variable>
-
- =item Class: B<Variable>
-
- =item Switch: B<-variable>
-
- Specifies the name of a global variable to link to the scale. Whenever the
- value of the variable changes, the scale will update to reflect this
- value.
- Whenever the scale is manipulated interactively, the variable
- will be modified to reflect the scale's new value.
-
- =item Name: B<width>
-
- =item Class: B<Width>
-
- =item Switch: B<-width>
-
- Specifies the desired narrow dimension of the trough in screen units
- (i.e. any of the forms acceptable to B<Tk_GetPixels>).
- For vertical scales this is the trough's width; for horizontal scales
- this is the trough's height.
-
- =back
-
- =head1 DESCRIPTION
-
- The B<Scale> method creates a new window (given by the
- $widget argument) and makes it into a scale widget.
- Additional
- options, described above, may be specified on the command line
- or in the option database
- to configure aspects of the scale such as its colors, orientation,
- and relief. The B<scale> command returns its
- $widget argument. At the time this command is invoked,
- there must not exist a window named $widget, but
- $widget's parent must exist.
-
- A scale is a widget that displays a rectangular I<trough> and a
- small I<slider>. The trough corresponds to a range
- of real values (determined by the B<from>, B<to>, and
- B<resolution> options),
- and the position of the slider selects a particular real value.
- The slider's position (and hence the scale's value) may be adjusted
- with the mouse or keyboard as described in
- the L<"BINDINGS"> section below. Whenever the scale's value is changed, a Tcl
- command is invoked (using the B<command> option) to notify
- other interested widgets of the change.
- In addition, the value
- of the scale can be linked to a Tcl variable (using the B<variable>
- option), so that changes in either are reflected in the other.
-
- Three annotations may be displayed in a scale widget: a label
- appearing at the top right of the widget (top left for horizontal
- scales), a number displayed just to the left of the slider
- (just above the slider for horizontal scales), and a collection
- of numerical tick marks just to the left of the current value
- (just below the trough for horizontal scales). Each of these three
- annotations may be enabled or disabled using the
- configuration options.
-
- =head1 WIDGET METHODS
-
- The B<Scale> method creates a widget object.
- This object supports the B<configure> and B<cget> methods
- described in L<Tk::options> which can be used to enquire and
- modify the options described above.
- The widget also inherits all the methods provided by the generic
- L<Tk::Widget|Tk::Widget> class.
-
- The following additional methods are available for scale widgets:
-
- =over 4
-
- =item I<$scale>-E<gt>B<coords>(?I<value>?)
-
- Returns a list whose elements are the x and y coordinates of
- the point along the centerline of the trough that corresponds
- to I<value>.
- If I<value> is omitted then the scale's current value is used.
-
- =item I<$scale>-E<gt>B<get>(?I<x, y>?)
-
- If I<x> and I<y> are omitted, returns the current value
- of the scale. If I<x> and I<y> are specified, they give
- pixel coordinates within the widget; the command returns
- the scale value corresponding to the given pixel.
- Only one of I<x> or I<y> is used: for horizontal scales
- I<y> is ignored, and for vertical scales I<x> is ignored.
-
- =item I<$scale>-E<gt>B<identify>(I<x, y>)
-
- Returns a string indicating what part of the scale lies under
- the coordinates given by I<x> and I<y>.
- A return value of B<slider> means that the point is over
- the slider; B<trough1> means that the point is over the
- portion of the slider above or to the left of the slider;
- and B<trough2> means that the point is over the portion
- of the slider below or to the right of the slider.
- If the point isn't over one of these elements, an empty string
- is returned.
-
- =item I<$scale>-E<gt>B<set>(I<value>)
-
- This command is invoked to change the current value of the scale,
- and hence the position at which the slider is displayed. I<Value>
- gives the new value for the scale.
- The command has no effect if the scale is disabled.
-
- =back
-
- =head1 BINDINGS
-
- Tk automatically creates class bindings for scales that give them
- the following default behavior.
- Where the behavior is different for vertical and horizontal scales,
- the horizontal behavior is described in parentheses.
-
- =over 4
-
- =item [1]
-
- If button 1 is pressed in the trough, the scale's value will
- be incremented or decremented by the value of the B<resolution>
- option so that the slider moves in the direction of the cursor.
- If the button is held down, the action auto-repeats.
-
- =item [2]
-
- If button 1 is pressed over the slider, the slider can be dragged
- with the mouse.
-
- =item [3]
-
- If button 1 is pressed in the trough with the Control key down,
- the slider moves all the way to the end of its range, in the
- direction towards the mouse cursor.
-
- =item [4]
-
- If button 2 is pressed, the scale's value is set to the mouse
- position. If the mouse is dragged with button 2 down, the scale's
- value changes with the drag.
-
- =item [5]
-
- The Up and Left keys move the slider up (left) by the value
- of the B<resolution> option.
-
- =item [6]
-
- The Down and Right keys move the slider down (right) by the value
- of the B<resolution> option.
-
- =item [7]
-
- Control-Up and Control-Left move the slider up (left) by the
- value of the B<bigIncrement> option.
-
- =item [8]
-
- Control-Down and Control-Right move the slider down (right) by the
- value of the B<bigIncrement> option.
-
- =item [9]
-
- Home moves the slider to the top (left) end of its range.
-
- =item [10]
-
- End moves the slider to the bottom (right) end of its range.
-
- If the scale is disabled using the B<state> option then
- none of the above bindings have any effect.
-
- The behavior of scales can be changed by defining new bindings for
- individual widgets or by redefining the class bindings.
-
- =back
-
- =head1 KEYWORDS
-
- scale, slider, trough, widget
-
- =cut
-
-