This class is a compound widget containing the controls that let the user adjust one of the parameters of the current color.
Since colors in external form show only 8 bits per pixel, the
length of the vertical Scale widget for the
parameter is exactly 256 pixels, covering the range [0,255].
Because color model parameter values are in the range
[0,65535], conversion from the scale value to the parameter
value are a simple shift of 8 bits.
# - - - - - c l a s s P a r a m S l i d e r
class ParamSlider(Frame):
"""Compound widget with a Scale for adjusting one color parameter.
Exports:
ParamSlider ( parent, model, color, paramx, callback=None ):
[ (parent is a Frame) and
(model is a ColorModel) and
(color is a Color) and
(param is an int in [0,N_PARAMS)) and
(callback is a function or None) ->
parent := parent with a new ParamSlider widget added
but not gridded, that displays the (paramx)th
parameter of (color) using (model), and calls
callback() whenever its scale is moved
return that new ParamSlider widget ]
The .get() method returns the 16-bit
integer value of this parameter; see Section 19.1, “ParamSlider.get(): Retrieve the current
parameter value”.
.get(): [ return self's slider value in [0,MAX_PARAM] ]
The .setModel() and .setColor() methods change the current color
model and color, respectively; see
Section 19.2, “ParamSlider.setModel(): Change the color
model” and
Section 19.3, “ParamSlider.setColor(): Change the current
color”.
.setModel ( model ):
[ self := self displaying labels for the (paramx)th
parameter of model ]
.setColor ( color ):
[ self := self displaying the (paramx)th parameter of
self.model ]
Each ParamSlider contains four widgets in a
vertical row:
Internal widgets:
.__topLabel: [ Label showing the parameter's name ]
.__plusButton: [ Button that increments the parameter ]
.__scale: [ Scale for adjusting the parameter ]
.__minusButton: [ Button that decrements the parameter ]
Grid plan: One vertical column.
Here are the private attributes.
State/Invariants:
.__paramx: [ as passed to the constructor ]
.__callback: [ as passed to the constructor ]
.__topLabelVar: [ StringVar for self.__topLabel ]
.__scaleVar: [ IntVar for self.__scale ]
.__model: [ current model as a ColorModel ]
.__color: [ current color as a Color ]
"""