add underline_column field.

2003-03-18  Chris Toshok  <toshok@ximian.com>

	* e-cell-text.h: add underline_column field.

	* e-cell-date.c: add underline_column to the comment.

	* e-cell-size.c: add underline_column to the comment.

	* e-cell-text.c (build_layout): handle underline column.
	(ect_show_tooltip): same.
	(ect_set_property): same.
	(ect_get_property): same.
	(e_cell_text_class_init): same.
	(e_cell_text_init): same.
	(e_cell_text_new): add underline_column to the comment.

svn path=/trunk/; revision=20347
This commit is contained in:
Chris Toshok
2003-03-18 20:49:59 +00:00
committed by Chris Toshok
parent bc9697c7d2
commit 529a87dfe5
4 changed files with 60 additions and 27 deletions

View File

@ -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.
*/

View File

@ -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 *

View File

@ -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.
*/

View File

@ -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,