;; -*- scheme -*-
; virtual function definitions
; define-vfunc is gtkmm-specific

; GtkActionable

(define-vfunc get_action_name
  (of-object "GtkActionable")
  (return-type "const-gchar*")
)

(define-vfunc set_action_name
  (of-object "GtkActionable")
  (return-type "void")
  (parameters
   '("const-gchar*" "action_name")
  )
)

(define-vfunc get_action_target_value
  (of-object "GtkActionable")
  (return-type "GVariant*")
)

(define-vfunc set_action_target_value
  (of-object "GtkActionable")
  (return-type "void")
  (parameters
   '("GVariant*" "action_target_value")
  )
)

; GtkCellArea

(define-vfunc snapshot
  (of-object "GtkCellArea")
  (return-type "void")
  (parameters
    '("GtkCellAreaContext*" "context")
    '("GtkWidget*" "widget")
    '("GtkSnapshot*" "snapshot")
    '("const-GdkRectangle*" "background_area")
    '("const-GdkRectangle*" "cell_area")
    '("GtkCellRendererState" "flags")
    '("gboolean" "paint_focus")
  )
)

(define-vfunc get_request_mode
  (of-object "GtkCellArea")
  (return-type "GtkSizeRequestMode")
)

(define-vfunc get_preferred_width
  (of-object "GtkCellArea")
  (return-type "void")
  (parameters
    '("GtkCellAreaContext*" "context")
    '("GtkWidget*" "widget")
    '("gint*" "minimum_width")
    '("gint*" "natural_width")
  )
)

(define-vfunc get_preferred_height_for_width
  (of-object "GtkCellArea")
  (return-type "void")
  (parameters
    '("GtkCellAreaContext*" "context")
    '("GtkWidget*" "widget")
    '("gint" "width")
    '("gint*" "minimum_height")
    '("gint*" "natural_height")
  )
)

(define-vfunc get_preferred_height
  (of-object "GtkCellArea")
  (return-type "void")
  (parameters
    '("GtkCellAreaContext*" "context")
    '("GtkWidget*" "widget")
    '("gint*" "minimum_height")
    '("gint*" "natural_height")
  )
)

(define-vfunc get_preferred_width_for_height
  (of-object "GtkCellArea")
  (return-type "void")
  (parameters
    '("GtkCellAreaContext*" "context")
    '("GtkWidget*" "widget")
    '("gint" "height")
    '("gint*" "minimum_width")
    '("gint*" "natural_width")
  )
)

; GtkCellEditable

(define-vfunc start_editing
  (of-object "GtkCellEditable")
  (return-type "none")
  (parameters
    '("GdkEvent*" "event")
  )
)


; GtkCellLayout

(define-vfunc pack_start
  (of-object "GtkCellLayout")
  (return-type "none")
  (parameters
    '("GtkCellRenderer*" "cell")
    '("gboolean" "expand")
  )
)

(define-vfunc pack_end
  (of-object "GtkCellLayout")
  (return-type "none")
  (parameters
    '("GtkCellRenderer*" "cell")
    '("gboolean" "expand")
  )
)

(define-vfunc clear
  (of-object "GtkCellLayout")
  (return-type "none")
)

(define-vfunc add_attribute
  (of-object "GtkCellLayout")
  (return-type "none")
  (parameters
    '("GtkCellRenderer*" "cell")
    '("const-gchar*" "attribute")
    '("gint" "column")
  )
)

;; //TODO:  _WRAP_VFUNC(void set_cell_data_func(GtkCellRenderer* cell, GtkCellLayoutDataFunc func, gpointer func_data, GDestroyNotify destroy), set_cell_data_func)

(define-vfunc clear_attributes
  (of-object "GtkCellLayout")
  (return-type "none")
  (parameters
    '("GtkCellRenderer*" "cell")
  )
)

(define-vfunc reorder
  (of-object "GtkCellLayout")
  (return-type "none")
  (parameters
    '("GtkCellRenderer*" "cell")
    '("gint" "position")
  )
)


; GtkCellRenderer

(define-vfunc get_request_mode
  (of-object "GtkCellRenderer")
  (return-type "GtkSizeRequestMode")
)

(define-vfunc get_preferred_width
  (of-object "GtkCellRenderer")
  (return-type "void")
  (parameters
    '("GtkWidget*" "widget")
    '("gint*" "minimum_width")
    '("gint*" "natural_width")
  )
)

