+(in-package :gtk)
+
+(defcfun (assistant-nth-page "gtk_assistant_get_nth_page") (g-object widget)
+ (assistant (g-object assistant))
+ (page-num :int))
+
+(export 'assistant-nth-page)
+
+(defcfun (assistant-append-page "gtk_assistant_append_page") :int
+ (assistant (g-object assistant))
+ (page (g-object widget)))
+
+(export 'assistant-append-page)
+
+(defcfun (assistant-prepend-page "gtk_assistant_prepend_page") :int
+ (assistant (g-object assistant))
+ (page (g-object widget)))
+
+(export 'assistant-prepend-page)
+
+(defcfun (assistant-insert-page "gtk_assistant_insert_page") :int
+ (assistant (g-object assistant))
+ (page (g-object widget))
+ (position :int))
+
+(export 'assistant-insert-page)
+
+(defcstruct assistant-page-func-ref
+ (object :pointer)
+ (fn-id :int))
+
+(defcallback assistant-page-func-cb :int
+ ((current-page :int) (data :pointer))
+ (let* ((object (convert-from-foreign (foreign-slot-value data 'assistant-page-func-ref 'object) '(g-object assistant)))
+ (fn-id (foreign-slot-value data 'assistant-page-func-ref 'fn-id))
+ (fn (retrieve-handler-from-object object fn-id)))
+ (funcall fn current-page)))
+
+(defcallback assistant-page-func-destroy-notify-cb :void
+ ((data :pointer))
+ (let* ((object (convert-from-foreign (foreign-slot-value data 'assistant-page-func-ref 'object) '(g-object assistant)))
+ (fn-id (foreign-slot-value data 'assistant-page-func-ref 'fn-id)))
+ (delete-handler-from-object object fn-id)))
+
+(defcfun gtk-assistant-set-forward-page-func :void
+ (assistant (g-object assistant))
+ (page-func :pointer)
+ (data :pointer)
+ (destroy-notify :pointer))
+
+(defun set-assistant-forward-page-function (assistant function)
+ (if function
+ (let ((ref (foreign-alloc 'assistant-page-func-ref))
+ (fn-id (save-handler-to-object assistant function)))
+ (setf (foreign-slot-value ref 'assistant-page-func-ref 'object)
+ (pointer assistant)
+ (foreign-slot-value ref 'assistant-page-func-ref 'fn-id)
+ fn-id)
+ (gtk-assistant-set-forward-page-func assistant (callback assistant-page-func-cb)
+ ref (callback assistant-page-func-destroy-notify-cb)))
+ (gtk-assistant-set-forward-page-func assistant (null-pointer) (null-pointer) (null-pointer))))
+
+(defcfun (assistant-add-action-widget "gtk_assistant_add_action_widget") :void
+ (assistant (g-object assistant))
+ (widget (g-object widget)))
+
+(export 'assistant-add-action-widget)
+
+(defcfun (assistant-remove-action-widget "gtk_assistant_remove_action_widget") :void
+ (assistant (g-object assistant))
+ (widget (g-object widget)))
+
+(export 'assistant-remove-action-widget)
+
+(defcfun (assistant-update-buttons-state "gtk_assistant_update_buttons_state") :void
+ (assistant (g-object assistant)))
+
+(export 'assistant-update-buttons-state)
+
+