+ ("GtkRuler"
+ :slots
+ ((metric
+ :allocation :virtual
+ :getter "gtk_ruler_get_metric"
+ :setter "gtk_ruler_set_metric"
+ :accessor ruler-metric
+ :initarg :metric
+ :type metric-type)))
+
+ ("GtkProgressBar"
+ :slots
+ ; deprecated properties
+ ((bar-style :ignore t)
+ (adjustment :ignore t)
+ (activity-step :ignore t)
+ (activity-blocks :ignore t)
+ (discrete-blocks :ignore t)))
+
+ ("GtkHandleBox"
+ :slots
+ ; deprecated property
+ ((shadow :ignore t)))
+
+ ("GtkFrame"
+ :slots
+ ; deprecated property
+ ((shadow :ignore t)))
+
+ ("GtkTable"
+ :slots
+ ((column-spacing
+ :allocation :property :pname "column-spacing"
+ :initarg :column-spacing
+ :type unsigned-int)
+ (row-spacing
+ :allocation :property :pname "row-spacing"
+ :initarg :row-spacing
+ :type unsigned-int)))
+
+ ("GtkDialog"
+ :slots
+ ((vbox
+ :allocation :virtual
+ :getter "gtk_dialog_get_vbox"
+ :reader dialog-vbox
+ :type widget)
+ (action-area
+ :allocation :virtual
+ :getter "gtk_dialog_get_action_area"
+ :reader dialog-action-area
+ :type widget)))
+
+ ("GtkEntry"
+ :slots
+ ((layout
+ :allocation :virtual
+ :getter "gtk_entry_get_layout"
+ :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)
+ #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0")
+ (width-chars :merge t :unbound -1)))
+
+ ("GtkEntryCompletion"
+ :slots
+ ((entry
+ :allocation :virtual
+ :getter "gtk_entry_completion_get_entry"
+ :reader entry-completion-entry
+ :type entry)
+ (minimum-key-length :merge t :unbound -1)
+ #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0")
+ (text-column :merge t :unbound -1)))
+
+ ("GtkRadioButton"
+ :slots
+ ((group
+ :allocation :virtual
+ :getter "gtk_radio_button_get_group"
+ :reader radio-button-group
+ :type (copy-of (gslist widget)))
+ (value
+ :allocation :user-data
+ :initarg :value
+ :accessor radio-button-value
+ :documentation "Value passed as argument to the activate callback")))
+
+ ("GtkRadioMenuItem"
+ :slots
+ ((group
+ :allocation :virtual
+ :getter "gtk_radio_menu_item_get_group"
+ :reader radio-menu-item-group
+ :type (copy-of (gslist widget)))
+ (value
+ :allocation :user-data
+ :initarg :value
+ :accessor radio-menu-item-value
+ :documentation "Value passed as argument to the activate callback")))
+
+ ("GtkLayout"
+ :slots
+ ((bin-window
+ :allocation :virtual
+ :getter "gtk_layout_get_bin_window"
+ :reader layout-bin-window
+ :type gdk:window)))
+
+ ("GtkFixed"
+ :slots
+ ((has-window
+ :allocation :virtual
+ :getter "gtk_fixed_get_has_window"
+ :setter "gtk_fixed_set_has_window"
+ :reader fixed-has-window-p
+ :initarg :has-window
+ :type boolean)))
+
+ ("GtkRange"
+ :slots
+ ((value
+ :allocation :virtual
+ :getter "gtk_range_get_value"
+ :setter "gtk_range_set_value"
+ :initarg :value
+ :accessor range-value
+ :type double-float)
+ (upper
+ :allocation :virtual
+ :getter range-upper
+ :setter (setf range-upper)
+ :initarg :upper)
+ (lower
+ :allocation :virtual
+ :getter range-lower
+ :setter (setf range-lower)
+ :initarg :lower)
+ (step-increment
+ :allocation :virtual
+ :getter range-step-increment
+ :setter (setf range-step-increment)
+ :initarg :step-increment)
+ (page-increment
+ :allocation :virtual
+ :getter range-page-increment
+ :setter (setf range-page-increment)
+ :initarg :page-increment)))
+
+ ("GtkImage"
+ :slots
+ ((file :ignore t)
+ #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0")
+ (pixel-size :merge t :unbound -1)))
+
+ ("GtkLabel"
+ :slots
+ ((layout
+ :allocation :virtual
+ :getter "gtk_label_get_layout"
+ :reader label-layout
+ :type pango:layout)))
+
+ ("GtkScale"
+ :slots
+ ((layout
+ :allocation :virtual
+ :getter "gtk_scale_get_layout"
+ :reader scale-layout
+ :type pango:layout)))
+
+ ("GtkEditable"
+ :slots
+ ((editable
+ :allocation :virtual
+ :getter "gtk_editable_get_editable"
+ :setter "gtk_editable_set_editable"
+ :reader editable-editable-p
+ :initarg :editable
+ :type boolean)
+ (position
+ :allocation :virtual
+ :getter "gtk_editable_get_position"
+ :setter "gtk_editable_set_position"
+ :reader editable-position
+ :initarg :position
+ :type position)
+ (text
+ :allocation :virtual
+ :getter editable-text
+ :setter (setf editable-text)
+ :initarg text)))
+
+ ("GtkFileChooser"
+ :slots
+ ((filename
+ :allocation :virtual
+ :getter "gtk_file_chooser_get_filename"
+ :setter "gtk_file_chooser_set_filename"
+ :accessor file-chooser-filename
+ :initarg :filename
+ :type string)
+ (current-name
+ :allocation :virtual
+ :setter "gtk_file_chooser_set_current_name"
+ :accessor file-chooser-current-name
+ :initarg :current-name
+ :type string)
+ (current-folder
+ :allocation :virtual
+ :setter "gtk_file_chooser_set_current_folder"
+ :setter "gtk_file_chooser_get_current_folder"
+ :accessor file-chooser-current-folder
+ :initarg :current-folder
+ :type string)
+ (uri
+ :allocation :virtual
+ :getter "gtk_file_chooser_get_uri"
+ :setter "gtk_file_chooser_set_uri"
+ :accessor file-chooser-uri
+ :initarg :uri
+ :type string)
+ (current-folder-uri
+ :allocation :virtual
+ :setter "gtk_file_chooser_set_current_folder_uri"
+ :setter "gtk_file_chooser_get_current_folder_uri"
+ :accessor file-chooser-current-folder-uri
+ :initarg :current-folder-uri
+ :type string)))
+
+ ("GtkFileFilter"
+ :slots
+ ((name
+ :allocation :virtual
+ :getter "gtk_file_filter_get_name"
+ :setter "gtk_file_filter_set_name"
+ :accessor file-filter-name
+ :initarg :name
+ :type string)))
+
+ ("GtkTreeView"
+ :slots
+ ((columns
+ :allocation :virtual
+ :getter "gtk_tree_view_get_columns"
+ :reader tree-view-columns
+ :type (glist tree-view-column))
+ (selection
+ :allocation :virtual
+ :getter "gtk_tree_view_get_selection"
+ :reader tree-view-selection
+ :type tree-selection)))
+
+ ("GtkTreeModel"
+ :slots
+ ((n-columns
+ :allocation :virtual
+ :getter "gtk_tree_model_get_n_columns"
+ :reader tree-model-n-columns
+ :type int)))
+
+ ("GtkTreeSelection"
+ :slots
+ ((mode
+ :allocation :virtual
+ :getter "gtk_tree_selection_get_mode"
+ :setter "gtk_tree_selection_set_mode"
+ :accessor tree-selection-mode
+ :initarg :mode
+ :type selection-mode)
+ (tree-view
+ :allocation :virtual
+ :getter "gtk_tree_selection_get_mode"
+ :reader tree-selection-mode
+ :type tree-view)))
+
+ ("GtkComboBox"
+ :slots
+ ((active-iter
+ :allocation :virtual
+ :getter "gtk_combo_box_get_active_iter"
+ :setter "gtk_combo_box_set_active_iter"
+ :accessor combo-box-active-iter
+ :type tree-iter)))
+
+ ("GtkTextBuffer"
+ :slots
+ ((line-count
+ :allocation :virtual
+ :getter "gtk_text_buffer_get_line_count"
+ :reader text-buffer-line-count
+ :type int)
+ (char-count
+ :allocation :virtual
+ :getter "gtk_text_buffer_get_char_count"
+ :reader text-buffer-char-count
+ :type int)
+ (modified
+ :allocation :virtual
+ :getter "gtk_text_buffer_get_modified"
+ :setter "gtk_text_buffer_set_modified"
+ :accessor text-buffer-modifed-p
+ :type boolean)))
+
+ ("GtkTextView"
+ :slots
+ ((default-attributes
+ :allocation :virtual
+ :getter "gtk_text_view_get_default_attributes"
+ :reader text-view-default-attributes
+ :type text-attributes)))
+
+ ("GtkTextTagTable"
+ :slots
+ ((size
+ :allocation :virtual
+ :getter "gtk_text_tag_table_get_size"
+ :reader text-tag-table-size
+ :type int)))
+
+ ("GtkTextTag"
+ :slots
+ ((priority
+ :allocation :virtual
+ :getter "gtk_text_tag_get_priority"
+ :setter "gtk_text_tag_set_priority"
+ :accessor text-tag-priority
+ :type int)
+ (weight
+ :merge t :type pango:weight)))
+
+ ("GtkTextMark"
+ :slots
+ ((buffer
+ :allocation :virtual
+ :getter "gtk_text_mark_get_buffer"
+ :reader text-mark-buffer
+ :type text-buffer)
+ (name
+ :allocation :virtual
+ :getter "gtk_text_mark_get_name"
+ :reader text-mark-name
+ :type (copy-of string))
+ (visible
+ :allocation :virtual
+ :getter "gtk_text_mark_get_visible"
+ :setter "gtk_text_mark_set_visible"
+ :accessor text-mark-visible-p
+ :type boolean)
+ (deleted
+ :allocation :virtual
+ :getter "gtk_text_mark_get_deleted"
+ :reader text-mark-deleted-p
+ :type boolean)
+ (left-gravity
+ :allocation :virtual
+ :getter "gtk_text_mark_get_left_gravity"
+ :reader text-mark-left-gravity-p
+ :type boolean)))
+
+ ("GtkUIManager"
+ :type ui-manager
+ :slots
+ ((action-groups
+ :allocation :virtual
+ :getter "gtk_ui_manager_get_action_groups"
+ :reader ui-manager-action-groups
+ :type (copy-of (glist action-group)))
+ (accel-group
+ :allocation :virtual
+ :getter "gtk_ui_manager_get_accel_group"
+ :reader ui-manager-accel-group
+ :type accel-group)))
+
+ ("GtkUIManagerItemType"
+ :type ui-manager-item-type)
+
+ ("GtkAction"
+ :slots
+ ((accelerator
+ :allocation :user-data :initarg :accelerator
+ :reader action-accelerator)))
+
+ #?-(pkg-exists-p "gtk+-2.0" :atleast-version "2.10.0")
+ ("GtkToggleAction"
+ :slots
+ ((active
+ :allocation :virtual
+ :getter "gtk_toggle_action_get_active"
+ :setter "gtk_toggle_action_set_active"
+; :initarg :active ;; Handled by initialize-instance
+ :accessor toggle-action-active-p
+ :type boolean)))
+
+ ("GtkRadioAction"
+ :slots
+ ((group
+ :allocation :virtual
+ :getter "gtk_radio_button_get_group"
+ :reader radio-action-group
+ :type (copy-of (gslist widget)))
+ (self
+ :allocation :property :pname "value" :type int
+ :documentation "A hack so we can use the alien function gtk_radio_action_get_current_value to retrieve the active radio action in a group.")
+ (value
+ :allocation :user-data :initarg :value :accessor radio-action-value)
+ #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.10.0")
+ ;; Use radio-action-get-current-value to get the current value of
+ ;; a radio action group
+ (current-value :ignore t)))
+
+ ("GtkColorSelection"
+ :slots
+ ((previous-alpha
+ :allocation :virtual
+ :getter "gtk_color_selection_get_previous_alpha"
+ :setter "gtk_color_selection_get_previous_alpha"
+ :initarg :previous-alpha
+ :accessor color-selection-previous-alpha
+ :type (unsigned 16))
+ (previous-color
+ :allocation :virtual
+ :getter "gtk_color_selection_get_previous_color"
+ :setter "gtk_color_selection_get_previous_color"
+ :initarg :previous-color
+ :accessor color-selection-previous-color
+ :type gdk:color)))
+
+ ("GtkFontSelection"
+ :slots
+ ; deprecated property
+ ((font :ignore t)))
+
+ ("GtkClipboard"
+ :slots
+ ((display
+ :allocation :virtual
+ :getter "gtk_clipboard_get_display"
+ :reader clipboard-display
+ :type gdk:display)))
+
+ #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0")
+ ("GtkIconView"
+ :slots
+ ((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)
+ ("GtkArgFlags" :ignore t)