(define-vfunc get_preferred_height_for_width
  (of-object "GtkCellRenderer")
  (return-type "void")
  (parameters
    '("GtkWidget*" "widget")
    '("gint" "width")
    '("gint*" "minimum_height")
    '("gint*" "natural_height")
  )
)

(define-vfunc get_preferred_height
  (of-object "GtkCellRenderer")
  (return-type "void")
  (parameters
    '("GtkWidget*" "widget")
    '("gint*" "minimum_height")
    '("gint*" "natural_height")
  )
)

(define-vfunc get_preferred_width_for_height
  (of-object "GtkCellRenderer")
  (return-type "void")
  (parameters
    '("GtkWidget*" "widget")
    '("gint" "height")
    '("gint*" "minimum_width")
    '("gint*" "natural_width")
  )
)

; Deprecated:
;(define-vfunc get_size
;  (of-object "GtkCellRenderer")
;  (return-type "none")
;  (parameters
;    '("GtkWidget*" "widget")
;    '("GdkRectangle*" "cell_area")
;    '("gint*" "x_offset")
;    '("gint*" "y_offset")
;    '("gint*" "width")
;    '("gint*" "height")
;  )
;)

(define-vfunc snapshot
  (of-object "GtkCellRenderer")
  (return-type "none")
  (parameters
    '("GtkSnapshot*" "snapshot")
    '("GtkWidget*" "widget")
    '("const-GdkRectangle*" "background_area")
    '("const-GdkRectangle*" "cell_area")
    '("GtkCellRendererState" "flags")
  )
)

(define-vfunc activate
  (of-object "GtkCellRenderer")
  (return-type "gboolean")
  (parameters
    '("GdkEvent*" "event")
    '("GtkWidget*" "widget")
    '("const-gchar*" "path")
    '("const-GdkRectangle*" "background_area")
    '("const-GdkRectangle*" "cell_area")
    '("GtkCellRendererState" "flags")
  )
)

(define-vfunc start_editing
  (of-object "GtkCellRenderer")
  (return-type "GtkCellEditable*")
  (parameters
    '("GdkEvent*" "event")
    '("GtkWidget*" "widget")
    '("const-gchar*" "path")
    '("const-GdkRectangle*" "background_area")
    '("const-GdkRectangle*" "cell_area")
    '("GtkCellRendererState" "flags")
  )
)

; GtkContainer

(define-vfunc child_type
  (of-object "GtkContainer")
  (return-type "GType")
)

(define-vfunc forall
  (of-object "GtkContainer")
  (return-type "none")
  (parameters
     '("GtkCallback" "callback")
     '("gpointer" "callback_data")
   )
)

(define-vfunc set_focus_child
  (of-object "GtkContainer")
  (return-type "none")
  (parameters
    '("GtkWidget*" "child")
  )
)

(define-vfunc get_path_for_child
  (of-object "GtkContainer")
  (return-type "GtkWidgetPath*")
  (parameters
    '("GtkWidget*" "child")
  )
)

; GtkEditable

(define-vfunc get_text
  (of-object "GtkEditable")
  (return-type "const-char*")
)

(define-vfunc do_insert_text
  (of-object "GtkEditable")
  (return-type "none")
  (parameters
    '("const-char*" "text")
    '("int" "length")
    '("int*" "position")
  )
)

(define-vfunc do_delete_text
  (of-object "GtkEditable")
  (return-type "none")
  (parameters
    '("int" "start_pos")
    '("int" "end_pos")
  )
)

(define-vfunc set_selection_bounds
  (of-object "GtkEditable")
  (return-type "none")
  (parameters
    '("int" "start_pos")
    '("int" "end_pos")
  )
)

(define-vfunc get_selection_bounds
  (of-object "GtkEditable")
  (return-type "gboolean")
  (parameters
    '("int*" "start_pos")
    '("int*" "end_pos")
  )
)

(define-vfunc get_delegate
  (of-object "GtkEditable")
  (return-type "GtkEditable*")
)

; GtkFrame

(define-vfunc compute_child_allocation
  (of-object "GtkFrame")
  (return-type "none")
  (parameters
    '("GtkAllocation*" "allocation")
  )
)

; GtkLayoutManager

(define-vfunc get_request_mode
  (of-object "GtkLayoutManager")
  (return-type "GtkSizeRequestMode")
  (parameters
    '("GtkWidget*" "widget")
  )
)

