[glade] * plugins/gtk+/glade-attributes.c, plugins/gtk+/glade-gtk.c: Add support for editing the PangoFont
- From: Tristan Van Berkom <tvb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glade] * plugins/gtk+/glade-attributes.c, plugins/gtk+/glade-gtk.c: Add support for editing the PangoFont
- Date: Thu, 3 Feb 2011 11:35:55 +0000 (UTC)
commit 71c262e33a4aeccd831f424400d3c67a70de8866
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date: Thu Feb 3 20:43:30 2011 +0900
* plugins/gtk+/glade-attributes.c, plugins/gtk+/glade-gtk.c:
Add support for editing the PangoFontDesctiption in GtkLabel attributes (GtkBuilder
has supported this ever since supporting <attributes>, only just adding a GtkFontSelectionDialog
to do this from Glade now.
ChangeLog | 7 +++++
plugins/gtk+/glade-attributes.c | 58 +++++++++++++++++++++++++++++---------
plugins/gtk+/glade-gtk.c | 19 ++++++++++---
3 files changed, 66 insertions(+), 18 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 2b38b2e..e4b34f3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-02-03 Tristan Van Berkom <tristanvb openismus com>
+
+ * plugins/gtk+/glade-attributes.c, plugins/gtk+/glade-gtk.c:
+ Add support for editing the PangoFontDesctiption in GtkLabel attributes (GtkBuilder
+ has supported this ever since supporting <attributes>, only just adding a GtkFontSelectionDialog
+ to do this from Glade now.
+
2011-02-02 Juan Pablo Ugarte <juanpablougarte gmail com>
* gladeui/glade-design-layout.c:
diff --git a/plugins/gtk+/glade-attributes.c b/plugins/gtk+/glade-attributes.c
index 8444a0b..ff7d638 100644
--- a/plugins/gtk+/glade-attributes.c
+++ b/plugins/gtk+/glade-attributes.c
@@ -139,6 +139,7 @@ typedef enum
EDIT_COMBO,
EDIT_SPIN,
EDIT_COLOR,
+ EDIT_FONT,
EDIT_INVALID
} AttrEditType;
@@ -293,11 +294,15 @@ append_empty_row (GtkListStore * store, PangoAttrType type)
name = C_ ("textattr", "Scale");
break;
+ case PANGO_ATTR_FONT_DESC:
+ edit_type = EDIT_FONT;
+ name = C_ ("textattr", "Font Description");
+ break;
+
case PANGO_ATTR_INVALID:
case PANGO_ATTR_LETTER_SPACING:
case PANGO_ATTR_RISE:
case PANGO_ATTR_FALLBACK:
- case PANGO_ATTR_FONT_DESC:
default:
break;
}
@@ -364,6 +369,7 @@ is_empty_row (GtkTreeModel * model, GtkTreeIter * iter)
empty_row = TRUE;
break;
case EDIT_COLOR:
+ case EDIT_FONT:
if (!strval || strval[0] == '\0' ||
!strcmp (strval, _("<Enter Value>")))
empty_row = TRUE;
@@ -386,6 +392,7 @@ type_from_attr_type (PangoAttrType type)
{
case PANGO_ATTR_LANGUAGE:
case PANGO_ATTR_FAMILY:
+ case PANGO_ATTR_FONT_DESC:
return G_TYPE_STRING;
case PANGO_ATTR_STYLE:
@@ -429,7 +436,6 @@ type_from_attr_type (PangoAttrType type)
case PANGO_ATTR_LETTER_SPACING:
case PANGO_ATTR_RISE:
case PANGO_ATTR_FALLBACK:
- case PANGO_ATTR_FONT_DESC:
default:
break;
}
@@ -450,6 +456,7 @@ glade_gtk_string_from_attr (GladeAttribute * gattr)
{
case PANGO_ATTR_LANGUAGE:
case PANGO_ATTR_FAMILY:
+ case PANGO_ATTR_FONT_DESC:
ret = g_value_dup_string (&(gattr->value));
break;
@@ -513,7 +520,6 @@ glade_gtk_string_from_attr (GladeAttribute * gattr)
case PANGO_ATTR_LETTER_SPACING:
case PANGO_ATTR_RISE:
case PANGO_ATTR_FALLBACK:
- case PANGO_ATTR_FONT_DESC:
default:
break;
}
@@ -623,7 +629,6 @@ sync_object (GladeEPropAttrs * eprop_attrs, gboolean use_command)
while (valid)
{
-
if (!is_empty_row (eprop_attrs->model, &iter))
{
gtk_tree_model_get (eprop_attrs->model, &iter,
@@ -693,7 +698,7 @@ value_icon_activate (GtkCellRendererToggle * cell_renderer,
gchar * path, GladeEPropAttrs * eprop_attrs)
{
GtkWidget *dialog;
- GtkWidget *colorsel;
+ GtkWidget *colorsel, *fontsel;
GtkTreeIter iter;
PangoAttrType type;
AttrEditType edit_type;
@@ -706,7 +711,8 @@ value_icon_activate (GtkCellRendererToggle * cell_renderer,
gtk_tree_model_get (eprop_attrs->model, &iter,
COLUMN_TEXT, &text,
- COLUMN_TYPE, &type, COLUMN_EDIT_TYPE, &edit_type, -1);
+ COLUMN_TYPE, &type,
+ COLUMN_EDIT_TYPE, &edit_type, -1);
/* Launch dialog etc. */
switch (edit_type)
@@ -739,13 +745,37 @@ value_icon_activate (GtkCellRendererToggle * cell_renderer,
gtk_widget_destroy (dialog);
break;
+
+ case EDIT_FONT:
+ dialog = gtk_font_selection_dialog_new (_("Select a font"));
+
+ fontsel =
+ gtk_font_selection_dialog_get_font_selection (GTK_FONT_SELECTION_DIALOG (dialog));
+
+ /* Get response etc... */
+ if (text)
+ gtk_font_selection_set_font_name (GTK_FONT_SELECTION (fontsel), text);
+
+ gtk_dialog_run (GTK_DIALOG (dialog));
+
+ new_text = gtk_font_selection_get_font_name (GTK_FONT_SELECTION (fontsel));
+
+ gtk_list_store_set (GTK_LIST_STORE (eprop_attrs->model), &iter,
+ COLUMN_TEXT, new_text,
+ COLUMN_NAME_WEIGHT, PANGO_WEIGHT_BOLD,
+ COLUMN_TEXT_STYLE, PANGO_STYLE_NORMAL,
+ COLUMN_TEXT_FG, "Black", -1);
+ g_free (new_text);
+
+ gtk_widget_destroy (dialog);
+ break;
+
default:
break;
}
sync_object (eprop_attrs, FALSE);
-
g_free (text);
}
@@ -938,24 +968,24 @@ glade_eprop_attrs_populate_view (GladeEditorProperty * eprop,
property = glade_editor_property_get_property (eprop);
attributes = g_value_get_boxed (glade_property_inline_value (property));
- append_empty_row (model, PANGO_ATTR_LANGUAGE);
+ append_empty_row (model, PANGO_ATTR_FONT_DESC);
append_empty_row (model, PANGO_ATTR_STYLE);
append_empty_row (model, PANGO_ATTR_WEIGHT);
append_empty_row (model, PANGO_ATTR_VARIANT);
+ append_empty_row (model, PANGO_ATTR_LANGUAGE);
append_empty_row (model, PANGO_ATTR_STRETCH);
+ append_empty_row (model, PANGO_ATTR_SCALE);
append_empty_row (model, PANGO_ATTR_UNDERLINE);
append_empty_row (model, PANGO_ATTR_STRIKETHROUGH);
- append_empty_row (model, PANGO_ATTR_GRAVITY);
- append_empty_row (model, PANGO_ATTR_GRAVITY_HINT);
- append_empty_row (model, PANGO_ATTR_FAMILY);
- append_empty_row (model, PANGO_ATTR_SIZE);
- append_empty_row (model, PANGO_ATTR_ABSOLUTE_SIZE);
append_empty_row (model, PANGO_ATTR_FOREGROUND);
append_empty_row (model, PANGO_ATTR_BACKGROUND);
append_empty_row (model, PANGO_ATTR_UNDERLINE_COLOR);
append_empty_row (model, PANGO_ATTR_STRIKETHROUGH_COLOR);
+ append_empty_row (model, PANGO_ATTR_GRAVITY);
+ append_empty_row (model, PANGO_ATTR_GRAVITY_HINT);
+ append_empty_row (model, PANGO_ATTR_SIZE);
+ append_empty_row (model, PANGO_ATTR_ABSOLUTE_SIZE);
append_empty_row (model, PANGO_ATTR_SHAPE);
- append_empty_row (model, PANGO_ATTR_SCALE);
/* XXX Populate here ...
*/
diff --git a/plugins/gtk+/glade-gtk.c b/plugins/gtk+/glade-gtk.c
index 333e4dc..5fa7ae8 100644
--- a/plugins/gtk+/glade-gtk.c
+++ b/plugins/gtk+/glade-gtk.c
@@ -8132,6 +8132,7 @@ glade_gtk_label_set_attributes (GObject * object, const GValue * value)
GladeAttribute *gattr;
PangoAttribute *attribute;
PangoLanguage *language;
+ PangoFontDescription *font_desc;
PangoAttrList *attrs = NULL;
GdkColor *color;
GList *list;
@@ -8144,12 +8145,21 @@ glade_gtk_label_set_attributes (GObject * object, const GValue * value)
switch (gattr->type)
{
+ /* PangoFontDescription */
+ case PANGO_ATTR_FONT_DESC:
+ if ((font_desc =
+ pango_font_description_from_string (g_value_get_string (&gattr->value))))
+ {
+ attribute = pango_attr_font_desc_new (font_desc);
+ pango_font_description_free (font_desc);
+ }
+ break;
+
/* PangoAttrLanguage */
case PANGO_ATTR_LANGUAGE:
if ((language =
- pango_language_from_string (g_value_get_string
- (&gattr->value))))
- attribute = pango_attr_language_new (language);
+ pango_language_from_string (g_value_get_string (&gattr->value))))
+ attribute = pango_attr_language_new (language);
break;
/* PangoAttrInt */
case PANGO_ATTR_STYLE:
@@ -8244,7 +8254,6 @@ glade_gtk_label_set_attributes (GObject * object, const GValue * value)
case PANGO_ATTR_LETTER_SPACING:
case PANGO_ATTR_RISE:
case PANGO_ATTR_FALLBACK:
- case PANGO_ATTR_FONT_DESC:
default:
break;
}
@@ -8259,6 +8268,8 @@ glade_gtk_label_set_attributes (GObject * object, const GValue * value)
}
gtk_label_set_attributes (GTK_LABEL (object), attrs);
+
+ pango_attr_list_unref (attrs);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]