Modifer-type manually defined
[clg] / gtk / gtk.lisp
index 88135b7..16b0e4d 100644 (file)
@@ -1,21 +1,26 @@
-;; Common Lisp bindings for GTK+ v2.0
-;; Copyright (C) 1999-2001 Espen S. Johnsen <esj@stud.cs.uit.no>
+;; Common Lisp bindings for GTK+ v2.x
+;; Copyright 1999-2005 Espen S. Johnsen <espen@users.sf.net>
 ;;
 ;;
-;; This library is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU Lesser General Public
-;; License as published by the Free Software Foundation; either
-;; version 2 of the License, or (at your option) any later version.
+;; Permission is hereby granted, free of charge, to any person obtaining
+;; a copy of this software and associated documentation files (the
+;; "Software"), to deal in the Software without restriction, including
+;; without limitation the rights to use, copy, modify, merge, publish,
+;; distribute, sublicense, and/or sell copies of the Software, and to
+;; permit persons to whom the Software is furnished to do so, subject to
+;; the following conditions:
 ;;
 ;;
-;; This library is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; Lesser General Public License for more details.
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
 ;;
 ;;
-;; You should have received a copy of the GNU Lesser General Public
-;; License along with this library; if not, write to the Free Software
-;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+;; IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+;; CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 
-;; $Id: gtk.lisp,v 1.20 2004-12-04 00:34:49 espen Exp $
+;; $Id: gtk.lisp,v 1.42 2005-04-23 16:48:51 espen Exp $
 
 
 (in-package "GTK")
 
 
 (in-package "GTK")
@@ -44,7 +49,7 @@
 
 ;;;; Initalization
 
 
 ;;;; Initalization
 
-(defbinding (gtk-init "gtk_parse_args") () nil
+(defbinding (gtk-init "gtk_parse_args") () boolean
   "Initializes the library without opening the display."
   (nil null)
   (nil null))
   "Initializes the library without opening the display."
   (nil null)
   (nil null))
   "Initializes the system and starts the event handling"
   (unless (gdk:display-get-default)
     (gdk:gdk-init)
   "Initializes the system and starts the event handling"
   (unless (gdk:display-get-default)
     (gdk:gdk-init)
-    (gtk-init)
+    (unless (gtk-init)
+      (error "Initialization of GTK+ failed."))
     (prog1
        (gdk:display-open display)
     (prog1
        (gdk:display-open display)
-      (system:add-fd-handler 
-       (gdk:display-connection-number) :input #'main-iterate-all)
-      (setq lisp::*periodic-polling-function* #'main-iterate-all)
-      (setq lisp::*max-event-to-sec* 0)
-      (setq lisp::*max-event-to-usec* 1000))))
+      (add-fd-handler (gdk:display-connection-number) :input #'main-iterate-all)
+      (setq *periodic-polling-function* #'main-iterate-all)
+      (setq *max-event-to-sec* 0)
+      (setq *max-event-to-usec* 1000))))
+
+
+;;; Misc
+
+(defbinding grab-add () nil
+  (widget widget))
+
+(defbinding grab-get-current () widget)
+
+(defbinding grab-remove () nil
+  (widget widget))
+
+
+;;; About dialog
+
+#+gtk2.6
+(progn
+  (def-callback-marshal %about-dialog-activate-link-func 
+    (nil (dialog about-dialog) (link (copy-of string))))
+
+  (defbinding about-dialog-set-email-hook (function) nil
+    ((callback %about-dialog-activate-link-func) pointer)
+    ((register-callback-function function) unsigned-int)
+    ((callback user-data-destroy-func) pointer))
+  
+  (defbinding about-dialog-set-url-hook (function) nil
+    ((callback %about-dialog-activate-link-func) pointer)
+    ((register-callback-function function) unsigned-int)
+    ((callback user-data-destroy-func) pointer)))
 
 
 ;;; Acccel group
 
 
 
 ;;; Acccel group
 
+(defbinding %accel-group-connect () nil
+  (accel-group accel-group)
+  (key unsigned-int)
+  (modifiers gdk:modifier-type)
+  (flags accel-flags)
+  (gclosure gclosure))
+
+(defun accel-group-connect (group accelerator function &optional flags)
+  (multiple-value-bind (key modifiers) (accelerator-parse accelerator)
+    (let ((gclosure (make-callback-closure function)))
+      (%accel-group-connect group key modifiers flags gclosure)
+      gclosure)))
+
+(defbinding accel-group-connect-by-path (group path function) nil
+  (group accel-group)
+  (path string)
+  ((make-callback-closure function) gclosure :return))
+
+(defbinding %accel-group-disconnect (group gclosure) boolean
+  (group accel-group)
+  (gclosure gclosure))
+
+(defbinding %accel-group-disconnect-key () boolean
+  (group accel-group)
+  (key unsigned-int)
+  (modifiers gdk:modifier-type))
+
+(defun accel-group-disconnect (group accelerator)
+  (etypecase accelerator
+    (gclosure (%accel-group-disconnect group accelerator))
+    (string 
+     (multiple-value-bind (key modifiers) (accelerator-parse accelerator)
+       (%accel-group-disconnect-key group key modifiers)))))
+
+(defbinding accel-group-lock () nil
+  (accel-group accel-group))
+
+(defbinding accel-group-unlock () nil
+  (accel-group accel-group))
+
+(defbinding %accel-groups-activate () boolean
+  (object gobject)
+  (key unsigned-int)
+  (modifiers gdk:modifier-type))
+
+(defun accel-groups-activate (object accelerator)
+  (multiple-value-bind (key modifiers) (accelerator-parse accelerator)
+    (%accel-groups-activate object key modifiers)))
+
+(defbinding accel-groups-from-object () (gslist accel-groups)
+  (object gobject))
+
+(defbinding accelerator-valid-p (key &optional modifiers) boolean
+  (key unsigned-int)
+  (modifiers gdk:modifier-type))
+
+(defbinding %accelerator-parse () nil
+  (accelerator string)
+  (key unsigned-int :out)
+  (modifiers gdk:modifier-type :out))
+
+(defun accelerator-parse (accelerator)
+  (multiple-value-bind (key modifiers) (%accelerator-parse accelerator)
+    (if (zerop key)
+       (error "Invalid accelerator: ~A" accelerator)
+      (values key modifiers))))
+
+(defbinding accelerator-name () string
+  (key unsigned-int)
+  (modifiers gdk:modifier-type))
+
+#+gtk2.6
+(defbinding accelerator-get-label () string
+  (key unsigned-int)
+  (modifiers gdk:modifier-type))
+
+(defbinding %accelerator-set-default-mod-mask () nil
+  (default-modifiers gdk:modifier-type))
+
+(defun (setf accelerator-default-modifier-mask) (default-modifiers)
+  (%accelerator-set-default-mod-mask default-modifiers))
+
+(defbinding (accelerator-default-modifier-mask "gtk_accelerator_get_default_mod_mask") () gdk:modifier-type)
 
 
 ;;; Acccel label
 
 
 ;;; Acccel label
   (accel-label accel-label))
 
 
   (accel-label accel-label))
 
 
+
+;;; Accel map
+
+;(defbinding (accel-map-init "_gtk_accel_map_init") () nil)
+
+(defbinding %accel-map-add-entry () nil
+  (path string)
+  (key unsigned-int)
+  (modifiers gdk:modifier-type))
+
+(defun accel-map-add-entry (path accelerator)
+  (multiple-value-bind (key modifiers) (accelerator-parse accelerator)
+    (%accel-map-add-entry path key modifiers)))
+
+(defbinding accel-map-lookup-entry () boolean
+  (path string)
+  (key pointer)) ;accel-key))
+
+(defbinding %accel-map-change-entry () boolean
+  (path string)
+  (key unsigned-int)
+  (modifiers gdk:modifier-type)
+  (replace boolean))
+
+(defun accel-map-change-entry (path accelerator &optional replace)
+  (multiple-value-bind (key modifiers) (accelerator-parse accelerator)
+    (%accel-map-change-entry path key modifiers replace)))
+
+(defbinding accel-map-load () nil
+  (filename pathname))
+
+(defbinding accel-map-save () nil
+  (filename pathname))
+
+(defbinding accel-map-get () accel-map)
+
+(defbinding accel-map-lock-path () nil
+  (path string))
+
+(defbinding accel-map-unlock-path () nil
+  (path string))
+
+
+
+;;; Accessible
+
+(defbinding accessible-connect-widget-destroyed () nil
+  (accessible accessible))
+
+
 ;;; Adjustment
 
 ;;; Adjustment
 
