Typo.
[cl-gtk2.git] / generating.lisp
1 (defpackage :gtk-generation
2   (:use :cl :gobject :cffi :glib)
3   (:export #:gtk-generate
4            #:gtk-generate-child-properties))
5
6 (in-package :gtk-generation)
7
8 (load-foreign-library "libgtk-x11-2.0.so")
9
10 (defcfun gtk-init-check :boolean
11   (argc (:pointer :int))
12   (argv (:pointer (:pointer :string))))
13
14 (defun gtk-init ()
15   (gtk-init-check (foreign-alloc :int :initial-element 0)
16                   (foreign-alloc :string :initial-contents '("/usr/bin/sbcl")))
17   #+nil(with-foreign-objects ((argc :int)
18                          (argv '(:pointer :string) 1))
19     (setf (mem-ref argc :int) 0
20           (mem-ref argv '(:pointer :string)) (foreign-alloc :string :count 1
21                                                             :initial-element "/usr/bin/sbcl"))
22     (unwind-protect
23          (unless (gtk-init-check argc argv)
24            (error "Cannot initialize Gtk+"))
25       (foreign-free (mem-ref argv '(:pointer :string))))))
26
27 (gtk-init)
28
29 (defcfun gtk-test-register-all-types :void)
30
31 (gtk-test-register-all-types)
32
33 (defun gtk-generate (filename)
34   (with-open-file (stream filename :direction :output :if-exists :supersede)
35     (generate-types-hierarchy-to-file
36      stream
37      "GtkObject"
38      :include-referenced t
39      :prefix "Gtk"
40      :package (or (find-package :gtk) (make-package :gtk))
41      :exceptions `(("GObject" gobject:g-object)
42                    ("GtkObject" ,(intern "GTK-OBJECT" (find-package :gtk)))
43                    ("GInitiallyUnowned" gobject::g-initially-unowned)
44                    ("GtkWindow" ,(intern "GTK-WINDOW" (find-package :gtk)))
45                    ("GtkUIManager" ,(intern "UI-MANAGER" (find-package :gtk)))
46                    ("GtkUIManagerItemType" ,(intern "UI-MANAGER-ITEM-TYPE" (find-package :gtk))))
47      :prologue (format nil "(in-package :gtk)")
48      :interfaces '("GtkBuildable"
49                    "GtkCellEditable"
50                    "GtkCellLayout"
51                    "GtkEditable"
52                    "GtkFileChooser"
53                    "GtkTreeModel"
54                    "GtkTreeDragSource"
55                    "GtkTreeDragDest"
56                    "GtkTreeSortable"
57                    "GtkPrintOperationPreview"
58                    "GtkRecentChooser"
59                    "GtkToolShell"
60                    "GtkOrientable"
61                    "GtkActivatable"
62                    "AtkImplementorIface")
63      :objects '("GtkSettings" "GtkRcStyle" "GtkStyle" "GtkTooltip" "GtkAccelGroup"
64                 "GtkAccelMap" "GtkAction" "GtkActionGroup" "GtkBuilder" "GtkClipboard"
65                 "GtkEntryCompletion" "GtkIconFactory" "GtkIconTheme" "GtkIMContext"
66                 "GtkListStore" "GtkPageSetup" "GtkPrintContext" "GtkPrintOperation"
67                 "GtkPrintSettings" "GtkRecentManager" "GtkSizeGroup" "GtkStatusIcon"
68                 "GtkTextBuffer" "GtkTextChildAnchor" "GtkTextMark" "GtkTextTag"
69                 "GtkTextTagTable" "GtkTreeModelFilter" "GtkTreeModelSort"
70                 "GtkTreeSelection" "GtkTreeStore" "GtkUIManager" "GtkWindowGroup"
71                 "GtkToggleAction" "GtkRecentAction" "GtkRadioAction" "GtkItemFactory"
72                 "GtkPageSetupUnixDialog" "GtkPrintUnixDialog" "GtkInfoBar" "GtkSpinner")
73      :flags '("GtkTextSearchFlags" "GtkAccelFlags" "GtkArgFlags" "GtkAttachOptions"
74               "GtkButtonAction" "GtkCalendarDisplayOptions" "GtkCellRendererState"
75               "GtkDebugFlag" "GtkDestDefaults" "GtkDialogFlags" "GtkFileFilterFlags"
76               "GtkIconLookupFlags" "GtkObjectFlags" "GtkPrivateFlags" "GtkRcFlags"
77               "GtkRecentFilterFlags" "GtkSignalRunType" "GtkTargetFlags"
78               "GtkTreeModelFlags" "GtkUIManagerItemType" "GtkWidgetFlags")
79      :enums '("GtkTextDirection" "GtkSizeGroupMode" "GtkUnit" "GtkPrintStatus"
80               "GtkRecentSortType" "GtkFileChooserAction" "GtkCellRendererAccelMode"
81               "GtkCellRendererMode" "GtkTreeViewColumnSizing"
82               "GtkProgressBarOrientation" "GtkProgressBarStyle" "GtkUpdateType"
83               "GtkMetricType" "GtkSpinButtonUpdatePolicy" "GtkCurveType" "GtkImageType"
84               "GtkArrowType" "GtkSortType" "GtkToolbarStyle" "GtkWrapMode"
85               "GtkJustification" "GtkButtonBoxStyle" "GtkSelectionMode"
86               "GtkTreeViewGridLines" "GtkPackDirection" "GtkPolicyType" "GtkCornerType"
87               "GtkSensitivityType" "GtkShadowType" "GtkIconSize" "GtkOrientation"
88               "GtkPositionType" "GtkReliefStyle" "GtkMessageType" "GtkButtonsType"
89               "GtkWindowType" "GtkWindowPosition" "GtkResizeMode"
90               "GtkTextBufferTargetInfo" "GtkStateType" "GtkDirectionType"
91               "GtkDragResult" "GtkWidgetHelpType" "GtkPackType" "GtkNotebookTab"
92               "GtkMovementStep" "GtkAnchorType" "GtkAssistantPageType"
93               "GtkBuilderError" "GtkCellType" "GtkCListDragPos" "GtkCTreeExpanderStyle"
94               "GtkCTreeExpansionType" "GtkCTreeLineStyle" "GtkCTreePos" "GtkDeleteType"
95               "GtkExpanderStyle" "GtkFileChooserConfirmation" "GtkFileChooserError"
96               "GtkIconThemeError" "GtkIconViewDropPosition" "GtkIMPreeditStyle"
97               "GtkIMStatusStyle" "GtkMatchType" "GtkMenuDirectionType"
98               "GtkNumberUpLayout" "GtkPageOrientation" "GtkPageSet"
99               "GtkPathPriorityType" "GtkPathType" "GtkPreviewType" "GtkPrintDuplex"
100               "GtkPrintError" "GtkPrintOperationAction" "GtkPrintOperationResult"
101               "GtkPrintPages" "GtkPrintQuality" "GtkRcTokenType"
102               "GtkRecentChooserError" "GtkRecentManagerError" "GtkResponseType"
103               "GtkScrollStep" "GtkScrollType" "GtkSideType" "GtkSpinType"
104               "GtkSubmenuDirection" "GtkSubmenuPlacement" "GtkTextWindowType"
105               "GtkToolbarChildType" "GtkToolbarSpaceStyle" "GtkTreeViewDropPosition"
106               "GtkTreeViewMode" "GtkVisibility" "GtkEntryIconPosition")
107      :exclusions '("PangoStretch" "PangoVariant" "PangoStyle" "PangoUnderline" "GtkGLDrawingArea"
108                    "GtkCList" "GtkCTree" "GtkCombo" "GtkFileSelection" "GtkItemFactory" "GtkList"
109                    "GtkListItem" "GtkOldEditable" "GtkOptionMenu" "GtkPixmap" "GtkPreview"
110                    "GtkText" "GtkTooltips" "GtkTipsQuery" "GtkTree" "GtkTreeItem")
111      :additional-properties
112      '(("GtkWindow"
113         (:cffi gtk::focus gtk::gtk-window-focus (g-object gtk::widget)
114          "gtk_window_get_focus" "gtk_window_set_focus")
115         (:cffi gtk::default-widget gtk::gtk-window-default-widget (g-object gtk::widget)
116          "gtk_window_get_default_widget" "gtk_window_set_default")
117         (:cffi gtk::has-frame gtk::gtk-window-has-frame :boolean
118          "gtk_window_get_has_frame" "gtk_window_set_has_frame")
119         (:cffi gtk::mnemonic-modifier gtk::gtk-window-mnemonic-modifier (g-object gdk::modifier-type)
120          "gtk_window_get_mnemonic_modifier" "gtk_window_set_mnemonic_modifier")
121         (:cffi gtk::icon-list gtk::gtk-window-icon-list (glist gtk::pixbuf :free-from-foreign t :free-to-foreign t)
122          "gtk_window_get_icon_list" "gtk_window_set_icon_list")
123         (:cffi gtk::group gtk::gtk-window-group (g-object gtk::window-group)
124          "gtk_window_get_group" nil)
125         (:cffi gtk::keep-above gtk::gtk-window-keep-above :boolean
126          nil "gtk_window_set_keep_above")
127         (:cffi gtk::keep-below gtk::gtk-window-keep-below :boolean
128          nil "gtk_window_set_keep_below"))
129        ("GtkTreeViewColumn"
130         (:cffi gtk::tree-view gtk::tree-view-column-tree-view g-object
131          "gtk_tree_view_column_get_tree_view" nil)
132         (:cffi gtk::sort-column-id gtk::tree-view-column-sort-column-id :int
133          "gtk_tree_view_column_get_sort_column_id" "gtk_tree_view_column_set_sort_column_id")
134         (:cffi gtk::cell-renderers gtk::tree-view-column-cell-renderers (glist g-object  :free-from-foreign t)
135          "gtk_tree_view_column_get_cell_renderers" nil))
136        ("GtkTreeSelection"
137         (:cffi gtk::mode gtk::tree-selection-mode gtk::selection-mode
138          "gtk_tree_selection_get_mode" "gtk_tree_selection_set_mode")
139         (:cffi gtk::select-function gtk::tree-selection-select-function nil
140          gtk::tree-selection-get-selection-function gtk::tree-selection-set-select-function)
141         (:cffi gtk::tree-view gtk::tree-selection-tree-view (g-object gtk::tree-view)
142          "gtk_tree_selection_get_tree_view" nil))
143        ("GtkTreeView"
144         (:cffi gtk::selection gtk::tree-view-selection g-object
145          "gtk_tree_view_get_selection" nil)
146         (:cffi gtk::column-drag-function gtk::tree-view-column-drag-function nil
147          nil gtk::tree-view-set-column-drag-function)
148         (:cffi gtk::bin-window gtk::tree-view-bin-window g-object
149          "gtk_tree_view_get_bin_window" nil)
150         (:cffi gtk::search-equal-func gtk::tree-view-search-equal-func nil
151          nil gtk::tree-view-set-search-equal-func)
152         (:cffi gtk::search-entry gtk::tree-view-search-entry g-object
153          "gtk_tree_view_get_search_entry" "gtk_tree_view_set_search_entry")
154         (:cffi gtk::search-position-func gtk::tree-view-search-position-func nil
155          nil gtk::tree-view-set-search-position-func)
156         (:cffi gtk::row-separator-func gtk::tree-view-row-separator-func nil
157          nil gtk::tree-view-set-row-separartor-func))
158        ("GtkCellView"
159         (:cffi gtk::displayed-row gtk::cell-view-displayed-row (g-boxed-foreign gtk::tree-path)
160          "gtk_cell_view_get_displayed_row" "gtk_cell_view_set_displayed_row")
161         (:cffi gtk::cell-renderers gtk::cell-view-cell-renderers (glist (g-object gtk::cell-renderer) :free-from-foreign t)
162          "gtk_cell_view_get_cell_renderers" nil))
163        ("GtkComboBox"
164         (:cffi gtk::active-iter gtk::combo-box-active-iter (g-boxed-foreign gtk::tree-iter)
165          gtk::combo-box-get-active-iter "gtk_combo_box_set_active_iter")
166         (:cffi gtk::row-separator-func gtk::combo-box-separator-func nil
167          nil gtk::combo-box-set-separator-func)
168         (:cffi gtk::title gtk::combo-box-title (:string :free-from-foreign nil :free-to-foreign t)
169          "gtk_combo_box_get_title" "gtk_combo_box_set_title"))
170        ("GtkMenu"
171         (:cffi gtk::screen gtk::menu-screen g-object
172          nil "gtk_menu_set_screen")
173         (:cffi gtk::title gtk::menu-title (:string :free-from-foreign nil :free-to-foreign t)
174          "gtk_menu_get_title" "gtk_menu_set_title"))
175        ("GtkToolItem"
176         (:cffi gtk::expand gtk::tool-item-expand :boolean
177          "gtk_tool_item_get_expand" "gtk_tool_item_set_expand")
178         (:cffi gtk::use-drag-window gtk::tool-item-use-drag-window :boolean
179          "gtk_tool_item_get_use_drag_window" "gtk_tool_item_set_use_drag_window")
180         (:cffi gtk::icon-size gtk::tool-item-icon-size gtk::icon-size
181          "gtk_tool_item_get_icon_size" nil)
182         (:cffi gtk::orientation gtk::tool-item-orientation gtk::orientation
183          "gtk_tool_item_get_orientation" nil)
184         (:cffi gtk::toolbar-style gtk::tool-item-toolbar-style gtk::toolbar-style
185          "gtk_tool_item_get_toolbar_style" nil)
186         (:cffi gtk::relief-style gtk::tool-item-relief-style gtk::relief-style
187          "gtk_tool_item_get_relief_style" nil))
188        ("GtkMenuToolButton"
189         (:cffi gtk::arrow-tooltip-text gtk::menu-tool-button-arrow-tooltip-text :string
190          nil "gtk_menu_tool_button_set_arrow_tooltip_text")
191         (:cffi gtk::arrow-tooltip-markup gtk::menu-tool-button-arrow-tooltip-markup :string
192          nil "gtk_menu_tool_button_set_arrow_tooltip_markup"))
193        ("GtkRadioButton"
194         (:cffi gtk::group gtk::radio-button-group (gslist gtk::radio-button :free-from-foreign nil :free-to-foreign nil)
195          nil "gtk_radio_button_set_group"))
196        ("GtkUIManager"
197         (:cffi gtk::accel-group gtk::ui-manager-accel-group g-object
198          "gtk_ui_manager_get_accel_group" nil))
199        ("GtkActionGroup"
200         (:cffi gtk::translate-function gtk::action-group-translate-function nil
201          nil gtk::action-group-set-translate-func)
202         (:cffi gtk::translation-domain gtk::action-group-translation-domain nil
203          nil gtk::gtk-action-group-set-translation-domain))
204        ("GtkAction"
205         (:cffi gtk::accel-path gtk::action-accel-path (:string :free-from-foreign nil :free-to-foreign t)
206          "gtk_action_get_accel_path" "gtk_action_set_accel_path")
207         (:cffi gtk::accel-group gtk::action-accel-group g-object
208          nil "gtk_action_set_accel_group"))
209        ("GtkFileChooser"
210         (:cffi gtk::current-name gtk::file-chooser-current-name (:string :free-to-foreign t :encoding :utf-8)
211          nil "gtk_file_chooser_set_current_name")
212         (:cond :+win32
213          :cffi gtk::filename gtk::file-chooser-filename (glib:g-string :free-from-foreign t :free-to-foreign t)
214          "gtk_file_chooser_get_filename_utf8" "gtk_file_chooser_set_filename_utf8")
215         (:cond :-win32
216          :cffi gtk::filename gtk::file-chooser-filename (glib:g-string :free-from-foreign t :free-to-foreign t)
217          "gtk_file_chooser_get_filename" "gtk_file_chooser_set_filename")
218         (:cond :+win32
219          :cffi gtk::current-folder gtk::file-chooser-current-folder (glib:g-string :free-from-foreign t :free-to-foreign t)
220          "gtk_file_chooser_get_current_folder_utf8" "gtk_file_chooser_set_current_folder_utf8")
221         (:cond :-win32
222          :cffi gtk::current-folder gtk::file-chooser-current-folder (glib:g-string :free-from-foreign t :free-to-foreign t)
223          "gtk_file_chooser_get_current_folder" "gtk_file_chooser_set_current_folder")
224         (:cffi gtk::uri gtk::file-chooser-uri (glib:g-string :free-from-foreign t :free-to-foreign t)
225          "gtk_file_chooser_get_uri" "gtk_file_chooser_set_uri")
226         (:cffi gtk::current-folder-uri gtk::file-chooser-current-folder-uri (glib:g-string :free-from-foreign t :free-to-foreign t)
227          "gtk_file_chooser_get_current_folder_uri" "gtk_file_chooser_set_current_folder_uri")
228         (:cond :+win32
229          :cffi gtk::preview-filename gtk::file-chooser-preview-filename (glib:g-string :free-from-foreign t :free-to-foreign t)
230          "gtk_file_chooser_get_preview_filename_utf8" nil)
231         (:cond :-win32
232          :cffi gtk::preview-filename gtk::file-chooser-preview-filename (glib:g-string :free-from-foreign t :free-to-foreign t)
233          "gtk_file_chooser_get_preview_filename" nil)
234         (:cffi gtk::preview-uri gtk::file-chooser-preview-uri (glib:g-string :free-from-foreign t :free-to-foreign t)
235          "gtk_file_chooser_get_preview_uri" nil))
236        ("GtkFileFilter"
237         (:cffi gtk::name gtk::file-filter-name :string
238          "gtk_file_filter_get_name" "gtk_file_filter_set_name"))
239        ("GtkFontSelectionDialog"
240         (:cffi gtk::font-name gtk::font-selection-dialog-font-name (glib:g-string :free-from-foreign t :free-to-foreign t)
241          "gtk_font_selection_dialog_get_font_name" "gtk_font_selection_dialog_set_font_name")
242         (:cffi gtk::preview-text gtk::font-selection-dialog-preview-text :string
243          "gtk_font_selection_dialog_get_preview_text" "gtk_font_selection_dialog_set_preview_text")
244         (:cffi gtk::apply-button gtk::font-selection-dialog-apply-button g-object
245          "gtk_font_selection_dialog_get_apply_button" nil)
246         (:cffi gtk::cancel-button gtk::font-selection-dialog-cancel-button g-object
247          "gtk_font_selection_dialog_get_cancel_button" nil)
248         (:cffi gtk::ok-button gtk::font-selection-dialog-ok-button g-object
249          "gtk_font_selection_dialog_get_ok_button" nil))
250        ("GtkFixed"
251         (:cffi gtk::has-window gtk::fixed-has-window :boolean
252          "gtk_fixed_get_has_window" "gtk_fixed_set_has_window"))
253        ("GtkLayout"
254         (:cffi gtk::bin-window gtk::layout-bin-window g-object
255          "gtk_layout_get_bin_window" nil))
256        ("GtkCalendar"
257         (:cffi gtk::detail-function gtk::calendar-detail-function nil
258          nil gtk::calendar-set-detail-function)
259         (:cffi gtk::display-options gtk::calendar-display-options gtk::calendar-display-options
260          "gtk_calendar_get_display_options" "gtk_calendar_set_display_options"))
261        ("GtkContainer"
262         (:cffi gtk::focus-child gtk::container-focus-child g-object
263          "gtk_container_get_focus_child" "gtk_container_set_focus_child")
264         (:cffi gtk::focus-vadjustment gtk::container-focus-vadjustment g-object
265          "gtk_container_get_focus_vadjustment" "gtk_container_set_focus_vadjustment")
266         (:cffi gtk::focus-hadjustment gtk::container-focus-hadjustment g-object
267          "gtk_container_get_focus_hadjustment" "gtk_container_set_focus_hadjustment")
268         (:cffi gtk::reallocate-redraws gtk::container-reallocate-redraws :boolean
269          nil "gtk_container_set_reallocate_redraws"))
270        ("GtkWidget"
271         (:cffi gtk::parent-window gtk::widget-parent-window (g-object gdk::gdk-window)
272          "gtk_widget_get_parent_window" "gtk_widget_set_parent_window")
273         (:cffi gtk::toplevel gtk::widget-toplevel (g-object gtk::widget)
274          "gtk_widget_get_toplevel" nil)
275         (:cffi gtk::colormap gtk::widget-colormap (g-object gdk::gdk-colormap)
276          "gtk_widget_get_colormap" "gtk_widget_set_colormap")
277         (:cffi gtk::visual gtk::widget-visual (g-object gdk::visual)
278          "gtk_widget_get_visual" nil)
279         (:cffi gtk::modifier-style gtk::widget-modifier-style (g-object gtk::rc-style)
280          "gtk_widget_get_modifier_style" "gtk_widget_modify_style")
281         (:cffi gtk::pango-context gtk::widget-pango-context g-object
282          "gtk_widget_get_pango_context" nil)
283         (:cffi gtk::child-visible gtk::widget-child-visible :boolean
284          "gtk_widget_get_child_visible" "gtk_widget_set_child_visible")
285         (:cffi gtk::direction gtk::widget-direction gtk::text-direction
286          "gtk_widget_get_direction" "gtk_widget_set_direction")
287         (:cffi gtk::composite-name gtk::widget-composite-name (glib:g-string :free-from-foreign t :free-to-foreign t)
288          "gtk_widget_get_composite_name" "gtk_widget_set_composite_name")
289         (:cffi gtk::redraw-on-allocate gtk::widget-redraw-on-allocate :boolean
290          nil "gtk_widget_set_redraw_on_allocate")
291         (:cffi gtk::accessible gtk::widget-accessible g-object
292          "gtk_widget_get_accessible" nil)
293         (:cffi gtk::tooltip-window gtk::widget-tooltip-window g-object
294          "gtk_widget_get_tooltip_window" "gtk_widget_set_tooltip_window")
295         (:cffi gtk::style gtk::widget-style (g-object gtk::style)
296          "gtk_widget_get_style" "gtk_widget_set_style"))
297        ("GtkWindowGroup"
298         (:cffi gtk::windows gtk::window-group-windows (glist (g-object gtk::gtk-window))
299          "gtk_window_group_list_windows" nil))
300        ("GtkTextTag"
301         (:cffi gtk::priority gtk::text-tag-priority :int
302          "gtk_text_tag_get_priority" "gtk_text_tag_set_priority"))
303        ("GtkDialog"
304         (:cffi gtk::content-area gtk::dialog-content-area (g-object gtk::v-box)
305          "gtk_dialog_get_content_area" nil)
306         (:cffi gtk::action-area gtk::dialog-action-area (g-object gtk::widget)
307          "gtk_dialog_get_action_area" nil)
308         (:cffi gtk::default-response gtk::dialog-default-response gtk::response-type
309          nil "gtk_dialog_set_default_response"))
310        ("GtkAssistant"
311         (:cffi gtk::current-page gtk::assistant-current-page :int
312          "gtk_assistant_get_current_page" "gtk_assistant_set_current_page")
313         (:cffi gtk::n-pages gtk::assistant-n-pages :int
314          "gtk_assistant_get_n_pages" nil)
315         (:cffi gtk::forward-page-function gtk::assistant-forward-page-function nil
316          nil gtk::set-assistant-forward-page-function))
317        ("GtkLabel"
318         (:cffi gtk::line-wrap gtk::label-line-wrap :boolean
319          "gtk_label_get_line_wrap" "gtk_label_set_line_wrap")
320         (:cffi gtk::line-wrap-mode gtk::label-line-wrap-mode gtk::pango-wrap-mode
321          "gtk_label_get_line_wrap_mode" "gtk_label_set_line_wrap_mode")
322         (:cffi gtk::layout gtk::label-layout g-object
323          "gtk_label_get_layout" nil)
324         (:cffi gtk::selection-bounds gtk::label-selection-bounds nil
325          gtk::gtk-label-get-selection-bounds nil)
326         (:cffi gtk::layout-offsets gtk::label-layout-offsets nil
327          gtk::gtk-label-get-layout-offsets nil))
328        ("GtkEntry"
329         (:cffi gtk::layout gtk::entry-layout g-object
330          "gtk_entry_get_layout" nil)
331         (:cffi gtk::completion gtk::entry-completion (g-object gtk::entry-completion)
332          "gtk_entry_get_completion" "gtk_entry_set_completion")
333         (:cffi gtk::cursor-hadjustment gtk::entry-cursor-hadjustment (g-object gtk::adjustment)
334          "gtk_entry_get_cursor_hadjustment" "gtk_entry_set_cursor_hadjustment")
335         (:cffi gtk::layout-offset gtk::entry-layout-offset nil
336          gtk::gtk-entry-layout-offset nil))
337        ("GtkPageSetupUnixDialog"
338         (:cffi gtk::page-setup gtk::page-setup-unix-dialog-page-setup (g-object gtk::page-setup)
339          "gtk_page_setup_unix_dialog_get_page_setup" "gtk_page_setup_unix_dialog_set_page_setup")
340         (:cffi gtk::print-settings gtk::page-setup-unix-dialog-print-settings (g-object gtk::print-settings)
341          "gtk_page_setup_unix_dialog_get_print_settings" "gtk_page_setup_unix_dialog_set_print_settings"))
342        ("GtkEntryCompletion"
343         (:cffi gtk::entry gtk::entry-completion-entry (g-object gtk::entry)
344          "gtk_entry_completion_get_entry" nil)
345         (:cffi gtk::match-function gtk::entry-completion-match-function nil
346          nil gtk::gtk-entry-completion-set-match-function))
347        ("GtkEditable"
348         (:cffi gtk::position gtk::editable-position :int
349          "gtk_editable_get_position" "gtk_editable_set_position")
350         (:cffi gtk::editable gtk::editable-editable :boolean
351          "gtk_editable_get_editable" "gtk_editable_set_editable"))
352        ("GtkTextMark"
353         (:cffi gtk::visible gtk::text-mark-visible :boolean
354          "gtk_text_mark_get_visible" "gtk_text_mark_set_visible")
355         (:cffi gtk::deleted gtk::text-mark-deleted :boolean
356          "gtk_text_mark_get_deleted" nil)
357         (:cffi gtk::buffer gtk::text-mark-buffer (g-object gtk::text-buffer)
358          "gtk_text_mark_get_buffer" nil))
359        ("GtkTextBuffer"
360         (:cffi gtk::modified gtk::text-buffer-modified :boolean
361          "gtk_text_buffer_get_modified" "gtk_text_buffer_set_modified"))
362        ("GtkToolShell"
363         (:cffi gtk::icon-size gtk::tool-shell-icon-size gtk::icon-size
364          "gtk_tool_shell_get_icon_size" nil)
365         (:cffi gtk::orientation gtk::tool-shell-orientation gtk::orientation
366          "gtk_tool_shell_get_orientation" nil)
367         (:cffi gtk::relief-style gtk::tool-shell-relief-style gtk::relief-style
368          "gtk_tool_shell_get_relief_style" nil)
369         (:cffi gtk::style gtk::tool-shell-style gtk::toolbar-style
370          "gtk_tool_shell_get_style" nil))
371        ("GtkColorSelection"
372         (:cffi gtk::previous-alpha gtk::color-selection-previous-alpha :uint16
373          "gtk_color_selection_get_previous_alpha" "gtk_color_selection_set_previous_alpha")
374         (:cffi gtk::previous-color gtk::color-selection-previous-color (g-boxed-foreign gdk::color)
375          gtk::gtk-color-selection-get-previous-color gtk::gtk-color-selection-set-previous-color))
376        ("GtkScrolledWindow"
377         (:cffi gtk::hscrollbar gtk::scrolled-window-hscrollbar (g-object gtk::widget)
378          "gtk_scrolled_window_get_hscrollbar" nil)
379         (:cffi gtk::vscrollbar gtk::scrolled-window-vscrollbar (g-object gtk::widget)
380          "gtk_scrolled_window_get_vscrollbar" nil))
381        ("GtkBin"
382         (:cffi gtk::child gtk::bin-child (g-object gtk::widget)
383          "gtk_bin_get_child" nil))
384        ("GtkTextChildAnchor"
385         (:cffi gtk::deleted-p gtk::text-child-anchor-deleted-p :boolean
386          "gtk_text_child_anchor_get_deleted" nil))
387        ("GtkInfoBar"
388         (:cffi gtk::action-area gtk::info-bar-action-area (g-object gtk::widget)
389          "gtk_info_bar_get_action_area" nil)
390         (:cffi gtk::content-area gtk::info-bar-content-area (g-object gtk::widget)
391          "gtk_info_bar_get_content_area" nil))))))
392
393 (defun gtk-generate-child-properties (filename)
394   (with-open-file (stream filename :direction :output :if-exists :supersede)
395     (let ((*package* (find-package :gtk))
396           (*print-case* :downcase))
397      (write-string "(in-package :gtk)" stream)
398      (terpri stream)
399      (format stream "~{~S~%~%~}" (gtk:generate-child-properties)))))