gtktreeviewcolumn.h 9.25 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
/* gtktreeviewcolumn.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_COLUMN_H__
#define __GTK_TREE_VIEW_COLUMN_H__

#include <gtk/gtkobject.h>
#include <gtk/gtkcellrenderer.h>
#include <gtk/gtktreemodel.h>
Havoc Pennington's avatar
Havoc Pennington committed
26
#include <gtk/gtktreesortable.h>
27 28 29 30 31

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

32 33 34 35 36
#define GTK_TYPE_TREE_VIEW_COLUMN	     (gtk_tree_view_column_get_type ())
#define GTK_TREE_VIEW_COLUMN(obj)	     (GTK_CHECK_CAST ((obj), GTK_TYPE_TREE_VIEW_COLUMN, GtkTreeViewColumn))
#define GTK_TREE_VIEW_COLUMN_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE_VIEW_COLUMN, GtkTreeViewColumnClass))
#define GTK_IS_TREE_VIEW_COLUMN(obj)	     (GTK_CHECK_TYPE ((obj), GTK_TYPE_TREE_VIEW_COLUMN))
#define GTK_IS_TREE_VIEW_COLUMN_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), GTK_TYPE_TREE_VIEW_COLUMN))
37
#define GTK_TREE_VIEW_COLUMN_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_TREE_VIEW_COLUMN, GtkTreeViewColumnClass))
38 39 40

typedef enum
{
Havoc Pennington's avatar
Havoc Pennington committed
41
  GTK_TREE_VIEW_COLUMN_RESIZABLE,
42 43
  GTK_TREE_VIEW_COLUMN_AUTOSIZE,
  GTK_TREE_VIEW_COLUMN_FIXED
Havoc Pennington's avatar
Havoc Pennington committed
44
} GtkTreeViewColumnSizing;
45 46 47 48

typedef struct _GtkTreeViewColumn      GtkTreeViewColumn;
typedef struct _GtkTreeViewColumnClass GtkTreeViewColumnClass;

49 50 51 52 53
typedef void (* GtkTreeCellDataFunc) (GtkTreeViewColumn *tree_column,
				      GtkCellRenderer   *cell,
				      GtkTreeModel      *tree_model,
				      GtkTreeIter       *iter,
				      gpointer           data);
54

55
  
56 57 58 59 60 61
struct _GtkTreeViewColumn
{
  GtkObject parent;

  GtkWidget *tree_view;
  GtkWidget *button;
Havoc Pennington's avatar
Havoc Pennington committed
62 63 64
  GtkWidget *child;  
  GtkWidget *arrow;
  GtkWidget *alignment;
65
  GdkWindow *window;
Havoc Pennington's avatar
Havoc Pennington committed
66
  gfloat xalign;
67
  guint property_changed_signal;
68

Havoc Pennington's avatar
Havoc Pennington committed
69
  gint width;
70
  gint requested_width;
71 72
  gint min_width;
  gint max_width;
73
  gint displayed_width;
74

Jonathan Blandford's avatar
Jonathan Blandford committed
75 76 77 78
  /* dragging columns */
  gint drag_x;
  gint drag_y;

79
  GtkTreeCellDataFunc func;
80
  gpointer func_data;
81
  GtkDestroyNotify destroy;
82 83 84
  gchar *title;
  GtkCellRenderer *cell;
  GSList *attributes;
Havoc Pennington's avatar
Havoc Pennington committed
85
  GtkTreeViewColumnSizing column_type;
86 87

  /* Sorting */
88 89
  guint sort_clicked_signal;
  guint sort_column_changed_signal;
90
  gint sort_column_id;
Havoc Pennington's avatar
Havoc Pennington committed
91
  GtkTreeSortOrder sort_order;
92

93 94 95
  guint visible             : 1;
  guint clickable           : 1;
  guint dirty               : 1;
Havoc Pennington's avatar
Havoc Pennington committed
96
  guint show_sort_indicator : 1;
Jonathan Blandford's avatar
Jonathan Blandford committed
97
  guint maybe_reordered     : 1;
98
  guint reorderable         : 1;
99 100 101 102 103 104 105 106 107
};

struct _GtkTreeViewColumnClass
{
  GtkObjectClass parent_class;

  void (*clicked) (GtkTreeViewColumn *tree_column);
};

Jonathan Blandford's avatar
Jonathan Blandford committed
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
GtkType                 gtk_tree_view_column_get_type            (void);
GtkTreeViewColumn    *  gtk_tree_view_column_new                 (void);
GtkTreeViewColumn    *  gtk_tree_view_column_new_with_attributes (const gchar             *title,
								  GtkCellRenderer         *cell,
								  ...);
void                    gtk_tree_view_column_set_cell_renderer   (GtkTreeViewColumn       *tree_column,
								  GtkCellRenderer         *cell);
GtkCellRenderer      *  gtk_tree_view_column_get_cell_renderer   (GtkTreeViewColumn       *tree_column);
void                    gtk_tree_view_column_add_attribute       (GtkTreeViewColumn       *tree_column,
								  const gchar             *attribute,
								  gint                     column);
void                    gtk_tree_view_column_set_attributes      (GtkTreeViewColumn       *tree_column,
								  ...);
void                    gtk_tree_view_column_set_cell_data_func  (GtkTreeViewColumn       *tree_column,
								  GtkTreeCellDataFunc      func,
								  gpointer                 func_data,
								  GtkDestroyNotify         destroy);