(define-vfunc measure
  (of-object "GtkLayoutManager")
  (return-type "void")
  (parameters
    '("GtkWidget*" "widget")
    '("GtkOrientation" "orientation")
    '("int" "for_size")
    '("int*" "minimum")
    '("int*" "natural")
    '("int*" "minimum_baseline")
    '("int*" "natural_baseline")
  )
)

(define-vfunc allocate
  (of-object "GtkLayoutManager")
  (return-type "void")
  (parameters
    '("GtkWidget*" "widget")
    '("int" "width")
    '("int" "height")
    '("int" "baseline")
  )
)

(define-vfunc create_layout_child
  (of-object "GtkLayoutManager")
  (return-type "GtkLayoutChild*")
  (parameters
    '("GtkWidget*" "widget")
    '("GtkWidget*" "for_child")
  )
)

; GtkMediaFile

(define-vfunc open
  (of-object "GtkMediaFile")
  (return-type "none")
)

(define-vfunc close
  (of-object "GtkMediaFile")
  (return-type "none")
)

; GtkMediaStream

(define-vfunc play
  (of-object "GtkMediaStream")
  (return-type "gboolean")
)

(define-vfunc pause
  (of-object "GtkMediaStream")
  (return-type "none")
)

(define-vfunc seek
  (of-object "GtkMediaStream")
  (return-type "none")
  (parameters
    '("gint64" "timestamp")
  )
)

(define-vfunc update_audio
  (of-object "GtkMediaStream")
  (return-type "none")
  (parameters
    '("gboolean" "muted")
    '("double" "volume")
  )
)

(define-vfunc realize
  (of-object "GtkMediaStream")
  (return-type "none")
  (parameters
    '("GdkSurface*" "surface")
  )
)

(define-vfunc unrealize
  (of-object "GtkMediaStream")
  (return-type "none")
  (parameters
    '("GdkSurface*" "surface")
  )
)

; GtkRange

(define-vfunc get_range_border
  (of-object "GtkRange")
  (return-type "none")
  (parameters
    '("GtkBorder*" "border")
  )
)

; GtkRoot

(define-vfunc get_display
  (of-object "GtkRoot")
  (return-type "GdkDisplay*")
)

(define-vfunc get_renderer
  (of-object "GtkRoot")
  (return-type "GskRenderer*")
)

(define-vfunc get_surface_transform
  (of-object "GtkRoot")
  (return-type "none")
  (parameters
    '("int*" "x")
    '("int*" "y")
  )
)

; GtkScrollable

(define-vfunc get_border
  (of-object "GtkScrollable")
  (return-type "gboolean")
  (parameters
    '("GtkBorder*" "border")
  )
)

; GtkSelectionModel

(define-vfunc is_selected
  (of-object "GtkSelectionModel")
  (return-type "gboolean")
  (parameters
    '("guint" "position")
  )
)

(define-vfunc select_item
  (of-object "GtkSelectionModel")
  (return-type "gboolean")
  (parameters
    '("guint" "position")
    '("gboolean" "exclusive")
  )
)

(define-vfunc unselect_item
  (of-object "GtkSelectionModel")
  (return-type "gboolean")
  (parameters
    '("guint" "position")
  )
)

(define-vfunc select_range
  (of-object "GtkSelectionModel")
  (return-type "gboolean")
  (parameters
    '("guint" "position")
    '("guint" "n_items")
    '("gboolean" "exclusive")
  )
)

(define-vfunc unselect_range
  (of-object "GtkSelectionModel")
  (return-type "gboolean")
  (parameters
    '("guint" "position")
    '("guint" "n_items")
  )
)

(define-vfunc select_all
  (of-object "GtkSelectionModel")
  (return-type "gboolean")
)

(define-vfunc unselect_all
  (of-object "GtkSelectionModel")
  (return-type "gboolean")
)

(define-vfunc query_range
  (of-object "GtkSelectionModel")
  (return-type "void")
  (parameters
    '("guint" "position")
    '("guint*" "start_range")
    '("guint*" "n_items")
    '("gboolean*" "selected")
  )
)

; GtkToolShell

(define-vfunc get_orientation
  (of-object "GtkToolShell")
  (return-type "GtkOrientation")
)

(define-vfunc get_style
  (of-object "GtkToolShell")
  (return-type "GtkToolbarStyle")
)

(define-vfunc rebuild_menu
  (of-object "GtkToolShell")
  (return-type "none")
)

(define-vfunc get_text_orientation
  (of-object "GtkToolShell")
  (return-type "GtkOrientation")
)

(define-vfunc get_text_alignment
  (of-object "GtkToolShell")
  (return-type "gfloat")
)

