X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtktreeview.h;h=cdd94f03ebbb9a78ffb964f51dc2f046b7e4da01;hb=45ad8a06ad511ad95a74172172b9fe459bc666ad;hp=d12208f441a5090b0da8779573f0765d0ca18e7d;hpb=953d4b248ef680efdc654e188d57c50ce0477abd;p=~andy%2Fgtk diff --git a/gtk/gtktreeview.h b/gtk/gtktreeview.h index d12208f44..cdd94f03e 100644 --- a/gtk/gtktreeview.h +++ b/gtk/gtktreeview.h @@ -12,23 +12,33 @@ * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ + #ifndef __GTK_TREE_VIEW_H__ #define __GTK_TREE_VIEW_H__ -#include +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif + #include #include #include #include +#include -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ +G_BEGIN_DECLS +/** + * GtkTreeViewDropPosition: + * @GTK_TREE_VIEW_DROP_BEFORE: dropped row is inserted before + * @GTK_TREE_VIEW_DROP_AFTER: dropped row is inserted after + * @GTK_TREE_VIEW_DROP_INTO_OR_BEFORE: dropped row becomes a child or is inserted before + * @GTK_TREE_VIEW_DROP_INTO_OR_AFTER: dropped row becomes a child or is inserted after + * + * An enum for determining where a dropped row goes. + */ typedef enum { /* drop before/after this row */ @@ -42,11 +52,11 @@ typedef enum } GtkTreeViewDropPosition; #define GTK_TYPE_TREE_VIEW (gtk_tree_view_get_type ()) -#define GTK_TREE_VIEW(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_TREE_VIEW, GtkTreeView)) -#define GTK_TREE_VIEW_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE_VIEW, GtkTreeViewClass)) -#define GTK_IS_TREE_VIEW(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_TREE_VIEW)) -#define GTK_IS_TREE_VIEW_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), GTK_TYPE_TREE_VIEW)) -#define GTK_TREE_VIEW_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_TREE_VIEW, GtkTreeViewClass)) +#define GTK_TREE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TREE_VIEW, GtkTreeView)) +#define GTK_TREE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE_VIEW, GtkTreeViewClass)) +#define GTK_IS_TREE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TREE_VIEW)) +#define GTK_IS_TREE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TREE_VIEW)) +#define GTK_TREE_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TREE_VIEW, GtkTreeViewClass)) typedef struct _GtkTreeView GtkTreeView; typedef struct _GtkTreeViewClass GtkTreeViewClass; @@ -58,6 +68,7 @@ struct _GtkTreeView { GtkContainer parent; + /*< private >*/ GtkTreeViewPrivate *priv; }; @@ -65,9 +76,6 @@ struct _GtkTreeViewClass { GtkContainerClass parent_class; - void (* set_scroll_adjustments) (GtkTreeView *tree_view, - GtkAdjustment *hadjustment, - GtkAdjustment *vadjustment); void (* row_activated) (GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column); @@ -84,46 +92,117 @@ struct _GtkTreeViewClass GtkTreeIter *iter, GtkTreePath *path); void (* columns_changed) (GtkTreeView *tree_view); + void (* cursor_changed) (GtkTreeView *tree_view); /* Key Binding signals */ - void (* move_cursor) (GtkTreeView *tree_view, + gboolean (* move_cursor) (GtkTreeView *tree_view, GtkMovementStep step, gint count); - void (* select_cursor_row) (GtkTreeView *tree_view); - void (* toggle_cursor_row) (GtkTreeView *tree_view); - void (* expand_collapse_cursor_row) (GtkTreeView *tree_view, + gboolean (* select_all) (GtkTreeView *tree_view); + gboolean (* unselect_all) (GtkTreeView *tree_view); + gboolean (* select_cursor_row) (GtkTreeView *tree_view, + gboolean start_editing); + gboolean (* toggle_cursor_row) (GtkTreeView *tree_view); + gboolean (* expand_collapse_cursor_row) (GtkTreeView *tree_view, gboolean logical, gboolean expand, gboolean open_all); - void (* select_cursor_parent) (GtkTreeView *tree_view); -}; + gboolean (* select_cursor_parent) (GtkTreeView *tree_view); + gboolean (* start_interactive_search) (GtkTreeView *tree_view); + /* Padding for future expansion */ + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); + void (*_gtk_reserved5) (void); + void (*_gtk_reserved6) (void); + void (*_gtk_reserved7) (void); + void (*_gtk_reserved8) (void); +}; +/** + * GtkTreeViewColumnDropFunc: + * @tree_view: A #GtkTreeView + * @column: The #GtkTreeViewColumn being dragged + * @prev_column: A #GtkTreeViewColumn on one side of @column + * @next_column: A #GtkTreeViewColumn on the other side of @column + * @data: (closure): user data + * + * Function type for determining whether @column can be dropped in a + * particular spot (as determined by @prev_column and @next_column). In + * left to right locales, @prev_column is on the left of the potential drop + * spot, and @next_column is on the right. In right to left mode, this is + * reversed. This function should return %TRUE if the spot is a valid drop + * spot. Please note that returning %TRUE does not actually indicate that + * the column drop was made, but is meant only to indicate a possible drop + * spot to the user. + * + * Returns: %TRUE, if @column can be dropped in this spot + */ typedef gboolean (* GtkTreeViewColumnDropFunc) (GtkTreeView *tree_view, GtkTreeViewColumn *column, GtkTreeViewColumn *prev_column, GtkTreeViewColumn *next_column, gpointer data); -typedef gboolean (* GtkTreeViewDraggableFunc) (GtkTreeView *tree_view, - GdkDragContext *context, - GtkTreePath *path, - gpointer user_data); + +/** + * GtkTreeViewMappingFunc: + * @tree_view: A #GtkTreeView + * @path: The path that's expanded + * @user_data: user data + * + * Function used for gtk_tree_view_map_expanded_rows(). + */ typedef void (* GtkTreeViewMappingFunc) (GtkTreeView *tree_view, GtkTreePath *path, gpointer user_data); -typedef gboolean (* GtkTreeViewDroppableFunc) (GtkTreeView *tree_view, - GdkDragContext *context, - GtkTreePath *path, - GtkTreeViewDropPosition *pos, - gpointer user_data); + +/** + * GtkTreeViewSearchEqualFunc: + * @model: the #GtkTreeModel being searched + * @column: the search column set by gtk_tree_view_set_search_column() + * @key: the key string to compare with + * @iter: a #GtkTreeIter pointing the row of @model that should be compared + * with @key. + * @search_data: (closure): user data from gtk_tree_view_set_search_equal_func() + * + * A function used for checking whether a row in @model matches + * a search key string entered by the user. Note the return value + * is reversed from what you would normally expect, though it + * has some similarity to strcmp() returning 0 for equal strings. + * + * Returns: %FALSE if the row matches, %TRUE otherwise. + */ typedef gboolean (*GtkTreeViewSearchEqualFunc) (GtkTreeModel *model, gint column, - gchar *key, - GtkTreeIter *iter); + const gchar *key, + GtkTreeIter *iter, + gpointer search_data); + +/** + * GtkTreeViewRowSeparatorFunc: + * @model: the #GtkTreeModel + * @iter: a #GtkTreeIter pointing at a row in @model + * @data: (closure): user data + * + * Function type for determining whether the row pointed to by @iter should + * be rendered as a separator. A common way to implement this is to have a + * boolean column in the model, whose values the #GtkTreeViewRowSeparatorFunc + * returns. + * + * Returns: %TRUE if the row is a separator + */ +typedef gboolean (*GtkTreeViewRowSeparatorFunc) (GtkTreeModel *model, + GtkTreeIter *iter, + gpointer data); +typedef void (*GtkTreeViewSearchPositionFunc) (GtkTreeView *tree_view, + GtkWidget *search_dialog, + gpointer user_data); /* Creators */ -GtkType gtk_tree_view_get_type (void); +GType gtk_tree_view_get_type (void) G_GNUC_CONST; GtkWidget *gtk_tree_view_new (void); GtkWidget *gtk_tree_view_new_with_model (GtkTreeModel *model); @@ -132,21 +211,34 @@ GtkTreeModel *gtk_tree_view_get_model (GtkTreeView void gtk_tree_view_set_model (GtkTreeView *tree_view, GtkTreeModel *model); GtkTreeSelection *gtk_tree_view_get_selection (GtkTreeView *tree_view); + +GDK_DEPRECATED_IN_3_0_FOR(gtk_scrollable_get_hadjustment) GtkAdjustment *gtk_tree_view_get_hadjustment (GtkTreeView *tree_view); +GDK_DEPRECATED_IN_3_0_FOR(gtk_scrollable_set_hadjustment) void gtk_tree_view_set_hadjustment (GtkTreeView *tree_view, GtkAdjustment *adjustment); +GDK_DEPRECATED_IN_3_0_FOR(gtk_scrollable_get_vadjustment) GtkAdjustment *gtk_tree_view_get_vadjustment (GtkTreeView *tree_view); +GDK_DEPRECATED_IN_3_0_FOR(gtk_scrollable_set_vadjustment) void gtk_tree_view_set_vadjustment (GtkTreeView *tree_view, GtkAdjustment *adjustment); + + gboolean gtk_tree_view_get_headers_visible (GtkTreeView *tree_view); void gtk_tree_view_set_headers_visible (GtkTreeView *tree_view, gboolean headers_visible); void gtk_tree_view_columns_autosize (GtkTreeView *tree_view); +gboolean gtk_tree_view_get_headers_clickable (GtkTreeView *tree_view); void gtk_tree_view_set_headers_clickable (GtkTreeView *tree_view, gboolean setting); void gtk_tree_view_set_rules_hint (GtkTreeView *tree_view, gboolean setting); gboolean gtk_tree_view_get_rules_hint (GtkTreeView *tree_view); +GDK_AVAILABLE_IN_3_8 +gboolean gtk_tree_view_get_activate_on_single_click (GtkTreeView *tree_view); +GDK_AVAILABLE_IN_3_8 +void gtk_tree_view_set_activate_on_single_click (GtkTreeView *tree_view, + gboolean single); /* Column funtions */ gint gtk_tree_view_append_column (GtkTreeView *tree_view, @@ -158,16 +250,19 @@ gint gtk_tree_view_insert_column (GtkTreeView gint position); gint gtk_tree_view_insert_column_with_attributes (GtkTreeView *tree_view, gint position, - gchar *title, + const gchar *title, GtkCellRenderer *cell, - ...); + ...) G_GNUC_NULL_TERMINATED; gint gtk_tree_view_insert_column_with_data_func (GtkTreeView *tree_view, gint position, - gchar *title, + const gchar *title, GtkCellRenderer *cell, GtkTreeCellDataFunc func, gpointer data, GDestroyNotify dnotify); + +GDK_AVAILABLE_IN_3_4 +guint gtk_tree_view_get_n_columns (GtkTreeView *tree_view); GtkTreeViewColumn *gtk_tree_view_get_column (GtkTreeView *tree_view, gint n); GList *gtk_tree_view_get_columns (GtkTreeView *tree_view); @@ -180,7 +275,7 @@ GtkTreeViewColumn *gtk_tree_view_get_expander_column (GtkTreeView void gtk_tree_view_set_column_drag_function (GtkTreeView *tree_view, GtkTreeViewColumnDropFunc func, gpointer user_data, - GtkDestroyNotify destroy); + GDestroyNotify destroy); /* Actions */ void gtk_tree_view_scroll_to_point (GtkTreeView *tree_view, @@ -189,6 +284,7 @@ void gtk_tree_view_scroll_to_point (GtkTreeView void gtk_tree_view_scroll_to_cell (GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, + gboolean use_align, gfloat row_align, gfloat col_align); void gtk_tree_view_row_activated (GtkTreeView *tree_view, @@ -196,6 +292,8 @@ void gtk_tree_view_row_activated (GtkTreeView GtkTreeViewColumn *column); void gtk_tree_view_expand_all (GtkTreeView *tree_view); void gtk_tree_view_collapse_all (GtkTreeView *tree_view); +void gtk_tree_view_expand_to_path (GtkTreeView *tree_view, + GtkTreePath *path); gboolean gtk_tree_view_expand_row (GtkTreeView *tree_view, GtkTreePath *path, gboolean open_all); @@ -210,12 +308,22 @@ void gtk_tree_view_set_reorderable (GtkTreeView gboolean reorderable); gboolean gtk_tree_view_get_reorderable (GtkTreeView *tree_view); void gtk_tree_view_set_cursor (GtkTreeView *tree_view, - GtkTreePath *path); + GtkTreePath *path, + GtkTreeViewColumn *focus_column, + gboolean start_editing); +void gtk_tree_view_set_cursor_on_cell (GtkTreeView *tree_view, + GtkTreePath *path, + GtkTreeViewColumn *focus_column, + GtkCellRenderer *focus_cell, + gboolean start_editing); +void gtk_tree_view_get_cursor (GtkTreeView *tree_view, + GtkTreePath **path, + GtkTreeViewColumn **focus_column); /* Layout information */ +GdkWindow *gtk_tree_view_get_bin_window (GtkTreeView *tree_view); gboolean gtk_tree_view_get_path_at_pos (GtkTreeView *tree_view, - GdkWindow *window, gint x, gint y, GtkTreePath **path, @@ -232,31 +340,27 @@ void gtk_tree_view_get_background_area (GtkTreeView GdkRectangle *rect); void gtk_tree_view_get_visible_rect (GtkTreeView *tree_view, GdkRectangle *visible_rect); -void gtk_tree_view_widget_to_tree_coords (GtkTreeView *tree_view, - gint wx, - gint wy, - gint *tx, - gint *ty); -void gtk_tree_view_tree_to_widget_coords (GtkTreeView *tree_view, - gint tx, - gint ty, - gint *wx, - gint *wy); +gboolean gtk_tree_view_get_visible_range (GtkTreeView *tree_view, + GtkTreePath **start_path, + GtkTreePath **end_path); +gboolean gtk_tree_view_is_blank_at_pos (GtkTreeView *tree_view, + gint x, + gint y, + GtkTreePath **path, + GtkTreeViewColumn **column, + gint *cell_x, + gint *cell_y); /* Drag-and-Drop support */ -void gtk_tree_view_set_rows_drag_source (GtkTreeView *tree_view, +void gtk_tree_view_enable_model_drag_source (GtkTreeView *tree_view, GdkModifierType start_button_mask, const GtkTargetEntry *targets, gint n_targets, - GdkDragAction actions, - GtkTreeViewDraggableFunc row_draggable_func, - gpointer user_data); -void gtk_tree_view_set_rows_drag_dest (GtkTreeView *tree_view, + GdkDragAction actions); +void gtk_tree_view_enable_model_drag_dest (GtkTreeView *tree_view, const GtkTargetEntry *targets, gint n_targets, - GdkDragAction actions, - GtkTreeViewDroppableFunc location_droppable_func, - gpointer user_data); + GdkDragAction actions); void gtk_tree_view_unset_rows_drag_source (GtkTreeView *tree_view); void gtk_tree_view_unset_rows_drag_dest (GtkTreeView *tree_view); @@ -273,21 +377,62 @@ gboolean gtk_tree_view_get_dest_row_at_pos (GtkTreeView gint drag_y, GtkTreePath **path, GtkTreeViewDropPosition *pos); -GdkPixmap *gtk_tree_view_create_row_drag_icon (GtkTreeView *tree_view, +cairo_surface_t *gtk_tree_view_create_row_drag_icon (GtkTreeView *tree_view, GtkTreePath *path); /* Interactive search */ void gtk_tree_view_set_enable_search (GtkTreeView *tree_view, - gboolean use_search); + gboolean enable_search); gboolean gtk_tree_view_get_enable_search (GtkTreeView *tree_view); gint gtk_tree_view_get_search_column (GtkTreeView *tree_view); void gtk_tree_view_set_search_column (GtkTreeView *tree_view, gint column); GtkTreeViewSearchEqualFunc gtk_tree_view_get_search_equal_func (GtkTreeView *tree_view); void gtk_tree_view_set_search_equal_func (GtkTreeView *tree_view, - GtkTreeViewSearchEqualFunc search_compare_func, - gpointer search_data, - GtkDestroyNotify search_destroy); + GtkTreeViewSearchEqualFunc search_equal_func, + gpointer search_user_data, + GDestroyNotify search_destroy); + +GtkEntry *gtk_tree_view_get_search_entry (GtkTreeView *tree_view); +void gtk_tree_view_set_search_entry (GtkTreeView *tree_view, + GtkEntry *entry); +GtkTreeViewSearchPositionFunc gtk_tree_view_get_search_position_func (GtkTreeView *tree_view); +void gtk_tree_view_set_search_position_func (GtkTreeView *tree_view, + GtkTreeViewSearchPositionFunc func, + gpointer data, + GDestroyNotify destroy); + +/* Convert between the different coordinate systems */ +void gtk_tree_view_convert_widget_to_tree_coords (GtkTreeView *tree_view, + gint wx, + gint wy, + gint *tx, + gint *ty); +void gtk_tree_view_convert_tree_to_widget_coords (GtkTreeView *tree_view, + gint tx, + gint ty, + gint *wx, + gint *wy); +void gtk_tree_view_convert_widget_to_bin_window_coords (GtkTreeView *tree_view, + gint wx, + gint wy, + gint *bx, + gint *by); +void gtk_tree_view_convert_bin_window_to_widget_coords (GtkTreeView *tree_view, + gint bx, + gint by, + gint *wx, + gint *wy); +void gtk_tree_view_convert_tree_to_bin_window_coords (GtkTreeView *tree_view, + gint tx, + gint ty, + gint *bx, + gint *by); +void gtk_tree_view_convert_bin_window_to_tree_coords (GtkTreeView *tree_view, + gint bx, + gint by, + gint *tx, + gint *ty); /* This function should really never be used. It is just for use by ATK. */ @@ -295,18 +440,67 @@ typedef void (* GtkTreeDestroyCountFunc) (GtkTreeView *tree_view, GtkTreePath *path, gint children, gpointer user_data); +GDK_DEPRECATED_IN_3_4 void gtk_tree_view_set_destroy_count_func (GtkTreeView *tree_view, GtkTreeDestroyCountFunc func, gpointer data, - GtkDestroyNotify destroy); + GDestroyNotify destroy); +void gtk_tree_view_set_fixed_height_mode (GtkTreeView *tree_view, + gboolean enable); +gboolean gtk_tree_view_get_fixed_height_mode (GtkTreeView *tree_view); +void gtk_tree_view_set_hover_selection (GtkTreeView *tree_view, + gboolean hover); +gboolean gtk_tree_view_get_hover_selection (GtkTreeView *tree_view); +void gtk_tree_view_set_hover_expand (GtkTreeView *tree_view, + gboolean expand); +gboolean gtk_tree_view_get_hover_expand (GtkTreeView *tree_view); +void gtk_tree_view_set_rubber_banding (GtkTreeView *tree_view, + gboolean enable); +gboolean gtk_tree_view_get_rubber_banding (GtkTreeView *tree_view); +gboolean gtk_tree_view_is_rubber_banding_active (GtkTreeView *tree_view); +GtkTreeViewRowSeparatorFunc gtk_tree_view_get_row_separator_func (GtkTreeView *tree_view); +void gtk_tree_view_set_row_separator_func (GtkTreeView *tree_view, + GtkTreeViewRowSeparatorFunc func, + gpointer data, + GDestroyNotify destroy); -#ifdef __cplusplus -} -#endif /* __cplusplus */ +GtkTreeViewGridLines gtk_tree_view_get_grid_lines (GtkTreeView *tree_view); +void gtk_tree_view_set_grid_lines (GtkTreeView *tree_view, + GtkTreeViewGridLines grid_lines); +gboolean gtk_tree_view_get_enable_tree_lines (GtkTreeView *tree_view); +void gtk_tree_view_set_enable_tree_lines (GtkTreeView *tree_view, + gboolean enabled); +void gtk_tree_view_set_show_expanders (GtkTreeView *tree_view, + gboolean enabled); +gboolean gtk_tree_view_get_show_expanders (GtkTreeView *tree_view); +void gtk_tree_view_set_level_indentation (GtkTreeView *tree_view, + gint indentation); +gint gtk_tree_view_get_level_indentation (GtkTreeView *tree_view); +/* Convenience functions for setting tooltips */ +void gtk_tree_view_set_tooltip_row (GtkTreeView *tree_view, + GtkTooltip *tooltip, + GtkTreePath *path); +void gtk_tree_view_set_tooltip_cell (GtkTreeView *tree_view, + GtkTooltip *tooltip, + GtkTreePath *path, + GtkTreeViewColumn *column, + GtkCellRenderer *cell); +gboolean gtk_tree_view_get_tooltip_context(GtkTreeView *tree_view, + gint *x, + gint *y, + gboolean keyboard_tip, + GtkTreeModel **model, + GtkTreePath **path, + GtkTreeIter *iter); +void gtk_tree_view_set_tooltip_column (GtkTreeView *tree_view, + gint column); +gint gtk_tree_view_get_tooltip_column (GtkTreeView *tree_view); -#endif /* __GTK_TREE_VIEW_H__ */ +G_END_DECLS + +#endif /* __GTK_TREE_VIEW_H__ */