Use new GBoxed in GDK and GTK
[cl-gtk2.git] / generating.lisp
index d91ec78..24630f8 100644 (file)
@@ -1,6 +1,7 @@
 (defpackage :gtk-generation
   (:use :cl :gobject :cffi :glib)
-  (:export #:gtk-generate))
+  (:export #:gtk-generate
+           #:gtk-generate-child-properties))
 
 (in-package :gtk-generation)
 
@@ -31,7 +32,7 @@
 
 (defun gtk-generate (filename)
   (with-open-file (stream filename :direction :output :if-exists :supersede)
-    (gobject::generate-types-hierarchy-to-file
+    (generate-types-hierarchy-to-file
      stream
      "GtkObject"
      :include-referenced t
@@ -57,6 +58,8 @@
                    "GtkPrintOperationPreview"
                    "GtkRecentChooser"
                    "GtkToolShell"
+                   "GtkOrientable"
+                   "GtkActivatable"
                    "AtkImplementorIface")
      :objects '("GtkSettings" "GtkRcStyle" "GtkStyle" "GtkTooltip" "GtkAccelGroup"
                 "GtkAccelMap" "GtkAction" "GtkActionGroup" "GtkBuilder" "GtkClipboard"
         (:cffi gtk::search-position-func gtk::tree-view-search-position-func nil nil gtk::tree-view-set-search-position-func)
         (:cffi gtk::row-separator-func gtk::tree-view-row-separator-func nil nil gtk::tree-view-set-row-separartor-func))
        ("GtkCellView"
-        (:cffi gtk::displayed-row gtk::cell-view-displayed-row (g-boxed-ref gtk::tree-path) "gtk_cell_view_get_displayed_row" "gtk_cell_view_set_displayed_row"))
+        (:cffi gtk::displayed-row gtk::cell-view-displayed-row (g-boxed-foreign gtk::tree-path) "gtk_cell_view_get_displayed_row" "gtk_cell_view_set_displayed_row"))
        ("GtkComboBox"
-        (:cffi gtk::active-iter gtk::combo-box-active-iter (g-boxed-ref gtk::tree-iter) gtk::combo-box-get-active-iter "gtk_combo_box_set_active_iter")
+        (:cffi gtk::active-iter gtk::combo-box-active-iter (g-boxed-foreign gtk::tree-iter) gtk::combo-box-get-active-iter "gtk_combo_box_set_active_iter")
         (:cffi gtk::row-separator-func gtk::combo-box-separator-func nil nil gtk::combo-box-set-separator-func))
        ("GtkMenu"
         (:cffi gtk::screen gtk::menu-screen g-object nil "gtk_menu_set_screen"))
         (:cffi gtk::cancel-button gtk::font-selection-dialog-cancel-button g-object "gtk_font_selection_dialog_get_cancel_button" nil)
         (:cffi gtk::ok-button gtk::font-selection-dialog-ok-button g-object "gtk_font_selection_dialog_get_ok_button" nil))
        ("GtkFixed"
-        (:cffi gtk::has-window gtk::fixed-has-window :boolean "gtk_fixed_get_has_window" "gtk_gixed_set_has_window"))
+        (:cffi gtk::has-window gtk::fixed-has-window :boolean "gtk_fixed_get_has_window" "gtk_fixed_set_has_window"))
        ("GtkLayout"
-        (:cffi gtk::bin-window gtk::layout-bin-window g-object "gtk_layout_get_bin_window" nil))))))
\ No newline at end of file
+        (:cffi gtk::bin-window gtk::layout-bin-window g-object "gtk_layout_get_bin_window" nil))
+       ("GtkCalendar"
+        (:cffi gtk::detail-function gtk::calendar-detail-function nil nil gtk::calendar-set-detail-function))
+       ("GtkContainer"
+        (:cffi gtk::focus-child gtk::container-focus-child g-object "gtk_container_get_focus_child" "gtk_container_set_focus_child")
+        (:cffi gtk::focus-vadjustment gtk::container-focus-vadjustment g-object "gtk_container_get_focus_vadjustment" "gtk_container_set_focus_vadjustment")
+        (:cffi gtk::focus-hadjustment gtk::container-focus-hadjustment g-object "gtk_container_get_focus_hadjustment" "gtk_container_set_focus_hadjustment"))
+       ("GtkWidget"
+        (:cffi gtk::direction gtk::widget-direction gtk::text-direction "gtk_widget_get_direction" "gtk_widget_set_direction")
+        (:cffi gtk::composite-name gtk::widget-composite-name (glib:g-string :free-from-foreign t :free-to-foreign t) "gtk_widget_get_composite_name" "gtk_widget_set_composite_name")
+        (:cffi gtk::redraw-on-allocate gtk::widget-redraw-on-allocate :boolean nil "gtk_widget_set_redraw_on_allocate")
+        (:cffi gtk::accessible gtk::widget-accessible g-object "gtk_widget_get_accessible" nil)
+        (:cffi gtk::tooltip-window gtk::widget-tooltip-window g-object "gtk_widget_get_tooltip_window" "gtk_widget_set_tooltip_window"))
+       ("GtkTextTag"
+        (:cffi gtk::priority gtk::text-tag-priority :int "gtk_text_tag_get_priority" "gtk_text_tag_set_priority"))))))
+
+(defun gtk-generate-child-properties (filename)
+  (with-open-file (stream filename :direction :output :if-exists :supersede)
+    (let ((*package* (find-package :gtk))
+          (*print-case* :downcase))
+     (write-string "(in-package :gtk)" stream)
+     (terpri stream)
+     (format stream "~{~S~%~%~}" (gtk:generate-child-properties)))))
\ No newline at end of file