forked from AuroraMiddleware/gtk
ef4356b567
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
217 lines
11 KiB
C
217 lines
11 KiB
C
/* 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>
|
|
#include <gtk/gtkdnd.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
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;
|
|
|
|
#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;
|
|
|
|
void (*set_scroll_adjustments) (GtkTreeView *tree_view,
|
|
GtkAdjustment *hadjustment,
|
|
GtkAdjustment *vadjustment);
|
|
gint (*expand_row) (GtkTreeView *tree_view,
|
|
GtkTreeIter *iter);
|
|
};
|
|
|
|
GtkType gtk_tree_view_get_type (void);
|
|
GtkWidget *gtk_tree_view_new (void);
|
|
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,
|
|
GtkTreeModel *model);
|
|
GtkTreeSelection *gtk_tree_view_get_selection (GtkTreeView *tree_view);
|
|
GtkAdjustment *gtk_tree_view_get_hadjustment (GtkTreeView *tree_view);
|
|
void gtk_tree_view_set_hadjustment (GtkTreeView *tree_view,
|
|
GtkAdjustment *adjustment);
|
|
GtkAdjustment *gtk_tree_view_get_vadjustment (GtkTreeView *tree_view);
|
|
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);
|
|
void gtk_tree_view_set_headers_clickable (GtkTreeView *tree_view,
|
|
gboolean setting);
|
|
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);
|
|
|
|
void gtk_tree_view_set_expander_column (GtkTreeView *tree_view,
|
|
gint col);
|
|
|
|
gint gtk_tree_view_get_expander_column (GtkTreeView *tree_view);
|
|
|
|
/* Actions */
|
|
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,
|
|
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,
|
|
GtkTreeViewColumn **column,
|
|
gint *cell_x,
|
|
gint *cell_y);
|
|
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,
|
|
GtkTreePath *path,
|
|
GtkTreeViewColumn *column,
|
|
GdkRectangle *rect);
|
|
|
|
void gtk_tree_view_expand_all (GtkTreeView *tree_view);
|
|
void gtk_tree_view_collapse_all (GtkTreeView *tree_view);
|
|
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);
|
|
|
|
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);
|
|
|
|
|
|
|
|
/* 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);
|
|
void gtk_tree_view_get_drag_dest_row (GtkTreeView *tree_view,
|
|
GtkTreePath **path,
|
|
GtkTreeViewDropPosition *pos);
|
|
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);
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
#endif /* __GTK_TREE_VIEW_H__ */
|
|
|