2000-10-05 01:04:57 +00:00
|
|
|
/* gtktreeview.h
|
|
|
|
* Copyright (C) 2000 Red Hat, Inc., Jonathan Blandford <jrb@redhat.com>
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Library General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* 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.
|
|
|
|
*/
|
|
|
|
#ifndef __GTK_TREE_VIEW_H__
|
|
|
|
#define __GTK_TREE_VIEW_H__
|
|
|
|
|
|
|
|
#include <gtk/gtkcontainer.h>
|
|
|
|
#include <gtk/gtktreemodel.h>
|
|
|
|
#include <gtk/gtktreeviewcolumn.h>
|
2001-01-19 22:39:19 +00:00
|
|
|
#include <gtk/gtkdnd.h>
|
2000-10-05 01:04:57 +00:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif /* __cplusplus */
|
|
|
|
|
2001-01-19 22:39:19 +00:00
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
/* drop before/after this row */
|
|
|
|
GTK_TREE_VIEW_DROP_BEFORE,
|
|
|
|
GTK_TREE_VIEW_DROP_AFTER,
|
|
|
|
/* drop as a child of this row (with fallback to before or after
|
|
|
|
* if into is not possible)
|
|
|
|
*/
|
|
|
|
GTK_TREE_VIEW_DROP_INTO_OR_BEFORE,
|
|
|
|
GTK_TREE_VIEW_DROP_INTO_OR_AFTER
|
|
|
|
} GtkTreeViewDropPosition;
|
|
|
|
|
2000-10-05 01:04:57 +00:00
|
|
|
#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))
|
|
|
|
|
|
|
|
typedef struct _GtkTreeView GtkTreeView;
|
|
|
|
typedef struct _GtkTreeViewClass GtkTreeViewClass;
|
|
|
|
typedef struct _GtkTreeViewPrivate GtkTreeViewPrivate;
|
|
|
|
|
|
|
|
typedef struct _GtkTreeSelection GtkTreeSelection;
|
|
|
|
typedef struct _GtkTreeSelectionClass GtkTreeSelectionClass;
|
|
|
|
|
|
|
|
|
|
|
|
struct _GtkTreeView
|
|
|
|
{
|
|
|
|
GtkContainer parent;
|
|
|
|
|
|
|
|
GtkTreeViewPrivate *priv;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct _GtkTreeViewClass
|
|
|
|
{
|
|
|
|
GtkContainerClass parent_class;
|
|
|
|
|
Fix GtkTreeNode *node ->GtkTreeNode node issue.
2000-10-15 <jrb@redhat.com>
* gtk/gtktreeview.c, gtk/gtktreeview.h, gtk/gtktreestore.h,
gtk/gtktreestore.c, gtk/gtkliststore.h, gtk/gtkliststore.c,
gtk/gtkmodelsimple.c, gtk/gtkmodelsimple.h, gtk/gtktreedatalist.c,
gtk/gtktreemodel.h, gtk/gtktreeselection.c,
gtk/gtktreeselection.h: Fix GtkTreeNode *node ->GtkTreeNode node
issue.
2000-10-15 17:46:23 +00:00
|
|
|
void (*set_scroll_adjustments) (GtkTreeView *tree_view,
|
2000-10-05 01:04:57 +00:00
|
|
|
GtkAdjustment *hadjustment,
|
|
|
|
GtkAdjustment *vadjustment);
|
Fix GtkTreeNode *node ->GtkTreeNode node issue.
2000-10-15 <jrb@redhat.com>
* gtk/gtktreeview.c, gtk/gtktreeview.h, gtk/gtktreestore.h,
gtk/gtktreestore.c, gtk/gtkliststore.h, gtk/gtkliststore.c,
gtk/gtkmodelsimple.c, gtk/gtkmodelsimple.h, gtk/gtktreedatalist.c,
gtk/gtktreemodel.h, gtk/gtktreeselection.c,
gtk/gtktreeselection.h: Fix GtkTreeNode *node ->GtkTreeNode node
issue.
2000-10-15 17:46:23 +00:00
|
|
|
gint (*expand_row) (GtkTreeView *tree_view,
|
2000-10-26 00:36:47 +00:00
|
|
|
GtkTreeIter *iter);
|
2000-10-05 01:04:57 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
GtkType gtk_tree_view_get_type (void);
|
|
|
|
GtkWidget *gtk_tree_view_new (void);
|
2000-10-26 00:36:47 +00:00
|
|
|
GtkWidget *gtk_tree_view_new_with_model (GtkTreeModel *model);
|
|
|
|
|
|
|
|
GtkTreeModel *gtk_tree_view_get_model (GtkTreeView *tree_view);
|
|
|
|
void gtk_tree_view_set_model (GtkTreeView *tree_view,
|
2000-10-30 23:21:38 +00:00
|
|
|
GtkTreeModel *model);
|
2000-10-26 00:36:47 +00:00
|
|
|
GtkTreeSelection *gtk_tree_view_get_selection (GtkTreeView *tree_view);
|
2000-10-30 23:21:38 +00:00
|
|
|
GtkAdjustment *gtk_tree_view_get_hadjustment (GtkTreeView *tree_view);
|
|
|
|
void gtk_tree_view_set_hadjustment (GtkTreeView *tree_view,
|
2000-10-26 00:36:47 +00:00
|
|
|
GtkAdjustment *adjustment);
|
2000-10-30 23:21:38 +00:00
|
|
|
GtkAdjustment *gtk_tree_view_get_vadjustment (GtkTreeView *tree_view);
|
|
|
|
void gtk_tree_view_set_vadjustment (GtkTreeView *tree_view,
|
2000-10-26 00:36:47 +00:00
|
|
|
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);
|
2001-01-06 01:31:58 +00:00
|
|
|
void gtk_tree_view_set_headers_clickable (GtkTreeView *tree_view,
|
2001-01-09 16:23:57 +00:00
|
|
|
gboolean setting);
|
2000-10-26 00:36:47 +00:00
|
|
|
gint gtk_tree_view_append_column (GtkTreeView *tree_view,
|
|
|
|
GtkTreeViewColumn *column);
|
|
|
|
gint gtk_tree_view_remove_column (GtkTreeView *tree_view,
|
|
|
|
GtkTreeViewColumn *column);
|
|
|
|
gint gtk_tree_view_insert_column (GtkTreeView *tree_view,
|
|
|
|
GtkTreeViewColumn *column,
|
|
|
|
gint position);
|
|
|
|
GtkTreeViewColumn *gtk_tree_view_get_column (GtkTreeView *tree_view,
|
|
|
|
gint n);
|
2000-10-05 01:04:57 +00:00
|
|
|
|
2001-01-19 22:39:19 +00:00
|
|
|
void gtk_tree_view_set_expander_column (GtkTreeView *tree_view,
|
|
|
|
gint col);
|
|
|
|
|
|
|
|
gint gtk_tree_view_get_expander_column (GtkTreeView *tree_view);
|
|
|
|
|
2000-10-05 01:04:57 +00:00
|
|
|
/* Actions */
|
2001-01-19 22:39:19 +00:00
|
|
|
void gtk_tree_view_scroll_to_point (GtkTreeView *tree_view,
|
|
|
|
gint tree_x,
|
|
|
|
gint tree_y);
|
|
|
|
|
|
|
|
void gtk_tree_view_scroll_to_cell (GtkTreeView *tree_view,
|
2000-10-26 00:36:47 +00:00
|
|
|
GtkTreePath *path,
|
|
|
|
GtkTreeViewColumn *column,
|
|
|
|
gfloat row_align,
|
|
|
|
gfloat col_align);
|
|
|
|
gboolean gtk_tree_view_get_path_at_pos (GtkTreeView *tree_view,
|
|
|
|
GdkWindow *window,
|
|
|
|
gint x,
|
|
|
|
gint y,
|
|
|
|
GtkTreePath **path,
|
2001-01-19 22:39:19 +00:00
|
|
|
GtkTreeViewColumn **column,
|
|
|
|
gint *cell_x,
|
|
|
|
gint *cell_y);
|
adapt to handle PangoColor
2001-01-26 Havoc Pennington <hp@redhat.com>
* gtk/gtktextlayout.c (convert_color): adapt to handle PangoColor
* gtk/gtktreeview.c (gtk_tree_view_widget_to_tree_coords): fix to
not offset by TREE_VIEW_HEADER_HEIGHT
(gtk_tree_view_tree_to_widget_coords): fix to not offset by
TREE_VIEW_HEADER_HEIGHT
* configure.in (included_loaders): for me, --with-included-loaders
generates the error "the specified loader yes does not exist",
i.e. the arg defaults to "yes", so change test for value ""
to test for value "yes", and include all loaders in that case.
* gtk/gtkrbtree.c (_gtk_rbtree_get_depth): new function
* gtk/gtktreeview.c (gtk_tree_view_get_cell_rect): fix to properly
handle TREE_VIEW_VERTICAL_SEPARATOR
(gtk_tree_view_bin_expose): fix to consider the row offset as
pointing halfway into vertical separator.
(gtk_tree_view_draw_node_focus_rect): ditto
* gtk/gtkdebug.h, gtk/gtkmain.c (gtk_init_check): Add
--gtk-debug=updates, which causes gdk_window_set_debug_updates
(TRUE) to be called.
* gdk/gdkwindow.c (gdk_window_set_debug_updates): Allow enabling a
debug mode where the invalid region is colored in on invalidate,
so you can see the flicker and know whether your redraw code is
doing a good job.
* gtk/gtktreeview.c (gtk_tree_view_queue_draw_node): Work in
tree window coordinates (clip rect is in tree window coords)
* gtk/Makefile.am: add gtktreednd.[hc]
* gtk/gtkliststore.c: implement gtktreednd interfaces.
* gtk/gtktreednd.c, gtk/gtktreednd.h: New interface to support
drag-and-drop data operations on a model (so we can set up tree
drag-and-drop automatically)
* gtk/testgtk.c: Add a window to change sensitivity in the
GtkLabel test; add a way to change the entry frame in GtkEntry
test
* gtk/gtkentry.c (gtk_entry_set_has_frame):
(gtk_entry_get_has_frame): new functions to remove the frame
around an entry
(gtk_entry_size_request): shrink requisition if no frame
(gtk_entry_draw_focus): don't draw frame if no frame
* gtk/gtkstyle.c (gtk_default_draw_check): draw custom look for
checks inside a cell renderer
(gtk_default_draw_option): ditto for options
* gtk/gtktreeviewcolumn.c (update_button_contents): add/remove
children from the alignment, not the button
(gtk_tree_view_column_init): ref/sink the column, to emulate
GObject refcounting.
* gtk/gtkcellrenderer.c (gtk_cell_renderer_init): ref/sink
* gtk/gtkcellrenderertoggle.c (gtk_cell_renderer_toggle_render):
Use theme functions to draw the toggles
* gdk/gdkpango.c (gdk_pango_get_gc): use GdkRGB to alloc colors
* gdk/gdkpango.h, gdk/gdkpango.c: Add GdkPangoAttrStipple and
GdkPangoAttrEmbossed to use in rendering insensitive text
* gdk/gdkpango.c (gdk_draw_layout_line): render new properties
* gtk/gtkstyle.c (gtk_default_draw_layout): handle sensitivity
using new GDK features
2001-01-26 21:12:05 +00:00
|
|
|
void gtk_tree_view_get_cell_area (GtkTreeView *tree_view,
|
|
|
|
GtkTreePath *path,
|
|
|
|
GtkTreeViewColumn *column,
|
|
|
|
GdkRectangle *rect);
|
|
|
|
void gtk_tree_view_get_background_area (GtkTreeView *tree_view,
|
2001-01-19 22:39:19 +00:00
|
|
|
GtkTreePath *path,
|
|
|
|
GtkTreeViewColumn *column,
|
|
|
|
GdkRectangle *rect);
|
|
|
|
|
2000-10-26 00:36:47 +00:00
|
|
|
void gtk_tree_view_expand_all (GtkTreeView *tree_view);
|
|
|
|
void gtk_tree_view_collapse_all (GtkTreeView *tree_view);
|
2000-10-30 23:21:38 +00:00
|
|
|
gboolean gtk_tree_view_expand_row (GtkTreeView *tree_view,
|
|
|
|
GtkTreePath *path,
|
|
|
|
gboolean open_all);
|
|
|
|
gboolean gtk_tree_view_collapse_row (GtkTreeView *tree_view,
|
|
|
|
GtkTreePath *path);
|
2000-10-05 01:04:57 +00:00
|
|
|
|
2001-01-19 22:39:19 +00:00
|
|
|
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);
|
|
|
|
|
remove validation idle
2001-02-08 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_destroy_layout): remove
validation idle
* demos/gtk-demo/main.c (create_tree): adjust to changes in text
cell renderer
* demos/pixbuf-demo.c (timeout): remove deprecated
gtk_widget_draw
* demos/testpixbuf-save.c (main): remove deprecated
gtk_drawing_area_size
* gtk/gtktreeview.c (gtk_tree_view_size_allocate): allocate
buttons even if the model isn't setup. gtk_tree_view_check_dirty()
at the start of the allocation.
(gtk_tree_view_check_dirty): handle column->button == NULL, handle
unsetup or NULL model.
* gtk/gtkstyle.c (gtk_default_draw_flat_box): drawing for the
even/odd/sorted cells in the tree view.
* gtk/gtktreeselection.c (gtk_tree_selection_real_unselect_all):
bugfixes
* gtk/gtktreeview.c: assorted bugfixy stuff. Draw the row
backgrounds with draw_flat_box using different detail for even/odd
rows.
* gtk/gtkrbtree.c, gtkrbtree.h: Keep track of the parity of each
row, so we can draw the alternating colors thing
* gtk/gtktexttag.c (gtk_text_tag_set_property): if we change a
property from a synonym property, notify for the synonym.
Also, nuke the background_gdk_set and foreground_gdk_set synonyms
(gtk_text_tag_get_property): Always return the font, even if
all its fields aren't set
* gtk/gtkcellrenderertext.h (struct _GtkCellRendererText): don't
store the attr list; it leaves us with no way to change attributes
in _render according to the render flags, and no way to implement
get_property. Instead store all the specific text attributes.
Separate whether an attribute is enabled from its value. Sync all
properties with GtkTextTag, make them all consistent, etc.
* gtk/gtkcellrenderer.h: Add a flag GTK_CELL_RENDERER_SORTED so
renderers can highlight the sort row/column
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_get_property): use
accessor functions to get values; this has the side effect of
showing up which accessor functions were missing. Added those.
* gtk/gtktreeviewcolumn.h: Replace set_justification with
set_alignment, to be consistent with GtkLabel, GtkMisc
* gtk/gtktreeviewcolumn.c: Added code to display sort indicator
arrow.
* gtk/Makefile.am (gtk_public_h_sources): add gtktreesortable.h
* gtk/gtktreesortable.h: updates in here
2001-02-08 23:36:53 +00:00
|
|
|
void gtk_tree_view_set_rules_hint (GtkTreeView *tree_view,
|
|
|
|
gboolean setting);
|
|
|
|
gboolean gtk_tree_view_get_rules_hint (GtkTreeView *tree_view);
|
2001-01-19 22:39:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
/* Drag-and-Drop support */
|
|
|
|
|
|
|
|
typedef gboolean (* GtkTreeViewDraggableFunc) (GtkTreeView *tree_view,
|
|
|
|
GdkDragContext *context,
|
|
|
|
GtkTreePath *path,
|
|
|
|
gpointer user_data);
|
|
|
|
|
|
|
|
/* this func can change "pos" if it likes, in addition to returning
|
|
|
|
* true/false for whether a drop is possible
|
|
|
|
*/
|
|
|
|
typedef gboolean (* GtkTreeViewDroppableFunc) (GtkTreeView *tree_view,
|
|
|
|
GdkDragContext *context,
|
|
|
|
GtkTreePath *path,
|
|
|
|
GtkTreeViewDropPosition *pos,
|
|
|
|
gpointer user_data);
|
|
|
|
|
|
|
|
void gtk_tree_view_set_rows_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,
|
|
|
|
const GtkTargetEntry *targets,
|
|
|
|
gint n_targets,
|
|
|
|
GdkDragAction actions,
|
|
|
|
GtkTreeViewDroppableFunc location_droppable_func,
|
|
|
|
gpointer user_data);
|
|
|
|
|
|
|
|
void gtk_tree_view_unset_rows_drag_source (GtkTreeView *tree_view);
|
|
|
|
void gtk_tree_view_unset_rows_drag_dest (GtkTreeView *tree_view);
|
|
|
|
|
|
|
|
/* These are useful to implement your own custom stuff. */
|
|
|
|
void gtk_tree_view_set_drag_dest_row (GtkTreeView *tree_view,
|
|
|
|
GtkTreePath *path,
|
|
|
|
GtkTreeViewDropPosition pos);
|
2001-01-31 00:57:49 +00:00
|
|
|
void gtk_tree_view_get_drag_dest_row (GtkTreeView *tree_view,
|
|
|
|
GtkTreePath **path,
|
|
|
|
GtkTreeViewDropPosition *pos);
|
2001-01-19 22:39:19 +00:00
|
|
|
gboolean gtk_tree_view_get_dest_row_at_pos (GtkTreeView *tree_view,
|
|
|
|
gint drag_x,
|
|
|
|
gint drag_y,
|
|
|
|
GtkTreePath **path,
|
|
|
|
GtkTreeViewDropPosition *pos);
|
|
|
|
GdkPixmap* gtk_tree_view_create_row_drag_icon (GtkTreeView *tree_view,
|
|
|
|
GtkTreePath *path);
|
|
|
|
|
|
|
|
|
2000-10-05 01:04:57 +00:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* __GTK_TREE_VIEW_H__ */
|
|
|
|
|