(define-vfunc get_ellipsize_mode
  (of-object "GtkToolShell")
  (return-type "PangoEllipsizeMode")
)

(define-vfunc get_text_size_group
  (of-object "GtkToolShell")
  (return-type "GtkSizeGroup*")
)

; GtkTreeModel

(define-vfunc get_flags
  (of-object "GtkTreeModel")
  (return-type "GtkTreeModelFlags")
)

(define-vfunc get_n_columns
  (of-object "GtkTreeModel")
  (return-type "gint")
)

(define-vfunc get_column_type
  (of-object "GtkTreeModel")
  (return-type "GType")
  (parameters
    '("gint" "index")
  )
)

(define-vfunc get_iter
  (of-object "GtkTreeModel")
  (return-type "gboolean")
  (parameters
    '("GtkTreeIter*" "iter")
    '("GtkTreePath*" "path")
  )
)

(define-vfunc get_path
  (of-object "GtkTreeModel")
  (return-type "GtkTreePath*")
  (parameters
    '("GtkTreeIter*" "iter")
  )
)

(define-vfunc get_value
  (of-object "GtkTreeModel")
  (return-type "none")
  (parameters
    '("GtkTreeIter*" "iter")
    '("gint" "column")
    '("GValue*" "value")
  )
)

(define-vfunc iter_next
  (of-object "GtkTreeModel")
  (return-type "gboolean")
  (parameters
    '("GtkTreeIter*" "iter")
  )
)

(define-vfunc iter_children
  (of-object "GtkTreeModel")
  (return-type "gboolean")
  (parameters
    '("GtkTreeIter*" "iter")
    '("GtkTreeIter*" "parent")
  )
)

(define-vfunc iter_has_child
  (of-object "GtkTreeModel")
  (return-type "gboolean")
  (parameters
    '("GtkTreeIter*" "iter")
  )
)

(define-vfunc iter_n_children
  (of-object "GtkTreeModel")
  (return-type "int")
  (parameters
    '("GtkTreeIter*" "iter")
  )
)

(define-vfunc iter_nth_child
  (of-object "GtkTreeModel")
  (return-type "gboolean")
  (parameters
    '("GtkTreeIter*" "iter")
    '("GtkTreeIter*" "parent")
    '("gint" "n")
  )
)

(define-vfunc iter_parent
  (of-object "GtkTreeModel")
  (return-type "gboolean")
  (parameters
    '("GtkTreeIter*" "iter")
    '("GtkTreeIter*" "child")
  )
)

(define-vfunc ref_node
  (of-object "GtkTreeModel")
  (return-type "none")
  (parameters
    '("GtkTreeIter*" "iter")
  )
)

(define-vfunc unref_node
  (of-object "GtkTreeModel")
  (return-type "none")
  (parameters
    '("GtkTreeIter*" "iter")
  )
)

; GtkTreeSortable

(define-vfunc get_sort_column_id
  (of-object "GtkTreeSortable")
  (return-type "gboolean")
  (parameters
    '("int*" "sort_column_id")
    '("GtkSortType*" "order")
  )
)

(define-vfunc set_sort_column_id
  (of-object "GtkTreeSortable")
  (return-type "void")
  (parameters
    '("int" "sort_column_id")
    '("GtkSortType" "order")
  )
)

(define-vfunc set_sort_func
  (of-object "GtkTreeSortable")
  (return-type "void")
  (parameters
    '("int" "sort_column_id")
    '("GtkTreeIterCompareFunc" "func")
    '("gpointer" "data")
    '("GDestroyNotify" "destroy")
  )
)

(define-vfunc set_default_sort_func
  (of-object "GtkTreeSortable")
  (return-type "void")
  (parameters
    '("GtkTreeIterCompareFunc" "func")
    '("gpointer" "data")
    '("GDestroyNotify" "destroy")
  )
)

(define-vfunc has_default_sort_func
  (of-object "GtkTreeSortable")
  (return-type "gboolean")
)

; GtkTreeDragDest

(define-vfunc drag_data_received
  (of-object "GtkTreeDragDest")
  (return-type "gboolean")
  (parameters
    '("GtkTreePath*" "dest")
    '("GtkSelectionData*" "selection_data")
  )
)

(define-vfunc row_drop_possible
  (of-object "GtkTreeDragDest")
  (return-type "gboolean")
  (parameters
    '("GtkTreePath*" "dest_path")
    '("GtkSelectionData*" "selection_data")
  )
)

