1 (defpackage :gtk-generation
2 (:use :cl :gobject :cffi :glib)
3 (:export #:gtk-generate))
5 (in-package :gtk-generation)
7 (load-foreign-library "libgtk-x11-2.0.so")
9 (defcfun gtk-init-check :boolean
10 (argc (:pointer :int))
11 (argv (:pointer (:pointer :string))))
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"))
22 (unless (gtk-init-check argc argv)
23 (error "Cannot initialize Gtk+"))
24 (foreign-free (mem-ref argv '(:pointer :string))))))
28 (defcfun gtk-test-register-all-types :void)
30 (gtk-test-register-all-types)
32 (defun gtk-generate (filename)
33 (with-open-file (stream filename :direction :output :if-exists :supersede)
34 (gobject::generate-types-hierarchy-to-file
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 :prologue (format nil "(in-package :gtk)")
45 :interfaces '("GtkBuildable"
55 "GtkPrintOperationPreview"
58 "AtkImplementorIface")
59 :objects '("GtkSettings" "GtkRcStyle" "GtkStyle" "GtkTooltip" "GtkAccelGroup"
60 "GtkAccelMap" "GtkAction" "GtkActionGroup" "GtkBuilder" "GtkClipboard"
61 "GtkEntryCompletion" "GtkIconFactory" "GtkIconTheme" "GtkIMContext"
62 "GtkListStore" "GtkPageSetup" "GtkPrintContext" "GtkPrintOperation"
63 "GtkPrintSettings" "GtkRecentManager" "GtkSizeGroup" "GtkStatusIcon"
64 "GtkTextBuffer" "GtkTextChildAnchor" "GtkTextMark" "GtkTextTag"
65 "GtkTextTagTable" "GtkTreeModelFilter" "GtkTreeModelSort"
66 "GtkTreeSelection" "GtkTreeStore" "GtkUIManager" "GtkWindowGroup")
67 :flags '("GtkTextSearchFlags" "GtkAccelFlags" "GtkArgFlags" "GtkAttachOptions"
68 "GtkButtonAction" "GtkCalendarDisplayOptions" "GtkCellRendererState"
69 "GtkDebugFlag" "GtkDestDefaults" "GtkDialogFlags" "GtkFileFilterFlags"
70 "GtkIconLookupFlags" "GtkObjectFlags" "GtkPrivateFlags" "GtkRcFlags"
71 "GtkRecentFilterFlags" "GtkSignalRunType" "GtkTargetFlags"
72 "GtkTreeModelFlags" "GtkUIManagerItemType" "GtkWidgetFlags")
73 :enums '("GtkTextDirection" "GtkSizeGroupMode" "GtkUnit" "GtkPrintStatus"
74 "GtkRecentSortType" "GtkFileChooserAction" "GtkCellRendererAccelMode"
75 "GtkCellRendererMode" "GtkTreeViewColumnSizing"
76 "GtkProgressBarOrientation" "GtkProgressBarStyle" "GtkUpdateType"
77 "GtkMetricType" "GtkSpinButtonUpdatePolicy" "GtkCurveType" "GtkImageType"
78 "GtkArrowType" "GtkSortType" "GtkToolbarStyle" "GtkWrapMode"
79 "GtkJustification" "GtkButtonBoxStyle" "GtkSelectionMode"
80 "GtkTreeViewGridLines" "GtkPackDirection" "GtkPolicyType" "GtkCornerType"
81 "GtkSensitivityType" "GtkShadowType" "GtkIconSize" "GtkOrientation"
82 "GtkPositionType" "GtkReliefStyle" "GtkMessageType" "GtkButtonsType"
83 "GtkWindowType" "GtkWindowPosition" "GtkResizeMode"
84 "GtkTextBufferTargetInfo" "GtkStateType" "GtkDirectionType"
85 "GtkDragResult" "GtkWidgetHelpType" "GtkPackType" "GtkNotebookTab"
86 "GtkMovementStep" "GtkAnchorType" "GtkAssistantPageType"
87 "GtkBuilderError" "GtkCellType" "GtkCListDragPos" "GtkCTreeExpanderStyle"
88 "GtkCTreeExpansionType" "GtkCTreeLineStyle" "GtkCTreePos" "GtkDeleteType"
89 "GtkExpanderStyle" "GtkFileChooserConfirmation" "GtkFileChooserError"
90 "GtkIconThemeError" "GtkIconViewDropPosition" "GtkIMPreeditStyle"
91 "GtkIMStatusStyle" "GtkMatchType" "GtkMenuDirectionType"
92 "GtkNumberUpLayout" "GtkPageOrientation" "GtkPageSet"
93 "GtkPathPriorityType" "GtkPathType" "GtkPreviewType" "GtkPrintDuplex"
94 "GtkPrintError" "GtkPrintOperationAction" "GtkPrintOperationResult"
95 "GtkPrintPages" "GtkPrintQuality" "GtkRcTokenType"
96 "GtkRecentChooserError" "GtkRecentManagerError" "GtkResponseType"
97 "GtkScrollStep" "GtkScrollType" "GtkSideType" "GtkSpinType"
98 "GtkSubmenuDirection" "GtkSubmenuPlacement" "GtkTextWindowType"
99 "GtkToolbarChildType" "GtkToolbarSpaceStyle" "GtkTreeViewDropPosition"
100 "GtkTreeViewMode" "GtkVisibility")
101 :exclusions '("PangoStretch" "PangoVariant" "PangoStyle" "PangoUnderline")
102 :additional-properties
103 '(("GtkTreeViewColumn"
104 (:cffi gtk::tree-view gtk::tree-view-column-tree-view g-object "gtk_tree_view_column_get_tree_view" nil)
105 (: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")
106 (: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))
108 (:cffi gtk::mode gtk::tree-selection-mode gtk::tree-selection-mode "gtk_tree_selection_get_mode" "gtk_tree_selection_set_mode")
109 (:cffi gtk::select-function gtk::tree-selection-select-function nil gtk::tree-selection-get-selection-function gtk::tree-selection-set-select-function))
111 (:cffi gtk::selection gtk::tree-view-selection g-object "gtk_tree_view_get_selection" nil)
112 (:cffi gtk::column-drag-function gtk::tree-view-column-drag-function nil nil gtk::tree-view-set-column-drag-function)
113 (:cffi gtk::bin-window gtk::tree-view-bin-window g-object "gtk_tree_view_get_bin_window" nil)
114 (:cffi gtk::search-equal-func gtk::tree-view-search-equal-func nil nil gtk::tree-view-set-search-equal-func)
115 (:cffi gtk::search-entry gtk::tree-view-search-entry g-object "gtk_tree_view_get_search_entry" "gtk_tree_view_set_search_entry")
116 (:cffi gtk::search-position-func gtk::tree-view-search-position-func nil nil gtk::tree-view-set-search-position-func)
117 (:cffi gtk::row-separator-func gtk::tree-view-row-separator-func nil nil gtk::tree-view-set-row-separartor-func))
119 (: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"))))))