From a513a5f502e7d1d89e6294c3afa4ea20af50edb5 Mon Sep 17 00:00:00 2001 From: Christopher James Lahey Date: Mon, 17 Sep 2001 03:57:12 +0000 Subject: Bumped version number to 0.11.99.4. 2001-09-16 Christopher James Lahey * configure.in: Bumped version number to 0.11.99.4. * gal/e-text/e-completion-view.c (e_completion_view_construct), tests/test-table-1.c (create_table): Changed the parameters to e_table_simple_new here to adjust to changes in the interface. * gal/widgets/e-categories-master-list-array.c (ecmla_default): Fixed a memory leak here. * gal/widgets/e-categories.c (e_categories_get_save_id): Added get_save_id here so that selection would be maintained across changes. From gal/e-table/ChangeLog: 2001-09-16 Christopher James Lahey * e-table-model.c, e-table-model.h (e_table_model_class_init): Rearranged order of has_save_id and get_save_id to be more consistent with ETree. * e-table-selection-model.c, e-table-selection-model.h: Turned on the code to maintain selection and cursor across changes if the model supports get_save_id. * e-table-simple.c, e-table-simple.h: Changed this interface to take all of the ETableModel functions in the _new function. * e-table-subset.c (etss_has_save_id, etss_get_save_id): Added these to properly proxy the save_id functionality. * e-tree-memory-callbacks.c, e-tree-memory-callbacks.h, e-tree-model.c, e-tree-model.h, e-tree-sorted.c: Made the save_id parameter to get_node_by_id be const char * instead of char *. * e-tree-table-adapter.c (etta_class_init): Rearranged some assignments here to be more consistent. svn path=/trunk/; revision=12869 --- widgets/table/e-table-simple.c | 166 +++++++++++++++++++++-------------------- 1 file changed, 84 insertions(+), 82 deletions(-) (limited to 'widgets/table/e-table-simple.c') diff --git a/widgets/table/e-table-simple.c b/widgets/table/e-table-simple.c index 82d29bd6c7..62ea102b7b 100644 --- a/widgets/table/e-table-simple.c +++ b/widgets/table/e-table-simple.c @@ -13,11 +13,6 @@ #include #include "e-table-simple.h" -enum { - ARG_0, - ARG_APPEND_ROW, -}; - #define PARENT_TYPE e_table_model_get_type () static int @@ -42,6 +37,15 @@ simple_row_count (ETableModel *etm) return 0; } +static void +simple_append_row (ETableModel *etm, ETableModel *source, int row) +{ + ETableSimple *simple = E_TABLE_SIMPLE(etm); + + if (simple->append_row) + simple->append_row (etm, source, row, simple->data); +} + static void * simple_value_at (ETableModel *etm, int col, int row) { @@ -73,6 +77,28 @@ simple_is_cell_editable (ETableModel *etm, int col, int row) return FALSE; } +static gboolean +simple_has_save_id (ETableModel *etm) +{ + ETableSimple *simple = E_TABLE_SIMPLE(etm); + + if (simple->has_save_id) + return simple->has_save_id (etm, simple->data); + else + return FALSE; +} + +static char * +simple_get_save_id (ETableModel *etm, int row) +{ + ETableSimple *simple = E_TABLE_SIMPLE(etm); + + if (simple->get_save_id) + return simple->get_save_id (etm, row, simple->data); + else + return NULL; +} + /* The default for simple_duplicate_value is to return the raw value. */ static void * simple_duplicate_value (ETableModel *etm, int col, const void *value) @@ -128,62 +154,26 @@ simple_value_to_string (ETableModel *etm, int col, const void *value) } static void -simple_append_row (ETableModel *etm, ETableModel *source, int row) -{ - ETableSimple *simple = E_TABLE_SIMPLE(etm); - - if (simple->append_row) - simple->append_row (etm, source, row, simple->data); -} - -static void -simple_get_arg (GtkObject *o, GtkArg *arg, guint arg_id) +e_table_simple_class_init (GtkObjectClass *object_class) { - ETableSimple *simple = E_TABLE_SIMPLE (o); + ETableModelClass *model_class = (ETableModelClass *) object_class; - switch (arg_id){ - case ARG_APPEND_ROW: - GTK_VALUE_POINTER(*arg) = simple->append_row; - break; - } -} + model_class->column_count = simple_column_count; + model_class->row_count = simple_row_count; + model_class->append_row = simple_append_row; -static void -simple_set_arg (GtkObject *o, GtkArg *arg, guint arg_id) -{ - ETableSimple *simple = E_TABLE_SIMPLE (o); - - switch (arg_id){ - case ARG_APPEND_ROW: - simple->append_row = GTK_VALUE_POINTER(*arg); - break; - default: - arg->type = GTK_TYPE_INVALID; - } -} + model_class->value_at = simple_value_at; + model_class->set_value_at = simple_set_value_at; + model_class->is_cell_editable = simple_is_cell_editable; -static void -e_table_simple_class_init (GtkObjectClass *object_class) -{ - ETableModelClass *model_class = (ETableModelClass *) object_class; + model_class->has_save_id = simple_has_save_id; + model_class->get_save_id = simple_get_save_id; - object_class->set_arg = simple_set_arg; - object_class->get_arg = simple_get_arg; - - model_class->column_count = simple_column_count; - model_class->row_count = simple_row_count; - model_class->value_at = simple_value_at; - model_class->set_value_at = simple_set_value_at; - model_class->is_cell_editable = simple_is_cell_editable; - model_class->duplicate_value = simple_duplicate_value; - model_class->free_value = simple_free_value; - model_class->initialize_value = simple_initialize_value; - model_class->value_is_empty = simple_value_is_empty; - model_class->value_to_string = simple_value_to_string; - model_class->append_row = simple_append_row; - - gtk_object_add_arg_type ("ETableSimple::append_row", GTK_TYPE_POINTER, - GTK_ARG_READWRITE, ARG_APPEND_ROW); + model_class->duplicate_value = simple_duplicate_value; + model_class->free_value = simple_free_value; + model_class->initialize_value = simple_initialize_value; + model_class->value_is_empty = simple_value_is_empty; + model_class->value_to_string = simple_value_to_string; } GtkType @@ -237,33 +227,45 @@ e_table_simple_get_type (void) * object). */ ETableModel * -e_table_simple_new (ETableSimpleColumnCountFn col_count, - ETableSimpleRowCountFn row_count, - ETableSimpleValueAtFn value_at, - ETableSimpleSetValueAtFn set_value_at, - ETableSimpleIsCellEditableFn is_cell_editable, - ETableSimpleDuplicateValueFn duplicate_value, - ETableSimpleFreeValueFn free_value, - ETableSimpleInitializeValueFn initialize_value, - ETableSimpleValueIsEmptyFn value_is_empty, - ETableSimpleValueToStringFn value_to_string, - void *data) +e_table_simple_new (ETableSimpleColumnCountFn col_count, + ETableSimpleRowCountFn row_count, + ETableSimpleAppendRowFn append_row, + + ETableSimpleValueAtFn value_at, + ETableSimpleSetValueAtFn set_value_at, + ETableSimpleIsCellEditableFn is_cell_editable, + + ETableSimpleHasSaveIdFn has_save_id, + ETableSimpleGetSaveIdFn get_save_id, + + ETableSimpleDuplicateValueFn duplicate_value, + ETableSimpleFreeValueFn free_value, + ETableSimpleInitializeValueFn initialize_value, + ETableSimpleValueIsEmptyFn value_is_empty, + ETableSimpleValueToStringFn value_to_string, + void *data) { ETableSimple *et; - et = gtk_type_new (e_table_simple_get_type ()); - - et->col_count = col_count; - et->row_count = row_count; - et->value_at = value_at; - et->set_value_at = set_value_at; - et->is_cell_editable = is_cell_editable; - et->duplicate_value = duplicate_value; - et->free_value = free_value; - et->initialize_value = initialize_value; - et->value_is_empty = value_is_empty; - et->value_to_string = value_to_string; - et->data = data; - + et = gtk_type_new (e_table_simple_get_type ()); + + et->col_count = col_count; + et->row_count = row_count; + et->append_row = append_row; + + et->value_at = value_at; + et->set_value_at = set_value_at; + et->is_cell_editable = is_cell_editable; + + et->has_save_id = has_save_id; + et->get_save_id = get_save_id; + + et->duplicate_value = duplicate_value; + et->free_value = free_value; + et->initialize_value = initialize_value; + et->value_is_empty = value_is_empty; + et->value_to_string = value_to_string; + et->data = data; + return (ETableModel *) et; - } +} -- cgit v1.2.3