chiark / gitweb /
Reintroduced a huge amount of bindings
[clg] / gtk / gtk.lisp
index f3a539f40c9941b89ff16259c9137b3e965caf89..7dce09d7b1207828e32d37e7c168385f3005232f 100644 (file)
@@ -15,7 +15,7 @@
 ;; License along with this library; if not, write to the Free Software
 ;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-;; $Id: gtk.lisp,v 1.1 2000-08-14 16:44:51 espen Exp $
+;; $Id: gtk.lisp,v 1.2 2000-09-04 22:23:34 espen Exp $
 
 
 (in-package "GTK")
@@ -39,78 +39,10 @@ (defun gtk-version ()
        (format nil "Gtk+ v~A.~A" major minor) 
       (format nil "Gtk+ v~A.~A.~A" major minor micro))))
 
-(export '*clg-version*)
-
-
-
-;;; InitializationInitialization, exit, mainloop and miscellaneous routines
-
-
-(define-foreign grab-add () nil
-  (widget widget))
-
-(define-foreign grab-get-current () widget)
-
-(define-foreign grab-remove () nil
-  (widget widget))
-
-(define-foreign ("gtk_timeout_add_full" timeout-add)
-    (interval function) unsigned-int
-  (interval (unsigned 32))
-  (0 unsigned-long)
-  (*callback-marshal* pointer)
-  ((register-callback-function function) unsigned-long)
-  (*destroy-marshal* pointer))
-
-(define-foreign timeout-remove () nil
-  (timeout-handler-id unsigned-int))
-  
-(define-foreign ("gtk_idle_add_full" idle-add)
-    (function &optional (priority 200)) unsigned-int
-  (priority int)
-  (0 unsigned-long)
-  (*callback-marshal* pointer)
-  ((register-callback-function function) unsigned-long)
-  (*destroy-marshal* pointer))
-
-(define-foreign idle-remove () nil
-  (idle-handler-id unsigned-int))
-
-(define-foreign get-current-event () gdk:event)
-
-(define-foreign get-event-widget () widget
-  (event gdk:event))
 
 
 ;;; should be moved to gobject
 
-; (define-foreign ("gtk_object_set_data_full" object-set-data)
-;                  (object key data &optional destroy-function) nil
-;   (object object)             
-;   ((string key) string)
-;   ((register-user-data data destroy-function) unsigned-long)
-;   (*destroy-marshal* pointer))
-
-; (defun (setf object-data) (data object key)
-;   (object-set-data object key data)
-;   data)
-
-; (define-foreign %object-get-data (object key) unsigned-long
-;   (object object)             
-;   ((string key) string))
-
-; (defun object-data (object key)
-;   (find-user-data (%object-get-data object key)))
-
-; (define-foreign object-remove-data (object key) nil
-;   (object object)
-;   ((string key) string))
-
-; (defun object-user-data (object)
-;   (object-data object :user-data))
-
-; (defun (setf object-user-data) (data object)
-;   (setf (object-data object :user-data) data))
 
 
 ;;; Label
@@ -156,36 +88,42 @@ (define-foreign arrow-new () arrow
 
 ;;; Pixmap
 
-; (defun %pixmap-create (source)
-;   (cond
-;    ((not source) nil)
-;    ((typep source gdk:pixmap) source)
-;    ((and (consp source) (typep (first source) gdk:pixmap)) (values-list source))
-;    (t (gdk:pixmap-create source))))
+(defmethod initialize-instance ((pixmap pixmap) &rest initargs
+                               &key source mask)
+  (declare (ignore initargs))
+  (call-next-method)
+  (if (typep source 'gdk:pixmap)
+      (pixmap-set pixmap source mask)
+    (multiple-value-bind (source mask) (gdk:pixmap-create source)
+      (pixmap-set pixmap source mask))))
 
-(define-foreign %pixmap-new () pixmap
-  (pixmap gdk:pixmap)
-  (mask (or null gdk:bitmap)))
-
-(defun pixmap-new (source)
-  (multiple-value-bind (pixmap mask)
-      (%pixmap-create source)
-    (%pixmap-new pixmap mask)))
+(defun pixmap-new (source &optional mask)
+  (make-instance 'pixmap :source source :mask mask))
 
-(define-foreign %pixmap-set () nil
+(define-foreign pixmap-set () nil
   (pixmap pixmap)
-  (gdk:pixmap gdk:pixmap)
+  (source gdk:pixmap)
   (mask (or null gdk:bitmap)))
 
-(defun (setf pixmap-pixmap) (source pixmap)
-  (multiple-value-bind (gdk:pixmap mask)
-      (%pixmap-create source)
-    (%pixmap-set pixmap gdk:pixmap mask)
-    (values gdk:pixmap mask)))
+(defun (setf pixmap-source) (source pixmap)
+  (if (typep source 'gdk:pixmap)
+      (pixmap-set pximap source (pixmap-mask pixmap))
+    (multiple-value-bind (source mask) (gdk:pixmap-create source)
+      (pixmap-set pixmap source mask)))
+  source)
 
-(define-foreign ("gtk_pixmap_get" pixmap-pixmap) () nil
+(defun (setf pixmap-mask) (mask pixmap)
+  (pixmap-set pximap (pixmap-source pixmap) mask)
+  mask)
+    
+(define-foreign ("gtk_pixmap_get" pixmap-source) () nil
   (pixmap pixmap)
   (val gdk:pixmap :out)
+  (nil null))
+
+(define-foreign ("gtk_pixmap_get" pixmap-mask) () nil
+  (pixmap pixmap)
+  (nil null)
   (mask gdk:bitmap :out))
 
 
@@ -203,6 +141,7 @@ (defun (setf bin-child) (child bin)
   child)
 
 
+
 ;;; Alignment
 
 (define-foreign alignment-new () alignment
@@ -242,6 +181,16 @@ (defun button-new (&optional label)
       (%button-new-with-label label)
     (%button-new)))
 
+(defgeneric button-label (button))
+(defgeneric (setf button-label) (label button))
+
+(defmethod button-label ((button button))
+  (object-arg button "GtkButton::label"))
+
+(defmethod (setf button-label) ((label string) (button button))
+  (setf (object-arg button "GtkButton::label") label))
+
+
 (define-foreign button-pressed () nil
   (button button))
 
@@ -288,6 +237,11 @@ (defun check-button-new (&optional label)
       (%check-button-new-with-label label)
     (%check-button-new)))
 
+(defmethod (setf button-label) ((label string) (button check-button))
+  (call-next-method)
+  (setf (misc-xalign (bin-child button)) 0.0)
+  label)
+
 
 
 ;;; Radio button
@@ -317,27 +271,27 @@ (defun radio-button-new (group &key label from-widget)
    (t
     (%radio-button-new group))))
     
-(define-foreign radio-button-group () radio-button-group
-  (radio-button radio-button))
+(define-foreign radio-button-group () radio-button-group
+  (radio-button radio-button))
 
 
 
 ;;; Option menu
 
-(define-foreign option-menu-new () option-menu)
+(define-foreign option-menu-new () option-menu)
 
-(define-foreign %option-menu-set-menu () nil
-  (option-menu option-menu)
-  (menu widget))
+(define-foreign %option-menu-set-menu () nil
+  (option-menu option-menu)
+  (menu widget))
 
-(define-foreign %option-menu-remove-menu () nil
-  (option-menu option-menu))
+(define-foreign %option-menu-remove-menu () nil
+  (option-menu option-menu))
 
-(defun (setf option-menu-menu) (menu option-menu)
-  (if (not menu)
-      (%option-menu-remove-menu option-menu)
-    (%option-menu-set-menu option-menu menu))
-  menu)
+(defun (setf option-menu-menu) (menu option-menu)
+  (if (not menu)
+      (%option-menu-remove-menu option-menu)
+    (%option-menu-set-menu option-menu menu))
+  menu)
     
 
 
@@ -356,109 +310,105 @@ (define-foreign item-toggle () nil
 
 ;;; Menu item
 
-; (define-foreign %menu-item-new () menu-item)
-
-; (define-foreign %menu-item-new-with-label () menu-item
-;   (label string))
+(define-foreign %menu-item-new () menu-item)
 
-; (defun menu-item-new (&optional label)
-;   (if label
-;       (%menu-item-new-with-label label)
-;     (%menu-item-new)))
+(define-foreign %menu-item-new-with-label () menu-item
+  (label string))
 
-; (defun (setf menu-item-label) (label menu-item)
-;   (let ((accel-label (accel-label-new label)))
-;     (setf (misc-xalign accel-label) 0.0)
-;     (setf (misc-yalign accel-label) 0.5)
+(defun menu-item-new (&optional label)
+  (if label
+      (%menu-item-new-with-label label)
+    (%menu-item-new)))
 
-;     (container-add menu-item accel-label)
-;     (setf (accel-label-accel-widget accel-label) menu-item)
-;     (widget-show accel-label))
-;   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
+   :visible t :parent menu-item)
+  label)
 
-(define-foreign %menu-item-set-submenu () nil
-  (menu-item menu-item)
-  (submenu menu))
+(define-foreign %menu-item-set-submenu () nil
+  (menu-item menu-item)
+  (submenu menu))
 
-(define-foreign %menu-item-remove-submenu () nil
-  (menu-item menu-item))
+(define-foreign %menu-item-remove-submenu () nil
+  (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)
+(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)
 
-(define-foreign %menu-item-configure () nil
-  (menu-item menu-item)
-  (show-toggle-indicator boolean)
-  (show-submenu-indicator boolean))
+(define-foreign %menu-item-configure () nil
+  (menu-item menu-item)
+  (show-toggle-indicator boolean)
+  (show-submenu-indicator boolean))
 
-(defun (setf menu-item-toggle-indicator-p) (show menu-item)
-  (%menu-item-configure
-   menu-item
-   show
-   (menu-item-submenu-indicator-p menu-item))
-  show)
+(defun (setf menu-item-toggle-indicator-p) (show menu-item)
+  (%menu-item-configure
+   menu-item
+   show
+   (menu-item-submenu-indicator-p menu-item))
+  show)
 
-(defun (setf menu-item-submenu-indicator-p) (show menu-item)
-  (%menu-item-configure
-   menu-item
-   (menu-item-toggle-indicator-p menu-item)
-   show))
+(defun (setf menu-item-submenu-indicator-p) (show menu-item)
+  (%menu-item-configure
+   menu-item
+   (menu-item-toggle-indicator-p menu-item)
+   show))
 
-(define-foreign menu-item-select () nil
-  (menu-item menu-item))
+(define-foreign menu-item-select () nil
+  (menu-item menu-item))
 
-(define-foreign menu-item-deselect () nil
-  (menu-item menu-item))
+(define-foreign menu-item-deselect () nil
+  (menu-item menu-item))
 
-(define-foreign menu-item-activate () nil
-  (menu-item menu-item))
+(define-foreign menu-item-activate () nil
+  (menu-item menu-item))
 
-(define-foreign menu-item-right-justify () nil
-  (menu-item menu-item))
+(define-foreign menu-item-right-justify () nil
+  (menu-item menu-item))
 
 
 
-; ;;; Check menu item
+;;; Check menu item
 
-(define-foreign %check-menu-item-new
-    () check-menu-item)
+(define-foreign %check-menu-item-new
+    () check-menu-item)
 
-(define-foreign %check-menu-item-new-with-label () check-menu-item
-  (label string))
+(define-foreign %check-menu-item-new-with-label () check-menu-item
+  (label string))
 
-(defun check-menu-item-new (&optional label)
-  (if label
-      (%check-menu-item-new-with-label label)
-    (%check-menu-item-new)))
+(defun check-menu-item-new (&optional label)
+  (if label
+      (%check-menu-item-new-with-label label)
+    (%check-menu-item-new)))
 
-(define-foreign check-menu-item-toggled () nil
-  (check-menu-item check-menu-item))
+(define-foreign check-menu-item-toggled () nil
+  (check-menu-item check-menu-item))
 
 
 
-; ;;; Radio menu item
+;;; Radio menu item
 
-(define-foreign %radio-menu-item-new
-                 () radio-menu-item
-  (group (or null radio-menu-item-group)))
+(define-foreign %radio-menu-item-new
+                 () radio-menu-item
+  (group (or null radio-menu-item-group)))
 
-(define-foreign %radio-menu-item-new-with-label () radio-menu-item
-  (group (or null radio-menu-item-group))
-  (label string))
+(define-foreign %radio-menu-item-new-with-label () radio-menu-item
+  (group (or null radio-menu-item-group))
+  (label string))
 
-(defun radio-menu-item-new (group &optional label)
-  (if label
-      (%radio-menu-item-new-with-label group label)
-    (%radio-menu-item-new group)))
+(defun radio-menu-item-new (group &optional label)
+  (if label
+      (%radio-menu-item-new-with-label group label)
+    (%radio-menu-item-new group)))
 
 
 
-; ;;; Tearoff menu item
+;;; Tearoff menu item
 
-(define-foreign tearoff-menu-item-new () tearoff-menu-item)
+(define-foreign tearoff-menu-item-new () tearoff-menu-item)
 
 
 
@@ -535,7 +485,7 @@ (defun (setf window-wmclass) (wmclass window)
   (%window-set-wmclass window (svref wmclass 0) (svref wmclass 1))
   (values (svref wmclass 0) (svref wmclass 1)))
 
-;; cl-gtk.c
+;; gtkglue.c
 (define-foreign window-wmclass () nil
   (window window)
   (wmclass-name string :out)
@@ -572,13 +522,13 @@ (define-foreign window-set-transient-for () nil
 
 ;;; Dialog
 
-(define-foreign dialog-new () dialog)
+(define-foreign dialog-new () dialog)
 
 
 
 ;;; Input dialog
 
-(define-foreign input-dialog-new () dialog)
+(define-foreign input-dialog-new () dialog)
 
 
 
@@ -599,13 +549,13 @@ (define-foreign window-set-transient-for () nil
 
 
 
-; ;;; Handle box
+;;; Handle box
 
-(define-foreign handle-box-new () handle-box)
+(define-foreign handle-box-new () handle-box)
 
 
 
-; ;;; Scrolled window
+;;; Scrolled window
 
 (define-foreign scrolled-window-new
     (&optional hadjustment vadjustment) scrolled-window
@@ -622,11 +572,11 @@ (define-foreign scrolled-window-add-with-viewport () nil
 
 
 
-; ;;; Viewport
+;;; Viewport
 
-(define-foreign viewport-new () viewport
-  (hadjustment adjustment)
-  (vadjustment adjustment))
+(define-foreign viewport-new () viewport
+  (hadjustment adjustment)
+  (vadjustment adjustment))
   
 
 
@@ -736,7 +686,7 @@ (defun (setf button-box-child-ipadding) (ipad button-box)
 
 ;;; HButton box
 
-;(define-foreign hbutton-box-new () hbutton-box)
+(define-foreign hbutton-box-new () hbutton-box)
 
 (define-foreign ("gtk_hbutton_box_get_spacing_default"
                  hbutton-box-default-spacing) () int)
@@ -756,7 +706,7 @@ (define-foreign ("gtk_hbutton_box_set_layout_default"
 
 ;;; VButton Box
 
-;(define-foreign vbutton-box-new () vbutton-box)
+(define-foreign vbutton-box-new () vbutton-box)
 
 (define-foreign ("gtk_vbutton_box_get_spacing_default"
                  vbutton-box-default-spacing) () int)
@@ -786,7 +736,7 @@ (define-foreign vbox-new () vbox
 
 ; (define-foreign color-selection-new () color-selection)
 
-; ;; cl-gtk.c
+; ;; gtkglue.c
 ; (define-foreign %color-selection-set-color-by-values () nil
 ;   (colorsel color-selection)
 ;   (red double-float)
@@ -803,7 +753,7 @@ (define-foreign vbox-new () vbox
 ;      1.0))
 ;   color)
 
-; ;; cl-gtk.c
+; ;; gtkglue.c
 ; (define-foreign %color-selection-get-color-as-values () nil
 ;   (colorsel color-selection)
 ;   (red double-float :out)
@@ -837,957 +787,99 @@ (define-foreign hbox-new () hbox
 
 ;;; Combo
 
-(define-foreign combo-new () combo)
+(define-foreign combo-new () combo)
 
-(define-foreign combo-set-value-in-list () nil
-  (combo combo)
-  (val boolean)
-  (ok-if-empty boolean))
+(define-foreign combo-set-value-in-list () nil
+  (combo combo)
+  (val boolean)
+  (ok-if-empty boolean))
 
 ; (define-foreign ("gtk_combo_set_item_string" (setf combo-item-string)) () nil
 ;   (combo combo)
 ;   (item item)
 ;   (item-value string))
 
-; (define-foreign ("gtk_combo_set_popdown_strings"
-;                (setf combo-popdown-strings)) () nil
-;   (combo combo)
-;   (strings (double-list string)))
-  
-; (define-foreign combo-disable-activate () nil
-;   (combo combo))
-
-
-
-; ;;; Statusbar
-
-; (define-foreign statusbar-new () statusbar)
-
-; (define-foreign
-;     ("gtk_statusbar_get_context_id" statusbar-context-id) () unsigned-int
-;   (statusbar statusbar)
-;   (context-description string))
-
-; (define-foreign statusbar-push () unsigned-int
-;   (statusbar statusbar)
-;   (context-id unsigned-int)  
-;   (text string))
-
-; (define-foreign statusbar-pop () nil
-;   (statusbar statusbar)
-;   (context-id unsigned-int))
-
-; (define-foreign statusbar-remove () nil
-;   (statusbar statusbar)
-;   (context-id unsigned-int)
-;   (message-id unsigned-int))
-
-
-
-;;; CList
-
-; (define-foreign %clist-new () clist
-;   (columns int))
-
-; (define-foreign %clist-new-with-titles () clist
-;   (columns int)
-;   (titles pointer))
-
-; (defun clist-new (columns)
-;   (if (atom columns)
-;       (%clist-new columns)
-;     (with-array (titles :initial-contents columns :free-contents t)
-;       (%clist-new-with-titles (length columns) titles))))
-
-; (define-foreign ("gtk_clist_set_button_actions"
-;                (setf clist-button-actions)) () nil
-;   (clist clist)
-;   (button unsigned-int)
-;   (button-actions button-actions))
-
-; (define-foreign clist-freeze () nil
-;   (clist clist))
-
-; (define-foreign clist-thaw () nil
-;   (clist clist))
-
-; (define-foreign clist-column-titles-show () nil
-;   (clist clist))
-
-; (define-foreign clist-column-titles-hide () nil
-;   (clist clist))
-
-; (defun (setf clist-titles-visible-p) (visible clist)
-;   (if visible
-;       (clist-column-titles-hide clist)
-;     (clist-column-titles-show clist)))
-
-; (define-foreign clist-column-title-active () nil
-;   (clist clist)
-;   (column int))
-
-; (define-foreign clist-column-title-passive () nil
-;   (clist clist)
-;   (column int))
-
-; (define-foreign clist-column-titles-active () nil
-;   (clist clist))
-
-; (define-foreign clist-column-titles-passive () nil
-;   (clist clist))
-
-; (define-foreign ("gtk_clist_set_column_title"
-;                (setf clist-column-title)) () nil
-;   (clist clist)
-;   (column int)
-;   (title string))
-
-; (define-foreign ("gtk_clist_get_column_title" clist-column-title) () string
-;   (clist clist)
-;   (column int))
-
-; (define-foreign ("gtk_clist_set_column_widget"
-;                (setf clist-column-widget)) () nil
-;   (clist clist)
-;   (column int)
-;   (widget widget))
-
-; (define-foreign ("gtk_clist_get_column_widget" clist-column-widget) () widget
-;   (clist clist)
-;   (column int))
-
-; (define-foreign ("gtk_clist_set_column_justification"
-;                (setf clist-column-justification)) () nil
-;   (clist clist)
-;   (column int)
-;   (justification justification))
-
-; (define-foreign clist-column-justification (clist column) justification
-;   (clist clist)
-;   ((progn
-;      (assert (and (>= column 0) (< column (clist-n-columns clist))))
-;      column)
-;    int))
-
-; (define-foreign ("gtk_clist_set_column_visibility"
-;                (setf clist-column-visible-p)) () nil
-;   (clist clist)
-;   (column int)
-;   (visible boolean))
-
-; ;; cl-gtk.c
-; (define-foreign clist-column-visible-p (clist column) boolean
-;   (clist clist)
-;   ((progn
-;      (assert (and (>= column 0) (< column (clist-n-columns clist))))
-;      column)
-;    int))
-
-; (define-foreign ("gtk_clist_set_column_resizeable"
-;                (setf clist-column-resizeable-p)) () nil
-;   (clist clist)
-;   (column int)
-;   (resizeable boolean))
-
-; ;; cl-gtk.c
-; (define-foreign clist-column-resizeable-p (clist column) boolean
-;   (clist clist)
-;   ((progn
-;      (assert (and (>= column 0) (< column (clist-n-columns clist))))
-;      column)
-;    int))
-
-; (define-foreign ("gtk_clist_set_column_auto_resize"
-;                (setf clist-column-auto-resize-p)) () nil
-;   (clist clist)
-;   (column int)
-;   (auto-resize boolean))
-
-; ;; cl-gtk.c
-; (define-foreign clist-column-auto-resize-p (clist column) boolean
-;   (clist clist)
-;   ((progn
-;      (assert (and (>= column 0) (< column (clist-n-columns clist))))
-;      column)
-;    int))
-
-; (define-foreign clist-columns-autosize () int
-;   (clist clist))
-
-; (define-foreign clist-optimal-column-width () int
-;   (clist clist)
-;   (column int))
-
-; (define-foreign ("gtk_clist_set_column_width"
-;                (setf clist-column-width)) () nil
-;   (clist clist)
-;   (column int)
-;   (width int))
-
-; ;; cl-gtk.c
-; (define-foreign clist-column-width (clist column) int
-;   (clist clist)
-;   ((progn
-;      (assert (and (>= column 0) (< column (clist-n-columns clist))))
-;      column)
-;    int))
-
-; (define-foreign ("gtk_clist_set_column_min_width"
-;                (setf clist-column-min-width)) (min-width clist column) nil
-;   (clist clist)
-;   (column int)
-;   ((or min-width -1) int))
-
-; (define-foreign ("gtk_clist_set_column_max_width"
-;                (setf clist-column-max-width)) (max-width clist column) nil
-;   (clist clist)
-;   (column int)
-;   ((or max-width -1) int))
-
-; (define-foreign clist-moveto () nil
-;   (clist clist)
-;   (row int)
-;   (column int)
-;   (row-align single-float)
-;   (columnt-align single-float))
-
-; (define-foreign
-;     ("gtk_clist_row_is_visible" clist-row-visiblie-p) () visibility
-;   (clist clist)
-;   (row int))
-
-; (define-foreign ("gtk_clist_get_cell_type" clist-cell-type) () cell-type
-;   (clist clist)
-;   (row int)
-;   (column int))
-
-; (define-foreign ("gtk_clist_set_text" (setf clist-cell-text)) () nil
-;   (clist clist)
-;   (row int)
-;   (column int)
-;   (text string))
-
-; (define-foreign %clist-set-pixmap () nil
-;   (clist clist)
-;   (row int)
-;   (column int)
-;   (gdk:pixmap gdk:pixmap)
-;   (mask (or null gdk:bitmap)))
-
-; (defun (setf clist-cell-pixmap) (pixmap clist row column)
-;   (multiple-value-bind (gdk:pixmap mask)
-;       (%pixmap-create pixmap)
-;     (%clist-set-pixmap clist row column gdk:pixmap mask)
-;     (values pixmap mask)))
-
-; (define-foreign %clist-set-pixtext () nil
-;   (clist clist)
-;   (row int)
-;   (column int)
-;   (text string)
-;   (spacing uint8)
-;   (pixmap gdk:pixmap)
-;   (mask (or null gdk:bitmap)))
-
-; (defun clist-set-cell-pixtext (clist row column text spacing pixmap)
-;   (multiple-value-bind (gdk:pixmap mask)
-;       (%pixmap-create pixmap)
-;     (%clist-set-pixtext clist row column text spacing gdk:pixmap mask)))
-
-; (define-foreign %clist-get-text () boolean
-;   (clist clist)
-;   (row int)
-;   (column int)
-;   (text string :out))
-
-; (defun clist-cell-text (clist row column)
-;   (multiple-value-bind (success text)
-;       (%clist-get-text clist row column)
-;     (unless success
-;       (error
-;        "Cell at row ~D column ~D in ~A is not of type :text"
-;        row column clist))
-;     text))
-
-; (define-foreign ("gtk_clist_get_pixmap" %clist-get-pixmap) () boolean
-;   (clist clist)
-;   (row int)
-;   (column int)
-;   (pixmap gdk:pixmap :out)
-;   (mask gdk:bitmap :out))
-
-; (defun clist-cell-pixmap (clist row column)
-;   (multiple-value-bind (success pixmap mask)
-;       (%clist-get-pixmap clist row column)
-;     (unless success
-;       (error
-;        "Cell at row ~D column ~D in ~A is not of type :pixmap"
-;        row column clist))
-;     (values pixmap mask)))
-
-; (define-foreign %clist-get-pixtext () boolean
-;   (clist clist)
-;   (row int)
-;   (column int)
-;   (text string :out)
-;   (spacing unsigned-int :out)
-;   (pixmap gdk:pixmap :out)
-;   (mask gdk:bitmap :out))
-
-; (defun clist-cell-pixtext (clist row column)
-;   (multiple-value-bind (success text spacing pixmap mask)
-;       (%clist-get-pixtext clist row column)
-;     (unless success
-;       (error
-;        "Cell at row ~D column ~D in ~A is not of type :pixtext"
-;        row column clist))
-;     (values text spacing pixmap mask)))
-
-; (define-foreign %clist-set-foreground () nil
-;   (clist clist)
-;   (row int)
-;   (color gdk:color))
-
-; (defun (setf clist-foreground) (color clist row)
-;   (gdk:with-colors ((color color))
-;     (%clist-set-foreground clist row color))
-;   color)
-
-; (define-foreign %clist-set-background () nil
-;   (clist clist)
-;   (row int)
-;   (color gdk:color))
-
-; (defun (setf clist-background) (color clist row)
-;   (gdk:with-colors ((color color))
-;     (%clist-set-background clist row color))
-;   color)
-
-; (define-foreign ("gtk_clist_set_cell_style"
-;                (setf clist-cell-style)) () nil
-;   (clist clist)
-;   (row int)
-;   (column int)
-;   (style style))
-  
-; (define-foreign ("gtk_clist_get_cell_style" clist-cell-style) () style
-;   (clist clist)
-;   (row int)
-;   (column int))
-
-; (define-foreign ("gtk_clist_set_row_style"
-;                (setf clist-row-style)) () nil
-;   (clist clist)
-;   (row int)
-;   (style style))
-
-; (define-foreign ("gtk_clist_get_row_style" clist-row-style) () style
-;   (clist clist)
-;   (row int))
-
-; (define-foreign clist-set-shift () nil
-;   (clist clist)
-;   (row int)
-;   (column int)
-;   (vertical int)
-;   (horizontal int))
-
-; (define-foreign ("gtk_clist_set_selectable"
-;                (setf clist-selectable-p)) () nil
-;   (clist clist)
-;   (row int)
-;   (selectable boolean))
-
-; (define-foreign ("gtk_clist_get_selectable" clist-selectable-p) () boolean
-;   (clist clist)
-;   (row int))
-
-; (define-foreign ("gtk_clist_insert" %clist-insert) () int
-;   (clist clist)
-;   (row int)
-;   (text pointer))
-
-; (defun clist-insert (clist row text)
-;   (unless (= (length text) (clist-n-columns clist))
-;     (error "Wrong number of elements in ~A" text))
-;   (with-array (data :initial-contents text :free-contents t)
-;     (%clist-insert clist row data)))
-
-; (defun clist-prepend (clist text)
-;   (clist-insert clist 0 text))
-
-; (defun clist-append (clist text)
-;   (clist-insert clist -1 text))
-
-; (define-foreign clist-remove () nil
-;   (clist clist)
-;   (row int))
-
-; (define-foreign ("gtk_clist_set_row_data_full" clist-set-row-data)
-;                  (clist row data &optional destroy-function) nil
-;   (clist clist)
-;   (row int)
-;   ((register-user-data data destroy-function) unsigned-long)
-;   (*destroy-marshal* pointer))
-
-; (defun (setf clist-row-data) (data clist row)
-;   (clist-set-row-data clist row data)
-;   data)
-
-; (define-foreign %clist-get-row-data () unsigned-long
-;   (clist clist)
-;   (row int))
-
-; (defun clist-row-data (clist row)
-;   (find-user-data (%clist-get-row-data clist row)))
-
-; (define-foreign %clist-find-row-from-data () int
-;   (clist clist)
-;   (id unsigned-long))
-
-; (define-foreign clist-select-row (clist row &optional (column -1)) nil
-;   (clist clist)
-;   (row int)
-;   (column int))
-
-; (define-foreign clist-unselect-row (clist row &optional (column -1)) nil
-;   (clist clist)
-;   (row int)
-;   (column int))
-
-; (define-foreign clist-undo-selection () nil
-;   (clist clist))
-
-; (define-foreign clist-clear () nil
-;   (clist clist))
-
-; (define-foreign ("gtk_clist_get_selection_info" clist-selection-info) () int
-;   (clist clist)
-;   (x int)
-;   (y int)
-;   (row int :out)
-;   (column int :out))
-  
-; (define-foreign clist-select-all () nil
-;   (clist clist))
-
-; (define-foreign clist-unselect-all () nil
-;   (clist clist))
-
-; (define-foreign clist-swap-rows () nil
-;   (clist clist)
-;   (row1 int)
-;   (row2 int))
-
-; (define-foreign ("gtk_clist_row_move" clist-move-row) () nil
-;   (clist clist)
-;   (source-row int)
-;   (dest-row int))
-
-; ;(define-foreign clist-set-compare-func ...)
-
-; (define-foreign clist-sort () nil
-;   (clist clist))
-
-; (define-foreign ("gtk_clist_set_auto_sort"
-;                (setf clist-auto-sort-p)) () nil
-;   (clist clist)
-;   (auto-sort boolean))
-
-; ;; cl-gtk.c
-; (define-foreign clist-auto-sort-p () boolean
-;   (clist clist))
-
-; (defun clist-focus-row (clist)
-;   (let ((row (%clist-focus-row clist)))
-;     (when (>= row 0)
-;       row)))
-
-; ;; cl-gtk.c
-; (define-foreign clist-selection () (list int)
-;   (clist clist))
-
-
-
-; ;;; CTree
-
-; (define-foreign %ctree-new () ctree
-;   (columns int)
-;   (tree-column int))
-
-; (define-foreign %ctree-new-with-titles () ctree
-;   (columns int)
-;   (tree-column int)
-;   (titles pointer))
-
-; (defun ctree-new (columns &optional (tree-column 0))
-;   (if (atom columns)
-;       (%ctree-new columns tree-column)
-;     (with-array (titles :initial-contents columns :free-contents t)
-;       (%ctree-new-with-titles (length columns) tree-column titles))))
-
-; (define-foreign %ctree-insert-node () ctree-node
-;   (ctree ctree)
-;   (parent (or null ctree-node))
-;   (sibling (or null ctree-node)) 
-;   (text pointer)
-;   (spacing uint8)
-;   (pixmap-closed (or null gdk:pixmap))
-;   (bitmap-closed (or null gdk:bitmap))
-;   (pixmap-opened (or null gdk:pixmap))
-;   (bitmap-opened (or null gdk:bitmap))
-;   (leaf boolean)
-;   (expaned boolean))
-
-; (defun ctree-insert-node (ctree parent sibling text spacing
-;                        &key pixmap closed opened leaf expanded)
-;   (multiple-value-bind (pixmap-closed mask-closed)
-;       (%pixmap-create (or closed pixmap))
-;     (multiple-value-bind (pixmap-opened mask-opened)
-;      (%pixmap-create (or opened (and (not leaf) pixmap)))
-;       (with-array (data :clear t :initial-contents text :free-contents t)
-;         (%ctree-insert-node
-;       ctree parent sibling data spacing pixmap-closed mask-closed
-;       pixmap-opened mask-opened leaf expanded)))))
-
-; (define-foreign ctree-remove-node () nil
-;   (ctree ctree)
-;   (node ctree-node))
-
-; (defun ctree-insert-from-list (ctree parent tree function)
-;   (clist-freeze ctree)
-;   (labels ((insert-node (node parent)
-;           (let ((ctree-node
-;                  (ctree-insert-node
-;                   ctree parent nil
-;                   (make-list (clist-n-columns ctree) :initial-element "")
-;                   0 :leaf (not (rest node)))))
-;             (funcall function ctree-node (car node))
-;             (dolist (child (rest node))
-;               (insert-node child ctree-node)))))
-;     (if parent
-;      (insert-node tree parent)
-;       (dolist (node tree)
-;      (insert-node node nil))))
-;   (clist-thaw ctree))
-
-; (defun ctree-map-to-list (ctree node function)
-;   (labels ((map-children (child)
-;           (when child
-;             (let ((sibling (ctree-node-sibling child)))
-;               (cons
-;                (ctree-map-to-list ctree child function)
-;                (map-children sibling))))))
-;     (if node
-;      (cons
-;       (funcall function node)
-;       (map-children (ctree-node-child node)))
-;       (map-children (ctree-nth-node ctree 0)))))
-
-
-; (defun %ctree-apply-recursive (ctree node pre function depth)
-;   (when (and pre node (or (not depth) (<= (ctree-node-level node) depth)))
-;     (funcall function node))
-  
-;   (let ((first-child (if node
-;                       (ctree-node-child node)
-;                     (ctree-nth-node ctree 0))))
-;     (when (and
-;         first-child
-;         (or (not depth) (<= (ctree-node-level first-child) depth)))
-;       (labels ((foreach-child (child)
-;               (when child
-;                 (let ((sibling (ctree-node-sibling child)))
-;                   (%ctree-apply-recursive ctree child pre function depth)
-;                   (foreach-child sibling)))))
-;      (foreach-child first-child))))
-  
-;   (when (and
-;       (not pre) node (or (not depth) (<= (ctree-node-level node) depth)))
-;     (funcall function node)))
-
-; (defun ctree-apply-post-recursive (ctree node function &optional depth)
-;   (%ctree-apply-recursive ctree node nil function depth))
-
-; (defun ctree-apply-pre-recursive (ctree node function &optional depth)
-;   (%ctree-apply-recursive ctree node t function depth))
-
-; (define-foreign ("gtk_ctree_is_viewable" ctree-node-viewable-p) () boolean
-;   (ctree ctree)
-;   (node ctree-node))
-
-; (define-foreign ctree-last () ctree-node
-;   (ctree ctree))
-
-; (define-foreign ("gtk_ctree_node_nth" ctree-nth-node) () ctree-node
-;   (ctree ctree)
-;   (row int))
-
-; (define-foreign ctree-find () boolean
-;   (ctree ctree)
-;   (node ctree-node)
-;   (child ctree-node))
-
-; (define-foreign ("gtk_ctree_is_ancestor" ctree-ancestor-p) () boolean
-;   (ctree ctree)
-;   (node ctree-node)
-;   (child ctree-node))
-
-; (define-foreign %ctree-find-by-row-data () int
-;   (clist clist)
-;   (node ctree-node)
-;   (id unsigned-long))
+(define-foreign %combo-set-popdown-strings () nil
+  (combo combo)
+  (strings (double-list string)))
 
-; (define-foreign ("gtk_ctree_is_hot_spot" ctree-hot-spot-p) () boolean
-;   (ctree ctree)
-;   (x int)
-;   (y int))
-
-; (define-foreign ctree-move () nil
-;   (ctree ctree)
-;   (node ctree-node)
-;   (new-parent ctree-node)
-;   (new-sibling ctree-node))
-
-; (define-foreign ctree-expand () nil
-;   (ctree ctree)
-;   (node ctree-node))
-
-; (define-foreign ctree-expand-recursive () nil
-;   (ctree ctree)
-;   (node (or null ctree-node)))
-
-; (define-foreign ctree-expand-to-depth () nil
-;   (ctree ctree)
-;   (node (or null ctree-node))
-;   (depth int))
-
-; (define-foreign ctree-collapse () nil
-;   (ctree ctree)
-;   (node ctree-node))
-
-; (define-foreign ctree-collapse-recursive () nil
-;   (ctree ctree)
-;   (node (or null ctree-node)))
-
-; (define-foreign ctree-collapse-to-depth () nil
-;   (ctree ctree)
-;   (node (or null ctree-node))
-;   (depth int))
-
-; (define-foreign ctree-toggle-expansion () nil
-;   (ctree ctree)
-;   (node ctree-node))
-
-; (define-foreign ctree-toggle-expansion-recursive () nil
-;   (ctree ctree)
-;   (node (or null ctree-node)))
-
-; (define-foreign ctree-select () nil
-;   (ctree ctree)
-;   (node ctree-node))
-
-; (define-foreign ctree-unselect () nil
-;   (ctree ctree)
-;   (node ctree-node))
-
-; (define-foreign %ctree-real-select-recursive () nil
-;   (ctree ctree)
-;   (node (or null ctree-node))
-;   (state boolean))
-
-; (defun ctree-select-recursive (ctree node)
-;   (%ctree-real-select-recursive ctree node t))
-
-; (defun ctree-unselect-recursive (ctree node)
-;   (%ctree-real-select-recursive ctree node nil))
-
-; (define-foreign ("gtk_ctree_node_set_text" (setf ctree-cell-text)) () nil
-;   (ctree ctree)
-;   (node ctree-node)
-;   (column int)
-;   (text string))
-
-; (define-foreign %ctree-node-set-pixmap () nil
-;   (ctree ctree)
-;   (node ctree-node)
-;   (column int)
-;   (gdk:pixmap gdk:pixmap)
-;   (mask (or null gdk:bitmap)))
-
-; (defun (setf ctree-cell-pixmap) (source ctree node column)
-;   (multiple-value-bind (pixmap mask)
-;       (%pixmap-create source)
-;     (%ctree-node-set-pixmap ctree node column pixmap mask)
-;     (values pixmap mask)))
-
-; (define-foreign %ctree-node-set-pixtext () nil
-;   (ctree ctree)
-;   (node ctree-node)
-;   (column int)
-;   (text string)
-;   (spacing uint8)
-;   (pixmap gdk:pixmap)
-;   (mask (or null gdk:bitmap)))
-
-; (defun ctree-set-cell-pixtext (ctree node column text spacing source)
-;   (multiple-value-bind (pixmap mask)
-;       (%pixmap-create source)
-;     (%ctree-node-set-pixtext ctree node column text spacing pixmap mask)))
-
-; (define-foreign %ctree-set-node-info () ctree-node
-;   (ctree ctree)
-;   (node (or null ctree-node))
-;   (text string)
-;   (spacing uint8)
-;   (pixmap-closed (or null gdk:pixmap))
-;   (bitmap-closed (or null gdk:bitmap))
-;   (pixmap-opened (or null gdk:pixmap))
-;   (bitmap-opened (or null gdk:bitmap))
-;   (leaf boolean)
-;   (expaned boolean))
-
-; (defun ctree-set-node-info (ctree node text spacing
-;                          &key pixmap closed opened leaf expanded)
-;   (multiple-value-bind (pixmap-closed mask-closed)
-;       (%pixmap-create (or closed pixmap))
-;     (multiple-value-bind (pixmap-opened mask-opened)
-;      (%pixmap-create (or opened (and (not leaf) pixmap)))
-;       (%ctree-set-node-info
-;        ctree node text spacing pixmap-closed mask-closed
-;        pixmap-opened mask-opened leaf expanded))))
-
-; (define-foreign ("gtk_ctree_node_set_shift" ctree-set-shift) () nil
-;   (ctree ctree)
-;   (node ctree-node)
-;   (column int)
-;   (vertical int)
-;   (horizontal int))
-
-; (define-foreign ("gtk_ctree_node_set_selectable"
-;                (setf ctree-selectable-p)) () nil
-;   (ctree ctree)
-;   (node ctree-node)
-;   (selectable boolean))
-
-; (define-foreign ("gtk_ctree_node_get_selectable"
-;                ctree-selectable-p) () boolean
-;   (ctree ctree)
-;   (node ctree-node))
-
-; (define-foreign ("gtk_ctree_node_get_cell_type" ctree-cell-type) () cell-type
-;   (ctree ctree)
-;   (node ctree-node)
-;   (column int))
-
-; (define-foreign %ctree-node-get-text () boolean
-;   (ctree ctree)
-;   (node ctree-node)
-;   (column int)
-;   (text string :out))
-
-; (defun ctree-cell-text (ctree node column)
-;   (multiple-value-bind (success text)
-;       (%ctree-node-get-text ctree node column)
-;     (unless success
-;       (error
-;        "Cell in node ~A, column ~D in ~A is not of type :text"
-;        node column ctree))
-;     text))
-
-; (define-foreign %ctree-node-get-pixmap () boolean
-;   (ctree ctree)
-;   (node ctree-node)
-;   (column int)
-;   (pixmap gdk:pixmap :out)
-;   (mask gdk:bitmap :out))
-
-; (defun ctree-cell-pixmap (ctree node column)
-;   (multiple-value-bind (success pixmap mask)
-;       (%ctree-node-get-pixmap ctree node column)
-;     (unless success
-;       (error
-;        "Cell in node ~A column ~D in ~A is not of type :text"
-;        node column ctree))
-;     (values pixmap mask)))
-
-; (define-foreign %ctree-node-get-pixtext () boolean
-;   (ctree ctree)
-;   (node ctree-node)
-;   (column int)
-;   (text string :out)
-;   (spacing unsigned-int :out)
-;   (pixmap gdk:pixmap :out)
-;   (mask gdk:bitmap :out))
-
-; (defun ctree-cell-pixtext (ctree node column)
-;   (multiple-value-bind (success text spacing pixmap mask)
-;       (%ctree-node-get-pixtext ctree node column)
-;     (unless success
-;       (error
-;        "Cell in node ~A column ~D in ~A is not of type :text"
-;        node column ctree))
-;     (values text spacing pixmap mask)))
-
-; (define-foreign ("gtk_ctree_get_node_info" ctree-node-info) () nil
-;   (ctree ctree)
-;   (node ctree-node)
-;   (text string :out)
-;   (spacing unsigned-int :out)
-;   (pixmap-closed gdk:pixmap :out)
-;   (mask-closed gdk:bitmap :out)
-;   (pixmap-opened gdk:pixmap :out)
-;   (mask-opened gdk:bitmap :out)
-;   (leaf boolean :out)
-;   (expanded boolean :out))
-
-; (define-foreign ("gtk_ctree_node_set_row_style"
-;                (setf ctree-row-style)) () nil
-;   (ctree ctree)
-;   (node ctree-node)
-;   (style (or null style)))
-
-; (define-foreign ("gtk_ctree_node_get_row_style" ctree-row-style) () style
-;   (ctree ctree)
-;   (node ctree-node))
-
-; (define-foreign ("gtk_ctree_node_set_cell_style"
-;                (setf ctree-cell-style)) () nil
-;   (ctree ctree)
-;   (node ctree-node)
-;   (column int)
-;   (style (or null style)))
-
-; (define-foreign ("gtk_ctree_node_get_cell_style"
-;                ctree-cell-style) () style
-;   (ctree ctree)
-;   (node ctree-node)
-;   (column int))
-
-; (define-foreign %ctree-node-set-foreground () nil
-;   (ctree ctree)
-;   (node ctree-node)
-;   (color gdk:color))
-
-; (defun (setf ctree-node-foreground) (color clist row)
-;   (gdk:with-colors ((color color))
-;     (%ctree-node-set-foreground clist row color))
-;   color)
-
-; (define-foreign %ctree-node-set-background () nil
-;   (ctree ctree)
-;   (node ctree-node)
-;   (color gdk:color))
-
-; (defun (setf ctree-node-background) (color clist row)
-;   (gdk:with-colors ((color color))
-;     (%ctree-node-set-background clist row color))
-;   color)
-
-; (define-foreign ("gtk_ctree_node_set_row_data_full" ctree-set-node-data)
-;                  (ctree node data &optional destroy-function) nil
-;   (ctree ctree)
-;   (node ctree-node)
-;   ((register-user-data data destroy-function) unsigned-long)
-;   (*destroy-marshal* pointer))
-
-; (defun (setf ctree-node-data) (data ctree node)
-;   (ctree-set-node-data ctree node data)
-;   data)
-
-; (define-foreign %ctree-node-get-row-data () unsigned-long
-;   (ctree ctree)
-;   (node ctree-node))
+(defun (setf combo-popdown-strings) (strings combo)
+  (%combo-set-popdown-strings combo strings)
+  strings)
 
-; (defun ctree-node-data (ctree node)
-;   (find-user-data (%ctree-node-get-row-data ctree node)))
+(define-foreign combo-disable-activate () nil
+  (combo combo))
 
-; (define-foreign ctree-node-moveto () nil
-;   (ctree ctree)
-;   (node ctree-node)
-;   (column int)
-;   (row-aling single-float)
-;   (column-aling single-float))
 
-; (define-foreign ("gtk_ctree_node_is_visible"
-;                ctree-node-visibility) () visibility
-;   (ctree ctree)
-;   (node ctree-node))
 
-; (define-foreign ctree-sort-node () nil
-;   (ctree ctree)
-;   (node ctree-node))
+;;; Statusbar
 
-; (define-foreign ctree-sort-recursive (ctree &optional node) nil
-;   (ctree ctree)
-;   (node (or null ctree-node)))
+(define-foreign statusbar-new () statusbar)
 
-; ;; cl-gtk.c
-; (define-foreign ("gtk_clist_selection" ctree-selection) () (list ctree-node)
-;   (ctree ctree))
-
-; ;; cl-gtk.c
-; (define-foreign ctree-node-leaf-p () boolean
-;   (node ctree-node))
+(define-foreign
+    ("gtk_statusbar_get_context_id" statusbar-context-id) () unsigned-int
+  (statusbar statusbar)
+  (context-description string))
 
-; ;; cl-gtk.c
-; (define-foreign ctree-node-parent () ctree-node
-;   (node ctree-node))
+(define-foreign statusbar-push () unsigned-int
+  (statusbar statusbar)
+  (context-id unsigned-int)  
+  (text string))
 
-; ;; cl-gtk.c
-; (define-foreign ctree-node-child () ctree-node
-;   (node ctree-node))
+(define-foreign statusbar-pop () nil
+  (statusbar statusbar)
+  (context-id unsigned-int))
 
-; ;; cl-gtk.c
-; (define-foreign ctree-node-sibling () ctree-node
-;   (node ctree-node))
+(define-foreign statusbar-remove () nil
+  (statusbar statusbar)
+  (context-id unsigned-int)
+  (message-id unsigned-int))
 
-; ;; cl-gtk.c
-; (define-foreign ctree-node-level () int
-;   (node ctree-node))
 
 
 ;;; Fixed
 
-(define-foreign fixed-new () fixed)
+(define-foreign fixed-new () fixed)
 
-; (define-foreign fixed-put () nil
-;   (fixed fixed)
-;   (widget widget)
-;   (x int) (y int16))
+(define-foreign fixed-put () nil
+  (fixed fixed)
+  (widget widget)
+  (x (signed 16))
+  (y (signed 16)))
 
-; (define-foreign fixed-move () nil
-;   (fixed fixed)
-;   (widget widget)
-;   (x int16) (y int16))
+(define-foreign fixed-move () nil
+  (fixed fixed)
+  (widget widget)
+  (x (signed 16))
+  (y (signed 16)))
 
 
 
 ; ;;; Notebook
 
-(define-foreign notebook-new () notebook)
+(define-foreign notebook-new () notebook)
 
-(define-foreign ("gtk_notebook_insert_page_menu" notebook-insert-page)
-    (notebook position child tab-label &optional menu-label) nil
-  (notebook notebook)
-  (child widget)
-  ((if (stringp tab-label)
-       (label-new tab-label)
-     tab-label) widget)
-  ((if (stringp menu-label)
-       (label-new menu-label)
-     menu-label) (or null widget))
-  (position int))
+(define-foreign ("gtk_notebook_insert_page_menu" notebook-insert-page)
+    (notebook position child tab-label &optional menu-label) nil
+  (notebook notebook)
+  (child widget)
+  ((if (stringp tab-label)
+       (label-new tab-label)
+     tab-label) widget)
+  ((if (stringp menu-label)
+       (label-new menu-label)
+     menu-label) (or null widget))
+  (position int))
 
-(defun notebook-append-page (notebook child tab-label &optional menu-label)
-  (notebook-insert-page notebook -1 child tab-label menu-label))
+(defun notebook-append-page (notebook child tab-label &optional menu-label)
+  (notebook-insert-page notebook -1 child tab-label menu-label))
 
-(defun notebook-prepend-page (notebook child tab-label &optional menu-label)
-  (notebook-insert-page notebook 0 child tab-label menu-label))
+(defun notebook-prepend-page (notebook child tab-label &optional menu-label)
+  (notebook-insert-page notebook 0 child tab-label menu-label))
   
-(define-foreign notebook-remove-page () nil
-  (notebook notebook)
-  (page-num int))
+(define-foreign notebook-remove-page () nil
+  (notebook notebook)
+  (page-num int))
 
 ; (defun notebook-current-page-num (notebook)
 ;   (let ((page-num (notebook-current-page notebook)))
@@ -1795,111 +887,114 @@ (define-foreign hbox-new () hbox
 ;      nil
 ;       page-num)))
 
-; (define-foreign ("gtk_notebook_get_nth_page" notebook-nth-page) () widget
-  (notebook notebook)
-  (page-num int))
+(define-foreign ("gtk_notebook_get_nth_page" notebook-nth-page-child) () widget
+  (notebook notebook)
+  (page-num int))
 
-; (define-foreign %notebook-page-num () int
-;   (notebook notebook)
-;   (page-num int))
+(defun notebook-page-child (notebook)
+  (notebook-nth-page-child notebook (notebook-page notebook)))
 
-; (defun notebook-child-page-num (notebook child)
-;   (let ((page-num (%notebook-page-num notebook child)))
-;     (if (= page-num -1)
-;      nil
-;       page-num)))
+(define-foreign %notebook-page-num () int
+  (notebook notebook)
+  (child widget))
 
-; (define-foreign notebook-next-page () nil
-;   (notebook notebook))
+(defun notebook-child-num (notebook child)
+  (let ((page-num (%notebook-page-num notebook child)))
+    (if (= page-num -1)
+       nil
+      page-num)))
 
-; (define-foreign notebook-prev-page () nil
-  (notebook notebook))
+(define-foreign notebook-next-page () nil
+  (notebook notebook))
 
-; (define-foreign notebook-popup-enable () nil
-  (notebook notebook))
+(define-foreign notebook-prev-page () nil
+  (notebook notebook))
 
-; (define-foreign notebook-popup-disable () nil
-  (notebook notebook))
+(define-foreign notebook-popup-enable () nil
+  (notebook notebook))
 
-; (define-foreign
-;     ("gtk_notebook_get_tab_label" notebook-tab-label) (notebook ref) widget
-;   (notebook notebook)
-;   ((if (widget-p ref)
-;        ref
-;      (notebook-nth-page notebook ref))
-;    widget))
-
-; (define-foreign %notebook-set-tab-label () nil
-;   (notebook notebook)
-;   (reference widget)
-;   (tab-label widget))
-
-; (defun (setf notebook-tab-label) (tab-label notebook reference)
-;   (let ((tab-label-widget (if (stringp tab-label)
-;                            (label-new tab-label)
-;                          tab-label)))
-;     (%notebook-set-tab-label
-;      notebook
-;      (if (widget-p reference)
-;       reference
-;        (notebook-nth-page notebook reference))
-;      tab-label-widget)
-;     (when (stringp tab-label)
-;       (widget-unref tab-label-widget))
-;     tab-label-widget))
+(define-foreign notebook-popup-disable () nil
+  (notebook notebook))
+
+(define-foreign
+    ("gtk_notebook_get_tab_label" notebook-tab-label) (notebook ref) widget
+  (notebook notebook)
+  ((if (typep ref 'widget)
+       ref
+     (notebook-nth-page-child notebook ref))
+   widget))
+
+(define-foreign %notebook-set-tab-label () nil
+  (notebook notebook)
+  (reference widget)
+  (tab-label widget))
+
+(defun (setf notebook-tab-label) (tab-label notebook reference)
+  (let ((tab-label-widget (if (stringp tab-label)
+                             (label-new tab-label)
+                           tab-label)))
+    (%notebook-set-tab-label
+     notebook
+     (if (typep reference 'widget)
+        reference
+       (notebook-nth-page-child notebook reference))
+     tab-label-widget)
+    (when (stringp tab-label)
+      (widget-unref tab-label-widget))
+    tab-label-widget))
    
-(define-foreign
-    ("gtk_notebook_get_menu_label" notebook-menu-label) (notebook ref) widget
-  (notebook notebook)
-;   ((if (widget-p ref)
-       ref
-;      (notebook-nth-page notebook ref))
-   widget))
-
-(define-foreign %notebook-set-menu-label () nil
-  (notebook notebook)
-  (reference widget)
-  (menu-label widget))
-
-(defun (setf notebook-menu-label) (menu-label notebook reference)
-  (let ((menu-label-widget (if (stringp menu-label)
-;                            (label-new menu-label)
-;                          menu-label)))
-    (%notebook-set-menu-label
-     notebook
-;      (if (widget-p reference)
-;       reference
-;        (notebook-nth-page notebook reference))
-     menu-label-widget)
-    (when (stringp menu-label)
-      (widget-unref menu-label-widget))
-    menu-label-widget))
-
-(define-foreign notebook-query-tab-label-packing (notebook ref) nil
-  (notebook notebook)
-;   ((if (widget-p ref)
-       ref
-;      (notebook-nth-page notebook ref))
-   widget)
-  (expand boolean :out)
-  (fill boolean :out)
-  (pack-type pack-type :out))
+(define-foreign
+    ("gtk_notebook_get_menu_label" notebook-menu-label) (notebook ref) widget
+  (notebook notebook)
+  ((if (typep ref 'widget)
+       ref
+     (notebook-nth-page-child notebook ref))
+   widget))
+
+(define-foreign %notebook-set-menu-label () nil
+  (notebook notebook)
+  (reference widget)
+  (menu-label widget))
+
+(defun (setf notebook-menu-label) (menu-label notebook reference)
+  (let ((menu-label-widget (if (stringp menu-label)
+                             (label-new menu-label)
+                           menu-label)))
+    (%notebook-set-menu-label
+     notebook
+     (if (typep reference 'widget)
+        reference
+       (notebook-nth-page-child notebook reference))
+     menu-label-widget)
+    (when (stringp menu-label)
+      (widget-unref menu-label-widget))
+    menu-label-widget))
+
+(define-foreign notebook-query-tab-label-packing (notebook ref) nil
+  (notebook notebook)
+  ((if (typep ref 'widget)
+       ref
+     (notebook-nth-page-child notebook ref))
+   widget)
+  (expand boolean :out)
+  (fill boolean :out)
+  (pack-type pack-type :out))
 
-(define-foreign
-    notebook-set-tab-label-packing (notebook ref expand fill pack-type) nil
-  (notebook notebook)
-;   ((if (widget-p ref)
-       ref
-;      (notebook-nth-page notebook ref))
-   widget)
-  (expand boolean)
-  (fill boolean)
-  (pack-type pack-type))
-
-(define-foreign notebook-reorder-child () nil
-  (notebook notebook)
-  (child widget)
-  (position int))
+(define-foreign
+    notebook-set-tab-label-packing (notebook ref expand fill pack-type) nil
+  (notebook notebook)
+  ((if (typep ref 'widget)
+       ref
+     (notebook-nth-page-child notebook ref))
+   widget)
+  (expand boolean)
+  (fill boolean)
+  (pack-type pack-type))
+
+(define-foreign notebook-reorder-child () nil
+  (notebook notebook)
+  (child widget)
+  (position int))
 
 
 
@@ -1934,13 +1029,13 @@ (define-foreign hbox-new () hbox
 ; ;   (paned paned)
 ; ;   (position int))
 
-; ;; cl-gtk.c
+; ;; gtkglue.c
 ; (define-foreign paned-child1 () widget
 ;   (paned paned)
 ;   (resize boolean :out)
 ;   (shrink boolean :out))
 
-; ;; cl-gtk.c
+; ;; gtkglue.c
 ; (define-foreign paned-child2 () widget
 ;   (paned paned)
 ;   (resize boolean :out)
@@ -1977,7 +1072,7 @@ (define-foreign hbox-new () hbox
 ;   (%layout-set-size layout (svref size 0) (svref size 1))
 ;   (values (svref size 0) (svref size 1)))
 
-; ;; cl-gtk.c
+; ;; gtkglue.c
 ; (define-foreign layout-size () nil
 ;   (layout layout)
 ;   (width int :out)
@@ -2095,7 +1190,7 @@ (define-foreign hbox-new () hbox
 ; (define-foreign list-end-drag-selection () nil
 ;   (list list-widget))
 
-; ;; cl-gtk.c
+; ;; gtkglue.c
 ; (define-foreign list-selection () (double-list list-item)
 ;   (list list-widget))
 
@@ -2103,37 +1198,37 @@ (define-foreign hbox-new () hbox
 
 ;;; Menu shell
 
-(define-foreign menu-shell-insert () nil
-  (menu-shell menu-shell)
-  (menu-item menu-item)
-  (position int))
+(define-foreign menu-shell-insert () nil
+  (menu-shell menu-shell)
+  (menu-item menu-item)
+  (position int))
 
-(defun menu-shell-append (menu-shell menu-item)
-  (menu-shell-insert menu-shell menu-item -1))
+(defun menu-shell-append (menu-shell menu-item)
+  (menu-shell-insert menu-shell menu-item -1))
 
-(defun menu-shell-prepend (menu-shell menu-item)
-  (menu-shell-insert menu-shell menu-item 0))
+(defun menu-shell-prepend (menu-shell menu-item)
+  (menu-shell-insert menu-shell menu-item 0))
 
-(define-foreign menu-shell-deactivate () nil
-  (menu-shell menu-shell))
+(define-foreign menu-shell-deactivate () nil
+  (menu-shell menu-shell))
 
-(define-foreign menu-shell-select-item () nil
-  (menu-shell menu-shell)
-  (menu-item menu-item))
+(define-foreign menu-shell-select-item () nil
+  (menu-shell menu-shell)
+  (menu-item menu-item))
 
-(define-foreign menu-shell-deselect () nil
-  (menu-shell menu-shell))
+(define-foreign menu-shell-deselect () nil
+  (menu-shell menu-shell))
 
-(define-foreign menu-shell-activate-item () nil
-  (menu-shell menu-shell)
-  (menu-item menu-item)
-  (fore-deactivate boolean))
+(define-foreign menu-shell-activate-item () nil
+  (menu-shell menu-shell)
+  (menu-item menu-item)
+  (fore-deactivate boolean))
 
 
 
 ; ;;; Menu bar
 
-(define-foreign menu-bar-new () menu-bar)
+(define-foreign menu-bar-new () menu-bar)
 
 ; (define-foreign menu-bar-insert () nil
 ;   (menu-bar menu-bar)
@@ -2150,7 +1245,7 @@ (define-foreign hbox-new () hbox
 
 ; ;;; Menu
 
-(define-foreign menu-new () menu)
+(define-foreign menu-new () menu)
 
 ; (defun menu-insert (menu menu-item position)
 ;   (menu-shell-insert menu menu-item position))
@@ -2161,268 +1256,273 @@ (define-foreign hbox-new () hbox
 ; (defun menu-prepend (menu menu-item)
 ;   (menu-shell-prepend menu menu-item))
 
-; ;(defun menu-popup ...)
+;(defun menu-popup ...)
 
-(define-foreign menu-reposition () nil
-  (menu menu))
+(define-foreign menu-reposition () nil
+  (menu menu))
 
-(define-foreign menu-popdown () nil
-  (menu menu))
+(define-foreign menu-popdown () nil
+  (menu menu))
 
-(define-foreign ("gtk_menu_get_active" menu-active) () widget
-  (menu menu))
+(define-foreign ("gtk_menu_get_active" menu-active) () widget
+  (menu menu))
 
-(define-foreign ("gtk_menu_set_active" (setf menu-active)) () nil
-  (menu menu)
-  (index unsigned-int))
+(define-foreign ("gtk_menu_set_active" (setf menu-active)) () nil
+  (menu menu)
+  (index unsigned-int))
 
-; ;(defun menu-attach-to-widget ...)
+;(defun menu-attach-to-widget ...)
 
-(define-foreign menu-detach () nil
-  (menu menu))
+(define-foreign menu-detach () nil
+  (menu menu))
 
-(define-foreign ("gtk_menu_get_attach_widget" menu-attach-widget) () widget
-  (menu menu))
+(define-foreign ("gtk_menu_get_attach_widget" menu-attach-widget) () widget
+  (menu menu))
 
-(define-foreign menu-reorder-child () nil
-  (menu menu)
-  (menu-item menu-item)
-  (position int))
+(define-foreign menu-reorder-child () nil
+  (menu menu)
+  (menu-item menu-item)
+  (position int))
 
 
 
 ;;; Packer
 
-(define-foreign packer-new () packer)
-
-(define-foreign packer-add
-    (packer child side anchor
-     &key
-     options
-     (border-width (packer-default-border-width packer))
-     (pad-x (packer-default-pad-x packer))
-     (pad-y (packer-default-pad-y packer))
-     (ipad-x (packer-default-ipad-x packer))
-     (ipad-y (packer-default-ipad-y packer))) nil
-  (packer packer)
-  (child widget)
-  (side side-type)
-  (anchor anchor-type)
-  (options packer-options)
-  (border-width unsigned-int)
-  (pad-x unsigned-int)
-  (pad-y unsigned-int)
-  (ipad-x unsigned-int)
-  (ipad-y unsigned-int))
-
-(define-foreign packer-set-child-packing () nil
-  (packer packer)
-  (child widget)
-  (side side-type)
-  (anchor anchor-type)
-  (options packer-options)
-  (border-width unsigned-int)
-  (pad-x unsigned-int)
-  (pad-y unsigned-int)
-  (ipad-x unsigned-int)
-  (ipad-y unsigned-int))
-
-(define-foreign packer-reorder-child () nil
-  (packer packer)
-  (child widget)
-  (position int))
+(define-foreign packer-new () packer)
+
+(define-foreign packer-add
+    (packer child side anchor
+     &key
+     options
+     (border-width (packer-default-border-width packer))
+     (pad-x (packer-default-pad-x packer))
+     (pad-y (packer-default-pad-y packer))
+     (ipad-x (packer-default-ipad-x packer))
+     (ipad-y (packer-default-ipad-y packer))) nil
+  (packer packer)
+  (child widget)
+  (side side-type)
+  (anchor anchor-type)
+  (options packer-options)
+  (border-width unsigned-int)
+  (pad-x unsigned-int)
+  (pad-y unsigned-int)
+  (ipad-x unsigned-int)
+  (ipad-y unsigned-int))
+
+(define-foreign packer-set-child-packing () nil
+  (packer packer)
+  (child widget)
+  (side side-type)
+  (anchor anchor-type)
+  (options packer-options)
+  (border-width unsigned-int)
+  (pad-x unsigned-int)
+  (pad-y unsigned-int)
+  (ipad-x unsigned-int)
+  (ipad-y unsigned-int))
+
+(define-foreign packer-reorder-child () nil
+  (packer packer)
+  (child widget)
+  (position int))
 
 
 
-; ;;; Table
+;;; Table
 
-(define-foreign table-new () table
-  (rows unsigned-int)
-  (columns unsigned-int)
-  (homogeneous boolean))
+(define-foreign table-new () table
+  (rows unsigned-int)
+  (columns unsigned-int)
+  (homogeneous boolean))
 
-(define-foreign table-resize () nil
-  (table table)
-  (rows unsigned-int)
-  (columns unsigned-int))
+(define-foreign table-resize () nil
+  (table table)
+  (rows unsigned-int)
+  (columns unsigned-int))
 
-; (define-foreign table-attach (table child left right top bottom
-;                             &key (x-options '(:expand :fill))
-;                                  (y-options '(:expand :fill))
-;                                  (x-padding 0) (y-padding 0)) nil
-;   (table table)
-;   (child widget)
-;   (left unsigned-int)
-;   (right unsigned-int)
-;   (top unsigned-int)
-;   (bottom unsigned-int)
-;   (x-options attach-options)
-;   (y-options attach-options)
-;   (x-padding unsigned-int)
-;   (y-padding unsigned-int))
-
-; (define-foreign ("gtk_table_set_row_spacing" (setf table-row-spacing)) () nil
-;   (table table)
-;   (row unsigned-int)
-;   (spacing unsigned-int))
-
-; ;; cl-gtk.c
-; (define-foreign table-row-spacing (table row) unsigned-int
-;   (table table)
-;   ((progn
-;      (assert (and (>= row 0) (< row (table-rows table))))
-;      row) unsigned-int))
-
-; (define-foreign ("gtk_table_set_col_spacing"
-;                (setf table-column-spacing)) () nil
-;   (table table)
-;   (col unsigned-int)
-;   (spacing unsigned-int))
-
-; ;; cl-gtk.c
-; (define-foreign table-column-spacing (table col) unsigned-int
-;   (table table)
-;   ((progn
-;      (assert (and (>= col 0) (< col (table-columns table))))
-;      col) unsigned-int))
-
-
-; (defun %set-table-child-option (object slot flag value)
-;   (let ((options (container-child-slot-value object slot)))
-;     (cond
-;      ((and value (not (member flag options)))
-;       (setf (container-child-slot-value object slot) (cons flag options)))
-;      ((and (not value) (member flag options))
-;       (setf
-;        (container-child-slot-value object slot) (delete flag options))))))
-
-
-; (macrolet ((define-option-accessor (name slot flag)
-;           `(progn
-;              (defun ,name (object)
-;                (member ,flag (container-child-slot-value object ,slot)))
-;              (defun (setf ,name) (value object)
-;                (%set-table-child-option object ,slot ,flag value)))))
-;   (define-option-accessor table-child-x-expand-p :x-options :expand)
-;   (define-option-accessor table-child-y-expand-p :y-options :expand)
-;   (define-option-accessor table-child-x-shrink-p :x-options :shrink)
-;   (define-option-accessor table-child-y-shrink-p :y-options :shrink)
-;   (define-option-accessor table-child-x-fill-p :x-options :fill)
-;   (define-option-accessor table-child-y-fill-p :y-options :fill))
-
-
-
-; ;;; Toolbar
-
-; (define-foreign toolbar-new () toolbar
-;   (orientation orientation)
-;   (style toolbar-style))
-
-
-; ;; cl-gtk.c
-; (define-foreign toolbar-num-children () int
-;   (toolbar toolbar))
-
-; (defun %toolbar-position-num (toolbar position)
-;   (case position
-;     (:prepend 0)
-;     (:append (toolbar-num-children toolbar))
-;     (t
-;      (assert (and (>= position 0) (< position (toolbar-num-children toolbar))))
-;      position)))
-
-; (define-foreign %toolbar-insert-element () widget
-;   (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))
+(define-foreign table-attach (table child left right top bottom
+                              &key (x-options '(:expand :fill))
+                                   (y-options '(:expand :fill))
+                                   (x-padding 0) (y-padding 0)) nil
+  (table table)
+  (child widget)
+  (left unsigned-int)
+  (right unsigned-int)
+  (top unsigned-int)
+  (bottom unsigned-int)
+  (x-options attach-options)
+  (y-options attach-options)
+  (x-padding unsigned-int)
+  (y-padding unsigned-int))
+
+(define-foreign %table-set-row-spacing () nil
+  (table table)
+  (row unsigned-int)
+  (spacing unsigned-int))
+
+(defun (setf table-row-spacing) (spacing table row)
+  (%table-set-row-spacing table row spacing)
+  spacing)
+
+;; gtkglue.c
+(define-foreign table-row-spacing (table row) unsigned-int
+  (table table)
+  ((progn
+     (assert (and (>= row 0) (< row (table-rows table))))
+     row) unsigned-int))
+
+(define-foreign %table-set-col-spacing () nil
+  (table table)
+  (col unsigned-int)
+  (spacing unsigned-int))
+
+(defun (setf table-column-spacing) (spacing table column)
+  (%table-set-column-spacing table column spacing)
+  spacing)
+
+;; gtkglue.c
+(define-foreign table-column-spacing (table col) unsigned-int
+  (table table)
+  ((progn
+     (assert (and (>= col 0) (< col (table-columns table))))
+     col) unsigned-int))
+
+
+(defun %set-table-child-option (object slot flag value)
+  (let ((options (container-child-slot-value object slot)))
+    (cond
+     ((and value (not (member flag options)))
+      (setf (container-child-slot-value object slot) (cons flag options)))
+     ((and (not value) (member flag options))
+      (setf
+       (container-child-slot-value object slot) (delete flag options))))))
+
+(macrolet ((define-option-accessor (name slot flag)
+            `(progn
+               (defun ,name (object)
+                 (member ,flag (container-child-slot-value object ,slot)))
+               (defun (setf ,name) (value object)
+                 (%set-table-child-option object ,slot ,flag value)))))
+  (define-option-accessor table-child-x-expand-p :x-options :expand)
+  (define-option-accessor table-child-y-expand-p :y-options :expand)
+  (define-option-accessor table-child-x-shrink-p :x-options :shrink)
+  (define-option-accessor table-child-y-shrink-p :y-options :shrink)
+  (define-option-accessor table-child-x-fill-p :x-options :fill)
+  (define-option-accessor table-child-y-fill-p :y-options :fill))
+
+
+
+;;; Toolbar
+
+(define-foreign toolbar-new () toolbar
+  (orientation orientation)
+  (style toolbar-style))
+
+;; gtkglue.c
+(define-foreign toolbar-num-children () int
+  (toolbar toolbar))
+
+(defun %toolbar-position-num (toolbar position)
+  (case position
+    (:prepend 0)
+    (:append (toolbar-num-children toolbar))
+    (t
+     (assert (and (>= position 0) (< position (toolbar-num-children toolbar))))
+     position)))
+
+(define-foreign %toolbar-insert-element () widget
+  (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))
 
-(defun toolbar-insert-element (toolbar position
-;                             &key tooltip-text tooltip-private-text
-;                             type widget icon text callback)
-  (let* ((icon-widget (typecase icon
-;                     ((or null widget) icon)
-;                     (t (pixmap-new icon))))
-;       (toolbar-child
-;        (%toolbar-insert-element
-;         toolbar (or type (and widget :widget) :button)
-;         widget text tooltip-text tooltip-private-text icon-widget
-;         (%toolbar-position-num toolbar position))))
-    (when callback
-      (signal-connect toolbar-child 'clicked callback))
-    toolbar-child))
-
-(defun toolbar-append-element (toolbar &key tooltip-text tooltip-private-text
-;                             type widget icon text callback)
-  (toolbar-insert-element
-   toolbar :append :type type :widget widget :icon icon :text text
-   :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text
-   :callback callback))
-
-(defun toolbar-prepend-element (toolbar &key tooltip-text tooltip-private-text
-;                              type widget icon text callback)
-  (toolbar-insert-element
-   toolbar :prepend :type type :widget widget :icon icon :text text
-   :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text
-   :callback callback))
-
-(defun toolbar-insert-space (toolbar position)
-  (toolbar-insert-element toolbar position :type :space))
-
-(defun toolbar-append-space (toolbar)
-  (toolbar-insert-space toolbar :append))
-
-(defun toolbar-prepend-space (toolbar)
-  (toolbar-insert-space toolbar :prepend))
-
-(defun toolbar-insert-widget (toolbar widget position &key tooltip-text
-;                            tooltip-private-text callback)
-  (toolbar-insert-element
-   toolbar position :widget widget :tooltip-text tooltip-text
-   :tooltip-private-text tooltip-private-text :callback callback))
+(defun toolbar-insert-element (toolbar position
+                              &key tooltip-text tooltip-private-text
+                              type widget icon text callback)
+  (let* ((icon-widget (typecase icon
+                      ((or null widget) icon)
+                      (t (pixmap-new icon))))
+        (toolbar-child
+         (%toolbar-insert-element
+          toolbar (or type (and widget :widget) :button)
+          widget text tooltip-text tooltip-private-text icon-widget
+          (%toolbar-position-num toolbar position))))
+    (when callback
+      (signal-connect toolbar-child 'clicked callback))
+    toolbar-child))
+
+(defun toolbar-append-element (toolbar &key tooltip-text tooltip-private-text
+                              type widget icon text callback)
+  (toolbar-insert-element
+   toolbar :append :type type :widget widget :icon icon :text text
+   :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text
+   :callback callback))
+
+(defun toolbar-prepend-element (toolbar &key tooltip-text tooltip-private-text
+                               type widget icon text callback)
+  (toolbar-insert-element
+   toolbar :prepend :type type :widget widget :icon icon :text text
+   :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text
+   :callback callback))
+
+(defun toolbar-insert-space (toolbar position)
+  (toolbar-insert-element toolbar position :type :space))
+
+(defun toolbar-append-space (toolbar)
+  (toolbar-insert-space toolbar :append))
+
+(defun toolbar-prepend-space (toolbar)
+  (toolbar-insert-space toolbar :prepend))
+
+(defun toolbar-insert-widget (toolbar widget position &key tooltip-text
+                             tooltip-private-text callback)
+  (toolbar-insert-element
+   toolbar position :widget widget :tooltip-text tooltip-text
+   :tooltip-private-text tooltip-private-text :callback callback))
  
-(defun toolbar-append-widget (toolbar widget &key tooltip-text
-;                            tooltip-private-text callback)
-  (toolbar-insert-widget
-   toolbar widget :append :tooltip-text tooltip-text
-   :tooltip-private-text tooltip-private-text :callback callback))
-
-(defun toolbar-prepend-widget (toolbar widget &key tooltip-text
-;                             tooltip-private-text callback)
-  (toolbar-insert-widget
-   toolbar widget :prepend :tooltip-text tooltip-text
-   :tooltip-private-text tooltip-private-text :callback callback))
-
-(defun toolbar-insert-item (toolbar text icon position &key tooltip-text
-;                          tooltip-private-text callback)
-  (toolbar-insert-element
-   toolbar position :text text :icon icon :callback callback
-   :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text))
-
-(defun toolbar-append-item (toolbar text icon &key tooltip-text
-;                          tooltip-private-text callback)
-  (toolbar-insert-item
-   toolbar text icon :append :callback callback
-   :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text))
+(defun toolbar-append-widget (toolbar widget &key tooltip-text
+                             tooltip-private-text callback)
+  (toolbar-insert-widget
+   toolbar widget :append :tooltip-text tooltip-text
+   :tooltip-private-text tooltip-private-text :callback callback))
+
+(defun toolbar-prepend-widget (toolbar widget &key tooltip-text
+                              tooltip-private-text callback)
+  (toolbar-insert-widget
+   toolbar widget :prepend :tooltip-text tooltip-text
+   :tooltip-private-text tooltip-private-text :callback callback))
+
+(defun toolbar-insert-item (toolbar text icon position &key tooltip-text
+                           tooltip-private-text callback)
+  (toolbar-insert-element
+   toolbar position :text text :icon icon :callback callback
+   :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text))
+
+(defun toolbar-append-item (toolbar text icon &key tooltip-text
+                           tooltip-private-text callback)
+  (toolbar-insert-item
+   toolbar text icon :append :callback callback
+   :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text))
 
                       
-(defun toolbar-prepend-item (toolbar text icon &key tooltip-text
-;                           tooltip-private-text callback)
-  (toolbar-insert-item
-   toolbar text icon :prepend :callback callback
-   :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text))
+(defun toolbar-prepend-item (toolbar text icon &key tooltip-text
+                            tooltip-private-text callback)
+  (toolbar-insert-item
+   toolbar text icon :prepend :callback callback
+   :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text))
 
-(defun toolbar-enable-tooltips (toolbar)
-  (setf (toolbar-tooltips-p toolbar) t))
+(defun toolbar-enable-tooltips (toolbar)
+  (setf (toolbar-tooltips-p toolbar) t))
 
-(defun toolbar-disable-tooltips (toolbar)
-  (setf (toolbar-tooltips-p toolbar) nil))
+(defun toolbar-disable-tooltips (toolbar)
+  (setf (toolbar-tooltips-p toolbar) nil))
 
 
 
@@ -2443,9 +1543,9 @@ (define-foreign tree-insert () nil
   (tree-item tree-item)
   (position int))
 
-(define-foreign tree-remove-items () nil
-  (tree tree)
-  (items (double-list tree-item)))
+(define-foreign tree-remove-items () nil
+  (tree tree)
+  (items (double-list tree-item)))
 
 (define-foreign tree-clear-items () nil
   (tree tree)
@@ -2475,7 +1575,7 @@ (define-foreign tree-child-position () int
 (defun root-tree-p (tree)
   (eq (tree-root-tree tree) tree))
 
-;; cl-gtk.c
+;; gtkglue.c
 (define-foreign tree-selection () (double-list tree-item)
   (tree tree))
 
@@ -2536,7 +1636,7 @@ (define-foreign calendar-thaw () nil
 ;   (%drawing-area-set-size drawing-area (svref size 0) (svref size 1))
 ;   (values (svref size 0) (svref size 1)))
 
-; ;; cl-gtk.c
+; ;; gtkglue.c
 ; (define-foreign ("gtk_drawing_area_get_size" drawing-area-size) () nil
 ;   (drawing-area drawing-area)
 ;   (width int :out)
@@ -2550,160 +1650,112 @@ (define-foreign calendar-thaw () nil
 
 ; ;;; Editable
 
-; (define-foreign editable-select-region () nil
-;   (editable editable)
-;   (start int)
-;   (end int))
-
-; (define-foreign editable-insert-text
-;     (editable text &optional (position 0)) nil
-;   (editable editable)
-;   (text string)
-;   ((length text) int)
-;   (position int))
-
-; (define-foreign editable-delete-text (editable &optional (start 0) end) nil
-;   (editable editable)
-;   (start int)
-;   ((or end -1) int))
-
-; (define-foreign ("gtk_editable_get_chars" editable-text)
-;     (editable &optional (start 0) end) string
-;   (editable editable)
-;   (start int)
-;   ((or end -1) int))
-
-; (defun (setf editable-text) (text editable)
-;   (editable-delete-text editable)
-;   (when text
-;     (editable-insert-text editable text))
-;   text)
-
-; (define-foreign editable-cut-clipboard () nil
-;   (editable editable))
-
-; (define-foreign editable-copy-clipboard () nil
-;   (editable editable))
-
-; (define-foreign editable-paste-clipboard () nil
-;   (editable editable))
-
-; (define-foreign editable-claim-selection () nil
-;   (editable editable)
-;   (claim boolean)
-;   (time unsigned-int))
-
-; (define-foreign editable-delete-selection () nil
-;   (editable editable))
-
-; (define-foreign editable-changed () nil
-;   (editable editable))
-
-
+(define-foreign editable-select-region (editable &optional (start 0) end) nil
+  (editable editable)
+  (start int)
+  ((or end -1) int))
 
-; ;;; Entry
+(define-foreign editable-insert-text
+    (editable text &optional (position 0)) nil
+  (editable editable)
+  (text string)
+  ((length text) int)
+  ((or position -1) int :in-out))
 
-; (define-foreign %entry-new() entry)
+(defun editable-append-text (editable text)
+  (editable-insert-text editable text nil))
 
-; (define-foreign %entry-new-with-max-length () entry
-;   (max uint16))
+(defun editable-prepend-text (editable text)
+  (editable-insert-text editable text 0))
 
-; (defun entry-new (&optional max)
-;   (if max
-;       (%entry-new-with-max-length max)
-;     (%entry-new)))
+(define-foreign editable-delete-text (editable &optional (start 0) end) nil
+  (editable editable)
+  (start int)
+  ((or end -1) int))
 
-; (define-foreign entry-append-text () nil
-;   (entry entry)
-;   (text string))
+(define-foreign ("gtk_editable_get_chars" editable-text)
+    (editable &optional (start 0) end) string
+  (editable editable)
+  (start int)
+  ((or end -1) int))
 
-; (define-foreign entry-prepend-text () nil
-;   (entry entry)
-;   (text string))
+(defun (setf editable-text) (text editable)
+  (if text
+      (editable-delete-text
+       editable
+       (editable-insert-text editable text))
+    (editable-delete-text editable))
+  text)
 
-; (define-foreign entry-select-region () nil
-;   (entry entry)
-;   (start int)
-;   (end int))
+(define-foreign editable-cut-clipboard () nil
+  (editable editable))
 
+(define-foreign editable-copy-clipboard () nil
+  (editable editable))
 
+(define-foreign editable-paste-clipboard () nil
+  (editable editable))
 
-; ;;; Spin button
+(define-foreign editable-claim-selection () nil
+  (editable editable)
+  (claim boolean)
+  (time unsigned-int))
 
-; (define-foreign spin-button-new () spin-button
-;   (adjustment adjustment)
-;   (climb-rate single-float)
-;   (digits unsigned-int))
+(define-foreign editable-delete-selection () nil
+  (editable editable))
 
-; (defun spin-button-value-as-int (spin-button)
-;   (round (spin-button-value spin-button)))
+(define-foreign editable-changed () nil
+  (editable editable))
 
-; (define-foreign spin-button-spin () nil
-;   (spin-button spin-button)
-;   (direction spin-type)
-;   (increment single-float))
 
-; (define-foreign spin-button-update () nil
-;   (spin-button spin-button))
 
+;;; Entry
 
+(define-foreign %entry-new() entry)
 
-; ;;; Text
+(define-foreign %entry-new-with-max-length () entry
+  (max (unsigned 16)))
 
-; (define-foreign text-new (&optional hadjustment vadjustment) text
-;   (hadjustment (or null adjustment))
-;   (vadjustment (or null adjustment)))
+(defun entry-new (&optional max)
+  (if max
+      (%entry-new-with-max-length max)
+    (%entry-new)))
 
-; (define-foreign text-freeze () nil
-;   (text text))
 
-; (define-foreign text-thaw () nil
-;   (text text))
+;;; Spin button
 
-; (define-foreign %text-insert () nil
-;   (text text)
-;   (font (or null gdk:font))
-;   (fore (or null gdk:color))
-;   (back (or null gdk:color))
-;   (string string)
-;   (-1 int))
+(define-foreign spin-button-new () spin-button
+  (adjustment adjustment)
+  (climb-rate single-float)
+  (digits unsigned-int))
 
-; (defun text-insert (text string &key font foreground background (start 0) end)
-;   (let ((real-font (gdk:ensure-font font)))
-;     (gdk:with-colors ((fore-color foreground)
-;                    (back-color background))
-;     (%text-insert
-;      text real-font fore-color back-color (subseq string start end))
-;     (gdk:font-maybe-unref real-font font))))
+(defun spin-button-value-as-int (spin-button)
+  (round (spin-button-value spin-button)))
 
-; (define-foreign text-backward-delete () int
-;   (text text)
-;   (n-chars unsigned-int))
+(define-foreign spin-button-spin () nil
+  (spin-button spin-button)
+  (direction spin-type)
+  (increment single-float))
 
-; (define-foreign text-forward-delete () nil
-;   (text text)
-;   (nchars unsigned-int))
+(define-foreign spin-button-update () nil
+  (spin-button spin-button))
 
 
 
 ; ;;; Ruler
 
-; (define-foreign ruler-set-range () nil
-;   (ruler ruler)
-;   (lower single-float)
-;   (upper single-float)
-;   (position single-float)
-;   (max-size single-float))
-
-; (define-foreign ruler-draw-ticks () nil
-;   (ruler ruler))
-
-; (define-foreign ruler-draw-pos () nil
-;   (ruler ruler))
+(define-foreign ruler-set-range () nil
+  (ruler ruler)
+  (lower single-float)
+  (upper single-float)
+  (position single-float)
+  (max-size single-float))
 
-; (define-foreign hruler-new () hruler)
+(define-foreign ruler-draw-ticks () nil
+  (ruler ruler))
 
-; (define-foreign vruler-new () vruler)
+(define-foreign ruler-draw-pos () nil
+  (ruler ruler))
 
 
 
@@ -2788,9 +1840,9 @@ (define-foreign calendar-thaw () nil
 
 ; ;;; Separator
 
-(define-foreign vseparator-new () vseparator)
+(define-foreign vseparator-new () vseparator)
 
-(define-foreign hseparator-new () hseparator)
+(define-foreign hseparator-new () hseparator)
 
 
 
@@ -2914,11 +1966,19 @@ (define-foreign accel-group-new () accel-group)
 
 (define-foreign accel-group-get-default () accel-group)
 
-(define-foreign accel-group-ref () accel-group
-  (accel-group accel-group))
+(deftype-method alien-ref accel-group (type-spec)
+  (declare (ignore type-spec))
+  '%accel-group-ref)
 
-(define-foreign accel-group-unref () nil
-  (accel-group accel-group))
+(deftype-method alien-unref accel-group (type-spec)
+  (declare (ignore type-spec))
+  '%accel-group-unref)
+
+(define-foreign %accel-group-ref () accel-group
+  (accel-group (or accel-group pointer)))
+
+(define-foreign %accel-group-unref () nil
+  (accel-group (or accel-group pointer)))
 
 (define-foreign accel-group-activate (accel-group key modifiers) boolean
   (accel-group accel-group)