Workaround for bug in gdk's init code
[clg] / gtk / gtktypes.lisp
index dbedf60..51a9d14 100644 (file)
@@ -1,5 +1,5 @@
 ;; Common Lisp bindings for GTK+ v2.0.x
-;; Copyright (C) 1999-2000 Espen S. Johnsen <espejohn@online.no>
+;; Copyright (C) 1999-2001 Espen S. Johnsen <esj@stud.cs.uit.no>
 ;;
 ;; This library is free software; you can redistribute it and/or
 ;; modify it under the terms 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
 
-;; $Id: gtktypes.lisp,v 1.1 2000-08-14 16:44:59 espen Exp $
-
+;; $Id: gtktypes.lisp,v 1.7 2001-05-29 15:56:58 espen Exp $
 
 
 (in-package "GTK")
 
+(defclass requisition (boxed)
+  ((width
+    :allocation :alien
+    :accessor requisition-width
+    :initarg :width
+    :type int)
+   (height
+    :allocation :alien
+    :accessor requisition-height
+    :initarg :height
+    :type int))
+  (:metaclass boxed-class)
+  (:alien-name "GtkRequisition"))
 
-; (deftype color-type
-;   (enum
-;    :foreground
-;    :background
-;    :light
-;    :dark
-;    :mid
-;    :text
-;    :base
-;    :white
-;    :black))
-
-
-(defclass  style (gobject)
-  ()
-  (:metaclass gobject-class)
-  (:alien-name "GtkStyle"))
-
-; (define-boxed accel-group :c-name "GtkAccelGroup")
-
-
-(deftype (accel-group "GtkAccelGroup") () 'pointer)
-
-(deftype accel-entry () 'pointer)
-(deftype radio-button-group () 'pointer)
-(deftype radio-menu-item-group () 'pointer)
-; (define-boxed ctree-node :c-name "GtkCTreeNode")
-
-
-(defclass data (object)
-  ()
-  (:metaclass object-class)
-  (:alien-name "GtkData"))
-
+(defclass border (boxed)
+  ((left
+    :allocation :alien
+    :accessor border-left
+    :initarg :left
+    :type int)
+   (right
+    :allocation :alien
+    :accessor border-right
+    :initarg :right
+    :type int)
+   (top
+    :allocation :alien
+    :accessor border-top
+    :initarg :top
+    :type int)
+   (bottom
+    :allocation :alien
+    :accessor border-bottom
+    :initarg :bottom
+    :type int))
+  (:metaclass boxed-class)
+  (:alien-name "GtkBorder"))
 
-(defclass adjustment (data)
+(defclass adjustment (%object)
   ((lower
     :allocation :alien
     :accessor adjustment-lower
     :accessor adjustment-page-size
     :initarg :page-size
     :type single-float))
-  (:metaclass object-class)
+  (:metaclass gobject-class)
   (:alien-name "GtkAdjustment"))
-  
 
-; (define-class tooltips data
-;   :slots
-;   ;; slots not accessible through the arg mechanism
-;   ((delay                  :type unsigned-int)))
 
+(define-types-by-introspection "Gtk"
+  ;; Manually defined
+  ("GtkObject" :ignore t)
+  ("GtkRequisition" :ignore t)
+  ("GtkBorder" :ignore t)
+  ("GtkAdjustment" :ignore t)
 
-;; Forward declaration, the real definition is in gtkwidget.lisp
-(defclass widget (object)
-  ()
-  (:metaclass object-class)
-  (:alien-name "GtkWidget"))
+  ;; Temporary disabled
+  ("GtkCellRenderer" :ignore-prefix t)
 
+  ;; Manual override
+  
+  ;; Not needed
+  ("GtkFundamentalType" :ignore t)
+  ("GtkArgFlags" :ignore t)
+  ;; Deprecated
+  ("GtkCList" :ignore-prefix t)
+  ("GtkCTree" :ignore-prefix t)
+  ("GtkList" :ignore t)
+  ("GtkTree" :ignore t)
+  ("GtkTreeItem" :ignore t)
+  ("GtkText" :ignore-prefix t)
+  ("GtkPacker" :ignore-prefix t)
+  ("GtkPixmap" :ignore t)
+  ("GtkPreview" :ignore-prefix t)
+  ("GtkTipsQuery" :ignore t)
+  ("GtkOldEditable" :ignore t))
+  
+  
 
-(defclass misc (widget)
-  ((xalign
-    :allocation :arg
-    :accessor misc-xalign
-    :initarg :xalign
-    :type single-float)
-   (yalign
-    :allocation :arg
-    :accessor misc-yalign
-    :initarg :yalign
-    :type single-float)
-   (xpad
-    :allocation :arg
-    :accessor misc-xpad
-    :initarg :xpad
-    :type int)
-   (ypad
-    :allocation :arg
-    :accessor misc-ypad
-    :initarg :ypad
-    :type int))
-  (:metaclass widget-class)
-  (:alien-name "GtkMisc"))
+#|
+(deftype color-type ()
+  '(enum
+    :foreground
+    :background
+    :light
+    :dark
+    :mid
+    :text
+    :base
+    :white
+    :black))
+
+
+(defclass style (gobject)
+  ((white
+    :allocation :virtual
+    :location style-white
+    :initarg :white
+    :type gdk:color)
+   (black
+    :allocation :virtual
+    :location style-black
+    :initarg :black
+    :type gdk:color)
+   (font
+    :allocation :virtual
+    :location ("gtk_style_get_font" "gtk_style_set_font")
+    :accessor style-font
+    :initarg :font
+    :type gdk:font))
+  (:metaclass gobject-class)
+  (:alien-name "GtkStyle"))
 
 
-(defclass label (misc)
-  ((label
-    :allocation :arg
-    :accessor label-label
-    :initarg :label
-    :type string)
-   (pattern
-    :allocation :arg
-    :accessor label-pattern
-    :initarg :pattern
-    :type string)
-   (justify
-    :allocation :arg
-    :accessor label-justify
-    :initarg :justify
-    :type justification)
-   (wrap
-    :allocation :arg
-    :accessor label-line-wrap-p
-    :initarg :wrap
+;(deftype accel-entry () 'pointer) ; internal?
+
+  
+
+(defclass tooltips (%object)
+  ((delay
+    :allocation :virtual
+    :location ("gtk_tooltips_get_delay" "gtk_tooltips_set_delay")
+    :accessor tooltips-delay
+    :type unsigned-int)
+   (enabled
+    :allocation :virtual
+    :location ("gtk_tooltips_get_enabled" (setf tooltips-enabled-p))
+    :reader tooltips-enabled-p
+    :initarg :enabled
     :type boolean))
-  (:metaclass widget-class)
-  (:alien-name "GtkLabel"))
+  (:metaclass object-class)
+  (:alien-name "GtkTooltips"))
+
+
+(defclass widget (object)
+  ((child-slots
+    :allocation :instance
+    :accessor widget-child-slots
+    :type container-child)
+   (state
+    :allocation :virtual
+    :location ("gtk_widget_get_state" "gtk_widget_set_state")
+    :accessor widget-state
+    :initarg :state
+    :type state-type)
+   (window
+    :allocation :virtual
+    :location "gtk_widget_get_window"
+    :reader widget-window
+    :type gdk:window)
+   (colormap
+    :allocation :virtual
+    :location "gtk_widget_get_colormap"
+    :reader widget-colormap
+    :type gdk:colormap)
+   (visual
+    :allocation :virtual
+    :location "gtk_widget_get_visual"
+    :reader widget-visual
+    :type gdk:visual))
+  (:metaclass object-class)
+  (:alien-name "GtkWidget"))
+
 
 
 (defclass accel-label (label)
-  ((widget
-    :allocation :arg
-    :location "GtkAccelLabel::accel_widget"
-    :accessor accel-widget
-    :initarg :widget
-    :type widget)
    (width
     :allocation :virtual
     :location "gtk_accel_label_get_accel_width"
   (:alien-name "GtkAccelLabel"))
 
 
-(defclass tips-query (label)
-  ((emit-always
-    :allocation :arg
-    :accessor tips-query-emit-always-p
-    :initarg :emit-always
-    :type boolean)
-   (caller
-    :allocation :arg
-    :accessor tips-query-caller
-    :initarg :caller
-    :type widget)
-   (label-inactive
-    :allocation :arg
-    :accessor tips-query-label-inactive
-    :initarg :label-inactive
-    :type string)
-   (label-no-tip
-    :allocation :arg
-    :accessor tips-query-label-no-tip
-    :initarg :label-no-tip
-    :type string))
-  (:metaclass widget-class)
-  (:alien-name "GtkTipsQuery"))
-
-
-(defclass arrow (misc)
-  ((arrow-type
-    :allocation :arg
-    :accessor arrow-arrow-type
-    :initarg :arrow-type
-    :type arrow-type)
-   (shadow-type
-    :allocation :arg
-    :accessor arrow-shadow-type
-    :initarg :shadow-type
-    :type shadow-type))
-  (:metaclass widget-class)
-  (:alien-name "GtkArrow"))
-
-
-(defclass image (misc)
-  ()
-  (:metaclass widget-class)
-  (:alien-name "GtkImage"))
-
-
-(defclass pixmap (misc)
-  ()
-  (:metaclass widget-class)
-  (:alien-name "GtkPixmap"))
-
-
-;; Forward declaration, the real definition is in gtkcontainer.lisp
 (defclass container (widget)
-  ()
+   (children
+    :allocation :virtual
+    :location container-children)
+   (focus-child
+    :allocation :virtual
+    :location ("gtk_container_get_focus_child" "gtk_container_set_focus_child")
+    :accessor container-focus-child
+    :initarg :focus-child
+    :type widget)
+   (focus-hadjustment
+    :allocation :virtual
+    :location (nil "gtk_container_set_focus_hadjustment")
+    :writer (setf container-focus-hadjustment)
+    :initarg :focus-hadjustment
+    :type adjustment)   
+   (focus-vadjustment
+    :allocation :virtual
+    :location (nil "gtk_container_set_focus_vadjustment")
+    :writer (setf container-focus-vadjustment)
+    :initarg :focus-vadjustment
+    :type adjustment))
   (:metaclass widget-class)
   (:alien-name "GtkContainer"))
 
-(defclass container-child ()
-  ((parent
-    :initarg :parent
-    :type container)
-   (child
-    :initarg :child
-    :type widget)))
 
 
 (defclass bin (container)
   ((child
     :allocation :virtual
     :location bin-child
-    :initarg :child
     :type widget))
   (:metaclass container-class)
   (:alien-name "GtkBin"))
 
-(defclass bin-child (container-child))
-
-
-(defclass alignment (bin)
-  ((xalign
-    :allocation :arg
-    :accessor alignment-xalign
-    :initarg :xalign
-    :type single-float)
-   (yalign
-    :allocation :arg
-    :accessor alignment-yalign
-    :initarg :yalign
-    :type single-float)
-   (xscale
-    :allocation :arg
-    :accessor alignment-xscale
-    :initarg :xscale
-    :type single-float)
-   (yscale
-    :allocation :arg
-    :accessor alignment-yscale
-    :initarg :yscale
-    :type single-float))
-  (:metaclass container-class)
-  (:alien-name "GtkAlignment"))
-
-(defclass alignment-child (bin-child))
-
-
-(defclass frame (bin)
-  ((label
-    :allocation :arg
-    :accessor frame-label
-    :initarg :label
-    :type string)
-   (label-xalign
-    :allocation :arg
-    :accessor frame-label-xalign
-    :initarg :label-xalign
-    :type single-float)
-   (label-yalign
-    :allocation :arg
-    :accessor frame-label-yalign
-    :initarg :label-yalign
-    :type single-float)
-   (shadow-type
-    :allocation :arg
-    :location "GtkFrame::shadow"
-    :accessor frame-shadow-type
-    :initarg :shadow-type
-    :type shadow-type))
-  (:metaclass container-class)
-  (:alien-name "GtkFrame"))
-
-(defclass frame-child (bin-child))
-  
-
-; (defclass aspect-frame (frame)
-;   ((xalign
-;     :allocation :arg
-;     :accessor aspect-frame-xalign
-;     :initarg :xalign
-;     :type single-float)
-;    (yalign
-;     :allocation :arg
-;     :accessor aspect-frame-yalign
-;     :initarg :yalign
-;     :type single-float)
-;    (ratio
-;     :allocation :arg
-;     :accessor aspect-frame-ratio
-;     :initarg :ratio
-;     :type single-float)
-;    (obey-child
-;     :allocation :arg
-;     :accessor aspect-frame-obey-child-p
-;     :initarg :obey-child
-;     :type boolean))
-;   (:metaclass container-class)
-;   (:alien-name "GtkAspectFrame"))
-
-; (defclass aspect-frame-child (aspect-child))
-
-
-(defclass button (bin)
-  ((label
-    :allocation :arg
-    :accessor button-label
-    :initarg :label
-    :type string)
-   (relief
-    :allocation :arg
-    :accessor button-relief
-    :initarg :relief
-    :type relief-style))
-  (:metaclass container-class)
-  (:alien-name "GtkButton"))
-
-(defclass button-child (bin-child))
-  
-
-(defclass toggle-button (button)
-  ((active
-    :allocation :arg
-    :accessor toggle-button-active-p
-    :initarg :active
-    :type boolean)
-   (draw-indicator
-    :allocation :arg
-    :accessor toggle-button-draw-indicator-p
-    :initarg :draw-indicator
-    :type boolean))
-  (:metaclass container-class)
-  (:alien-name "GtkToggleButton"))
-
-(defclass toggle-button-child (button-child))
-
-
-(defclass check-button (toggle-button)
-  ()
-  (:metaclass container-class)
-  (:alien-name "GtkCheckButton"))
-
-(defclass check-button-child (toggle-button-child))
 
 
 (defclass radio-button (check-button)
   ((group
-    :allocation :arg
-    :initarg :group
-;    :access :write-only
-    :type pointer)) ;radio-button-group))
+    :allocation :virtual
+    :location ("gtk_radio_button_group")
+    :reader radio-button-group
+    :type (static (gslist widget))))
   (:metaclass container-class)
   (:alien-name "GtkRadioButton"))
 
-(defclass radio-button-child (check-button-child))
-  
-
 (defclass option-menu (button)
   ((menu
     :allocation :virtual
   (:metaclass container-class)
   (:alien-name "GtkOptionMenu"))
 
-(defclass option-menu-child (button-child))
-
-
-(defclass item (bin)
-  ()
-  (:metaclass container-class)
-  (:alien-name "GtkOptionMenu"))
-
-(defclass item-child (bin-child))
-
-
 (defclass menu-item (item)
-  ()
-;   :slots
-;   ;; slots not accessible through the arg mechanism
-;   ((label                  :write-only t :access-method :lisp :type string)
-;    (submenu                :write-method :lisp :type menu-item)
-;    (placement              :write-only t :type submenu-placement)
-;    (toggle-indicator       :c-reader "gtk_menu_item_get_show_toggle"
-;                         :write-method :lisp :type boolean)
-;    (submenu-indicator      :c-reader "gtk_menu_item_get_show_submenu"
-;                         :write-method :lisp :type boolean)))
+  ((label
+    :allocation :virtual
+    :location menu-item-label
+    :initarg :label
+    :type string)
+   (submenu
+    :allocation :virtual
+    :location ("gtk_menu_item_get_submenu" (setf menu-item-submenu))
+    :reader menu-item-submenu
+    :initarg :submenu
+    :type menu-item)
+   (placement
+    :allocation :virtual
+    :location ("gtk_menu_item_get_placement" "gtk_menu_item_set_placement")
+    :accessor menu-item-placement
+    :initarg :placement
+    :type submenu-placement)
+   (toggle-indicator
+    :allocation :virtual
+    :location ("gtk_menu_item_get_show_toggle"
+              (setf menu-item-toggle-indicator-p))
+    :reader menu-item-toggle-indicator-p
+    :initarg :toggle-indicator
+    :type boolean)
+   (submenu-indicator
+    :allocation :virtual
+    :location ("gtk_menu_item_get_show_submenu"
+              (setf menu-item-submenu-indicator-p))
+    :reader menu-item-submenu-indicator-p
+    :initarg :submenu-indicator
+    :type boolean))
   (:metaclass container-class)
   (:alien-name "GtkMenuItem"))
-  
-(defclass menu-item-child (item-child))
 
-  
-(defclass check-menu-item (menu-item)
-  ()
-;   :slots
-;   ;; slots not accessible through the arg mechanism
-;   ((active :type boolean)
-;    (toggle-indicator       :c-writer "gtk_check_menu_item_set_show_toggle"
-;                         :c-reader "gtk_check_menu_item_get_show_toggle"
-;                         :type boolean)))
-  (:metaclass container-class)
-  (:alien-name "GtkCheckMenuItem"))
-
-(defclass check-menu-item-child (menu-item-child))
 
 (defclass radio-menu-item (check-menu-item)
-  ()
-;   :slots
-;   ;; slots not accessible through the arg mechanism
-;   ((group                  :c-reader "gtk_radio_menu_item_group"
-;                         :type radio-menu-item-group)))
+  ((group
+    :allocation :virtual
+    :location ("gtk_radio_menu_item_group")
+    :reader radio-menu-item-group
+    :type (static (gslist widget))))
   (:metaclass container-class)
   (:alien-name "GtkRadioMenuItem"))
 
-(defclass radio-menu-item-child (check-menu-item-child))
-
 
-(defclass tearoff-menu-item (menu-item)
-  ()
-  (:metaclass container-class)
-  (:alien-name "GtkTearoffMenuItem"))
 
-(defclass tearoff-menu-item-child (menu-item-child))
-
-(defclass list-item (item)
-  ()
+(defclass dialog (window)
+  ((main-box
+    :allocation :alien
+    :reader dialog-main-box
+    :type widget)
+   (action-area
+    :allocation :alien
+    :reader dialog-action-area
+    :type widget))
   (:metaclass container-class)
-  (:alien-name "GtkListItem"))
+  (:alien-name "GtkDialog"))
 
-(defclass list-item-child (item-child))
-  
 
-(defclass tree-item (item)
-  ()
-;   :slots
-;   ;; slots not accessible through the arg mechanism
-;   ((subtree                :write-method :lisp :type tree-item)))
+(defclass color-selection-dialog (dialog)
+  ((colorsel
+    :allocation :alien
+    :reader color-selection-dialog-colorsel
+    :type widget)
+   (ok-button
+    :allocation :alien
+    :reader color-selection-dialog-ok-button
+    :type widget)
+   (cancel-button
+    :allocation :alien
+    :reader color-selection-dialog-cancel-button
+    :type widget)
+   (help-button
+    :allocation :alien
+    :reader color-selection-dialog-help-button
+    :type widget))
   (:metaclass container-class)
-  (:alien-name "GtkTreeItem"))
+  (:alien-name "GtkColorSelectionDialog"))
 
-(defclass tree-item-child (item-child))
 
-
-(defclass window (bin)
-  ((type
-    :allocation :arg
-    :accessor window-type
-    :initarg :type
-    :type window-type)
-   (title
-    :allocation :arg
-    :accessor window-title
-    :initarg :title
+(defclass file-selection (window)
+  ((filename
+    :allocation :virtual
+    :location ("gtk_file_selection_get_filename"
+              "gtk_file_selection_set_filename")
+    :accessor file-selection-filename
+    :initarg :filename
     :type string)
-   (auto-shrink
-    :allocation :arg
-    :accessor window-auto-shrink-p
-    :initarg :auto-shrink
-    :type boolean)
-   (allow-shrink
-    :allocation :arg
-    :accessor window-allow-shrink-p
-    :initarg :allow-shrink
-    :type boolean)
-   (allow-grow
-    :allocation :arg
-    :accessor window-allow-grow-p
-    :initarg :allow-grow
-    :type boolean)
-   (modal
-    :allocation :arg
-    :accessor window-modal-p
-    :initarg :modal
-    :type boolean)
-   (position
-    :allocation :arg
-    :location "GtkWindow::window_position"
-    :accessor window-position
-    :initarg :position
-    :type window-position)
-   (default-width
-    :allocation :arg
-    :accessor window-default-width
-    :initarg :default-width
-    :type int)
-   (default-height
-    :allocation :arg
-    :accessor window-default-height
-    :initarg :default-height
-    :type int))
+    (action-area
+     :allocation :virtual
+     :location "gtk_file_selection_get_action_area"
+     :reader file-selection-action-area
+     :type widget)
+    (ok-button
+     :allocation :virtual
+     :location "gtk_file_selection_get_ok_button"
+     :reader file-selection-ok-button
+     :type widget)
+    (cancel-button
+     :allocation :virtual
+     :location "gtk_file_selection_get_cancel_button"
+     :reader file-selection-cancel-button
+     :type widget))
   (:metaclass container-class)
-  (:alien-name "GtkWindow"))
-
-(defclass window-child (bin-child))
-
-
-; (defclass color-selection-dialog window
-;   :slots
-;   ;; slots not accessible through the arg mechanism
-;   ((colorsel               :read-only t :type widget)
-;    (main-vbox              :read-only t :type widget)
-;    (ok-button              :read-only t :type widget)
-;    (reset-button           :read-only t :type widget)
-;    (cancel-button          :read-only t :type widget)
-;    (help-button            :read-only t :type widget)))
-
-; (defclass dialog window
-;   :slots
-;   ;; slots not accessible through the arg mechanism
-;   ((action-area            :read-only t :type widget)
-;    (vbox                   :read-only t :type widget)))
-
-; (defclass input-dialog dialog)
-
-; (defclass file-selection window
-;   :slots
-;   ;; slots not accessible through the arg mechanism
-;   ((filename               :type string)
-;    (action-area            :read-only t :type widget)
-;    (ok-button              :read-only t :type widget)
-;    (cancel-button          :read-only t :type widget)))
-
-; (defclass plug window)
-
-; (defclass event-box bin)
+  (:alien-name "GtkFileSelection"))
 
-; (defclass handle-box bin
-;   :slots
-;   ((shadow-type            :read-method :arg :arg-name "shadow"
-;                         :type shadow-type)
-;    (handle-position        :read-method :arg :type position-type)
-;    (snap-edge              :read-method :arg :type position-type)))
 
 (defclass scrolled-window (bin)
-  ((hadjustment
-    :allocation :arg
-    :accessor scrolled-window-hadjustment
-    :initarg :hadjustment
-    :type adjustment)   
-   (vadjustment
-    :allocation :arg
-    :accessor scrolled-window-vadjustment
-    :initarg :vadjustment
-    :type adjustment)
-   (hscrollbar-policy
-    :allocation :arg
-    :accessor scrolled-window-hscrollbar-policy
-    :initarg :hscrollbar-policy
-    :type policy-type)
-   (vscrollbar-policy
-    :allocation :arg
-    :accessor scrolled-window-vscrollbar-policy
-    :initarg :vscrollbar-policy
-    :type policy-type)
-   (placement
-    :allocation :arg
-    :location "GtkScrolledWindow::window_placement"
-    :accessor scrolled-window-placement
-    :initarg :placement
-    :type corner-type)
-   (shadow-type
-    :allocation :arg
-    :location "GtkScrolledWindow::shadow"
-    :accessor scrolled-window-shadow-type
-    :initarg :shadow-type
-    :type shadow-type)
    (hscrollbar
     :allocation :virtual
     :location "gtk_scrolled_window_get_hscrollbar"
   (:metaclass container-class)
   (:alien-name "GtkScrolledWindow"))
 
-(defclass scrolled-window-child (bin-child))
-
-
-
-; (defclass viewport bin
-;   :slots
-;   ((hadjustment            :read-method :arg :type adjustment)
-;    (vadjustment            :read-method :arg :type adjustment)
-;    (shadow-type            :read-method :arg :type shadow-type)))
-
-(defclass box (container)
-  ((spacing
-    :allocation :arg
-    :accessor box-spacing
-    :initarg :spacing
-    :type int)
-   (homogeneous
-    :allocation :arg
-    :accessor box-homogeneous-p
-    :initarg :homogeneous
-    :type boolean))
-  (:metaclass container-class)
-  (:alien-name "GtkBox"))
-
-(defclass box-child (container-child)
-  ((expand
-    :allocation :arg
-    :accessor box-child-expand-p
-    :initarg :expand
-    :type boolean)
-   (fill
-    :allocation :arg
-    :accessor box-child-fill-p
-    :initarg :fill
-    :type boolean)
-   (padding
-    :allocation :arg
-    :accessor box-child-padding
-    :initarg :padding
-    :type unsigned-long)
-   (pack-type
-    :allocation :arg
-    :accessor box-child-pack-type
-    :initarg :pack-type
-    :type pack-type)
-   (position
-    :allocation :arg
-    :accessor box-child-position
-    :initarg :position
-    :type long))
-  (:metaclass child-class))
-   
 
 (defclass button-box (box)
   ((spacing
     :allocation :virtual
     :location ("gtk_button_box_get_spacing" "gtk_button_box_set_spacing")
     :accessor button-box-spacing
+    :initarg :spacing
+    :type int)
+   (child-min-width
+    :allocation :alien
+    :offset #.(size-of 'int)
+    :accessor button-box-child-min-width
+    :initarg :child-min-width
+    :type int)
+   (child-min-height
+    :allocation :alien
+    :accessor button-box-child-min-height
+    :initarg :child-min-height
+    :type int)
+   (child-ipad-x
+    :allocation :alien
+    :accessor button-box-child-ipad-x
+    :initarg :child-ipad-x
+    :type int)
+   (child-ipad-y
+    :allocation :alien
+    :accessor button-box-child-ipad-y
+    :initarg :child-ipad-y
     :type int)
    (layout
     :allocation :virtual
     :location ("gtk_button_box_get_layout" "gtk_button_box_set_layout")
     :accessor button-box-layout
+    :initarg :layout
     :type button-box-style))
   (:metaclass container-class)
   (:alien-name "GtkButtonBox"))
 
-(defclass button-box-child (box-child)
-  ()
-  (:metaclass child-class))
 
-(defclass hbutton-box (button-box)
-  ()
+
+(defclass color-selection (vbox)
+  ((use-opacity
+    :allocation :virtual
+    :location ("gtk_color_selection_get_use_opacity"
+              "gtk_color_selection_set_use_opacity")
+    :accessor color-selection-use-opacity-p
+    :initarg :use-opacity
+    :type boolean)
+   (use-palette
+    :allocation :virtual
+    :location ("gtk_color_selection_get_use_palette"
+              "gtk_color_selection_set_use_palette")
+    :accessor color-selection-use-palette-p
+    :initarg :use-palette
+    :type boolean)
+   (color
+    :allocation :virtual
+    :location color-selection-color
+    :initarg :color)
+   (old-color
+    :allocation :virtual
+    :location color-selection-old-color
+    :initarg :old-color
+    :type (vector double-float 4)))
   (:metaclass container-class)
-  (:alien-name "GtkHButtonBox"))
+  (:alien-name "GtkColorSelection"))
 
-(defclass hbutton-box-child (button-box-child)
-  ()
-  (:metaclass child-class))
 
-(defclass vbutton-box-child (button-box-child)
-  ()
-  (:metaclass child-class))
 
-(defclass vbox (box)
-  ()
-  (:metaclass container-class)
-  (:alien-name "GtkVBox"))
 
-(defclass vbox-child (box-child)
-  ()
-  (:metaclass child-class))
+(defclass paned (container)
+   (position
+    :allocation :virtual
+    :location ("gtk_paned_get_position" "gtk_paned_set_position")
+    :accessor paned-position
+    :initarg :position
+    :type int)
+   (child1
+    :allocation :virtual
+    :location paned-child1
+    :initarg :child1
+    :type widget)
+   (child2
+    :allocation :virtual
+    :location paned-child2
+    :initarg :child2
+    :type widget))
+  (:metaclass container-class)
+  (:alien-name "GtkPaned"))
 
 
+(defclass layout (container)
+  ((hadjustment
+    :allocation :virtual
+    :location ("gtk_layout_get_hadjustment" "gtk_layout_set_hadjustment")
+    :accessor layout-hadjustment
+    :initarg :hadjustment
+    :type adjustment)
+   (vadjustment
+    :allocation :virtual
+    :location ("gtk_layout_get_vadjustment" "gtk_layout_set_vadjustment")
+    :accessor layout-vadjustment
+    :initarg :vadjustment
+    :type adjustment)
+   (x-size
+    :allocation :virtual
+    :location layout-x-size
+    :initarg :x-size)
+   (y-size
+    :allocation :virtual
+    :location layout-y-size
+    :initarg :y-size)
+   (x-offset
+    :allocation :alien
+    :offset #.(+ (size-of 'pointer) (* (size-of 'int) 2))
+    :accessor layout-x-offset
+    :initarg :x-offset
+    :type unsigned-int)
+   (y-offset
+    :allocation :alien
+    :accessor layout-y-offset
+    :initarg :y-offset
+    :type unsigned-int))
+  (:metaclass container-class)
+  (:alien-name "GtkLayout"))
 
-; (defclass color-selection vbox
-;   :slots
-;   ((policy                 :c-writer "gtk_color_selection_set_update_policy"
-;                         :read-method :arg :type update-type)
-;    (use-opacity            :c-writer "gtk_color_selection_set_opacity"
-;                         :read-method :arg :type boolean)
-;    ;; slots not accessible through the arg mechanism
-;    (color                  :access-method :lisp)))
 
-; (defclass gamma-curve vbox)
 
-(defclass hbox (box)
-  ()
+(defclass menu (menu-shell)
+  ((accel-group
+    :allocation :virtual
+    :location ("gtk_menu_get_accel_group" "gtk_menu_set_accel_group")
+    :accessor menu-accel-group
+    :initarg :accel-group
+    :type accel-group)
+   (tornoff
+    :allocation :virtual
+    :location ("gtk_menu_get_tearoff_state" "gtk_menu_set_tearoff_state")
+    :accessor menu-tornoff-p
+    :initarg :tearoff
+    :type boolean)
+   (title
+    :allocation :virtual
+    :location ("gtk_menu_get_title" "gtk_menu_set_title")
+    :accessor menu-title
+    :initarg :title
+    :type string))
   (:metaclass container-class)
-  (:alien-name "GtkHBox"))
+  (:alien-name "GtkMenu"))
+
 
-(defclass hbox-child (box-child)
-  ()
+(defclass table-child (container-child)
+   (x-expand
+    :allocation :virtual
+    :location table-child-x-expand-p
+    :initarg :x-expand
+    :type boolean)   
+   (y-expand
+    :allocation :virtual
+    :location table-child-y-expand-p
+    :initarg :y-expand
+    :type boolean)
+   (x-shrink
+    :allocation :virtual
+    :location table-child-x-shrink-p
+    :initarg :x-shrink
+    :type boolean)   
+   (y-shrink
+    :allocation :virtual
+    :location table-child-y-shrink-p
+    :initarg :y-shrink
+    :type boolean)   
+   (x-fill
+    :allocation :virtual
+    :location table-child-x-fill-p
+    :initarg :x-fill
+    :type boolean)   
+   (y-fill
+    :allocation :virtual
+    :location table-child-y-fill-p
+    :initarg :y-fill
+    :type boolean))
   (:metaclass child-class))
+  
 
+(defclass toolbar (container)
+   (tooltips
+    :allocation :virtual
+    :location ("gtk_toolbar_get_tooltips" "gtk_toolbar_set_tooltips")
+    :accessor toolbar-tooltips-p
+    :initarg :tooltips
+    :type boolean))
+  (:metaclass container-class)
+  (:alien-name "GtkToolbar"))
 
 
-; (defclass statusbar hbox)
-
-; (defclass clist container
-;   :c-name "GtkCList"
-;   :c-prefix "gtk_clist_"
-;   :slots
-;   ((n-columns              :read-only t :initarg t :access-method :arg
-;                         :type unsigned-int)
-;    (shadow-type            :read-method :arg :type shadow-type)
-;    (selection-mode         :read-method :arg :type selection-mode)
-;    (row-height             :read-method :arg :type unsigned-int)
-;    (reorderable            :read-method :arg :type boolean)
-;    (titles-visible         :write-method :lisp :type boolean)
-;    (titles-active          :access-method :arg :type boolean)
-;    (use-drag-icons         :read-method :arg :type boolean)
-;    (sort-type              :read-method :arg :type sort-type)
-;    ;; slots not accessible through the arg mechanism
-;    (hadjustment            :type adjustment)
-;    (vadjustment            :type adjustment)
-;    (sort-column            :type int)
-;    (focus-row              :reader %clist-focus-row :read-only t :type int)
-;    (n-rows                 :read-only t :type int)))
-
-; (defclass ctree clist
-;   :c-name "GtkCTree"
-;   :c-prefix "gtk_ctree_"
-;   :slots
-;   ((n-columns              :read-only t :initarg t :access-method :arg
-;                         :type unsigned-int)
-;    (tree-column            :read-only t :initarg t :access-method :arg
-;                         :type unsigned-int)
-;    (indent                 :read-method :arg :type unsigned-int)
-;    (spacing                :read-method :arg :type unsigned-int)
-;    (show-stub              :read-method :arg :type boolean)
-;    (line-style             :read-method :arg :type ctree-line-style)
-;    (expander-style         :read-method :arg :type ctree-expander-style)))
-
-; (defclass fixed container)
-
-; (defclass notebook container
-;   :slots
-;   ((show-tabs              :read-method :arg :type boolean)
-;    (show-border            :read-method :arg :type boolean)
-;    (scrollable             :read-method :arg :type boolean)
-;    (enable-popup           :access-method :arg :type boolean)
-;    (homogeneous            :c-writer "gtk_notebook_set_homogeneous_tabs"
-;                         :read-method :arg :type boolean)
-;    (current-page           :c-writer "gtk_notebook_set_page" :type int)
-;    (tab-pos                :read-method :arg :type position-type)
-;    (tab-border             :read-method :arg :type unsigned-int)
-;    (tab-hborder            :read-method :arg :type unsigned-int)
-;    (tab-vborder            :read-method :arg :type unsigned-int))
-;   :child-slots
-;   ((tab-label              :access-method :arg :type string)
-;    (menu-label             :access-method :arg :type string)
-;    (tab-fill               :access-method :arg :type boolean)
-;    (tab-pack               :access-method :arg :type boolean)
-;    (position               :access-method :arg :type int)))
-
-; (defclass font-selection notebook)
-
-; (defclass paned container
-;   :constructor nil
-;   :slots
-;   ((handle-size            :read-method :arg :type unsigned-int)
-;    (gutter-size            :read-method :arg :type unsigned-int)
-;    ;; slots not accessible through the arg mechanism
-;    (position               :write-only t :type int)))
-
-; (defclass hpaned paned)
-
-; (defclass vpaned paned)
-
-; (defclass layout container
-;   :slots
-;   ;; slots not accessible through the arg mechanism
-;   ((hadjustment            :type adjustment)
-;    (vadjustment            :type adjustment)
-;    (bin-window             :read-only t :type gdk:window)))
-
-; (defclass list-widget container
-;   :c-name "GtkList"
-;   :slots
-;   ((selection-mode         :read-method :arg :accessor list-selection-mode
-;                         :c-writer "gtk_list_set_selection_mode"
-;                         :type selection-mode)))
-
-; (defclass menu-shell container :constructor nil)
-
-; (defclass menu-bar menu-shell
-;   :slots
-;   ((shadow-type            :read-method :arg :arg-name "shadow"
-;                         :type shadow-type)))
-
-; (defclass menu menu-shell
-;   :slots
-;   ;; slots not accessible through the arg mechanism
-;   ((accel-group            :type accel-group)
-;    (tearoff-state          :write-only t :type boolean)
-;    (title                  :write-only t :type string)))
-
-; (defclass packer container
-;   :slots
-;   ((spacing                :read-method :arg :type unsigned-int)
-;    (default-border-width   :read-method :arg :type unsigned-int)
-;    (default-pad-x          :access-method :arg :type unsigned-int)
-;    (default-pad-y          :access-method :arg :type unsigned-int)
-;    (default-ipad-x         :access-method :arg :type unsigned-int)
-;    (default-ipad-y         :access-method :arg :type unsigned-int))
-;   :child-slots
-;   ((side                   :access-method :arg :type side-type)
-;    (anchor                 :access-method :arg :type anchor-type)
-;    (expand                 :access-method :arg :type boolean)
-;    (fill-x                 :access-method :arg :type boolean)
-;    (fill-y                 :access-method :arg :type boolean)
-;    (use-default            :access-method :arg :type boolean)
-;    (border-width           :access-method :arg :type unsigned-int)
-;    (pad-x                  :access-method :arg :type unsigned-int)
-;    (pad-y                  :access-method :arg :type unsigned-int)
-;    (ipad-x                 :access-method :arg :type unsigned-int)
-;    (ipad-y                 :access-method :arg :type unsigned-int)
-;    (position               :access-method :arg :type long)))
-
-; (defclass socket container)
-
-; (defclass table container
-;   :slots
-;   ((rows                   :access-method :arg :arg-name "n_rows"
-;                         :type unsigned-int)
-;    (columns                :access-method :arg :arg-name "n_columns"
-;                         :type unsigned-int)
-;    (row-spacing            :c-writer "gtk_table_set_row_spacings"
-;                         :accessor table-row-spacings
-;                         :read-method :arg :type unsigned-int)
-;    (column-spacing         :c-writer "gtk_table_set_col_spacings"
-;                         :accessor table-column-spacings
-;                         :read-method :arg  :type unsigned-int)
-;    (homogeneous            :read-method :arg :type boolean))
-;   :child-slots
-;   ((left-attach            :access-method :arg :type unsigned-int)
-;    (right-attach           :access-method :arg :type unsigned-int)
-;    (top-attach             :access-method :arg :type unsigned-int)
-;    (bottom-attach          :access-method :arg :type unsigned-int)
-;    (x-options              :access-method :arg :type attach-options)
-;    (y-options              :access-method :arg :type attach-options)
-;    (x-padding              :access-method :arg :type unsigned-int)
-;    (y-padding              :access-method :arg :type unsigned-int)
-;    ;; Slots added for convenience sake
-;    (x-expand               :access-method :lisp :type boolean)
-;    (y-expand               :access-method :lisp :type boolean)
-;    (x-shrink               :access-method :lisp :type boolean)
-;    (y-shrink               :access-method :lisp :type boolean)
-;    (x-fill                 :access-method :lisp :type boolean)
-;    (y-fill                 :access-method :lisp :type boolean)))
-
-; (defclass toolbar container
-;   :slots
-;   ((orientation            :read-method :arg :type orientation)
-;    (toolbar-style          :accessor toolbar-style
-;                            :c-writer "gtk_toolbar_set_style"
-;                         :read-method :arg :type toolbar-style)
-;    (space-size             :read-method :arg :type unsigned-int)
-;    (space-style            :read-method :arg :type toolbar-space-style)
-;    (relief                 :c-writer "gtk_toolbar_set_button_relief"
-;                         :read-method :arg :type relief-style)
-;    ;; slots not accessible through the arg mechanism
-;    (tooltips               :write-only t :type boolean)))
-
-(defclass tree (container)
-  ()
-;   :slots
-;   ;; slots not accessible through the arg mechanism
-;   ((selection-mode         :type selection-mode)
-;    (view-mode              :type tree-view-mode)
-;    (view-lines             :type boolean)
-;    (root-tree              :read-only t :type tree)))
-  (:metaclass container-class)
-  (:alien-name "GtkTree"))
 
+(defclass combo (hbox)
+  ((entry
+    :allocation :virtual
+    :location "gtk_combo_get_entry"
+    :reader combo-entry
+    :type entry))
+  (:metaclass widget-class)
+  (:alien-name "GtkCombo"))
+  
 
-(defclass calendar (widget)
-  ()
+(defclass ruler (widget)
+   (metric
+    :allocation :virtual
+    :location (nil "gtk_ruler_set_metric")
+    :accessor ruler-metric
+    :initarg :metric
+    :type metric-type))
   (:metaclass widget-class)
-  (:alien-name "GtkCalendar"))
-
-
-; (defclass drawing-area widget)
-
-; (defclass curve drawing-area
-;   :slots
-;   ((curve-type             :read-method :arg :type curve-type)
-;    (min-x                  :access-method :arg :type single-float)
-;    (max-x                  :access-method :arg :type single-float)
-;    (min-y                  :access-method :arg :type single-float)
-;    (max-y                  :access-method :arg :type single-float)))
-
-; (defclass editable widget
-;   :slots
-;   ((position               :type int)
-;    (editable               :read-method :arg :type boolean)
-;    ;; slots not accessible through the arg mechanism
-;    (text                   :access-method :lisp :type string)))
-
-; (defclass entry editable
-;   :slots
-;   ((max-length             :read-method :arg :type unsigned-int)
-;    (visibility             :read-method :arg :accessor entry-visible-p
-;                         :type boolean)
-;    ;; slots not accessible through the arg mechanism
-;    (text                   :type string)))
-
-; (defclass combo hbox
-;   :slots
-;   ;; slots not accessible through the arg mechanism
-;   ((entry                  :read-only t :type entry)
-;    (use-arrows             :type boolean)
-;    (use-arrows-always      :type boolean)
-;    (case-sensitive         :type boolean)))
-
-; (defclass spin-button entry
-;   :slots
-;   ((adjustment             :access-method :arg :type adjustment)
-;    (climb-rate             :access-method :arg :type single-float)
-;    (digits                 :access-method :arg :type unsigned-int)
-;    (snap-to-ticks          :read-method :arg :type boolean)
-;    (numeric                :read-method :arg :type boolean)
-;    (wrap                   :read-method :arg :type boolean)
-;    (update-policy          :read-method :arg :type spin-button-update-policy)
-;    (shadow-type            :read-method :arg :type shadow-type)
-;    (value                  :read-method :arg :type single-float)))
-
-; (defclass text editable
-;   :slots
-;   ((hadjustment            :access-method :arg :type adjustment)
-;    (vadjustment            :access-method :arg :type adjustment)
-;    (line-wrap              :read-method :arg :type boolean)
-;    (word-wrap              :read-method :arg :type boolean)
-;    ;; slots not accessible through the arg mechanism
-;    (point                  :type unsigned-int)
-;    (length                 :read-only t :type unsigned-int)))
-
-; (defclass ruler widget
-;   :constructor nil
-;   :slots
-;   ((lower                  :access-method :arg :type single-float)
-;    (upper                  :access-method :arg :type single-float)
-;    (position               :access-method :arg :type single-float)
-;    (max-size               :access-method :arg :type single-float)
-;    ;; slots not accessible through the arg mechanism
-;    (:metric                :write-only t :type metric-type)))
-
-; (defclass hruler ruler)
-
-; (defclass vruler ruler)
-
-; (defclass range widget
-;   :slots
-;   ((update-policy          :read-method :arg :type update-type)
-;    ;; slots not accessible through the arg mechanism
-;    (adjustment             :type adjustment)))
-
-; (defclass scale range
-;   :constructor nil
-;   :slots
-;   ((digits                 :read-method :arg :type unsigned-int)
-;    (draw-value             :read-method :arg :type boolean)
-;    (value-pos              :read-method :arg :type position-type)
-;    ;; slots not accessible through the arg mechanism
-;    (value-width            :read-only t :type int)))
-
-; (defclass hscale scale)
-
-; (defclass vscale scale)
-
-; (defclass scrollbar range :constructor nil)
-
-; (defclass hscrollbar scrollbar)
-
-; (defclass vscrollbar scrollbar)
-
-(defclass separator (widget)
-  ()
+  (:alien-name "GtkRuler"))
+
+(defclass scale (range)
+   (value-width
+    :allocation :virtual
+    :location "gtk_scale_get_value_width"
+    :reader ruler-value-width
+    :type int))
   (:metaclass widget-class)
-  (:alien-name "GtkSeparator"))
+  (:alien-name "GtkScale"))
 
 
-(defclass hseparator (separator)
-  ()
-  (:metaclass widget-class)
-  (:alien-name "GtkHSeparator"))
 
