aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/e-table/e-table.c
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/e-table/e-table.c')
-rw-r--r--widgets/e-table/e-table.c65
1 files changed, 49 insertions, 16 deletions
diff --git a/widgets/e-table/e-table.c b/widgets/e-table/e-table.c
index 225880705b..61f7f97918 100644
--- a/widgets/e-table/e-table.c
+++ b/widgets/e-table/e-table.c
@@ -46,7 +46,9 @@ enum {
enum {
ARG_0,
ARG_TABLE_DRAW_GRID,
- ARG_TABLE_DRAW_FOCUS
+ ARG_TABLE_DRAW_FOCUS,
+ ARG_MODE_SPREADSHEET,
+ ARG_LENGTH_THRESHOLD,
};
static gint et_signals [LAST_SIGNAL] = { 0, };
@@ -103,6 +105,7 @@ e_table_init (GtkObject *object)
e_table->draw_grid = 1;
e_table->draw_focus = 1;
e_table->spreadsheet = 1;
+ e_table->length_threshold = 200;
e_table->need_rebuild = 0;
e_table->rebuild_idle_id = 0;
@@ -198,6 +201,12 @@ changed_idle (gpointer data)
et->model,
et->sort_info,
0);
+ gnome_canvas_item_set(GNOME_CANVAS_ITEM(et->group),
+ "drawgrid", et->draw_grid,
+ "drawfocus", et->draw_focus,
+ "spreadsheet", et->spreadsheet,
+ "length_threshold", et->length_threshold,
+ NULL);
gtk_signal_connect (GTK_OBJECT (et->group), "row_selection",
GTK_SIGNAL_FUNC (group_row_selection), et);
e_table_fill_table (et, et->model);
@@ -271,6 +280,13 @@ e_table_setup_table (ETable *e_table, ETableHeader *full_header, ETableHeader *h
full_header, header,
model, e_table->sort_info, 0);
+ gnome_canvas_item_set(GNOME_CANVAS_ITEM(e_table->group),
+ "drawgrid", e_table->draw_grid,
+ "drawfocus", e_table->draw_focus,
+ "spreadsheet", e_table->spreadsheet,
+ "length_threshold", e_table->length_threshold,
+ NULL);
+
gtk_signal_connect (GTK_OBJECT (e_table->group), "row_selection",
GTK_SIGNAL_FUNC(group_row_selection), e_table);
@@ -625,32 +641,45 @@ typedef struct {
} bool_closure;
static void
-leaf_bool_change (void *etgl, void *closure)
-{
- bool_closure *bc = closure;
-
- gtk_object_set (GTK_OBJECT (etgl), bc->arg, bc->setting, NULL);
-}
-
-static void
et_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
{
ETable *etable = E_TABLE (o);
- bool_closure bc;
switch (arg_id){
+ case ARG_LENGTH_THRESHOLD:
+ etable->length_threshold = GTK_VALUE_INT (*arg);
+ if (etable->group) {
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM(etable->group),
+ "length_threshold", GTK_VALUE_INT (*arg),
+ NULL);
+ }
+ break;
+
case ARG_TABLE_DRAW_GRID:
etable->draw_grid = GTK_VALUE_BOOL (*arg);
- bc.arg = "drawgrid";
- bc.setting = etable->draw_grid;
- e_table_group_apply_to_leafs (etable->group, leaf_bool_change, &bc);
+ if (etable->group) {
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM(etable->group),
+ "drawgrid", GTK_VALUE_BOOL (*arg),
+ NULL);
+ }
break;
case ARG_TABLE_DRAW_FOCUS:
etable->draw_focus = GTK_VALUE_BOOL (*arg);
- bc.arg = "drawfocus";
- bc.setting = etable->draw_focus;
- e_table_group_apply_to_leafs (etable->group, leaf_bool_change, &bc);
+ if (etable->group) {
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM(etable->group),
+ "drawfocus", GTK_VALUE_BOOL (*arg),
+ NULL);
+ }
+ break;
+
+ case ARG_MODE_SPREADSHEET:
+ etable->spreadsheet = GTK_VALUE_BOOL (*arg);
+ if (etable->group) {
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM(etable->group),
+ "spreadsheet", GTK_VALUE_BOOL (*arg),
+ NULL);
+ }
break;
}
}
@@ -681,6 +710,10 @@ e_table_class_init (GtkObjectClass *object_class)
GTK_ARG_READWRITE, ARG_TABLE_DRAW_GRID);
gtk_object_add_arg_type ("ETable::drawfocus", GTK_TYPE_BOOL,
GTK_ARG_READWRITE, ARG_TABLE_DRAW_FOCUS);
+ gtk_object_add_arg_type ("ETable::spreadsheet", GTK_TYPE_BOOL,
+ GTK_ARG_WRITABLE, ARG_MODE_SPREADSHEET);
+ gtk_object_add_arg_type ("ETable::length_threshold", GTK_TYPE_INT,
+ GTK_ARG_WRITABLE, ARG_LENGTH_THRESHOLD);
}