racket/collects/scribblings/gui/slider-class.scrbl
Matthew Flatt 2bdcdbb197 racket/draw, racket/gui: modernize contracts, mostly in documentation
Use `or/c' instead of `one-of/c', `#f' instead of `false/c'.
2012-04-06 18:51:10 -06:00

81 lines
3.1 KiB
Racket

#lang scribble/doc
@(require "common.rkt")
@defclass/title[slider% object% (control<%>)]{
A @racket[slider] object is a panel item with a handle that the user can
drag to change the control's value. Each slider has a fixed minimum
and maximum value.
Whenever the user changes the value of a slider, its callback
procedure is invoked. A callback procedure is provided as an
initialization argument when each slider is created.
@defconstructor[([label (or/c label-string? #f)]
[min-value (integer-in -10000 10000)]
[max-value (integer-in -10000 10000)]
[parent (or/c (is-a?/c frame%) (is-a?/c dialog%)
(is-a?/c panel%) (is-a?/c pane%))]
[callback ((is-a?/c slider%) (is-a?/c control-event%) . -> . any) (lambda (b e) (void))]
[init-value (integer-in -10000 10000) min-value]
[style (listof (or/c 'horizontal 'vertical 'plain
'vertical-label 'horizontal-label
'deleted))
'(horizontal)]
[font (is-a?/c font%) normal-control-font]
[enabled any/c #t]
[vert-margin (integer-in 0 1000) 2]
[horiz-margin (integer-in 0 1000) 2]
[min-width (integer-in 0 10000) _graphical-minimum-width]
[min-height (integer-in 0 10000) _graphical-minimum-height]
[stretchable-width any/c (memq 'horizontal style)]
[stretchable-height any/c (memq 'vertical style)])]{
If @racket[label] is a string, it is used as the label for the slider.
Otherwise, the slider does not display its label.
@labelstripped[@racket[label]
@elem{} @elem{move the keyboard focus to the slider}]
The @racket[min-value] and @racket[max-value] arguments specify the
range of the slider, inclusive. The @racket[init-value] argument
optionally specifies the slider's initial value. If the sequence
[@racket[min-value], @racket[initial-value], @racket[maximum-value]]
is not increasing, @|MismatchExn|.
The @racket[callback] procedure is called (with the event type
@indexed-racket['slider]) when the user changes the slider's value.
The @racket[style] argument must include either @racket['vertical] for
a vertical slider, or @racket['horizontal] for a horizontal
slider. If @racket[style] includes @racket['plain], the slider does
not display numbers for its range and current value to the user.
@HVLabelNote[@racket[style]]{slider} @DeletedStyleNote[@racket[style] @racket[parent]]{slider}
@FontKWs[@racket[font]] @WindowKWs[@racket[enabled]] @SubareaKWs[] @AreaKWs[]
}
@defmethod[(get-value)
(integer-in -10000 10000)]{
Gets the current slider value.
}
@defmethod[(set-value [value (integer-in -10000 10000)])
void?]{
Sets the value (and displayed position) of the slider. (The control's
callback procedure is @italic{not} invoked.) If @racket[value] is
outside the slider's minimum and maximum range, @|MismatchExn|.
@MonitorCallback[@elem{A slider's value} @elem{the user clicking the control} @elem{value}]
}}