X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtktreeviewcolumn.h;h=47cea714364ca1769b3c82516b67451e7a5e0a37;hb=HEAD;hp=65e2eb8b288598017e379625e14ddf6db419db61;hpb=11043de66f76cfb2e88693a365c857969ede7c74;p=~andy%2Fgtk diff --git a/gtk/gtktreeviewcolumn.h b/gtk/gtktreeviewcolumn.h index 65e2eb8b2..47cea7143 100644 --- a/gtk/gtktreeviewcolumn.h +++ b/gtk/gtktreeviewcolumn.h @@ -12,199 +12,213 @@ * 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_COLUMN_H__ #define __GTK_TREE_VIEW_COLUMN_H__ -#include +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif + #include #include #include +#include -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ -#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)) -#define GTK_TREE_VIEW_COLUMN_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_TREE_VIEW_COLUMN, GtkTreeViewColumnClass)) +G_BEGIN_DECLS + +#define GTK_TYPE_TREE_VIEW_COLUMN (gtk_tree_view_column_get_type ()) +#define GTK_TREE_VIEW_COLUMN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TREE_VIEW_COLUMN, GtkTreeViewColumn)) +#define GTK_TREE_VIEW_COLUMN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE_VIEW_COLUMN, GtkTreeViewColumnClass)) +#define GTK_IS_TREE_VIEW_COLUMN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TREE_VIEW_COLUMN)) +#define GTK_IS_TREE_VIEW_COLUMN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TREE_VIEW_COLUMN)) +#define GTK_TREE_VIEW_COLUMN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TREE_VIEW_COLUMN, GtkTreeViewColumnClass)) + +typedef struct _GtkTreeViewColumn GtkTreeViewColumn; +typedef struct _GtkTreeViewColumnClass GtkTreeViewColumnClass; +typedef struct _GtkTreeViewColumnPrivate GtkTreeViewColumnPrivate; + +/** + * GtkTreeViewColumnSizing: + * @GTK_TREE_VIEW_COLUMN_GROW_ONLY: Columns only get bigger in reaction to changes in the model + * @GTK_TREE_VIEW_COLUMN_AUTOSIZE: Columns resize to be the optimal size everytime the model changes. + * @GTK_TREE_VIEW_COLUMN_FIXED: Columns are a fixed numbers of pixels wide. + * + * The sizing method the column uses to determine its width. Please note + * that @GTK_TREE_VIEW_COLUMN_AUTOSIZE are inefficient for large views, and + * can make columns appear choppy. + */ typedef enum { - GTK_TREE_VIEW_COLUMN_RESIZEABLE, + GTK_TREE_VIEW_COLUMN_GROW_ONLY, GTK_TREE_VIEW_COLUMN_AUTOSIZE, GTK_TREE_VIEW_COLUMN_FIXED } GtkTreeViewColumnSizing; -typedef struct _GtkTreeViewColumn GtkTreeViewColumn; -typedef struct _GtkTreeViewColumnClass GtkTreeViewColumnClass; - +/** + * GtkTreeCellDataFunc: + * @tree_column: A #GtkTreeViewColumn + * @cell: The #GtkCellRenderer that is being rendered by @tree_column + * @tree_model: The #GtkTreeModel being rendered + * @iter: A #GtkTreeIter of the current row rendered + * @data: user data + * + * A function to set the properties of a cell instead of just using the + * straight mapping between the cell and the model. This is useful for + * customizing the cell renderer. For example, a function might get an + * integer from the @tree_model, and render it to the "text" attribute of + * "cell" by converting it to its written equivilent. This is set by + * calling gtk_tree_view_column_set_cell_data_func() + */ typedef void (* GtkTreeCellDataFunc) (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data); - + struct _GtkTreeViewColumn { - GtkObject parent; - - GtkWidget *tree_view; - GtkWidget *button; - GtkWidget *child; - GtkWidget *arrow; - GtkWidget *alignment; - GdkWindow *window; - gfloat xalign; - guint property_changed_signal; - - gint width; - gint requested_width; - gint min_width; - gint max_width; - gint displayed_width; - - /* dragging columns */ - gint drag_x; - gint drag_y; - - GtkTreeCellDataFunc func; - gpointer func_data; - GtkDestroyNotify destroy; - gchar *title; - GtkCellRenderer *cell; - GSList *attributes; - GtkTreeViewColumnSizing column_type; - - /* Sorting */ - guint sort_clicked_signal; - guint sort_column_changed_signal; - gint sort_column_id; - GtkTreeSortOrder sort_order; - - guint visible : 1; - guint clickable : 1; - guint dirty : 1; - guint show_sort_indicator : 1; - guint maybe_reordered : 1; - guint reorderable : 1; + GInitiallyUnowned parent_instance; + + GtkTreeViewColumnPrivate *priv; }; struct _GtkTreeViewColumnClass { - GtkObjectClass parent_class; + GInitiallyUnownedClass parent_class; void (*clicked) (GtkTreeViewColumn *tree_column); + + /* Padding for future expansion */ + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); }; +GType gtk_tree_view_column_get_type (void) G_GNUC_CONST; +GtkTreeViewColumn *gtk_tree_view_column_new (void); +GtkTreeViewColumn *gtk_tree_view_column_new_with_area (GtkCellArea *area); +GtkTreeViewColumn *gtk_tree_view_column_new_with_attributes (const gchar *title, + GtkCellRenderer *cell, + ...) G_GNUC_NULL_TERMINATED; +void gtk_tree_view_column_pack_start (GtkTreeViewColumn *tree_column, + GtkCellRenderer *cell, + gboolean expand); +void gtk_tree_view_column_pack_end (GtkTreeViewColumn *tree_column, + GtkCellRenderer *cell, + gboolean expand); +void gtk_tree_view_column_clear (GtkTreeViewColumn *tree_column); +void gtk_tree_view_column_add_attribute (GtkTreeViewColumn *tree_column, + GtkCellRenderer *cell_renderer, + const gchar *attribute, + gint column); +void gtk_tree_view_column_set_attributes (GtkTreeViewColumn *tree_column, + GtkCellRenderer *cell_renderer, + ...) G_GNUC_NULL_TERMINATED; +void gtk_tree_view_column_set_cell_data_func (GtkTreeViewColumn *tree_column, + GtkCellRenderer *cell_renderer, + GtkTreeCellDataFunc func, + gpointer func_data, + GDestroyNotify destroy); +void gtk_tree_view_column_clear_attributes (GtkTreeViewColumn *tree_column, + GtkCellRenderer *cell_renderer); +void gtk_tree_view_column_set_spacing (GtkTreeViewColumn *tree_column, + gint spacing); +gint gtk_tree_view_column_get_spacing (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_resizable (GtkTreeViewColumn *tree_column, + gboolean resizable); +gboolean gtk_tree_view_column_get_resizable (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); +GDK_AVAILABLE_IN_3_2 +gint gtk_tree_view_column_get_x_offset (GtkTreeViewColumn *tree_column); +gint gtk_tree_view_column_get_width (GtkTreeViewColumn *tree_column); +gint gtk_tree_view_column_get_fixed_width (GtkTreeViewColumn *tree_column); +void gtk_tree_view_column_set_fixed_width (GtkTreeViewColumn *tree_column, + gint fixed_width); +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); -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); -gint 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, - gint size); -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); /* Options for manipulating the column headers */ -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); +void gtk_tree_view_column_set_title (GtkTreeViewColumn *tree_column, + const gchar *title); +const gchar * gtk_tree_view_column_get_title (GtkTreeViewColumn *tree_column); +void gtk_tree_view_column_set_expand (GtkTreeViewColumn *tree_column, + gboolean expand); +gboolean gtk_tree_view_column_get_expand (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); + /* 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. */ -void gtk_tree_view_column_set_sort_column_id (GtkTreeViewColumn *tree_column, - gint sort_column_id); -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); - +void gtk_tree_view_column_set_sort_column_id (GtkTreeViewColumn *tree_column, + gint sort_column_id); +gint gtk_tree_view_column_get_sort_column_id (GtkTreeViewColumn *tree_column); +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, + GtkSortType order); +GtkSortType gtk_tree_view_column_get_sort_order (GtkTreeViewColumn *tree_column); /* These functions are meant primarily for interaction between the GtkTreeView and the column. */ -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); - - - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ +void gtk_tree_view_column_cell_set_cell_data (GtkTreeViewColumn *tree_column, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gboolean is_expander, + gboolean is_expanded); +void gtk_tree_view_column_cell_get_size (GtkTreeViewColumn *tree_column, + const GdkRectangle *cell_area, + gint *x_offset, + gint *y_offset, + gint *width, + gint *height); +gboolean gtk_tree_view_column_cell_is_visible (GtkTreeViewColumn *tree_column); +void gtk_tree_view_column_focus_cell (GtkTreeViewColumn *tree_column, + GtkCellRenderer *cell); +gboolean gtk_tree_view_column_cell_get_position (GtkTreeViewColumn *tree_column, + GtkCellRenderer *cell_renderer, + gint *x_offset, + gint *width); +void gtk_tree_view_column_queue_resize (GtkTreeViewColumn *tree_column); +GtkWidget *gtk_tree_view_column_get_tree_view (GtkTreeViewColumn *tree_column); +GtkWidget *gtk_tree_view_column_get_button (GtkTreeViewColumn *tree_column); + + +G_END_DECLS -#endif /* __GTK_TREE_VIEW_COLUMN_H__ */ +#endif /* __GTK_TREE_VIEW_COLUMN_H__ */