added layout-containers
[cl-gtk2.git] / generating.lisp
1 (defpackage :gtk-generation
2   (:use :cl :gobject :cffi :glib)
3   (:export #:gtk-generate))
4
5 (in-package :gtk-generation)
6
7 (load-foreign-library "libgtk-x11-2.0.so")
8
9 (defcfun gtk-init-check :boolean
10   (argc (:pointer :int))
11   (argv (:pointer (:pointer :string))))
12
13 (defun gtk-init ()
14   (gtk-init-check (foreign-alloc :int :initial-element 0)
15                   (foreign-alloc :string :initial-contents '("/usr/bin/sbcl")))
16   #+nil(with-foreign-objects ((argc :int)
17                          (argv '(:pointer :string) 1))
18     (setf (mem-ref argc :int) 0
19           (mem-ref argv '(:pointer :string)) (foreign-alloc :string :count 1
20                                                             :initial-element "/usr/bin/sbcl"))
21     (unwind-protect
22          (unless (gtk-init-check argc argv)
23            (error "Cannot initialize Gtk+"))
24       (foreign-free (mem-ref argv '(:pointer :string))))))
25
26 (gtk-init)
27
28 (defcfun gtk-test-register-all-types :void)
29
30 (gtk-test-register-all-types)
31
32 (defun gtk-generate (filename)
33   (with-open-file (stream filename :direction :output :if-exists :supersede)
34     (gobject::generate-types-hierarchy-to-file
35      stream
36      "GtkObject"
37      :include-referenced t
38      :prefix "Gtk"
39      :package (or (find-package :gtk) (make-package :gtk))
40      :exceptions `(("GObject" gobject:g-object)
41                    ("GtkObject" ,(intern "GTK-OBJECT" (find-package :gtk)))
42                    ("GInitiallyUnowned" gobject::g-initially-unowned)
43                    ("GtkWindow" ,(intern "GTK-WINDOW" (find-package :gtk)))
44                    ("GtkUIManager" ,(intern "UI-MANAGER" (find-package :gtk)))
45                    ("GtkUIManagerItemType" ,(intern "UI-MANAGER-ITEM-TYPE" (find-package :gtk))))
46      :prologue (format nil "(in-package :gtk)")
47      :interfaces '("GtkBuildable"
48                    "GtkCellEditable"
49                    "GtkCellLayout"
50                    "GtkEditable"
51                    "GtkFileChooser"
52                    "GtkFileChooserEmbed"
53                    "GtkTreeModel"
54                    "GtkTreeDragSource"
55                    "GtkTreeDragDest"
56                    "GtkTreeSortable"
57                    "GtkPrintOperationPreview"
58                    "GtkRecentChooser"
59                    "GtkToolShell"
60                    "AtkImplementorIface")
61      :objects '("GtkSettings" "GtkRcStyle" "GtkStyle" "GtkTooltip" "GtkAccelGroup"
62                 "GtkAccelMap" "GtkAction" "GtkActionGroup" "GtkBuilder" "GtkClipboard"
63                 "GtkEntryCompletion" "GtkIconFactory" "GtkIconTheme" "GtkIMContext"
64                 "GtkListStore" "GtkPageSetup" "GtkPrintContext" "GtkPrintOperation"
65                 "GtkPrintSettings" "GtkRecentManager" "GtkSizeGroup" "GtkStatusIcon"
66                 "GtkTextBuffer" "GtkTextChildAnchor" "GtkTextMark" "GtkTextTag"
67                 "GtkTextTagTable" "GtkTreeModelFilter" "GtkTreeModelSort"
68                 "GtkTreeSelection" "GtkTreeStore" "GtkUIManager" "GtkWindowGroup"
69                 "GtkToggleAction" "GtkRecentAction" "GtkRadioAction")
70      :flags '("GtkTextSearchFlags" "GtkAccelFlags" "GtkArgFlags" "GtkAttachOptions"
71               "GtkButtonAction" "GtkCalendarDisplayOptions" "GtkCellRendererState"
72               "GtkDebugFlag" "GtkDestDefaults" "GtkDialogFlags" "GtkFileFilterFlags"
73               "GtkIconLookupFlags" "GtkObjectFlags" "GtkPrivateFlags" "GtkRcFlags"
74               "GtkRecentFilterFlags" "GtkSignalRunType" "GtkTargetFlags"
75               "GtkTreeModelFlags" "GtkUIManagerItemType" "GtkWidgetFlags")
76      :enums '("GtkTextDirection" "GtkSizeGroupMode" "GtkUnit" "GtkPrintStatus"
77               "GtkRecentSortType" "GtkFileChooserAction" "GtkCellRendererAccelMode"
78               "GtkCellRendererMode" "GtkTreeViewColumnSizing"
79               "GtkProgressBarOrientation" "GtkProgressBarStyle" "GtkUpdateType"
80               "GtkMetricType" "GtkSpinButtonUpdatePolicy" "GtkCurveType" "GtkImageType"
81               "GtkArrowType" "GtkSortType" "GtkToolbarStyle" "GtkWrapMode"
82               "GtkJustification" "GtkButtonBoxStyle" "GtkSelectionMode"
83               "GtkTreeViewGridLines" "GtkPackDirection" "GtkPolicyType" "GtkCornerType"
84               "GtkSensitivityType" "GtkShadowType" "GtkIconSize" "GtkOrientation"
85               "GtkPositionType" "GtkReliefStyle" "GtkMessageType" "GtkButtonsType"
86               "GtkWindowType" "GtkWindowPosition" "GtkResizeMode"
87               "GtkTextBufferTargetInfo" "GtkStateType" "GtkDirectionType"
88               "GtkDragResult" "GtkWidgetHelpType" "GtkPackType" "GtkNotebookTab"
89               "GtkMovementStep" "GtkAnchorType" "GtkAssistantPageType"
90               "GtkBuilderError" "GtkCellType" "GtkCListDragPos" "GtkCTreeExpanderStyle"
91               "GtkCTreeExpansionType" "GtkCTreeLineStyle" "GtkCTreePos" "GtkDeleteType"
92               "GtkExpanderStyle" "GtkFileChooserConfirmation" "GtkFileChooserError"
93               "GtkIconThemeError" "GtkIconViewDropPosition" "GtkIMPreeditStyle"
94               "GtkIMStatusStyle" "GtkMatchType" "GtkMenuDirectionType"
95               "GtkNumberUpLayout" "GtkPageOrientation" "GtkPageSet"
96               "GtkPathPriorityType" "GtkPathType" "GtkPreviewType" "GtkPrintDuplex"
97               "GtkPrintError" "GtkPrintOperationAction" "GtkPrintOperationResult"
98               "GtkPrintPages" "GtkPrintQuality" "GtkRcTokenType"
99               "GtkRecentChooserError" "GtkRecentManagerError" "GtkResponseType"
100               "GtkScrollStep" "GtkScrollType" "GtkSideType" "GtkSpinType"
101               "GtkSubmenuDirection" "GtkSubmenuPlacement" "GtkTextWindowType"
102               "GtkToolbarChildType" "GtkToolbarSpaceStyle" "GtkTreeViewDropPosition"
103               "GtkTreeViewMode" "GtkVisibility")
104      :exclusions '("PangoStretch" "PangoVariant" "PangoStyle" "PangoUnderline")
105      :additional-properties
106      '(("GtkTreeViewColumn"
107         (:cffi gtk::tree-view gtk::tree-view-column-tree-view g-object "gtk_tree_view_column_get_tree_view" nil)
108         (:cffi gtk::sort-column-id gtk::tree-view-column-sort-column-id :int "gtk_tree_view_column_get_sort_column_id" "gtk_tree_view_column_set_sort_column_id")
109         (:cffi gtk::cell-renderers gtk::tree-view-column-cell-renderers (glist g-object  :free-from-foreign t) "gtk_tree_view_column_get_cell_renderers" nil))
110        ("GtkTreeSelection"
111         (:cffi gtk::mode gtk::tree-selection-mode gtk::selection-mode "gtk_tree_selection_get_mode" "gtk_tree_selection_set_mode")
112         (:cffi gtk::select-function gtk::tree-selection-select-function nil gtk::tree-selection-get-selection-function gtk::tree-selection-set-select-function))
113        ("GtkTreeView"
114         (:cffi gtk::selection gtk::tree-view-selection g-object "gtk_tree_view_get_selection" nil)
115         (:cffi gtk::column-drag-function gtk::tree-view-column-drag-function nil nil gtk::tree-view-set-column-drag-function)
116         (:cffi gtk::bin-window gtk::tree-view-bin-window g-object "gtk_tree_view_get_bin_window" nil)
117         (:cffi gtk::search-equal-func gtk::tree-view-search-equal-func nil nil gtk::tree-view-set-search-equal-func)
118         (:cffi gtk::search-entry gtk::tree-view-search-entry g-object "gtk_tree_view_get_search_entry" "gtk_tree_view_set_search_entry")
119         (:cffi gtk::search-position-func gtk::tree-view-search-position-func nil nil gtk::tree-view-set-search-position-func)
120         (:cffi gtk::row-separator-func gtk::tree-view-row-separator-func nil nil gtk::tree-view-set-row-separartor-func))
121        ("GtkCellView"
122         (: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"))
123        ("GtkComboBox"
124         (: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")
125         (:cffi gtk::row-separator-func gtk::combo-box-separator-func nil nil gtk::combo-box-set-separator-func))
126        ("GtkMenu"
127         (:cffi gtk::screen gtk::menu-screen g-object nil "gtk_menu_set_screen"))
128        ("GtkToolItem"
129         (:cffi gtk::expand gtk::tool-item-expand :boolean "gtk_tool_item_get_expand" "gtk_tool_item_set_expand")
130         (:cffi gtk::use-drag-window gtk::tool-item-use-drag-window :boolean "gtk_tool_item_get_use_drag_window" "gtk_tool_item_set_use_drag_window")
131         (:cffi gtk::icon-size gtk::tool-item-icon-size gtk::icon-size "gtk_tool_item_get_icon_size" nil)
132         (:cffi gtk::orientation gtk::tool-item-orientation gtk::orientation "gtk_tool_item_get_orientation" nil)
133         (:cffi gtk::toolbar-style gtk::tool-item-toolbar-style gtk::toolbar-style "gtk_tool_item_get_toolbar_style" nil)
134         (:cffi gtk::relief-style gtk::tool-item-relief-style gtk::relief-style "gtk_tool_item_get_relief_style" nil))
135        ("GtkMenuToolButton"
136         (:cffi gtk::arrow-tooltip-text gtk::menu-tool-button-arrow-tooltip-text :string nil "gtk_menu_tool_button_set_arrow_tooltip_text")
137         (:cffi gtk::arrow-tooltip-markup gtk::menu-tool-button-arrow-tooltip-markup :string nil "gtk_menu_tool_button_set_arrow_tooltip_markup"))
138        ("GtkUIManager"
139         (:cffi gtk::accel-group gtk::ui-manager-accel-group g-object "gtk_ui_manager_get_accel_group" nil))
140        ("GtkActionGroup"
141         (:cffi gtk::translate-function gtk::action-group-translate-function nil nil gtk::action-group-set-translate-func)
142         (:cffi gtk::translation-domain gtk::action-group-translation-domain nil nil gtk::gtk-action-group-set-translation-domain))
143        ("GtkAction"
144         (:cffi gtk::accel-path gtk::action-accel-path (:string :free-from-foreign nil :free-to-foreign t) "gtk_action_get_accel_path" "gtk_action_set_accel_path")
145         (:cffi gtk::accel-group gtk::action-accel-group g-object nil "gtk_action_set_accel_group"))
146        ("GtkFileChooser"
147         (:cffi gtk::current-name gtk::file-chooser-current-name (:string :free-to-foreign t :encoding :utf-8) nil "gtk_file_chooser_set_current_name")
148         (:cffi gtk::filename gtk::file-chooser-filename (glib:g-string :free-from-foreign t :free-to-foreign t) "gtk_file_chooser_get_filename" "gtk_file_chooser_set_filename")
149         (:cffi gtk::current-folder gtk::file-chooser-current-folder (glib:g-string :free-from-foreign t :free-to-foreign t) "gtk_file_chooser_get_current_folder" "gtk_file_chooser_set_current_folder")
150         (:cffi gtk::uri gtk::file-chooser-uri (glib:g-string :free-from-foreign t :free-to-foreign t) "gtk_file_chooser_get_uri" "gtk_file_chooser_set_uri")
151         (:cffi gtk::current-folder-uri gtk::file-chooser-current-folder-uri (glib:g-string :free-from-foreign t :free-to-foreign t) "gtk_file_chooser_get_current_folder_uri" "gtk_file_chooser_set_current_folder_uri")
152         (:cffi gtk::preview-filename gtk::file-chooser-preview-filename (glib:g-string :free-from-foreign t :free-to-foreign t) "gtk_file_chooser_get_preview_filename" nil)
153         (:cffi gtk::preview-uri gtk::file-chooser-preview-uri (glib:g-string :free-from-foreign t :free-to-foreign t) "gtk_file_chooser_get_preview_uri" nil))
154        ("GtkFileFilter"
155         (:cffi gtk::name gtk::file-filter-name :string "gtk_file_filter_get_name" "gtk_file_filter_set_name"))
156        ("GtkFontSelectionDialog"
157         (:cffi gtk::font-name gtk::font-selection-dialog-font-name (glib:g-string :free-from-foreign t :free-to-foreign t) "gtk_font_selection_dialog_get_font_name" "gtk_font_selection_dialog_set_font_name")
158         (:cffi gtk::preview-text gtk::font-selection-dialog-preview-text :string "gtk_font_selection_dialog_get_preview_text" "gtk_font_selection_dialog_set_preview_text")
159         (:cffi gtk::apply-button gtk::font-selection-dialog-apply-button g-object "gtk_font_selection_dialog_get_apply_button" nil)
160         (:cffi gtk::cancel-button gtk::font-selection-dialog-cancel-button g-object "gtk_font_selection_dialog_get_cancel_button" nil)
161         (:cffi gtk::ok-button gtk::font-selection-dialog-ok-button g-object "gtk_font_selection_dialog_get_ok_button" nil))
162        ("GtkFixed"
163         (:cffi gtk::has-window gtk::fixed-has-window :boolean "gtk_fixed_get_has_window" "gtk_gixed_set_has_window"))
164        ("GtkLayout"
165         (:cffi gtk::bin-window gtk::layout-bin-window g-object "gtk_layout_get_bin_window" nil))))))