(no subject)
Jan. 31st, 2009 03:41 amСмог понять, как создавать свои типы GObject'ов и реализовывать в них интерфейсы (с помощью одного макроса по описанию интерфейса генерируется код инициализации интерфейса, callback'и, перенаправляющие вызов метода интерфейса в вызов generic function, и собственно сами generic function).
Попробовал реализовать интерфейс GtkTreeModel — работает.
Пожалуй, это один из нетривиальных моментов.
(defun test-treeview () (let* ((window (make-instance 'gtk:gtk-window :type :toplevel :title "Treeview" :border-width 30)) (model (make-instance 'tree-model)) (tv (make-instance 'gtk:tree-view :model model :headers-visible t))) (g-signal-connect window "destroy" (lambda (w) (declare (ignore w)) (gtk:gtk-main-quit))) (let ((column (make-instance 'gtk:tree-view-column :title "Number")) (renderer (make-instance 'gtk:cell-renderer-text :text "A text"))) (%gtk-tree-view-column-pack-start column renderer t) (%gtk-tree-view-column-add-attribute column renderer "text" 0) (%gtk-tree-view-append-column tv column)) (gtk:container-add window tv) (gtk:gtk-widget-show-all window) (gtk:gtk-main)))
