diff options
-rw-r--r-- | widgets/table/e-cell-number.c | 70 | ||||
-rw-r--r-- | widgets/table/e-cell-number.h | 28 | ||||
-rw-r--r-- | widgets/table/e-table-extras.c | 4 |
3 files changed, 101 insertions, 1 deletions
diff --git a/widgets/table/e-cell-number.c b/widgets/table/e-cell-number.c new file mode 100644 index 0000000000..8c8062d749 --- /dev/null +++ b/widgets/table/e-cell-number.c @@ -0,0 +1,70 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* ECellNumber - Number item for e-table. + * Copyright (C) 2001 Ximian, Inc. + * Author: Chris Lahey <clahey@ximian.com> + */ + +#include <config.h> +#include "gal/util/e-i18n.h" +#include "e-cell-number.h" +#include <gnome.h> +#include <sys/time.h> +#include <unistd.h> +#include <gal/util/e-util.h> + +#define PARENT_TYPE e_cell_text_get_type () + +static ECellTextClass *parent_class; + +static char * +ecn_get_text(ECellText *cell, ETableModel *model, int col, int row) +{ + return g_strdup_printf ("%d", GPOINTER_TO_INT (e_table_model_value_at(model, col, row))); +} + +static void +ecn_free_text(ECellText *cell, char *text) +{ + g_free(text); +} + +static void +e_cell_number_class_init (GtkObjectClass *object_class) +{ + ECellTextClass *ectc = (ECellTextClass *) object_class; + + parent_class = gtk_type_class (PARENT_TYPE); + + ectc->get_text = ecn_get_text; + ectc->free_text = ecn_free_text; +} + +static void +e_cell_number_init (GtkObject *object) +{ +} + +/** + * e_cell_number_new: + * @fontname: font to be used to render on the screen + * @justify: Justification of the string in the cell. + * + * Creates a new ECell renderer that can be used to render numbers that + * that come from the model. The value returned from the model is + * interpreted as being an int. + * + * See ECellText for other features. + * + * Returns: an ECell object that can be used to render numbers. + */ +ECell * +e_cell_number_new (const char *fontname, GtkJustification justify) +{ + ECellNumber *ecn = gtk_type_new (e_cell_number_get_type ()); + + e_cell_text_construct(E_CELL_TEXT(ecn), fontname, justify); + + return (ECell *) ecn; +} + +E_MAKE_TYPE(e_cell_number, "ECellNumber", ECellNumber, e_cell_number_class_init, e_cell_number_init, PARENT_TYPE); diff --git a/widgets/table/e-cell-number.h b/widgets/table/e-cell-number.h new file mode 100644 index 0000000000..8ac54b64b4 --- /dev/null +++ b/widgets/table/e-cell-number.h @@ -0,0 +1,28 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* ECellNumber - Number item for e-table. + * Copyright (C) 2001 Ximian, Inc. + * Author: Chris Lahey <clahey@ximian.com> + */ +#ifndef _E_CELL_NUMBER_H_ +#define _E_CELL_NUMBER_H_ + +#include <gal/e-table/e-cell-text.h> + +#define E_CELL_NUMBER_TYPE (e_cell_number_get_type ()) +#define E_CELL_NUMBER(o) (GTK_CHECK_CAST ((o), E_CELL_NUMBER_TYPE, ECellNumber)) +#define E_CELL_NUMBER_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_CELL_NUMBER_TYPE, ECellNumberClass)) +#define E_IS_CELL_NUMBER(o) (GTK_CHECK_TYPE ((o), E_CELL_NUMBER_TYPE)) +#define E_IS_CELL_NUMBER_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_CELL_NUMBER_TYPE)) + +typedef struct { + ECellText base; +} ECellNumber; + +typedef struct { + ECellTextClass parent_class; +} ECellNumberClass; + +GtkType e_cell_number_get_type (void); +ECell *e_cell_number_new (const char *fontname, GtkJustification justify); + +#endif /* _E_CELL_NUMBER_H_ */ diff --git a/widgets/table/e-table-extras.c b/widgets/table/e-table-extras.c index 5959a7989e..6135839994 100644 --- a/widgets/table/e-table-extras.c +++ b/widgets/table/e-table-extras.c @@ -14,6 +14,7 @@ #include "gal/e-table/e-cell-text.h" #include "gal/e-table/e-cell-checkbox.h" #include "gal/e-table/e-cell-date.h" +#include "gal/e-table/e-cell-number.h" #include "gal/e-table/e-cell-size.h" #include "gal/e-table/e-cell-tree.h" #include "e-table-extras.h" @@ -82,7 +83,8 @@ ete_init (ETableExtras *extras) e_table_extras_add_cell(extras, "checkbox", e_cell_checkbox_new()); e_table_extras_add_cell(extras, "date", e_cell_date_new (NULL, GTK_JUSTIFY_LEFT)); - e_table_extras_add_cell(extras, "size", e_cell_size_new (NULL, GTK_JUSTIFY_LEFT)); + e_table_extras_add_cell(extras, "number", e_cell_number_new (NULL, GTK_JUSTIFY_RIGHT)); + e_table_extras_add_cell(extras, "size", e_cell_size_new (NULL, GTK_JUSTIFY_RIGHT)); e_table_extras_add_cell(extras, "string", e_cell_text_new (NULL, GTK_JUSTIFY_LEFT)); e_table_extras_add_cell(extras, "tree-string", e_cell_tree_new (NULL, NULL, TRUE, e_cell_text_new (NULL, GTK_JUSTIFY_LEFT))); } |