Page 317 | Table of Contents | Index | Page 319 |
Chapters | |||
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30 A, B, C, D, E |
;; Define the sheet's repaint method to draw the button. (defmethod handle-repaint ((button sample-button-pane) region &key medium &allow-other-keys) (let ((radius *sample-button-radius*) (half (round *sample-button-radius* 2))) ;; Larger circle with small one in the center. (draw-circle* medium radius radius radius :filled nil) (draw-circle* medium radius radius half :filled t))) ;;; Define the pane's compose-space method to always request the ;;; fixed size of the pane. (defmethod compose-space ((pane sample-button-pane)) (make-space-requirement :width (* 2 *sample-button-radius*) :height (* 2 *sample-button-radius*)))The above code is enough to allow you to instantiate the button pane in an application frame.
;; This default method is defined so that the callback can be invoked ;; on an arbitrary client value without error. (defmethod value-change-callback ((button sample-button-pane) client id value) (declare (ignore client id value))) ;; This event processing method defines the rather odd interaction ;; style of this button, to whit: it triggers the activate callback ;; whenever the mouse moves into it. (defmethod enter-region ((pane sample-button-pane) &key &allow-other-keys) (value-change-callback pane (gadget-client pane) (gadget-id pane) nil))
Minor issue: To be supplied. | ILA
Page 317 | Table of Contents | Index | Page 319 |
Chapters | |||
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30 A, B, C, D, E |