diff options
-rw-r--r-- | widgets/table/e-cell-date.c | 15 | ||||
-rw-r--r-- | widgets/table/e-cell-size.c | 22 | ||||
-rw-r--r-- | widgets/table/e-cell-text.c | 49 | ||||
-rw-r--r-- | widgets/table/e-cell-text.h | 1 |
4 files changed, 60 insertions, 27 deletions
diff --git a/widgets/table/e-cell-date.c b/widgets/table/e-cell-date.c index 022a3fa517..ce2355197b 100644 --- a/widgets/table/e-cell-date.c +++ b/widgets/table/e-cell-date.c @@ -159,13 +159,14 @@ e_cell_date_init (GtkObject *object) * a finer control of the way the string is displayed. The arguments supported * allow the control of strikeout, bold, color and a date filter. * - * The arguments "strikeout_column", "bold_column" and "color_column" set - * and return an integer that points to a column in the model that controls - * these settings. So controlling the way things are rendered is achieved - * by having special columns in the model that will be used to flag whether - * the date should be rendered with strikeout, or bolded. In the case of - * the "color_column" argument, the column in the model is expected to have - * a string that can be parsed by gdk_color_parse(). + * The arguments "strikeout_column", "underline_column", "bold_column" + * and "color_column" set and return an integer that points to a + * column in the model that controls these settings. So controlling + * the way things are rendered is achieved by having special columns + * in the model that will be used to flag whether the date should be + * rendered with strikeout, underline, or bolded. In the case of the + * "color_column" argument, the column in the model is expected to + * have a string that can be parsed by gdk_color_parse(). * * Returns: an ECell object that can be used to render dates. */ diff --git a/widgets/table/e-cell-size.c b/widgets/table/e-cell-size.c index a72fc68321..1ba8f6d2e6 100644 --- a/widgets/table/e-cell-size.c +++ b/widgets/table/e-cell-size.c @@ -82,17 +82,19 @@ e_cell_size_init (GtkObject *object) * is interpreted as being a time_t. * * The ECellSize object support a large set of properties that can be - * configured through the Gtk argument system and allows the user to have - * a finer control of the way the string is displayed. The arguments supported - * allow the control of strikeout, bold, color and a size filter. + * configured through the Gtk argument system and allows the user to + * have a finer control of the way the string is displayed. The + * arguments supported allow the control of strikeout, underline, + * bold, color and a size filter. * - * The arguments "strikeout_column", "bold_column" and "color_column" set - * and return an integer that points to a column in the model that controls - * these settings. So controlling the way things are rendered is achieved - * by having special columns in the model that will be used to flag whether - * the size should be rendered with strikeout, or bolded. In the case of - * the "color_column" argument, the column in the model is expected to have - * a string that can be parsed by gdk_color_parse(). + * The arguments "strikeout_column", "underline_column", "bold_column" + * and "color_column" set and return an integer that points to a + * column in the model that controls these settings. So controlling + * the way things are rendered is achieved by having special columns + * in the model that will be used to flag whether the size should be + * rendered with strikeout, underline, or bolded. In the case of the + * "color_column" argument, the column in the model is expected to + * have a string that can be parsed by gdk_color_parse(). * * Returns: an ECell object that can be used to render file sizes. */ ECell * diff --git a/widgets/table/e-cell-text.c b/widgets/table/e-cell-text.c index 6477a91814..c848a369c1 100644 --- a/widgets/table/e-cell-text.c +++ b/widgets/table/e-cell-text.c @@ -80,6 +80,7 @@ enum { PROP_0, PROP_STRIKEOUT_COLUMN, + PROP_UNDERLINE_COLUMN, PROP_BOLD_COLUMN, PROP_COLOR_COLUMN, PROP_EDITABLE, @@ -456,7 +457,7 @@ build_layout (ECellTextView *text_view, int row, const char *text) ECellView *ecell_view = (ECellView *) text_view; ECellText *ect = E_CELL_TEXT (ecell_view->ecell); PangoLayout *layout; - gboolean bold, strikeout; + gboolean bold, strikeout, underline; layout = gtk_widget_create_pango_layout (GTK_WIDGET (((GnomeCanvasItem *)ecell_view->e_table_item_view)->canvas), text); @@ -466,8 +467,11 @@ build_layout (ECellTextView *text_view, int row, const char *text) strikeout = ect->strikeout_column >= 0 && row >= 0 && e_table_model_value_at(ecell_view->e_table_model, ect->strikeout_column, row); + underline = ect->underline_column >= 0 && + row >= 0 && + e_table_model_value_at(ecell_view->e_table_model, ect->underline_column, row); - if (bold || strikeout) { + if (bold || strikeout || underline) { PangoAttrList *attrs; int length = strlen (text); attrs = pango_attr_list_new (); @@ -485,6 +489,13 @@ build_layout (ECellTextView *text_view, int row, const char *text) pango_attr_list_insert_before (attrs, attr); } + if (underline) { + PangoAttribute *attr = pango_attr_underline_new (TRUE); + attr->start_index = 0; + attr->end_index = length; + + pango_attr_list_insert_before (attrs, attr); + } pango_layout_set_attributes (layout, attrs); pango_attr_list_unref (attrs); } @@ -1286,6 +1297,7 @@ ect_show_tooltip (ECellView *ecell_view, /* "font_gdk", text_view->font, */ "bold", (gboolean) ect->bold_column >= 0 && e_table_model_value_at(ecell_view->e_table_model, ect->bold_column, row), "strikeout", (gboolean) ect->strikeout_column >= 0 && e_table_model_value_at(ecell_view->e_table_model, ect->strikeout_column, row), + "underline", (gboolean) ect->underline_column >= 0 && e_table_model_value_at(ecell_view->e_table_model, ect->underline_column, row), "fill_color_gdk", tooltip->foreground, "text", pango_layout_get_text (layout), "editable", FALSE, @@ -1363,6 +1375,10 @@ ect_set_property (GObject *object, text->strikeout_column = g_value_get_int (value); break; + case PROP_UNDERLINE_COLUMN: + text->underline_column = g_value_get_int (value); + break; + case PROP_BOLD_COLUMN: text->bold_column = g_value_get_int (value); break; @@ -1400,6 +1416,10 @@ ect_get_property (GObject *object, g_value_set_int (value, text->strikeout_column); break; + case PROP_UNDERLINE_COLUMN: + g_value_set_int (value, text->underline_column); + break; + case PROP_BOLD_COLUMN: g_value_set_int (value, text->bold_column); break; @@ -1469,6 +1489,13 @@ e_cell_text_class_init (GObjectClass *object_class) 0, G_MAXINT, 0, G_PARAM_READWRITE)); + g_object_class_install_property (object_class, PROP_UNDERLINE_COLUMN, + g_param_spec_int ("underline_column", + _("Underline Column"), + /*_( */"XXX blurb" /*)*/, + 0, G_MAXINT, 0, + G_PARAM_READWRITE)); + g_object_class_install_property (object_class, PROP_BOLD_COLUMN, g_param_spec_int ("bold_column", _("Bold Column"), @@ -1516,6 +1543,7 @@ e_cell_text_init (ECellText *ect) ect->ellipsis = g_strdup (ellipsis_default); ect->use_ellipsis = use_ellipsis_default; ect->strikeout_column = -1; + ect->underline_column = -1; ect->bold_column = -1; ect->color_column = -1; ect->bg_color_column = -1; @@ -1555,15 +1583,16 @@ e_cell_text_construct (ECellText *cell, const char *fontname, GtkJustification j * The ECellText object support a large set of properties that can be * configured through the Gtk argument system and allows the user to have * a finer control of the way the string is displayed. The arguments supported - * allow the control of strikeout, bold, and color. + * allow the control of strikeout, underline, bold, and color. * - * The arguments "strikeout_column", "bold_column" and "color_column" set - * and return an integer that points to a column in the model that controls - * these settings. So controlling the way things are rendered is achieved - * by having special columns in the model that will be used to flag whether - * the text should be rendered with strikeout, or bolded. In the case of - * the "color_column" argument, the column in the model is expected to have - * a string that can be parsed by gdk_color_parse(). + * The arguments "strikeout_column", "underline_column", "bold_column" + * and "color_column" set and return an integer that points to a + * column in the model that controls these settings. So controlling + * the way things are rendered is achieved by having special columns + * in the model that will be used to flag whether the text should be + * rendered with strikeout, or bolded. In the case of the + * "color_column" argument, the column in the model is expected to + * have a string that can be parsed by gdk_color_parse(). * * Returns: an ECell object that can be used to render strings. */ diff --git a/widgets/table/e-cell-text.h b/widgets/table/e-cell-text.h index cad1c836a8..466fc54f1a 100644 --- a/widgets/table/e-cell-text.h +++ b/widgets/table/e-cell-text.h @@ -65,6 +65,7 @@ typedef struct { guint editable : 1; /* Whether the text can be edited. */ int strikeout_column; + int underline_column; int bold_column; /* This column in the ETable should return a string specifying a color, |