diff options
Diffstat (limited to 'widgets/table/e-table-simple.c')
-rw-r--r-- | widgets/table/e-table-simple.c | 166 |
1 files changed, 84 insertions, 82 deletions
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 <config.h> #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; - } +} |