-(defmethod shared-initialize ((adjustment adjustment) names &key value)
+(defmethod initialize-instance ((adjustment adjustment) &key value)
   (prog1
       (call-next-method)
     ;; we need to make sure that the value is set last, otherwise it
   (prog1
       (call-next-method)
     ;; we need to make sure that the value is set last, otherwise it
-    ;; may be outside current limits
+    ;; may be outside current limits and ignored
     (when value
       (setf (slot-value adjustment 'value) value))))
 
     (when value
       (setf (slot-value adjustment 'value) value))))
 
   (upper single-float))
 
 
   (upper single-float))
 
 
-;;; Arrow -- no functions
+;;; Alignment
 
 
+(defbinding alignment-set () nil
+  (alognment alignment)
+  (x-align single-float)
+  (y-align single-float)
+  (x-scale single-float)
+  (y-scale single-float))
+
+(defbinding alignment-get-padding () nil
+  (alognment alignment)
+  (top unsigned-int :out)
+  (bottom unsigned-int :out)
+  (left unsigned-int :out)
+  (right unsigned-int :out))
+
+(defbinding alignment-set-padding () nil
+  (alognment alignment)
+  (top unsigned-int)
+  (bottom unsigned-int)
+  (left unsigned-int)
+  (right unsigned-int))
 
 
 ;;; Aspect frame
 
 
 ;;; Aspect frame
   (container-add bin child)
   child)
 
   (container-add bin child)
   child)
 
-
-;;; Binding
-
+(defmethod compute-signal-function ((bin bin) signal function object)
+  (declare (ignore signal))
+  (if (eq object :child)
+      #'(lambda (&rest args) 
+         (apply function (bin-child bin) (rest args)))
+    (call-next-method)))
 
 
 ;;; Box
 
 
 ;;; Box
   (fill boolean)
   (padding unsigned-int))
 
   (fill boolean)
   (padding unsigned-int))
 
-(defun box-pack (box child &key end expand fill (padding 0))
+(defun box-pack (box child &key end (expand t) (fill t) (padding 0))
   (if end
       (box-pack-end box child expand fill padding)
     (box-pack-start box child expand fill padding)))
   (if end
       (box-pack-end box child expand fill padding)
     (box-pack-start box child expand fill padding)))
 
 ;;; Button
 
 
 ;;; Button
 
+(defmethod initialize-instance ((button button) &rest initargs &key stock)
+  (if stock
+      (apply #'call-next-method button :label stock :use-stock t initargs)
+    (call-next-method)))
+
+
 (defbinding button-pressed () nil
   (button button))
 
 (defbinding button-pressed () nil
   (button button))
 
 (defbinding calendar-clear-marks () nil
   (calendar calendar))
 
 (defbinding calendar-clear-marks () nil
   (calendar calendar))
 
-(defbinding calendar-display-options () nil
-  (calendar calendar)
-  (options calendar-display-options))
-
-(defbinding (calendar-date "gtk_calendar_get_date") () nil
+(defbinding calendar-get-date () nil
   (calendar calendar)
   (year unsigned-int :out)
   (month unsigned-int :out)
   (calendar calendar)
   (year unsigned-int :out)
   (month unsigned-int :out)
   (calendar calendar))
 
 
   (calendar calendar))
 
 
-
-;;; Cell editable
-
-
-
-;;; Cell renderer
-
-
-
-;;; Cell renderer pixbuf -- no functions
-
-
-
-;;; Cell renderer text
-
-
-
-;;; Cell renderer toggle -- no functions
-
-
-
-;;; Check button -- no functions
-
-
-
 ;;; Check menu item
 
 (defbinding check-menu-item-toggled () nil
   (check-menu-item check-menu-item))
 
 
 ;;; Check menu item
 
 (defbinding check-menu-item-toggled () nil
   (check-menu-item check-menu-item))
 
 
-
-;;; Clipboard
-
-
 ;;; Color selection
 
 (defbinding (color-selection-is-adjusting-p
 ;;; Color selection
 
 (defbinding (color-selection-is-adjusting-p
 
 ;;;; Combo Box
 
 
 ;;;; Combo Box
 
-(defmethod shared-initialize ((combo-box combo-box) names &key model content)
-  (unless model
-    (setf 
-     (combo-box-model combo-box) 
-     (make-instance 'list-store :column-types '(string)))
-    (unless (typep combo-box 'combo-box-entry)
-      (let ((cell (make-instance 'cell-renderer-text)))
-       (cell-layout-pack combo-box cell :expand t)
-       (cell-layout-add-attribute combo-box cell :text 0)))
-    (when content
-      (map 'nil #'(lambda (text)
-                   (combo-box-append-text combo-box text))
-          content)))
-    (call-next-method))
+(defmethod initialize-instance ((combo-box combo-box) &rest initargs 
+                               &key model content active)
+  (remf initargs :active)
+  (if model
+      (apply #'call-next-method combo-box initargs)
+    (progn
+      (apply #'call-next-method combo-box 
+       :model (make-instance 'list-store :column-types '(string))
+       initargs)
+      (unless (typep combo-box 'combo-box-entry)
+       (let ((cell (make-instance 'cell-renderer-text)))
+         (cell-layout-pack combo-box cell :expand t)
+         (cell-layout-add-attribute combo-box cell :text 0)))))
+  (when content
+    (mapc #'(lambda (text)
+             (combo-box-append-text combo-box text))
+         content))
+  (when active
+    (setf (combo-box-active combo-box) active)))
+
 
 ;; (defmethod shared-initialize :after ((combo-box combo-box) names &key active)
 ;;   (when active
 
 ;; (defmethod shared-initialize :after ((combo-box combo-box) names &key active)
 ;;   (when active
 
 ;;;; Combo Box Entry
 
 
 ;;;; Combo Box Entry
 
-(defmethod shared-initialize ((combo-box-entry combo-box-entry) names &key model)
+(defmethod initialize-instance ((combo-box-entry combo-box-entry) &key model)
   (call-next-method)
   (unless model
     (setf (combo-box-entry-text-column combo-box-entry) 0)))
   (call-next-method)
   (unless model
     (setf (combo-box-entry-text-column combo-box-entry) 0)))
 
 ;;;; Dialog
 
 
 ;;;; Dialog
 
-(defmethod shared-initialize ((dialog dialog) names &rest initargs &key button)
-  (declare (ignore button))
-  (call-next-method)
-  (dolist (button-definition (get-all initargs :button))
-    (apply #'dialog-add-button dialog (mklist button-definition))))
+(defmethod shared-initialize ((dialog dialog) names &rest initargs 
+                             &key button buttons)
+  (declare (ignore button buttons))
+  (prog1
+      (call-next-method)
+    (initial-apply-add dialog #'dialog-add-button initargs :button :buttons)))
   
 
   
 
-(defvar %*response-id-key* (gensym))
-
-(defun %dialog-find-response-id-num (dialog id &optional create-p error-p)
-  (or
-   (cadr (assoc id (rest (type-expand-1 'response-type))))
-   (let ((response-ids (object-data dialog %*response-id-key*)))
-    (cond
-      ((and response-ids (position id response-ids :test #'equal)))
-      (create-p
+(defun dialog-response-id (dialog response &optional create-p error-p)
+  "Returns a numeric response id"
+  (if (typep response 'response-type)
+      (response-type-to-int response)
+    (let ((responses (object-data dialog 'responses)))
+      (cond
+       ((and responses (position response responses :test #'equal)))
+       (create-p
        (cond
        (cond
-        (response-ids
-         (vector-push-extend id response-ids)
-         (1- (length response-ids)))
+        (responses
+         (vector-push-extend response responses)
+         (1- (length responses)))
         (t
          (setf 
         (t
          (setf 
-          (object-data dialog %*response-id-key*)
-          (make-array 1 :adjustable t :fill-pointer t :initial-element id))
+          (object-data dialog 'responses)
+          (make-array 1 :adjustable t :fill-pointer t 
+                      :initial-element response))
          0)))
       (error-p
          0)))
       (error-p
-       (error "Invalid response: ~A" id))))))
-
-(defun %dialog-find-response-id (dialog response-id-num)
-  (if (< response-id-num 0)
-      (car
-       (rassoc
-       (list response-id-num)
-       (rest (type-expand-1 'response-type)) :test #'equal))
-    (aref (object-data dialog %*response-id-key*) response-id-num )))
-
-
-(defmethod signal-connect ((dialog dialog) signal function &key object after)
-  (let ((response-id-num (%dialog-find-response-id-num dialog signal)))
-    (cond
-     (response-id-num
-      (call-next-method
-       dialog 'response
-       #'(lambda (dialog id)
-          (when (= id response-id-num)
-            (cond
-             ((eq object t) (funcall function dialog))
-             (object (funcall function object))
-             (t (funcall function)))))
-       :object t :after after))
-    ((call-next-method)))))
-
+       (error "Invalid response: ~A" response))))))
+
+(defun dialog-find-response (dialog id)
+  "Finds a symbolic response given a numeric id"
+  (if (< id 0)
+      (int-to-response-type id)
+    (aref (object-data dialog 'responses) id)))
+
+
+(defmethod compute-signal-id ((dialog dialog) signal)
+  (if (dialog-response-id dialog signal)
+      (ensure-signal-id 'response dialog)
+    (call-next-method)))
+
+(defmethod compute-signal-function ((dialog dialog) signal function object)
+  (declare (ignore function object))
+  (let ((callback (call-next-method))
+       (id (dialog-response-id dialog signal)))
+    (if id
+       #'(lambda (dialog response)
+           (when (= response id)
+             (funcall callback dialog)))
+      callback)))
 
 (defbinding dialog-run () nil
   (dialog dialog))
 
 
 (defbinding dialog-run () nil
   (dialog dialog))
 
-(defbinding dialog-response (dialog response-id) nil
+(defbinding dialog-response (dialog response) nil
   (dialog dialog)
   (dialog dialog)
-  ((%dialog-find-response-id-num dialog response-id nil t) int))
+  ((dialog-response-id dialog response nil t) int))
 
 
 (defbinding %dialog-add-button () button
   (dialog dialog)
   (text string)
 
 
 (defbinding %dialog-add-button () button
   (dialog dialog)
   (text string)
-  (response-id-num int))
+  (response-id int))
 
 (defun dialog-add-button (dialog label &optional (response label)
                          &key default object after)
 
 (defun dialog-add-button (dialog label &optional (response label)
                          &key default object after)
-  "Adds a button to the dialog. If no response is given, then label
-   will be used."
-  (let* ((id (if (functionp response)
-                label
-              response))
-        (id-num (%dialog-find-response-id-num dialog id t))
-        (button (%dialog-add-button dialog label id-num)))
+  "Adds a button to the dialog."
+  (let* ((signal (if (functionp response)
+                    label
+                  response))
+        (id (dialog-response-id dialog signal t))
+        (button (%dialog-add-button dialog label id)))
     (when (functionp response)
     (when (functionp response)
-       (signal-connect dialog id response :object object :after after))
+       (signal-connect dialog signal response :object object :after after))
     (when default
     (when default
-      (%dialog-set-default-response dialog id-num))
+      (%dialog-set-default-response dialog id))
     button))
 
 
     button))
 
 
-(defbinding %dialog-add-action-widget () button
+(defbinding %dialog-add-action-widget () nil
   (dialog dialog)
   (action-widget widget)
   (dialog dialog)
   (action-widget widget)
-  (response-id-num int))
+  (response-id int))
 
 (defun dialog-add-action-widget (dialog widget &optional (response widget)
                                 &key default object after)
 
 (defun dialog-add-action-widget (dialog widget &optional (response widget)
                                 &key default object after)
-  (let* ((id (if (functionp response)
-                widget
-              response))
-        (id-num (%dialog-find-response-id-num dialog id t)))
-    (%dialog-add-action-widget dialog widget id-num)
+  (let* ((signal (if (functionp response)
+                    widget
+                  response))
+        (id (dialog-response-id dialog signal t)))
+    (unless (widget-hidden-p widget)
+      (widget-show widget))
+    (%dialog-add-action-widget dialog widget id)
     (when (functionp response)
     (when (functionp response)
-       (signal-connect dialog id response :object object :after after))
+       (signal-connect dialog signal response :object object :after after))
     (when default
     (when default
-      (%dialog-set-default-response dialog id-num))
+      (%dialog-set-default-response dialog id))
     widget))
 
 
 (defbinding %dialog-set-default-response () nil
   (dialog dialog)
     widget))
 
 
 (defbinding %dialog-set-default-response () nil
   (dialog dialog)
-  (response-id-num int))
+  (response-id int))
 
 
-(defun dialog-set-default-response (dialog response-id)
+(defun dialog-set-default-response (dialog response)
   (%dialog-set-default-response
   (%dialog-set-default-response
-   dialog (%dialog-find-response-id-num dialog response-id nil t)))
+   dialog (dialog-response-id dialog response nil t)))
 
 
-(defbinding dialog-set-response-sensitive (dialog response-id sensitive) nil
+(defbinding dialog-set-response-sensitive (dialog response sensitive) nil
   (dialog dialog)
   (dialog dialog)
-  ((%dialog-find-response-id-num dialog response-id nil t) int)
+  ((dialog-response-id dialog response nil t) int)
   (sensitive boolean))
 
   (sensitive boolean))
 
+#+gtk2.6
+(defbinding alternative-dialog-button-order-p (&optional screen) boolean
+  (screen (or null gdk:screen)))
+
+#+gtk2.6
+(defbinding (dialog-set-alternative-button-order 
+            "gtk_dialog_set_alternative_button_order_from_array") 
+    (dialog new-order)
+  (dialog dialog)
+  ((length new-order) int)
+  ((map 'vector #'(lambda (response)
+                   (dialog-response-id dialog response nil t))
+       new-order) (vector int)))
 
 
-;; Addition dialog functions
 
 (defmethod container-add ((dialog dialog) (child widget) &rest args)
   (apply #'container-add (dialog-vbox dialog) child args))
 
 
 (defmethod container-add ((dialog dialog) (child widget) &rest args)
   (apply #'container-add (dialog-vbox dialog) child args))
 
+
 (defmethod container-remove ((dialog dialog) (child widget))
   (container-remove (dialog-vbox dialog) child))
 
 (defmethod container-remove ((dialog dialog) (child widget))
   (container-remove (dialog-vbox dialog) child))
 
   (setf (container-children (dialog-vbox dialog)) children))
 
 
   (setf (container-children (dialog-vbox dialog)) children))
 
 
-
-;;; Drawing area -- no functions
-
-
 ;;; Entry
 
 ;;; Entry
 
-(defbinding  entry-get-layout () pango:layout
-  (entry entry))
-
 (defbinding entry-get-layout-offsets () nil
   (entry entry)
   (x int :out)
   (y int :out))
 
 (defbinding entry-get-layout-offsets () nil
   (entry entry)
   (x int :out)
   (y int :out))
 
+(defbinding entry-layout-index-to-text-index () int
+  (entry entry)
+  (layout-index int))
+
+(defbinding entry-text-index-to-layout-index () int
+  (entry entry)
+  (text-index int))
+
+
+;;; Entry Completion
+
+(def-callback-marshal %entry-completion-match-func
+    (boolean entry-completion string (copy-of tree-iter)))
+
+(defbinding entry-completion-set-match-func (completion function) nil
+  (completion entry-completion)
+  ((callback %entry-completion-match-func) pointer)
+  ((register-callback-function function) unsigned-int)
+  ((callback user-data-destroy-func) pointer))
+
+(defbinding entry-completion-complete () nil
+  (completion entry-completion))
+
+#+gtk2.6
+(defbinding entry-completion-insert-prefix () nil
+  (completion entry-completion))
+
+(defbinding entry-completion-insert-action-text () nil
+  (completion entry-completion)
+  (index int)
+  (text string))
+
+(defbinding entry-completion-insert-action-markup () nil
+  (completion entry-completion)
+  (index int)
+  (markup string))
+
+(defbinding entry-completion-delete-action () nil
+  (completion entry-completion)
+  (index int))
+
+
+;;; File Chooser
+
+(defmethod initialize-instance ((file-chooser file-chooser) &rest initargs 
+                               &key filter filters shortcut-folder 
+                               shortcut-folders shortcut-folder-uti
+                               shortcut-folder-uris)
+  (declare (ignore filter filters shortcut-folder shortcut-folders 
+                  shortcut-folder-uti shortcut-folder-uris))
+  (prog1
+      (call-next-method)
+    (initial-add file-chooser #'file-chooser-add-filter
+     initargs :filer :filters)
+    (initial-add file-chooser #'file-chooser-add-shortcut-folder
+     initargs :shortcut-folder :shortcut-folders)
+    (initial-add file-chooser #'file-chooser-add-shortcut-folder-uri
+     initargs :shortcut-folder-uri :shortcut-folders-uris)))
+
+
+(defbinding file-chooser-select-filename () boolean
+  (file-chooser file-chooser)
+  (filename string))
+
+(defbinding file-chooser-unselect-filename () nil
+  (file-chooser file-chooser)
+  (filename string))
+
+(defbinding file-chooser-select-all () boolean
+  (file-chooser file-chooser))
+
+(defbinding file-chooser-unselect-all () boolean
+  (file-chooser file-chooser))
+  
+(defbinding file-chooser-get-filenames () (gslist string)
+  (file-chooser file-chooser))
+
+(defbinding file-chooser-select-uri () boolean
+  (file-chooser file-chooser)
+  (uri string))
+
+(defbinding file-chooser-unselect-uri () nil
+  (file-chooser file-chooser)
+  (uri string))
+
+(defbinding file-chooser-get-uris () (gslist string)
+  (file-chooser file-chooser))
+
+(defbinding file-chooser-add-filter () nil
+  (file-chooser file-chooser)
+  (filter file-filter))
+
+(defbinding file-chooser-remove-filter () nil
+  (file-chooser file-chooser)
+  (filter file-filter))
+
+(defbinding file-chooser-list-filters () (gslist file-filter)
+  (file-chooser file-chooser))
+
+(defbinding file-chooser-add-shortcut-folder () boolean
+  (file-chooser file-chooser)
+  (folder string)
+  (nil null))
+
+(defbinding file-chooser-remove-shortcut-folder () nil
+  (file-chooser file-chooser)
+  (folder string)
+  (nil null))
+
+(defbinding file-chooser-list-shortcut-folders () (gslist string)
+  (file-chooser file-chooser))
+
+(defbinding file-chooser-add-shortcut-folder-uri () boolean
+  (file-chooser file-chooser)
+  (uri string)
+  (nil null))
+
+(defbinding file-chooser-remove-shortcut-folder-uri () nil
+  (file-chooser file-chooser)
+  (uri string)
+  (nil null))
+
+(defbinding file-chooser-list-shortcut-folder-uris () (gslist string)
+  (file-chooser file-chooser))
+
+
+;;; File Filter
+
+(defmethod initialize-instance ((file-filter file-filter) &rest initargs 
+                               &key mime-type mime-types pattern patterns
+                               pixbuf-formats)
+  (declare (ignore mime-type mime-types pattern patterns))
+  (prog1
+      (call-next-method)
+    (when pixbuf-formats
+      #-gtk2.6(warn "Initarg :PIXBUF-FORMATS not supportet in this version of Gtk")
+      #+gtk2.6(file-filter-add-pixbuf-formats file-filter))
+    (initial-add file-filter #'file-filter-add-mime-type
+     initargs :mime-type :mime-types)
+    (initial-add file-filter #'file-filter-add-pattern
+     initargs :pattern :patterns)))
+
+
+(defbinding file-filter-add-mime-type () nil
+  (filter file-filter)
+  (mime-type string))
+
+(defbinding file-filter-add-pattern () nil
+  (filter file-filter)
+  (pattern string))
+
+#+gtk2.6
+(defbinding file-filter-add-pixbuf-formats () nil
+  (filter file-filter))
+
+(def-callback-marshal %file-filter-func (boolean file-filter-info))
+
+(defbinding file-filter-add-custom (filter needed function) nil
+  (filter file-filter)
+  (needed file-filter-flags)
+  ((callback %file-filter-func) pointer)
+  ((register-callback-function function) unsigned-int)
+  ((callback user-data-destroy-func) pointer))
+
+(defbinding file-filter-get-needed () file-filter-flags
+  (filter file-filter))
+
+(defbinding file-filter-filter () boolean
+  (filter file-filter)
+  (filter-info file-filter-info))
+
+
 
 ;;; Image
 
 
 ;;; Image
 
   (image image)
   (filename pathname))
 
   (image image)
   (filename pathname))
 
-(defbinding image-set-from-pixmap () nil
-  (image image)
-  (pixmap gdk:pixmap)
-  (mask gdk:bitmap))
+(defmethod (setf image-pixmap) ((data vector) (image image))
+  (multiple-value-bind (pixmap mask) (gdk:pixmap-create data)
+    (setf (image-pixmap image) pixmap)
+    (setf (image-mask image) mask)))
+
+(defmethod initialize-instance ((image image) &rest initargs &key pixmap file)
+  (cond
+   ((typep pixmap 'vector)
+    (multiple-value-bind (pixmap mask) (gdk:pixmap-create pixmap)
+      (apply #'call-next-method image :pixmap pixmap :mask mask initargs)))
+   (file
+    (prog1
+       (call-next-method)
+      (image-set-from-file image file)))
+   ((call-next-method))))
 
 
-(defbinding image-set-from-stock () nil
-  (image image)
-  (stock-id string)
-  (icon-size icon-size))
+(defun create-image-widget (source &optional mask)
+  (etypecase source
+    (gdk:pixbuf (make-instance 'image :pixbuf source))
+    (string (make-instance 'image :stock source))
+    (pathname (make-instance 'image :file source))
+    ((or list vector) (make-instance 'image :pixmap source))
+    (gdk:pixmap (make-instance 'image :pixmap source :mask mask))))
 
 
-(defun image-set-from-pixmap-data (image pixmap-data)
-  (multiple-value-bind (pixmap mask) (gdk:pixmap-create pixmap-data)
-    (image-set-from-pixmap image pixmap mask)))
 
 
-(defun image-set-from-source (image source)
-  (etypecase source
-    (pathname (image-set-from-file image source))
-    (string (if (stock-lookup source)
-               (setf (image-stock image) source)
-             (image-set-from-file image source)))
-    (vector (image-set-from-pixmap-data image source))))
+;;; Image menu item
 
 
+(defmethod initialize-instance ((item image-menu-item) &rest initargs &key image)
+  (if (and image (not (typep image 'widget)))
+      (apply #'call-next-method item :image (create-image-widget image) initargs) 
+    (call-next-method)))
 
 
-(defmethod shared-initialize ((image image) names &rest initargs 
-                             &key file pixmap source)
-  (prog1
-      (if (vectorp pixmap)
-         (progn
-           (remf initargs :pixmap)
-           (apply #'call-next-method image names initargs))
-       (call-next-method))
-    (cond
-      (file (image-set-from-file image file))
-      ((vectorp pixmap) (image-set-from-pixmap-data image pixmap))
-      (source (image-set-from-source image source)))))
+
+(defmethod (setf image-menu-item-image) ((widget widget) (item image-menu-item))
+  (setf (slot-value item 'image) widget))
+
+(defmethod (setf image-menu-item-image) (image (item image-menu-item))
+  (setf (image-menu-item-image item) (create-image-widget image)))
 
 
 ;;; Label
 
 
 
 ;;; Label
 
+(defmethod shared-initialize ((label label) names &key pattern)
+  (declare (ignore names))
+  (call-next-method)
+  (when pattern
+    (setf (label-pattern label) pattern)))
+
 (defbinding label-get-layout-offsets () nil
   (label label)
   (x int :out)
 (defbinding label-get-layout-offsets () nil
   (label label)
   (x int :out)
   (start int)
   (end int))
 
   (start int)
   (end int))
 
-(defbinding label-get-text () string
-  (label label))
-
-(defbinding label-get-layout () pango:layout
-  (label label))
-
 (defbinding label-get-selection-bounds () boolean
   (label label)
   (start int :out)
 (defbinding label-get-selection-bounds () boolean
   (label label)
   (start int :out)
   (radio-button radio-button)
   (group pointer))
 
   (radio-button radio-button)
   (group pointer))
 
-(defun radio-button-add-to-group (button1 button2)
+(defmethod add-to-radio-group ((button1 radio-button) (button2 radio-button))
   "Add BUTTON1 to the group which BUTTON2 belongs to."
   (%radio-button-set-group button1 (%radio-button-get-group button2)))
 
   "Add BUTTON1 to the group which BUTTON2 belongs to."
   (%radio-button-set-group button1 (%radio-button-get-group button2)))
 
-
-(defmethod initialize-instance ((button radio-button)
-                               &rest initargs &key group-with)
-  (declare (ignore initargs))
-  (call-next-method)
-  (when group-with
-    (radio-button-add-to-group button group-with)))
+(defun %add-activate-callback (widget signal function object after)
+  (if object
+      (signal-connect widget signal
+       #'(lambda (object)
+          (when (slot-value widget 'active)
+            (funcall function object (slot-value widget 'value))))
+       :object object :after after)
+    (signal-connect widget signal 
+     #'(lambda ()
+        (when (slot-value widget 'active)
+          (funcall function (slot-value widget 'value))))
+     :after after)))
+
+(defmethod activate-radio-widget ((button radio-button))
+  (signal-emit button 'clicked))
+
+(defmethod add-activate-callback ((button radio-button) function &key object after)
+  (%add-activate-callback button 'clicked function object after))
+
+(defmethod initialize-instance ((button radio-button) &key group)
+  (prog1
+      (call-next-method)
+    (when group
+      (add-to-radio-group button group))))
 
 
 ;;; Item
 
 
 ;;; Item
 
 ;;; Menu item
 
 
 ;;; Menu item
 
+(defmethod initialize-instance ((item menu-item) &key label)
+  (prog1
+      (call-next-method)
+    (when label
+      (setf (menu-item-label item) label))))
+
+
 (defun (setf menu-item-label) (label menu-item)
   (make-instance 'accel-label
    :label label :xalign 0.0 :yalign 0.5 :accel-widget menu-item
 (defun (setf menu-item-label) (label menu-item)
   (make-instance 'accel-label
    :label label :xalign 0.0 :yalign 0.5 :accel-widget menu-item
-   :visible t :parent menu-item)
+   :use-underline (menu-item-use-underline-p menu-item)
+   :visible t  :parent menu-item)
   label)
 
 (defun menu-item-label (menu-item)
   label)
 
 (defun menu-item-label (menu-item)
-  (with-slots (child) menu-item
-    (when (typep child 'label)
-      (label-label child))))
+  (when (and (slot-boundp menu-item 'child) 
+            (typep (bin-child menu-item) 'label))
+    (label-label (bin-child menu-item))))
 
 
-(defbinding %menu-item-set-submenu () nil
-  (menu-item menu-item)
-  (submenu menu))
-
-(defbinding %menu-item-remove-submenu () nil
+(defbinding menu-item-remove-submenu () nil
   (menu-item menu-item))
 
   (menu-item menu-item))
 
-(defun (setf menu-item-submenu) (submenu menu-item)
-  (if (not submenu)
-      (%menu-item-remove-submenu menu-item)
-    (%menu-item-set-submenu menu-item submenu))
-  submenu)
-
 (defbinding menu-item-set-accel-path () nil
   (menu-item menu-item)
   (accel-path string))
 (defbinding menu-item-set-accel-path () nil
   (menu-item menu-item)
   (accel-path string))
   (allocation int))
 
 
   (allocation int))
 
 
+;;; Menu tool button
+
+#+gtk2.6
+(defbinding menu-tool-button-set-arrow-tooltip () nil
+  (menu-tool-button menu-tool-button)
+  (tooltips tooltips)
+  (tip-text string)
+  (tip-private string))
+
+
+;;; Message dialog
+
+(defmethod initialize-instance ((dialog message-dialog)
+                               &key (message-type :info) (buttons :close)
+                               flags text #+gtk 2.6 secondary-text 
+                               transient-parent)
+  (setf 
+   (slot-value dialog 'location)
+   (%message-dialog-new transient-parent flags message-type buttons))
+  (when text
+    (message-dialog-set-markup dialog text))
+  #+gtk2.6
+  (when secondary-text
+    (message-dialog-format-secondary-markup dialog secondary-text))
+  (call-next-method))
+
+
+(defbinding %message-dialog-new () pointer
+  (parent (or null window))
+  (flags dialog-flags)
+  (type message-type)
+  (buttons buttons-type)
+  (nil null))
+
+(defbinding message-dialog-set-markup () nil
+  (message-dialog message-dialog)
+  (markup string))
+
+#+gtk2.6
+(defbinding message-dialog-format-secondary-text () nil
+  (message-dialog message-dialog)
+  (text string))
+
+#+gtk2.6
+(defbinding message-dialog-format-secondary-markup () nil
+  (message-dialog message-dialog)
+  (markup string))
+
+
 
 ;;; Radio menu item
 
 
 ;;; Radio menu item
 
   (radio-menu-item radio-menu-item)
   (group pointer))
 
   (radio-menu-item radio-menu-item)
   (group pointer))
 
-(defun radio-menu-item-add-to-group (item1 item2)
+(defmethod activate-radio-widget ((item radio-menu-item))
+  (menu-item-activate item))
+
+(defmethod add-to-radio-group ((item1 radio-menu-item) (item2 radio-menu-item))
   "Add ITEM1 to the group which ITEM2 belongs to."
   (%radio-menu-item-set-group item1 (%radio-menu-item-get-group item2)))
 
   "Add ITEM1 to the group which ITEM2 belongs to."
   (%radio-menu-item-set-group item1 (%radio-menu-item-get-group item2)))
 
-(defmethod initialize-instance ((item radio-menu-item)
-                               &rest initargs &key group-with)
-  (declare (ignore initargs))
+(defmethod add-activate-callback ((item radio-menu-item) function &key object after)
+  (%add-activate-callback item 'activate function object after))
+
+(defmethod initialize-instance ((item radio-menu-item) &key group)
   (prog1
       (call-next-method)
   (prog1
       (call-next-method)
-    (when group-with
-      (radio-menu-item-add-to-group item group-with))))
+    (when group
+      (add-to-radio-group item group))))
+
   
 
   
 
+;;; Radio tool button
+
+(defbinding %radio-tool-button-get-group () pointer
+  (radio-tool-button radio-tool-button))
+
+(defbinding %radio-tool-button-set-group () nil
+  (radio-tool-button radio-tool-button)
+  (group pointer))
+
+(defmethod activate-radio-widget ((button radio-tool-button))
+  (signal-emit button 'clicked))
+
+(defmethod add-to-radio-group ((button1 radio-tool-button) (button2 radio-tool-button))
+  "Add BUTTON1 to the group which BUTTON2 belongs to."
+  (%radio-tool-button-set-group button1 (%radio-tool-button-get-group button2)))
+(defmethod add-activate-callback ((button radio-tool-button) function &key object after)
+  (%add-activate-callback button 'clicked function object after))
+
+(defmethod initialize-instance ((button radio-tool-button) &key group)
+  (prog1
+      (call-next-method)
+    (when group
+      (add-to-radio-group button group))))
+
+
 
 ;;; Toggle button
 
 
 ;;; Toggle button
 
   (toggle-button toggle-button))
 
 
   (toggle-button toggle-button))
 
 
-
 ;;; Window
 
 ;;; Window
 
-(defmethod initialize-instance ((window window) &rest initargs &key accel-group)
-  (declare (ignore accel-group))
-  (call-next-method)
-  (mapc #'(lambda (accel-group)
-           (window-add-accel-group window accel-group))
-        (get-all initargs :accel-group)))
+(defmethod initialize-instance ((window window) &rest initargs 
+                               &key accel-group accel-groups)
+  (declare (ignore accel-group accel-groups))
+  (prog1
+      (call-next-method)
+    (initial-add window #'window-add-accel-group 
+     initargs :accel-group :accel-groups)))
 
 
 (defbinding window-set-wmclass () nil
 
 
 (defbinding window-set-wmclass () nil
   ((or width -1) int)
   ((or height -1) int))
 
   ((or width -1) int)
   ((or height -1) int))
 
-;(defbinding window-set-geometry-hints)
+(defbinding %window-set-geometry-hints () nil
+  (window window)
+  (geometry gdk:geometry)
+  (geometry-mask gdk:window-hints))
+
+(defun window-set-geometry-hints (window &key min-width min-height
+                                  max-width max-height base-width base-height
+                                 width-inc height-inc min-aspect max-aspect
+                                 (gravity nil gravity-p) min-size max-size)
+  (let ((geometry (make-instance 'gdk:geometry 
+                  :min-width (or min-width -1)
+                  :min-height (or min-height -1)
+                  :max-width (or max-width -1)
+                  :max-height (or max-height -1)
+                  :base-width (or base-width 0)
+                  :base-height (or base-height 0)
+                  :width-inc (or width-inc 0)
+                  :height-inc (or height-inc 0)
+                  :min-aspect (or min-aspect 0)
+                  :max-aspect (or max-aspect 0)
+                  :gravity gravity))
+       (mask ()))
+    (when (or min-size min-width min-height)
+      (push :min-size mask))
+    (when (or max-size max-width max-height)
+      (push :max-size mask))
+    (when (or base-width base-height)
+      (push :base-size mask))
+    (when (or width-inc height-inc)
+      (push :resize-inc mask))
+    (when (or min-aspect max-aspect)
+      (push :aspect mask))
+    (when gravity-p
+      (push :win-gravity mask))
+    (%window-set-geometry-hints window geometry mask)))
 
 (defbinding window-list-toplevels () (glist (copy-of window))
   "Returns a list of all existing toplevel windows.")
 
 (defbinding window-list-toplevels () (glist (copy-of window))
   "Returns a list of all existing toplevel windows.")
   ((gdk:keyval-from-name key) unsigned-int)
   (modifier gdk:modifier-type))
 
   ((gdk:keyval-from-name key) unsigned-int)
   (modifier gdk:modifier-type))
 
+(defbinding window-activate-key () boolean
+  (window window)
+  (event gdk:key-event))
+
+(defbinding window-propagate-key-event () boolean
+  (window window)
+  (event gdk:key-event))
+
 (defbinding window-present () nil
   (window window))
 
 (defbinding window-present () nil
   (window window))
 
 (defbinding window-unmaximize () nil
   (window window))
 
 (defbinding window-unmaximize () nil
   (window window))
 
+(defbinding window-fullscreen () nil
+  (window window))
+
+(defbinding window-unfullscreen () nil
+  (window window))
+
+(defbinding window-set-keep-above () nil
+  (window window)
+  (setting boolean))
+
+(defbinding window-set-keep-below () nil
+  (window window)
+  (setting boolean))
+
 (defbinding window-begin-resize-drag () nil
   (window window)
   (edge gdk:window-edge)
 (defbinding window-begin-resize-drag () nil
   (window window)
   (edge gdk:window-edge)
   (window window)
   (left int) (top int) (rigth int) (bottom int))
 
   (window window)
   (left int) (top int) (rigth int) (bottom int))
 
-(defbinding (window-default-icons "gtk_window_get_default_icon_list")
-    () (glist gdk:pixbuf))
-
 (defbinding %window-get-default-size () nil
   (window window)
   (width int :out)
 (defbinding %window-get-default-size () nil
   (window window)
   (width int :out)
 (defbinding %window-get-icon-list () (glist gdk:pixbuf)
   (window window))
 
 (defbinding %window-get-icon-list () (glist gdk:pixbuf)
   (window window))
 
-(defmethod window-icon ((window window))
-  (let ((icon-list (%window-get-icon-list window)))
-    (if (endp (rest icon-list))
-       (first icon-list)
-      icon-list)))
-
 (defbinding window-get-position () nil
   (window window)
   (root-x int :out)
 (defbinding window-get-position () nil
   (window window)
   (root-x int :out)
   (width int)
   (heigth int))
 
   (width int)
   (heigth int))
 
-(defbinding %window-set-icon-list () nil
+(defbinding (window-default-icon-list "gtk_window_get_default_icon_list")
+    () (glist gdk:pixbuf))
+
+(defun window-default-icon ()
+  (first (window-default-icon-list)))
+
+(defbinding %window-set-default-icon-list () nil
+  (icons (glist gdk:pixbuf)))
+
+(defun (setf window-default-icon-list) (icons)
+  (%window-set-default-icon-list icons)
+  icons)
+
+(defbinding %window-set-default-icon () nil
+  (icons (glist gdk:pixbuf)))
+
+(defmethod (setf window-default-icon) ((icon gdk:pixbuf))
+  (%window-set-default-icon icon)
+  icon)
+
+(defmethod (setf window-group) ((group window-group) (window window))
+  (window-group-add-window group window)
+  group)
+
+(defbinding %window-set-default-icon-from-file () boolean
+  (filename pathname)
+  (nil null))
+
+(defmethod (setf window-default-icon) ((icon-file pathname))
+  (%window-set-default-icon-from-file icon-file)
+  icon-file)
+
+(defbinding %window-set-icon-from-file () boolean
   (window window)
   (window window)
-  (icon-list (glist gdk:pixbuf)))
+  (filename pathname)
+  (nil null))
 
 
-(defmethod (setf window-icon) (icon (window window))
-  (%window-set-icon-list window (mklist icon)))
+(defmethod (setf window-icon) ((icon-file pathname) (window window))
+  (%window-set-icon-from-file window icon-file)
+  icon-file)
 
 
+(defbinding window-set-auto-startup-notification () nil
+  (setting boolean))
 
 
+(defbinding decorated-window-init () nil
+  (window window))
 
 
+(defbinding decorated-window-calculate-frame-size () nil
+  (window window))
 
 
-;;; File chooser
+(defbinding decorated-window-set-title () nil
+  (window window)
+  (title string))
 
 
+(defbinding decorated-window-move-resize-window () nil
+  (window window)
+  (x int)
+  (y int)
+  (width int)
+  (heigth int))
 
 
 
 
+;;; Window group
+
+(defmethod initialize-instance ((window-group window-group) &rest initargs 
+                               &key window windows)
+  (declare (ignore window windows))
+  (prog1
+      (call-next-method)
+    (initial-add window-group #'window-group-add-window 
+     initargs :window :windows)))
+
+
+(defbinding window-group-add-window () nil
+  (window-group window-group)
+  (window window))
+
+(defbinding window-group-remove-window () nil
+  (window-group window-group)
+  (window window))
+
 
 ;;; Scrolled window
 
 
 ;;; Scrolled window
 
    (scrolled-window scrolled-window)
    (child widget))
 
    (scrolled-window scrolled-window)
    (child widget))
 
-
-
-
-
+(defmethod shared-initialize ((window scrolled-window) names &key policy)
+  (declare (ignore names))
+  (when policy 
+    (setf (slot-value window 'hscrollbar-policy) policy)
+    (setf (slot-value window 'vscrollbar-policy) policy))
+  (call-next-method))
 
 
 ;;; Statusbar
 
 
 
 ;;; Statusbar
 
-(defbinding (statusbar-context-id "gtk_statusbar_get_context_id")
-    () unsigned-int
+(defbinding statusbar-get-context-id () unsigned-int
   (statusbar statusbar)
   (context-description string))
 
   (statusbar statusbar)
   (context-description string))
 
 
 ;;; Notebook
 
 
 ;;; Notebook
 
-(defun %notebook-position (notebook page)
+(defun %ensure-notebook-position (notebook page)
   (etypecase page
   (etypecase page
-    (int page)
-    (keyword (case page
-              (:first 0)
-              (:last -1)
-              (t (error "Invalid position keyword: ~A" page))))
+    (position page)
     (widget (notebook-page-num notebook page t))))
 
     (widget (notebook-page-num notebook page t))))
 
-(defun %notebook-child (notebook position)
+(defun %ensure-notebook-child (notebook position)
   (typecase position
      (widget position)
   (typecase position
      (widget position)
-     (t (notebook-nth-page-child notebook position))))
-
+     (t (notebook-get-nth-page notebook position))))
 
 (defbinding (notebook-insert "gtk_notebook_insert_page_menu")
     (notebook position child tab-label &optional menu-label) nil
 
 (defbinding (notebook-insert "gtk_notebook_insert_page_menu")
     (notebook position child tab-label &optional menu-label) nil
   ((if (stringp menu-label)
        (make-instance 'label :label menu-label)
      menu-label) (or null widget))
   ((if (stringp menu-label)
        (make-instance 'label :label menu-label)
      menu-label) (or null widget))
-  ((%notebook-position notebook position) int))
+  ((%ensure-notebook-position notebook position) position))
 
 (defun notebook-append (notebook child tab-label &optional menu-label)
   (notebook-insert notebook :last child tab-label menu-label))
 
 (defun notebook-append (notebook child tab-label &optional menu-label)
   (notebook-insert notebook :last child tab-label menu-label))
   
 (defbinding notebook-remove-page (notebook page) nil
   (notebook notebook)
   
 (defbinding notebook-remove-page (notebook page) nil
   (notebook notebook)
-  ((%notebook-position notebook page) int))
+  ((%ensure-notebook-position notebook page) position))
 
 (defbinding %notebook-page-num () int
   (notebook notebook)
 
 (defbinding %notebook-page-num () int
   (notebook notebook)
   (let ((page-num (%notebook-page-num notebook child)))
     (if (= page-num -1)
        (when error-p
   (let ((page-num (%notebook-page-num notebook child)))
     (if (= page-num -1)
        (when error-p
-         (error "~A is not a child of ~A" child notebook))
+         (error "~A is not a page in ~A" child notebook))
       page-num)))
 
 (defbinding notebook-next-page () nil
       page-num)))
 
 (defbinding notebook-next-page () nil
 (defbinding notebook-popup-disable () nil
   (notebook notebook))
 
 (defbinding notebook-popup-disable () nil
   (notebook notebook))
 
-(defbinding (notebook-nth-page-child "gtk_notebook_get_nth_page")
-    (notebook page) widget
+(defbinding notebook-get-nth-page () widget
   (notebook notebook)
   (notebook notebook)
-  ((case page
-     (:first 0)
-     (:last -1)
-     (t page)) int))
-
-
-(defbinding %notebook-get-current-page () int
-  (notebook notebook))
+  (page position))
 
 
-(defun notebook-current-page-num (notebook)
-  (let ((num (%notebook-get-current-page notebook)))
-    (when (>= num 0)
-      num)))
-
-(defun notebook-current-page (notebook)
-  (let ((page-num (notebook-current-page-num notebook)))
-    (when page-num
-      (notebook-nth-page-child notebook page-num))))
-
-(defbinding  %notebook-set-current-page () nil
-  (notebook notebook)
-  (page-num int))
+(defun %notebook-current-page (notebook)
+  (when (slot-boundp notebook 'current-page-num)
+    (notebook-get-nth-page notebook (notebook-current-page-num notebook))))
 
 (defun (setf notebook-current-page) (page notebook)
 
 (defun (setf notebook-current-page) (page notebook)
-  (%notebook-set-current-page notebook (%notebook-position notebook page))
-  page)
-
+  (setf (notebook-current-page notebook) (notebook-page-num notebook page)))
 
 (defbinding (notebook-tab-label "gtk_notebook_get_tab_label")
     (notebook page) widget
   (notebook notebook)
 
 (defbinding (notebook-tab-label "gtk_notebook_get_tab_label")
     (notebook page) widget
   (notebook notebook)
-  ((%notebook-child notebook page) widget))
+  ((%ensure-notebook-child notebook page) widget))
 
 (defbinding (notebook-tab-label-text "gtk_notebook_get_tab_label_text")
     (notebook page) (copy-of string)
   (notebook notebook)
 
 (defbinding (notebook-tab-label-text "gtk_notebook_get_tab_label_text")
     (notebook page) (copy-of string)
   (notebook notebook)
-  ((%notebook-child notebook page) widget))
+  ((%ensure-notebook-child notebook page) widget))
 
 (defbinding %notebook-set-tab-label () nil
   (notebook notebook)
 
 (defbinding %notebook-set-tab-label () nil
   (notebook notebook)
   (let ((widget (if (stringp tab-label)
                    (make-instance 'label :label tab-label)
                  tab-label)))
   (let ((widget (if (stringp tab-label)
                    (make-instance 'label :label tab-label)
                  tab-label)))
-    (%notebook-set-tab-label notebook (%notebook-child notebook page) widget)
+    (%notebook-set-tab-label notebook (%ensure-notebook-child notebook page) widget)
     widget))
 
 
 (defbinding (notebook-menu-label "gtk_notebook_get_menu_label")
     (notebook page) widget
   (notebook notebook)
     widget))
 
 
 (defbinding (notebook-menu-label "gtk_notebook_get_menu_label")
     (notebook page) widget
   (notebook notebook)
-  ((%notebook-child notebook page) widget))
+  ((%ensure-notebook-child notebook page) widget))
 
 (defbinding (notebook-menu-label-text "gtk_notebook_get_menu_label_text")
     (notebook page) (copy-of string)
   (notebook notebook)
 
 (defbinding (notebook-menu-label-text "gtk_notebook_get_menu_label_text")
     (notebook page) (copy-of string)
   (notebook notebook)
-  ((%notebook-child notebook page) widget))
+  ((%ensure-notebook-child notebook page) widget))
 
 (defbinding %notebook-set-menu-label () nil
   (notebook notebook)
 
 (defbinding %notebook-set-menu-label () nil
   (notebook notebook)
   (let ((widget (if (stringp menu-label)
                    (make-instance 'label :label menu-label)
                  menu-label)))
   (let ((widget (if (stringp menu-label)
                    (make-instance 'label :label menu-label)
                  menu-label)))
-    (%notebook-set-menu-label notebook (%notebook-child notebook page) widget)
+    (%notebook-set-menu-label notebook (%ensure-notebook-child notebook page) widget)
     widget))
 
 
     widget))
 
 
   (resize boolean)
   (shrink boolean))
 
   (resize boolean)
   (shrink boolean))
 
-(defun (setf paned-child1) (child paned)
-  (paned-pack1 paned child nil t)
-  child)
-
-(defun (setf paned-child2) (child paned)
-  (paned-pack2 paned child t t)
-  child)
-
-;; Defined in gtkglue.c
-(defbinding paned-child1 () widget
-  (paned paned)
-  (resize boolean :out)
-  (shrink boolean :out))
-
-;; Defined in gtkglue.c
-(defbinding paned-child2 () widget
-  (paned paned)
-  (resize boolean :out)
-  (shrink boolean :out))
-
-
 
 ;;; Layout
 
 (defbinding layout-put () nil
   (layout layout)
 
 ;;; Layout
 
 (defbinding layout-put () nil
   (layout layout)
-  (widget widget)
+  (child widget)
   (x int)
   (y int))
 
 (defbinding layout-move () nil
   (layout layout)
   (x int)
   (y int))
 
 (defbinding layout-move () nil
   (layout layout)
-  (widget widget)
+  (child widget)
   (x int)
   (y int))
 
   (x int)
   (y int))
 
+(defbinding layout-set-size () nil
+  (layout layout)
+  (width unsigned-int)
+  (height unsigned-int))
+
+(defbinding layout-get-size () nil
+  (layout layout)
+  (width unsigned-int :out)
+  (height unsigned-int :out))
 
 
 ;;; Menu shell
 
 
 ;;; Menu shell
   (menu-shell menu-shell)
   (menu-item menu-item))
 
   (menu-shell menu-shell)
   (menu-item menu-item))
 
+(defbinding menu-shell-select-first () nil
+  (menu-shell menu-shell)
+  (search-sensitive boolean))
+
 (defbinding menu-shell-deselect () nil
   (menu-shell menu-shell))
 
 (defbinding menu-shell-deselect () nil
   (menu-shell menu-shell))
 
   (menu-item menu-item)
   (fore-deactivate boolean))
 
   (menu-item menu-item)
   (fore-deactivate boolean))
 
+(defbinding menu-shell-cancel () nil
+  (menu-shell menu-shell))
 
 
 ;;; Menu
 
 
 ;;; Menu
   (menu-item menu-item)
   ((%menu-position menu position) int))
 
   (menu-item menu-item)
   ((%menu-position menu position) int))
 
-(def-callback-marshal %menu-popup-callback (nil (x int) (y int) (push-in boolean)))
+(defbinding menu-attach () nil
+  (menu menu)
+  (menu-item menu-item)
+  (left-attach unsigned-int)
+  (right-attach unsigned-int)
+  (top-attach unsigned-int)
+  (bottom-attach unsigned-int))
+
+(def-callback-marshal %menu-position-func (nil (menu menu) (x int) (y int) (push-in boolean)))
 
 (defbinding %menu-popup () nil
   (menu menu)
 
 (defbinding %menu-popup () nil
   (menu menu)
       (with-callback-function (id callback)
        (%menu-popup 
         menu parent-menu-shell parent-menu-item 
       (with-callback-function (id callback)
        (%menu-popup 
         menu parent-menu-shell parent-menu-item 
-        (callback %menu-popup-callback) id button activate-time))
+        (callback %menu-position-func) id button activate-time))
     (%menu-popup
      menu parent-menu-shell parent-menu-item nil 0 button activate-time)))
  
     (%menu-popup
      menu parent-menu-shell parent-menu-item nil 0 button activate-time)))
  
   (%menu-set-active menu (%menu-position menu child))
   child)
   
   (%menu-set-active menu (%menu-position menu child))
   child)
   
+(defcallback %menu-detach-func (nil (widget widget) (menu menu))
+  (funcall (object-data menu 'detach-func) widget menu))
+
+(defbinding %menu-attach-to-widget () nil
+  (menu menu)
+  (widget widget)
+  ((callback %menu-detach-func) pointer))
+
+(defun menu-attach-to-widget (menu widget function)
+  (setf (object-data menu 'detach-func) function)
+  (%menu-attach-to-widget menu widget))
+
+(defbinding menu-detach () nil
+  (menu menu))
+
+#+gtk2.6
+(defbinding menu-get-for-attach-widget () (copy-of (glist widget))
+  (widget widget))
+
+(defbinding menu-set-monitor () nil
+  (menu menu)
+  (monitor-num int))
 
 
 ;;; Table
 
 
 ;;; Table
   (columns unsigned-int))
 
 (defbinding table-attach (table child left right top bottom
   (columns unsigned-int))
 
 (defbinding table-attach (table child left right top bottom
-                         &key (x-options '(:expand :fill))
-                              (y-options '(:expand :fill))
-                              (x-padding 0) (y-padding 0)) nil
+                         &key options x-options y-options
+                         (x-padding 0) (y-padding 0)) nil
   (table table)
   (child widget)
   (left unsigned-int)
   (right unsigned-int)
   (top unsigned-int)
   (bottom unsigned-int)
   (table table)
   (child widget)
   (left unsigned-int)
   (right unsigned-int)
   (top unsigned-int)
   (bottom unsigned-int)
-  (x-options attach-options)
-  (y-options attach-options)
+  ((append (mklist options) (mklist x-options)) attach-options)
+  ((append (mklist options) (mklist y-options)) attach-options)
   (x-padding unsigned-int)
   (y-padding unsigned-int))
 
   (x-padding unsigned-int)
   (y-padding unsigned-int))
 
 
 ;;; Toolbar
 
 
 ;;; Toolbar
 
-(defbinding %toolbar-insert-element () widget
+(defmethod initialize-instance ((toolbar toolbar) &rest initargs &key tooltips)
+  (if (eq tooltips t)
+      (apply #'call-next-method toolbar
+       :tooltips (make-instance 'tooltips) initargs)
+    (call-next-method)))
+
+(defbinding %toolbar-insert () nil
   (toolbar toolbar)
   (toolbar toolbar)
-  (type toolbar-child-type)
-  (widget (or null widget))
-  (text string)
-  (tooltip-text string)
-  (tooltip-private-text string)
-  (icon (or null widget))
-  (nil null)
-  (nil null)
-  (position int))
+  (tool-item tool-item)
+  (position position))
+
+(defun toolbar-insert (toolbar tool-item &optional (position :end))
+  (%toolbar-insert toolbar tool-item position)
+  (%tool-item-update-tooltips tool-item))
 
 
-(defbinding %toolbar-insert-stock () widget
+(defbinding toolbar-get-item-index () int
   (toolbar toolbar)
   (toolbar toolbar)
-  (stock-id string)
-  (tooltip-text string)
-  (tooltip-private-text string)
-  (nil null)
-  (nil null)
-  (position int))
+  (item tool-item))
 
 
-(defun toolbar-insert (toolbar position element
-                      &key tooltip-text tooltip-private-text
-                      type icon group callback object)
-  (let* ((numpos (case position
-                  (:first -1)
-                  (:last 0)
-                  (t position)))
-        (widget
-         (cond
-          ((or
-            (eq type :space)
-            (and (not type) (eq element :space)))
-           (%toolbar-insert-element
-            toolbar :space nil nil
-            tooltip-text tooltip-private-text nil numpos))
-          ((or
-            (eq type :widget)
-            (and (not type) (typep element 'widget)))
-           (%toolbar-insert-element
-            toolbar :widget element nil
-            tooltip-text tooltip-private-text nil numpos))
-          ((or
-            (eq type :stock)
-            (and
-             (not type)
-             (typep element 'string)
-             (stock-lookup element)))
-           (%toolbar-insert-stock
-            toolbar element tooltip-text tooltip-private-text numpos))
-          ((typep element 'string)
-           (%toolbar-insert-element
-            toolbar (or type :button) (when (eq type :radio-button) group)
-            element tooltip-text tooltip-private-text 
-            (etypecase icon
-              (null nil)
-              (widget icon)
-              ((or pathname string vector)
-               (make-instance 'image 
-                :source icon ; :icon-size (toolbar-icon-size toolbar)
-                )))
-            numpos))
-          ((error "Invalid element type: ~A" element)))))
-    (when callback
-      (signal-connect widget 'clicked callback :object object))
-    widget))
+(defbinding toolbar-get-nth-item () tool-item
+  (toolbar toolbar)
+  (n int))
 
 
-(defun toolbar-append (toolbar element &key tooltip-text tooltip-private-text
-                      type icon group callback object)
-  (toolbar-insert
-   toolbar :first element :type type :icon icon :group group
-   :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text
-   :callback callback :object object))
+(defbinding toolbar-get-drop-index () int
+  (toolbar toolbar)
+  (x int) (y int))
 
 
-(defun toolbar-prepend (toolbar element &key tooltip-text tooltip-private-text
-                       type icon group callback object)
-  (toolbar-insert
-   toolbar :last element :type type :icon icon :group group
-   :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text
-   :callback callback :object object))
+(defbinding toolbar-set-drop-highlight-item () nil
+  (toolbar toolbar)
+  (tool-item tool-item)
+  (index int))
 
 
 
 
-(defun toolbar-insert-space (toolbar position)
-  (toolbar-insert toolbar position :space))
+;;; Tool button
 
 
-(defun toolbar-append-space (toolbar)
-  (toolbar-append toolbar :space))
+(defmethod initialize-instance ((button tool-button) &rest initargs &key icon)
+  (if (and icon (not (typep icon 'widget)))
+      (apply #'call-next-method button :icon (create-image-widget icon) initargs)
+    (call-next-method)))
 
 
-(defun toolbar-prepend-space (toolbar)
-  (toolbar-prepend toolbar :space))
 
 
+;;; Tool item
 
 
-(defun toolbar-enable-tooltips (toolbar)
-  (setf (toolbar-tooltips-p toolbar) t))
+(defbinding tool-item-set-tooltip () nil
+  (tool-item tool-item)
+  (tooltips tooltips)
+  (tip-text string)
+  (tip-private string))
 
 
-(defun toolbar-disable-tooltips (toolbar)
-  (setf (toolbar-tooltips-p toolbar) nil))
 
 
+(defun %tool-item-update-tooltips (tool-item)
+  (when (and 
+        (slot-boundp tool-item 'parent)
+        (or 
+         (user-data-p tool-item 'tip-text)
+         (user-data-p tool-item 'tip-private)))
+    (tool-item-set-tooltip
+     tool-item (toolbar-tooltips (widget-parent tool-item))
+     (or (user-data tool-item 'tip-text) "")
+     (or (user-data tool-item 'tip-private) ""))))
+
+(defmethod (setf tool-item-tip-text) ((tip-text string) (tool-item tool-item))
+  (setf (user-data tool-item 'tip-text) tip-text)
+  (%tool-item-update-tooltips tool-item)
+  tip-text)
+
+(defmethod (setf tool-item-tip-private) ((tip-private string) (tool-item tool-item))
+  (setf (user-data tool-item 'tip-private) tip-private)
+  (%tool-item-update-tooltips tool-item)
+  tip-private)
+
+(defmethod container-add ((toolbar toolbar) (tool-item tool-item) &rest args)
+  (declare (ignore args))
+  (prog1
+      (call-next-method)
+    (%tool-item-update-tooltips tool-item)))
 
 
-(defbinding toolbar-remove-space () nil
-  (toolbar toolbar)
-  (position int))
 
 
-(defbinding toolbar-unset-icon-size () nil
-  (toolbar toolbar))
+(defbinding tool-item-retrieve-proxy-menu-item () widget
+  (tool-item tool-item))
 
 
-(defbinding toolbar-unset-style () nil
-  (toolbar toolbar))
+(defbinding (tool-item-proxy-menu-item 
+            "gtk_tool_item_get_proxy_menu_item") () menu-item
+  (tool-item tool-item)
+  (menu-item-id string))
+
+(defbinding %tool-item-set-proxy-menu-item () nil
+  (tool-item tool-item)
+  (menu-item-id string)
+  (menu-item menu-item))
+
+(defun (setf tool-item-proxy-menu-item) (menu-item menu-item-id tool-item)
+  (%tool-item-set-proxy-menu-item menu-item-id tool-item menu-item)
+   menu-item)
+
+#+gtk2.6
+(defbinding tool-item-rebuild-menu () nil
+  (tool-item tool-item))
 
 
 ;;; Editable
 
 
 ;;; Editable
   (start int :out)
   (end int :out))
 
   (start int :out)
   (end int :out))
 
-(defbinding editable-insert-text
-    (editable text &optional (position 0)) nil
+(defbinding editable-insert-text (editable text &optional (position 0)) nil
   (editable editable)
   (text string)
   ((length text) int)
   (editable editable)
   (text string)
   ((length text) int)
-  ((or position -1) int :in-out))
+  (position position :in-out))
 
 (defun editable-append-text (editable text)
   (editable-insert-text editable text nil))
 
 (defun editable-append-text (editable text)
   (editable-insert-text editable text nil))
 
 ;;; Spin button
 
 
 ;;; Spin button
 
+(defbinding spin-button-configure () nil
+  (spin-button spin-button)
+  (adjustment adjustment)
+  (climb-rate double-float)
+  (digits unsigned-int))
+
+(defbinding spin-button-set-range () nil
+  (spin-button spin-button)
+  (min double-float)
+  (max double-float))
+
+(defbinding spin-button-get-range () nil
+  (spin-button spin-button)
+  (min double-float :out)
+  (max double-float :out))
+
 (defun spin-button-value-as-int (spin-button)
   (round (spin-button-value spin-button)))
 
 (defun spin-button-value-as-int (spin-button)
   (round (spin-button-value spin-button)))
 
-(defbinding spin-button-spin () nil
+(defbinding %spin-button-spin () nil
   (spin-button spin-button)
   (direction spin-type)
   (spin-button spin-button)
   (direction spin-type)
-  (increment single-float))
+  (increment double-float))
+
+(defun spin-button-spin (spin-button value)
+  (etypecase value
+    (real (%spin-button-spin spin-button :spin-user-defined value))
+    (spin-type (%spin-button-spin spin-button value 0))))
+
 
 (defbinding spin-button-update () nil
   (spin-button spin-button))
 
 (defbinding spin-button-update () nil
   (spin-button spin-button))
   (position single-float)
   (max-size single-float))
 
   (position single-float)
   (max-size single-float))
 
-(defbinding ruler-draw-ticks () nil
-  (ruler ruler))
-
-(defbinding ruler-draw-pos () nil
-  (ruler ruler))
+(defbinding ruler-get-range () nil
+  (ruler ruler)
+  (lower single-float :out)
+  (upper single-float :out)
+  (position single-float :out)
+  (max-size single-float :out))
 
 
 
 
 
 
 
 ;;; Scale
 
 
 ;;; Scale
 
-; (defbinding scale-draw-value () nil
-;   (scale scale))
-
+(defbinding scale-get-layout-offsets () nil
+  (scale scale)
+  (x int :out)
+  (y int :out))
 
 
 ;;; Progress bar
 
 
 ;;; Progress bar
   (progress-bar progress-bar))
 
 
   (progress-bar progress-bar))
 
 
+;;; Size group
+
+(defmethod initialize-instance ((size-group size-group) &rest initargs 
+                               &key widget widgets)
+  (declare (ignore widget widgets))
+  (prog1
+      (call-next-method)
+    (initial-add size-group #'size-group-add-widget 
+     initargs :widget :widgets)))
+
+
+(defbinding size-group-add-widget () nil
+  (size-group size-group)
+  (widget widget))
+
+(defbinding size-group-remove-widget () nil
+  (size-group size-group)
+  (widget widget))
+
 
 ;;; Stock items
 
 
 ;;; Stock items
 
   (tip-text string)
   (tip-private string))
 
   (tip-text string)
   (tip-private string))
 
+(defbinding tooltips-data-get () tooltips-data
+  (widget widget))
+
 (defbinding tooltips-force-window () nil
   (tooltips tooltips))
 
 (defbinding tooltips-force-window () nil
   (tooltips tooltips))
 
+(defbinding tooltips-get-info-from-tip-window () boolean
+  (tip-window window)
+  (tooltips tooltips :out)
+  (current-widget widget :out))
 
 
 ;;; Rc
 
 
 ;;; Rc
 
 (defbinding rc-get-style () style
   (widget widget))
 
 (defbinding rc-get-style () style
   (widget widget))
-
-
-
-;;; Accelerator Groups
-#|
-(defbinding accel-group-get-default () accel-group)
-
-(deftype-method alien-ref accel-group (type-spec)
-  (declare (ignore type-spec))
-  '%accel-group-ref)
-
-(deftype-method alien-unref accel-group (type-spec)
-  (declare (ignore type-spec))
-  '%accel-group-unref)
-
-(defbinding %accel-group-ref () accel-group
-  (accel-group (or accel-group pointer)))
-
-(defbinding %accel-group-unref () nil
-  (accel-group (or accel-group pointer)))
-
-(defbinding accel-group-activate (accel-group key modifiers) boolean
-  (accel-group accel-group)
-  ((gdk:keyval-from-name key) unsigned-int)
-  (modifiers gdk:modifier-type))
-
-(defbinding accel-groups-activate (object key modifiers) boolean
-  (object object)
-  ((gdk:keyval-from-name key) unsigned-int)
-  (modifiers gdk:modifier-type))
-
-(defbinding accel-group-attach () nil
-  (accel-group accel-group)
-  (object object))
-
-(defbinding accel-group-detach () nil
-  (accel-group accel-group)
-  (object object))
-
-(defbinding accel-group-lock () nil
-  (accel-group accel-group))
-
-(defbinding accel-group-unlock () nil
-  (accel-group accel-group))
-
-
-;;; Accelerator Groups Entries
-
-(defbinding accel-group-get-entry (accel-group key modifiers) accel-entry
-  (accel-group accel-group)
-  ((gdk:keyval-from-name key) unsigned-int)
-  (modifiers gdk:modifier-type))
-
-(defbinding accel-group-lock-entry (accel-group key modifiers) nil
-  (accel-group accel-group)
-  ((gdk:keyval-from-name key) unsigned-int)
-  (modifiers gdk:modifier-type))
-
-(defbinding accel-group-unlock-entry (accel-group key modifiers) nil
-  (accel-group accel-group)
-  ((gdk:keyval-from-name key) unsigned-int)
-  (modifiers gdk:modifier-type))
-
-(defbinding accel-group-add
-    (accel-group key modifiers flags object signal) nil
-  (accel-group accel-group)
-  ((gdk:keyval-from-name key) unsigned-int)
-  (modifiers gdk:modifier-type)
-  (flags accel-flags)
-  (object object)
-  ((name-to-string signal) string))
-
-(defbinding accel-group-add (accel-group key modifiers object) nil
-  (accel-group accel-group)
-  ((gdk:keyval-from-name key) unsigned-int)
-  (modifiers gdk:modifier-type)
-  (object object))
-
-
-;;; Accelerator Signals
-
-(defbinding accel-group-handle-add
-    (object signal-id accel-group key modifiers flags) nil
-  (object object)
-  (signal-id unsigned-int)
-  (accel-group accel-group)
-  ((gdk:keyval-from-name key) unsigned-int)
-  (modifiers gdk:modifier-type)
-  (flags accel-flags))
-
-(defbinding accel-group-handle-remove
-    (object accel-group key modifiers) nil
-  (object object)
-  (accel-group accel-group)
-  ((gdk:keyval-from-name key) unsigned-int)
-  (modifiers gdk:modifier-type))
-|#