initial attempt at tree-view
[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      :prologue (format nil "(in-package :gtk)")
45      :interfaces '("GtkBuildable"
46                    "GtkCellEditable"
47                    "GtkCellLayout"
48                    "GtkEditable"
49                    "GtkFileChooser"
50                    "GtkFileChooserEmbed"
51                    "GtkTreeModel"
52                    "GtkTreeDragSource"
53                    "GtkTreeDragDest"
54                    "GtkTreeSortable"
55                    "GtkPrintOperationPreview"
56                    "GtkRecentChooser"
57                    "GtkToolShell"
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))
107        ("GtkTreeSelection"
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))
110        ("GtkTreeView"
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))
118        ("GtkCellView"
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"))))))