X-Git-Url: https://git.distorted.org.uk/~mdw/clg/blobdiff_plain/112ac1d33aa8f9b7f3d2f9542d15431f152b1d35..88fb7daa3594bf796f3d50b2ab2fa4340a1bd68b:/gtk/gtktypes.lisp diff --git a/gtk/gtktypes.lisp b/gtk/gtktypes.lisp index 09fadb1..1927a52 100644 --- a/gtk/gtktypes.lisp +++ b/gtk/gtktypes.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: gtktypes.lisp,v 1.37 2005-04-23 16:48:52 espen Exp $ +;; $Id: gtktypes.lisp,v 1.49 2006-08-14 13:57:37 espen Exp $ (in-package "GTK") @@ -110,11 +110,11 @@ :accessor stock-item-translation-domain :initarg :translation-domain :type string)) - (:metaclass struct-class)) + (:metaclass struct-class) + (:ref stock-item-copy) + (:unref stock-item-free)) -;; We don't really need to access any of these slots, but we need to -;; specify the size of the struct somehow -(defclass tree-iter (boxed) +(defclass tree-iter (boxed) ((stamp :allocation :alien :type int) (user-data :allocation :alien :type pointer) (user-data2 :allocation :alien :type pointer) @@ -133,8 +133,16 @@ (deftype position () '(or int (enum (:start 0) (:end -1) (:first 0) (:last -1)))) -(defmethod reader-function ((type (eql 'position)) &rest args) - (declare (ignore type args)) +(define-type-method from-alien-form ((type position) form &key ref) + (declare (ignore type ref)) + (from-alien-form 'int form)) + +(define-type-method from-alien-function ((type position) &key ref) + (declare (ignore type ref)) + (from-alien-function 'int)) + +(define-type-method reader-function ((type position) &optional ref) + (declare (ignore type ref)) (reader-function 'int)) (define-types-by-introspection "Gtk" @@ -150,7 +158,7 @@ ("GtkWidget" :slots ((child-properties - :allocation :instance + :special t :accessor widget-child-properties :type container-child) (window @@ -222,14 +230,13 @@ ((child :ignore t) (children :allocation :virtual - :getter container-children :setter (setf container-children) - ;; The following doesn't work because gtk_container_get_children doesn't - ;; increase the reference count of the children -; :getter "gtk_container_get_children" -; :reader container-children -; :type (glist widget) - ) + :getter "gtk_container_get_children" + :reader container-children + :type (glist (copy-of widget))) + (internal-children ; for debugging + :allocation :virtual + :getter container-internal-children) (child-type :allocation :virtual :getter "gtk_container_child_type" @@ -302,7 +309,7 @@ :type boolean) (icon-list :allocation :virtual - :getter "gtk_window_get_icon_list" + :getter %window-get-icon-list :setter "gtk_window_set_icon_list" :accessor window-icon-list :initarg :icon-list @@ -332,6 +339,7 @@ (default-height :merge t :unbound -1))) ("GtkWindowGroup" + :dependencies (window) :slots ((grabs :allocation :alien @@ -375,6 +383,15 @@ :initarg :submenu :type widget))) + ("GtkMenuShell" + :slots + ((take-focus-p + :allocation :virtual + :getter "gtk_menu_shell_get_take_focus" + :setter "gtk_menu_shell_set_take_focus" + :accessor menu-shell-take-focus-p + :type boolean))) + ("GtkColorSelectionDialog" :slots ((colorsel @@ -396,13 +413,27 @@ ("GtkScrolledWindow" :slots - ((hscrollbar - :allocation :alien + (#?-(pkg-exists-p "gtk+-2.0" :atleast-version "2.8.0") + (hscrollbar + :allocation :alien :reader scrolled-window-hscrollbar :type widget) + #?-(pkg-exists-p "gtk+-2.0" :atleast-version "2.8.0") (vscrollbar :allocation :alien :reader scrolled-window-vscrollbar + :type widget) + #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.8.0") + (hscrollbar + :allocation :virtual + :getter "gtk_scrolled_window_get_hscrollbar" + :reader scrolled-window-hscrollbar + :type widget) + #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.8.0") + (vscrollbar + :allocation :virtual + :getter "gtk_scrolled_window_get_vscrollbar" + :reader scrolled-window-vscrollbar :type widget))) ("GtkPaned" @@ -450,7 +481,7 @@ :getter "gtk_menu_get_attach_widget" :reader menu-attach-widget :type widget) - #-gtk2.6 + #?-(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0") (tearoff-state :allocation :virtual :getter "gtk_menu_get_tearoff_state" @@ -459,6 +490,22 @@ :initarg :tearoff-state :type boolean))) + ("GtkPlug" + :slots + ((id + :allocation :virtual + :getter "gtk_plug_get_id" + :reader plug-id + :type gdk:native-window))) + + ("GtkSocket" + :slots + ((id + :allocation :virtual + :getter "gtk_socket_get_id" + :reader socket-id + :type gdk:native-window))) + ("GtkToolbar" :slots ((show-tooltips @@ -616,13 +663,14 @@ :reader entry-layout :type pango:layout) (completion + :allocation :virtual :getter "gtk_entry_get_completion" :setter "gtk_entry_set_completion" :initarg :completion :accessor entry-completion :type entry-completion) (max-length :merge t :unbound 0) - #+gtk2.6 + #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0") (width-chars :merge t :unbound -1))) ("GtkEntryCompletion" @@ -633,7 +681,7 @@ :reader entry-completion-entry :type entry) (minimum-key-length :merge t :unbound -1) - #+gtk2.6 + #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0") (text-column :merge t :unbound -1))) ("GtkRadioButton" @@ -713,7 +761,7 @@ ("GtkImage" :slots ((file :ignore t) - #+gtk2.6 + #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0") (pixel-size :merge t :unbound -1))) ("GtkLabel" @@ -950,7 +998,7 @@ :allocation :virtual :getter "gtk_toggle_action_get_active" :setter "gtk_toggle_action_set_active" - :initarg :active +; :initarg :active :accessor toggle-action-active-p :type boolean))) @@ -997,12 +1045,30 @@ :reader clipboard-display :type gdk:display))) - #+gtk2.6 + #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0") ("GtkIconView" :slots - ((text-column :merge t :setter %icon-view-set-text-column) - (markup-column :merge t :setter %icon-view-set-markup-column) - (pixbuf-column :merge t :setter %icon-view-set-pixbuf-column))) + ((text-column + :allocation :virtual + :getter %icon-view-get-text-column + :setter %icon-view-set-text-column + :boundp %icon-view-text-column-boundp + :initarg :text-column + :accessor icon-view-text-column) + (markup-column + :allocation :virtual + :getter %icon-view-get-markup-column + :setter %icon-view-set-tmarkup-column + :boundp %icon-view-markup-column-boundp + :initarg :markup-column + :accessor icon-view-markup-column) + (pixbuf-column + :allocation :virtual + :getter %icon-view-get-pixbuf-column + :setter %icon-view-set-pixbuf-column + :boundp %icon-view-pixbuf-column-boundp + :initarg :pixbuf-column + :accessor icon-view-pixbuf-column))) ;; Not needed ("GtkFundamentalType" :ignore t) @@ -1076,15 +1142,9 @@ :getter "gtk_text_iter_get_visible_line_offset" :setter "gtk_text_iter_set_visible_line_offset" :accessor text-iter-visible-line-offset - :type int) - ;; Workaround to get correct size - (dummy14 - :allocation :alien :offset #.(* 13 (size-of 'pointer)) - :type pointer)) - (:metaclass boxed-class - ;; I am pretty sure this was working in older versons on CMUCL -; :size #.(* 14 (size-of 'pointer)) - )) + :type int)) + (:metaclass boxed-class) + (:size #.(* 14 (size-of 'pointer)))) (defclass tooltips-data (struct) @@ -1128,3 +1188,84 @@ :initarg :mime-type :type string)) (:metaclass struct-class)) + + +(defclass accel-key (struct) + ((key + :allocation :alien + :type unsigned-int) + (modifiers + :allocation :alien + :type gdk:modifier-type) + (flags + :allocation :alien + :type (unsigned 16))) + (:metaclass struct-class)) + +(defclass accel-group-entry (struct) + ((key + :allocation :alien + :setter nil + :type (inlined accel-key)) + (gclosure + :allocation :alien + :type gclosure) + (accel_path_quark + :allocation :alien + :type quark)) + (:metaclass struct-class)) + +#?(pkg-exists-p "gtk+-2.0" :atleast-version "2.8.0") +(define-enum-type drop-position + :no-drop :drop-into :drop-left :drop-right :drop-above :drop-below) + + +(defclass target-entry (struct) + ((target + :allocation :alien + :accessor target-entry-target + :initarg :target + :type string) + (flags + :allocation :alien + :accessor target-entry-flags + :initarg :flags + :type target-flags) + (id + :allocation :alien + :accessor target-entry-id + :initarg :id + :type unsigned-int)) + (:metaclass struct-class)) + + +(defclass selection-data (boxed) + ((selection + :allocation :alien :type gdk:atom + :reader selection-data-selection) + (target + :allocation :alien :type gdk:atom + :reader selection-data-target) + (type + :allocation :alien :type gdk:atom + :reader selection-data-type) + (format + :allocation :alien :type int + :reader selection-data-format) + (data + :allocation :alien :type pointer + :reader selection-data-data) + (length + :allocation :alien :type int + :reader selection-data-length) + (display + :allocation :alien :type gdk:display + :reader selection-data-display)) + (:metaclass boxed-class)) + + +(defclass target-list (proxy) + () + (:metaclass proxy-class) + (:ref target-list-ref) + (:unref target-list-unref))