Add GtkAssistant widget
[cl-gtk2.git] / gtk / gtk.assistant.lisp
1 (in-package :gtk)
2
3 (defcfun (assistant-nth-page "gtk_assistant_get_nth_page") (g-object widget)
4   (assistant (g-object assistant))
5   (page-num :int))
6
7 (export 'assistant-nth-page)
8
9 (defcfun (assistant-append-page "gtk_assistant_append_page") :int
10   (assistant (g-object assistant))
11   (page (g-object widget)))
12
13 (export 'assistant-append-page)
14
15 (defcfun (assistant-prepend-page "gtk_assistant_prepend_page") :int
16   (assistant (g-object assistant))
17   (page (g-object widget)))
18
19 (export 'assistant-prepend-page)
20
21 (defcfun (assistant-insert-page "gtk_assistant_insert_page") :int
22   (assistant (g-object assistant))
23   (page (g-object widget))
24   (position :int))
25
26 (export 'assistant-insert-page)
27
28 (defcstruct assistant-page-func-ref
29   (object :pointer)
30   (fn-id :int))
31
32 (defcallback assistant-page-func-cb :int
33     ((current-page :int) (data :pointer))
34   (let* ((object (convert-from-foreign (foreign-slot-value data 'assistant-page-func-ref 'object) '(g-object assistant)))
35          (fn-id (foreign-slot-value data 'assistant-page-func-ref 'fn-id))
36          (fn (retrieve-handler-from-object object fn-id)))
37     (funcall fn current-page)))
38
39 (defcallback assistant-page-func-destroy-notify-cb :void
40     ((data :pointer))
41   (let* ((object (convert-from-foreign (foreign-slot-value data 'assistant-page-func-ref 'object) '(g-object assistant)))
42          (fn-id (foreign-slot-value data 'assistant-page-func-ref 'fn-id)))
43     (delete-handler-from-object object fn-id)))
44
45 (defcfun gtk-assistant-set-forward-page-func :void
46   (assistant (g-object assistant))
47   (page-func :pointer)
48   (data :pointer)
49   (destroy-notify :pointer))
50
51 (defun set-assistant-forward-page-function (assistant function)
52   (if function
53       (let ((ref (foreign-alloc 'assistant-page-func-ref))
54             (fn-id (save-handler-to-object assistant function)))
55         (setf (foreign-slot-value ref 'assistant-page-func-ref 'object)
56               (pointer assistant)
57               (foreign-slot-value ref 'assistant-page-func-ref 'fn-id)
58               fn-id)
59         (gtk-assistant-set-forward-page-func assistant (callback assistant-page-func-cb)
60                                              ref (callback assistant-page-func-destroy-notify-cb)))
61       (gtk-assistant-set-forward-page-func assistant (null-pointer) (null-pointer) (null-pointer))))
62
63 (defcfun (assistant-add-action-widget "gtk_assistant_add_action_widget") :void
64   (assistant (g-object assistant))
65   (widget (g-object widget)))
66
67 (export 'assistant-add-action-widget)
68
69 (defcfun (assistant-remove-action-widget "gtk_assistant_remove_action_widget") :void
70   (assistant (g-object assistant))
71   (widget (g-object widget)))
72
73 (export 'assistant-remove-action-widget)
74
75 (defcfun (assistant-update-buttons-state "gtk_assistant_update_buttons_state") :void
76   (assistant (g-object assistant)))
77
78 (export 'assistant-update-buttons-state)
79
80