22 Notify-boxes

▼ |  | Framework: Racket GUI Application Framework

1 | Framework Libraries Overview
2 | Application
3 | Autosave
4 | Canvas
5 | Color Model
6 | Color Prefs
7 | Color
8 | Comment Box
9 | Decorated Editor Snip
10 | Editor Snip
11 | Editor
12 | Exit
13 | Finder
14 | Frame
15 | Group
16 | GUI Utilities
17 | Handler
18 | Icon
19 | Keymap
20 | Menu
21 | Mode
22 | Notify-boxes
23 | Number Snip
24 | Panel
25 | Pasteboard
26 | Path Utils
27 | Preferences
28 | Preferences, Textual
29 | Racket
30 | Text
31 | Splash
32 | Test
33 | Version
34 | Backwards Compatibility
35 | Signatures
36 | Unit
| Index

On this page:

notify: notify-box%
new
get
set
listen
remove-listener
remove-all-listeners
notify: notify-box/ pref
notify: define-notify
notify: menu-option/ notify-box
notify: check-box/ notify-box
notify: choice/ notify-box
notify: menu-group/ notify-box

6.5
top ← prev up next →

### 22`` Notify-boxes

(require framework/notify) | package: gui-lib

class notify:notify-box% : class?
superclass: object%

A notify-box contains a mutable cell. The notify-box notifies its listeners when the contents of the cell is changed.

Examples:

> > (define nb (new notify:notify-box% (value 'apple)))
> > (send nb get)
> 'apple
> > (send nb set 'orange)
> > (send nb listen (lambda (v) (printf "New value: ~s\n" v)))
> > (send nb set 'potato)
> New value: potato

> > constructor (new notify:notify-box% [value value])
> > → (is-a?/c notify:notify-box%)
> > value : any/c

> Creates a notify-box initially containing value.

> > method (send a-notify:notify-box get) → any/c

> Gets the value currently stored in the notify-box.

> > method (send a-notify:notify-box set v) → void?
> > v : any/c

> Updates the value stored in the notify-box and notifies the listeners.

> > method (send a-notify:notify-box listen listener) → void?
> > listener : (-> any/c any)

> Adds a callback to be invoked on the new value when the notify-box’s contents change.

> > method (send a-notify:notify-box remove-listener listener) → void?
> > listener : (-> any/c any)

> Removes a previously-added callback.

> > method (send a-notify:notify-box remove-all-listeners) → void?

> Removes all previously registered callbacks.

> Added in version 1.18 of package gui-lib.

> > procedure
> > (notify:notify-box/pref |  | proc |
> > | [ | #:readonly? readonly?]) |
> → (is-a?/c notify:notify-box%)
> proc : (case-> (-> any/c) (-> any/c void?))
> readonly? : boolean? = #f

Creates a notify-box with an initial value of (proc). Unless readonly? is true, proc is invoked on the new value when the notify-box is updated.

Useful for tying a notify-box to a preference or parameter. Of course, changes made directly to the underlying parameter or state are not reflected in the notify-box.

Examples:

> > (define animal (make-parameter 'ant))
> > (define nb (notify:notify-box/pref animal))
> > (send nb listen (lambda (v) (printf "New value: ~s\n" v)))
> > (send nb set 'bee)
> New value: bee
> > (animal 'cow)
> > (send nb get)
> 'bee
> > (send nb set 'deer)
> New value: deer
> > (animal)
> 'deer

Added in version 1.18 of package gui-lib.

> syntax (notify:define-notify name value-expr)
> | value-expr |  | : |  | (is-a?/c notify:notify-box%)

Class-body form. Declares name as a field and get-name, set-name, and listen-name as methods that delegate to the get, set, and listen methods of value.

The value-expr argument must evaluate to a notify-box, not just the initial contents for a notify box.

Useful for aggregating many notify-boxes together into one “configuration” object.

Examples:

> > (define config%
> (class object%
> (notify:define-notify food (new notify:notify-box% (value 'apple)))
> (notify:define-notify animal (new notify:notify-box% (value 'ant)))
> (super-new)))
> > (define c (new config%))
> > (send c listen-food
> (lambda (v) (when (eq? v 'honey) (send c set-animal 'bear))))
> > (let ([food (get-field food c)])
> (send food set 'honey))
> > (send c get-animal)
> 'bear

Added in version 1.18 of package gui-lib.

> > procedure
> > (notify:menu-option/notify-box |  | parent |
> > |  | label |
> > |  | notify-box) |
> → (is-a?/c checkable-menu-item%)
> parent : (or/c (is-a?/c menu%) (is-a?/c popup-menu%))
> label : label-string?
> notify-box : (is-a?/c notify:notify-box%)

Creates a checkable-menu-item% tied to notify-box. The menu item is checked whenever (send notify-box get) is true. Clicking the menu item toggles the value of notify-box and invokes its listeners.

Added in version 1.18 of package gui-lib.

> > procedure
> > (notify:check-box/notify-box |  | parent |  |  |  |
> > |  | label |  |  |  |
> > |  | notify-box) |  | → |  | (is-a?/c check-box%)
> | parent |  | : |  |
> (or/c (is-a?/c frame%) (is-a?/c dialog%)
> (is-a?/c panel%) (is-a?/c pane%))
> label : label-string?
> notify-box : (is-a?/c notify:notify-box%)

Creates a check-box% tied to notify-box. The check-box is checked whenever (send notify-box get) is true. Clicking the check box toggles the value of notify-box and invokes its listeners.

Added in version 1.18 of package gui-lib.

> > procedure
> > (notify:choice/notify-box |  | parent |  |  |  |
> > |  | label |  |  |  |
> > |  | choices |  |  |  |
> > |  | notify-box) |  | → |  | (is-a?/c choice%)
> | parent |  | : |  |
> (or/c (is-a?/c frame%) (is-a?/c dialog%)
> (is-a?/c panel%) (is-a?/c pane%))
> label : label-string?
> choices : (listof label-string?)
> notify-box : (is-a?/c notify:notify-box%)

Creates a choice% tied to notify-box. The choice control has the value (send notify-box get) selected, and selecting a different choice updates notify-box and invokes its listeners.

If the value of notify-box is not in choices, either initially or upon an update, an error is raised.

Added in version 1.18 of package gui-lib.

> > procedure
> > (notify:menu-group/notify-box |  | parent |
> > |  | labels |
> > |  | notify-box) |
> → (listof (is-a?/c checkable-menu-item%))
> parent : (or/c (is-a?/c menu%) (is-a?/c popup-menu%))
> labels : (listof label-string?)
> notify-box : (is-a?/c notify:notify-box%)

Returns a list of checkable-menu-item% controls tied to notify-box. A menu item is checked when its label is (send notify-box get). Clicking a menu item updates notify-box to its label and invokes notify-box’s listeners.

Added in version 1.18 of package gui-lib.

top ← prev up next →