void                    gtk_tree_view_column_clear_attributes    (GtkTreeViewColumn       *tree_column);
void                    gtk_tree_view_column_set_visible         (GtkTreeViewColumn       *tree_column,
								  gboolean                 visible);
gboolean                gtk_tree_view_column_get_visible         (GtkTreeViewColumn       *tree_column);
void                    gtk_tree_view_column_set_sizing          (GtkTreeViewColumn       *tree_column,
								  GtkTreeViewColumnSizing  type);
GtkTreeViewColumnSizing gtk_tree_view_column_get_sizing          (GtkTreeViewColumn       *tree_column);
gint                    gtk_tree_view_column_get_width           (GtkTreeViewColumn       *tree_column);
void                    gtk_tree_view_column_set_width           (GtkTreeViewColumn       *tree_column,
Havoc Pennington's avatar
Havoc Pennington committed
134
								  gint                     width);
Jonathan Blandford's avatar
Jonathan Blandford committed
135 136 137 138 139 140 141
void                    gtk_tree_view_column_set_min_width       (GtkTreeViewColumn       *tree_column,
								  gint                     min_width);
gint                    gtk_tree_view_column_get_min_width       (GtkTreeViewColumn       *tree_column);
void                    gtk_tree_view_column_set_max_width       (GtkTreeViewColumn       *tree_column,
								  gint                     max_width);
gint                    gtk_tree_view_column_get_max_width       (GtkTreeViewColumn       *tree_column);
void                    gtk_tree_view_column_clicked             (GtkTreeViewColumn       *tree_column);
142

143

144 145 146

/* Options for manipulating the column headers
 */
Jonathan Blandford's avatar
Jonathan Blandford committed
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
void                    gtk_tree_view_column_set_title           (GtkTreeViewColumn       *tree_column,
								  const gchar             *title);
G_CONST_RETURN gchar *  gtk_tree_view_column_get_title           (GtkTreeViewColumn       *tree_column);
void                    gtk_tree_view_column_set_clickable       (GtkTreeViewColumn       *tree_column,
								  gboolean                 clickable);
gboolean                gtk_tree_view_column_get_clickable       (GtkTreeViewColumn       *tree_column);
void                    gtk_tree_view_column_set_widget          (GtkTreeViewColumn       *tree_column,
								  GtkWidget               *widget);
GtkWidget            *  gtk_tree_view_column_get_widget          (GtkTreeViewColumn       *tree_column);
void                    gtk_tree_view_column_set_alignment       (GtkTreeViewColumn       *tree_column,
								  gfloat                   xalign);
gfloat                  gtk_tree_view_column_get_alignment       (GtkTreeViewColumn       *tree_column);
void                    gtk_tree_view_column_set_reorderable     (GtkTreeViewColumn       *tree_column,
								  gboolean                 reorderable);
gboolean                gtk_tree_view_column_get_reorderable     (GtkTreeViewColumn       *tree_column);

163

164 165 166 167

/* You probably only want to use gtk_tree_view_column_set_sort_column_id.  The
 * other sorting functions exist primarily to let others do their own custom sorting.
 */
Jonathan Blandford's avatar
Jonathan Blandford committed
168 169
void                    gtk_tree_view_column_set_sort_column_id  (GtkTreeViewColumn       *tree_column,
								  gint                     sort_column_id);
170
gint                    gtk_tree_view_column_get_sort_column_id  (GtkTreeViewColumn       *tree_column);
Jonathan Blandford's avatar
Jonathan Blandford committed
171 172 173 174 175 176 177
void                    gtk_tree_view_column_set_sort_indicator  (GtkTreeViewColumn       *tree_column,
								  gboolean                 setting);
gboolean                gtk_tree_view_column_get_sort_indicator  (GtkTreeViewColumn       *tree_column);
void                    gtk_tree_view_column_set_sort_order      (GtkTreeViewColumn       *tree_column,
								  GtkTreeSortOrder         order);
GtkTreeSortOrder        gtk_tree_view_column_get_sort_order      (GtkTreeViewColumn       *tree_column);

178

179 180
/* These functions are meant primarily for interaction between the GtkTreeView and the column.
 */
Jonathan Blandford's avatar
Jonathan Blandford committed
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
void                    gtk_tree_view_column_cell_set_cell_data  (GtkTreeViewColumn       *tree_column,
								  GtkTreeModel            *tree_model,
								  GtkTreeIter             *iter);
void                    gtk_tree_view_column_cell_get_size       (GtkTreeViewColumn       *tree_column,
								  GdkRectangle            *cell_area,
								  gint                    *x_offset,
								  gint                    *y_offset,
								  gint                    *width,
								  gint                    *height);
void                    gtk_tree_view_column_cell_render         (GtkTreeViewColumn       *tree_column,
								  GdkWindow               *window,
								  GdkRectangle            *background_area,
								  GdkRectangle            *cell_area,
								  GdkRectangle            *expose_area,
								  guint                    flags);
gboolean                gtk_tree_view_column_cell_event          (GtkTreeViewColumn       *tree_column,
								  GdkEvent                *event,
								  gchar                   *path_string,
								  GdkRectangle            *background_area,
								  GdkRectangle            *cell_area,
								  guint                    flags);

203

204 205 206 207 208
#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* __GTK_TREE_VIEW_COLUMN_H__ */
209