; GtkTreeDragSource

(define-vfunc row_draggable
  (of-object "GtkTreeDragSource")
  (return-type "gboolean")
  (parameters
    '("GtkTreePath*" "path")
  )
)

(define-vfunc drag_data_get
  (of-object "GtkTreeDragSource")
  (return-type "gboolean")
  (parameters
    '("GtkTreePath*" "path")
    '("GtkSelectionData*" "selection_data")
  )
)

(define-vfunc drag_data_delete
  (of-object "GtkTreeDragSource")
  (return-type "gboolean")
  (parameters
    '("GtkTreePath*" "path")
  )
)

; GtkViewPort

(define-vfunc set_scroll_adjustments
  (of-object "GtkViewPort")
  (return-type "none")
  (parameters
    '("GtkAdjustment*" "hadjustment")
    '("GtkAdjustment*" "vadjustment")
  )
)

; GtkWidget

(define-vfunc root
  (of-object "GtkWidget")
  (return-type "void")
)

(define-vfunc unroot
  (of-object "GtkWidget")
  (return-type "void")
)

(define-vfunc get_request_mode
  (of-object "GtkWidget")
  (return-type "GtkSizeRequestMode")
)

(define-vfunc measure
  (of-object "GtkWidget")
  (return-type "void")
  (parameters
    '("GtkOrientation" "orientation")
    '("int" "for_size")
    '("int*" "minimum")
    '("int*" "natural")
    '("int*" "minimum_baseline")
    '("int*" "natural_baseline")
  )
)

(define-vfunc grab_focus
  (of-object "GtkWidget")
  (return-type "void")
)

(define-vfunc get_accessible
  (of-object "GtkWidget")
  (return-type "AtkObject*")
)

(define-vfunc compute_expand
  (of-object "GtkWidget")
  (return-type "void")
  (parameters
    '("gboolean*" "hexpand_p")
    '("gboolean*" "vexpand_p")
  )
)

(define-vfunc snapshot
  (of-object "GtkWidget")
  (return-type "void")
  (parameters
    '("GtkSnapshot*" "snapshot")
  )
)

(define-vfunc contains
  (of-object "GtkWidget")
  (return-type "gboolean")
  (parameters
    '("gdouble" "x")
    '("gdouble" "y")
  )
)

; GtkRecentChooser

(define-vfunc set_current_uri
  (of-object "GtkRecentChooser")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "uri")
    '("GError**" "error")
  )
)

(define-vfunc get_current_uri
  (of-object "GtkRecentChooser")
  (return-type "gchar*")
)
(define-vfunc select_uri
  (of-object "GtkRecentChooser")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "uri")
    '("GError**" "error")
  )
)

(define-vfunc unselect_uri
  (of-object "GtkRecentChooser")
  (return-type "none")
  (parameters
    '("const-gchar*" "uri")
  )
)

(define-vfunc select_all
  (of-object "GtkRecentChooser")
  (return-type "none")
)

(define-vfunc unselect_all
  (of-object "GtkRecentChooser")
  (return-type "none")
)

(define-vfunc get_items
  (of-object "GtkRecentChooser")
  (return-type "GList*")
)

(define-vfunc get_recent_manager
  (of-object "GtkRecentChooser")
  (return-type "GtkRecentManager*")
)

(define-vfunc add_filter
  (of-object "GtkRecentChooser")
  (return-type "none")
  (parameters
    '("GtkRecentFilter*" "filter")
  )
)

(define-vfunc remove_filter
  (of-object "GtkRecentChooser")
  (return-type "none")
  (parameters
    '("GtkRecentFilter*" "filter")
  )
)

(define-vfunc list_filters
  (of-object "GtkRecentChooser")
  (return-type "GSList*")
)

(define-vfunc set_sort_func
  (of-object "GtkRecentChooser")
  (return-type "none")
  (parameters
    '("GtkRecentSortFunc" "sort_func")
    '("gpointer" "data")
    '("GDestroyNotify" "notify")
  )
)

; GtkPrintOperationPreview


(define-vfunc render_page
  (of-object "GtkPrintOperationPreview")
  (return-type "none")
  (parameters
    '("gint" "page_nr")
  )
)

(define-vfunc end_preview
  (of-object "GtkPrintOperationPreview")
  (return-type "none")
)

(define-vfunc is_selected
  (of-object "GtkPrintOperationPreview")
  (return-type "gboolean")
  (parameters
    '("gint" "page_nr")
  )
)