+(defclass progress (widget)
+   (format-string
+    :allocation :virtual
+    :location ("gtk_progress_get_format_string"
+              "gtk_progress_set_format_string")
+    :accessor progress-format-string
+    :initarg :format-string
+    :type string)
+   (adjustment
+    :allocation :virtual
+    :location ("gtk_progress_get_adjustment"
+              "gtk_progress_set_adjustment")
+    :accessor progress-adjustment
+    :initarg :adjustment
+    :type adjustment)
+   (percentage
+    :allocation :virtual
+    :location ("gtk_progress_get_current_percentage"
+              "gtk_progress_set_percentage")
+    :accessor progress-percentage
+    :initarg :percentage
+    :type single-float)
+   (value
+    :allocation :virtual
+    :location ("gtk_progress_get_value" "gtk_progress_set_value")
+    :accessor progress-value
+    :initarg :value
+    :type single-float)
+  (:metaclass widget-class)
+  (:alien-name "GtkProgress"))
+  
 
-(defclass vseparator (separator)
-  ()
+(defclass progress-bar (progress)
+   (activity-blocks ;; deprecated
+    :allocation :param
+    :accessor progress-bar-activity-blocks
+    :initarg :activity-blocks
+    :type unsigned-int)
   (:metaclass widget-class)
-  (:alien-name "GtkVSeparator"))
-
-
-; (defclass preview widget
-;   :slots
-;   ((expand                 :read-method :arg :type boolean)))
-
-; (defclass progress widget
-;   :slots
-;   ((activity-mode          :read-method :arg :type boolean)
-;    (show-text              :read-method :arg :type boolean)
-;    (text-xalign            :access-method :arg :type single-float)
-;    (text-yalign            :access-method :arg :type single-float)
-;    ;; slots not accessible through the arg mechanism
-;    (format-string          :type string)
-;    (adjustment             :type adjustment)
-;    (percentage             :c-reader "gtk_progress_get_current_percentage"
-;                         :type single-float)
-;    (value                  :type single-float)
-;    (text                   :c-reader "gtk_progress_get_current_text"
-;                         :read-only t :type string)))
-
-; (defclass progress-bar progress
-;   :slots
-;   ((adjustment             :c-writer "gtk_progress_set_adjustment"
-;                         :read-method :arg :type adjustment)
-;    (orientation            :read-method :arg :type progress-bar-orientation)
-;    (bar-style              :read-method :arg :accessor progress-bar-style
-;                         :type progress-bar-style)
-;    (activity-step          :read-method :arg :type unsigned-int)
-;    (activity-blocks        :read-method :arg :type unsigned-int)
-;    (discrete-blocks        :read-method :arg :type unsigned-int)))
-
-; (defclass item-factory object)
+  (:alien-name "GtkProgressBar"))
+
 
+|#