diff options
Diffstat (limited to 'widgets/table/e-table-column-specification.c')
-rw-r--r-- | widgets/table/e-table-column-specification.c | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/widgets/table/e-table-column-specification.c b/widgets/table/e-table-column-specification.c new file mode 100644 index 0000000000..1b16fdf170 --- /dev/null +++ b/widgets/table/e-table-column-specification.c @@ -0,0 +1,108 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * E-table-column-specification.c: Savable specification of a column. + * + * Author: + * Chris Lahey <clahey@helixcode.com> + * + * (C) 2000 Helix Code, Inc. + */ +#include <config.h> +#include <stdlib.h> +#include <gtk/gtksignal.h> +#include <gnome-xml/parser.h> +#include <gnome-xml/xmlmemory.h> +#include "gal/util/e-xml-utils.h" +#include "gal/util/e-util.h" +#include "e-table-column-specification.h" + +#define PARENT_TYPE (gtk_object_get_type()) + +static GtkObjectClass *etcs_parent_class; + +static void +etcs_destroy (GtkObject *object) +{ + ETableColumnSpecification *etcs = E_TABLE_COLUMN_SPECIFICATION (object); + + g_free(etcs->title_); + g_free(etcs->pixbuf); + g_free(etcs->cell); + g_free(etcs->compare); + + GTK_OBJECT_CLASS (etcs_parent_class)->destroy (object); +} + +static void +etcs_class_init (GtkObjectClass *klass) +{ + etcs_parent_class = gtk_type_class (PARENT_TYPE); + + klass->destroy = etcs_destroy; +} + +static void +etcs_init (ETableColumnSpecification *specification) +{ + specification->model_col = 0; + specification->title_ = NULL; + specification->pixbuf = NULL; + + specification->expansion = 0; + specification->minimum_width = 0; + specification->resizable = FALSE; + + specification->cell = NULL; + specification->compare = NULL; +} + +E_MAKE_TYPE(e_table_column_specification, "ETableColumnSpecification", ETableColumnSpecification, etcs_class_init, etcs_init, PARENT_TYPE); + +ETableColumnSpecification * +e_table_column_specification_new (void) +{ + ETableColumnSpecification *etcs = gtk_type_new (E_TABLE_COLUMN_SPECIFICATION_TYPE); + + return (ETableColumnSpecification *) etcs; +} + +void +e_table_column_specification_load_from_node (ETableColumnSpecification *specification, + const xmlNode *node) +{ + specification->model_col = e_xml_get_integer_prop_by_name(node, "model_col"); + specification->title_ = e_xml_get_translated_string_prop_by_name(node, "_title"); + specification->pixbuf = e_xml_get_translated_string_prop_by_name(node, "pixbuf"); + + specification->expansion = e_xml_get_double_prop_by_name(node, "expansion"); + specification->minimum_width = e_xml_get_integer_prop_by_name(node, "minimum_width"); + specification->resizable = e_xml_get_bool_prop_by_name(node, "resizable"); + + specification->cell = e_xml_get_string_prop_by_name(node, "cell"); + specification->compare = e_xml_get_string_prop_by_name(node, "compare"); +} + +xmlNode * +e_table_column_specification_save_to_node (ETableColumnSpecification *specification, + xmlNode *parent) +{ + xmlNode *node; + if (parent) + node = xmlNewChild(parent, NULL, "ETableColumn", NULL); + else + node = xmlNewNode(NULL, "ETableColumn"); + + e_xml_set_integer_prop_by_name(node, "model_col", specification->model_col); + e_xml_set_string_prop_by_name(node, "_title", specification->title_); + e_xml_set_string_prop_by_name(node, "pixbuf", specification->pixbuf); + + e_xml_set_double_prop_by_name(node, "expansion", specification->expansion); + e_xml_set_integer_prop_by_name(node, "minimum_width", specification->minimum_width); + e_xml_set_bool_prop_by_name(node, "resizable", specification->resizable); + + e_xml_set_string_prop_by_name(node, "cell", specification->cell); + e_xml_set_string_prop_by_name(node, "compare", specification->compare); + + return node; +} + |