diff options
Diffstat (limited to 'widgets/table')
-rw-r--r-- | widgets/table/e-cell-tree.c | 23 | ||||
-rw-r--r-- | widgets/table/e-cell-tree.h | 14 | ||||
-rw-r--r-- | widgets/table/e-tree-example-1.c | 16 |
3 files changed, 34 insertions, 19 deletions
diff --git a/widgets/table/e-cell-tree.c b/widgets/table/e-cell-tree.c index 893cae4f4c..28de6ff5bb 100644 --- a/widgets/table/e-cell-tree.c +++ b/widgets/table/e-cell-tree.c @@ -31,9 +31,6 @@ #include <ctype.h> #include <math.h> -#include "tree-expanded.xpm" -#include "tree-unexpanded.xpm" - #define PARENT_TYPE e_cell_get_type () typedef struct { @@ -47,8 +44,6 @@ typedef struct { static ECellClass *parent_class; -static GdkPixbuf *tree_expanded_pixbuf, *tree_unexpanded_pixbuf; - #define INDENT_AMOUNT 16 static int @@ -249,7 +244,9 @@ ect_draw (ECellView *ecell_view, GdkDrawable *drawable, /* now draw our icon if we're expandable */ if (expandable) { - GdkPixbuf *image = expanded ? tree_expanded_pixbuf : tree_unexpanded_pixbuf; + GdkPixbuf *image = (expanded + ? E_CELL_TREE(tree_view->cell_view.ecell)->open_pixbuf + : E_CELL_TREE(tree_view->cell_view.ecell)->closed_pixbuf); int width, height; width = gdk_pixbuf_get_width(image); @@ -390,34 +387,34 @@ e_cell_tree_class_init (GtkObjectClass *object_class) ecc->leave_edit = ect_leave_edit; parent_class = gtk_type_class (PARENT_TYPE); - - /* - * Create our pixbuf for expanding/unexpanding - */ - tree_expanded_pixbuf = gdk_pixbuf_new_from_xpm_data(tree_expanded_xpm); - tree_unexpanded_pixbuf = gdk_pixbuf_new_from_xpm_data(tree_unexpanded_xpm); } E_MAKE_TYPE(e_cell_tree, "ECellTree", ECellTree, e_cell_tree_class_init, NULL, PARENT_TYPE); void e_cell_tree_construct (ECellTree *ect, + GdkPixbuf *open_pixbuf, + GdkPixbuf *closed_pixbuf, gboolean draw_lines, ECell *subcell) { ect->subcell = subcell; + ect->open_pixbuf = open_pixbuf; + ect->closed_pixbuf = closed_pixbuf; ect->draw_lines = draw_lines; } ECell * e_cell_tree_new (ETableModel *etm, + GdkPixbuf *open_pixbuf, + GdkPixbuf *closed_pixbuf, gboolean draw_lines, ECell *subcell) { ECellTree *ect = gtk_type_new (e_cell_tree_get_type ()); - e_cell_tree_construct (ect, draw_lines, subcell); + e_cell_tree_construct (ect, open_pixbuf, closed_pixbuf, draw_lines, subcell); return (ECell *) ect; } diff --git a/widgets/table/e-cell-tree.h b/widgets/table/e-cell-tree.h index 6bd842b39e..ef6babeda4 100644 --- a/widgets/table/e-cell-tree.h +++ b/widgets/table/e-cell-tree.h @@ -21,8 +21,8 @@ typedef struct { gboolean draw_lines; - GdkPixbuf *expanded_image; - GdkPixbuf *unexpanded_image; + GdkPixbuf *open_pixbuf; + GdkPixbuf *closed_pixbuf; ECell *subcell; } ECellTree; @@ -32,9 +32,15 @@ typedef struct { } ECellTreeClass; GtkType e_cell_tree_get_type (void); -ECell *e_cell_tree_new (ETableModel *model, gboolean draw_lines, +ECell *e_cell_tree_new (ETableModel *model, + GdkPixbuf *open_pixbuf, + GdkPixbuf *closed_pixbuf, + gboolean draw_lines, ECell *subcell); -void e_cell_tree_construct (ECellTree *ect, gboolean draw_lines, +void e_cell_tree_construct (ECellTree *ect, + GdkPixbuf *open_pixbuf, + GdkPixbuf *closed_pixbuf, + gboolean draw_lines, ECell *subcell); #endif /* _E_CELL_TREE_H_ */ diff --git a/widgets/table/e-tree-example-1.c b/widgets/table/e-tree-example-1.c index c598e33ea4..e2ba566a99 100644 --- a/widgets/table/e-tree-example-1.c +++ b/widgets/table/e-tree-example-1.c @@ -15,7 +15,10 @@ #include <gdk-pixbuf/gdk-pixbuf.h> -#define ROWS 10 +#include "tree-expanded.xpm" +#include "tree-unexpanded.xpm" + + #define COLS 4 #define IMPORTANCE_COLUMN 4 @@ -218,6 +221,7 @@ static void create_tree (void) { GtkWidget *window, *frame, *button, *vbox; + GdkPixbuf *tree_expanded_pixbuf, *tree_unexpanded_pixbuf; ECell *cell_left_just; ECell *cell_tree; ETableHeader *e_table_header; @@ -265,13 +269,21 @@ create_tree (void) * each column. */ cell_left_just = e_cell_text_new (E_TABLE_MODEL(e_tree_model), NULL, GTK_JUSTIFY_LEFT); + + /* + * Create our pixbuf for expanding/unexpanding + */ + tree_expanded_pixbuf = gdk_pixbuf_new_from_xpm_data(tree_expanded_xpm); + tree_unexpanded_pixbuf = gdk_pixbuf_new_from_xpm_data(tree_unexpanded_xpm); /* * This renderer is used for the tree column (the leftmost one), and * has as its subcell renderer the text renderer. this means that * text is displayed to the right of the tree pipes. */ - cell_tree = e_cell_tree_new (E_TABLE_MODEL(e_tree_model), TRUE, cell_left_just); + cell_tree = e_cell_tree_new (E_TABLE_MODEL(e_tree_model), + tree_expanded_pixbuf, tree_unexpanded_pixbuf, + TRUE, cell_left_just); /* * Next we create a column object for each view column and add |