Added font editor.

2002-02-10  Richard Hestilow  <hestilow@ximian.com>

	* gconf-property-editor.[ch]: Added font editor.
This commit is contained in:
Richard Hestilow 2002-02-10 07:39:40 +00:00 committed by Rachel Hestilow
parent 2ff827ab7c
commit 94370f5702
3 changed files with 106 additions and 0 deletions

View file

@ -1,3 +1,7 @@
2002-02-10 Richard Hestilow <hestilow@ximian.com>
* gconf-property-editor.[ch]: Added font editor.
Sun Jan 6 02:52:59 2002 Jonathan Blandford <jrb@redhat.com>
* gconf-property-editor.c (peditor_select_radio_widget_changed):

View file

@ -862,3 +862,100 @@ gconf_value_float_to_int (const GConfValue *value)
return new_value;
}
static gint
peditor_font_get_size (const gchar *font_name)
{
PangoFontDescription *desc;
int size;
g_return_val_if_fail (font_name != NULL, -1);
desc = pango_font_description_from_string (font_name);
size = pango_font_description_get_size (desc);
pango_font_description_free (desc);
return size / PANGO_SCALE;
}
static void
peditor_font_value_changed (GConfClient *client,
guint cnxn_id,
GConfEntry *entry,
GConfPropertyEditor *peditor)
{
GConfValue *value, *value_wid;
if (peditor->p->changeset != NULL)
gconf_change_set_remove (peditor->p->changeset, peditor->p->key);
value = gconf_entry_get_value (entry);
if (value != NULL) {
gchar *font_name;
value_wid = peditor->p->conv_to_widget_cb (value);
font_name = gconf_value_get_string (value_wid);
g_object_set (G_OBJECT (peditor->p->ui_control),
"font_name", font_name,
"label-font-size", peditor_font_get_size (font_name),
NULL);
gconf_value_free (value_wid);
}
}
static void
peditor_font_widget_changed (GConfPropertyEditor *peditor,
gchar *font_name,
GnomeFontPicker *font_picker)
{
GConfValue *value, *value_wid;
if (!peditor->p->inited) return;
g_object_set (G_OBJECT (peditor->p->ui_control),
"label-font-size", peditor_font_get_size (font_name),
NULL);
value_wid = gconf_value_new (GCONF_VALUE_STRING);
gconf_value_set_string (value_wid, font_name);
value = peditor->p->conv_from_widget_cb (value_wid);
peditor_set_gconf_value (peditor, peditor->p->key, value);
g_signal_emit (peditor, peditor_signals[VALUE_CHANGED], 0, peditor->p->key, value);
gconf_value_free (value_wid);
gconf_value_free (value);
}
GObject *
gconf_peditor_new_font (GConfChangeSet *changeset,
gchar *key,
GtkWidget *font_picker,
gchar *first_property_name,
...)
{
GObject *peditor;
va_list var_args;
g_return_val_if_fail (key != NULL, NULL);
g_return_val_if_fail (font_picker != NULL, NULL);
g_return_val_if_fail (GNOME_IS_FONT_PICKER (font_picker), NULL);
va_start (var_args, first_property_name);
peditor = gconf_peditor_new
(key,
(GConfClientNotifyFunc) peditor_font_value_changed,
changeset,
G_OBJECT (font_picker),
first_property_name,
var_args);
va_end (var_args);
g_signal_connect_swapped (G_OBJECT (font_picker), "font_set",
(GCallback) peditor_font_widget_changed, peditor);
return peditor;
}

View file

@ -93,6 +93,11 @@ GObject *gconf_peditor_new_numeric_range (GConfChangeSet *changeset,
GtkWidget *range,
gchar *first_property_name,
...);
GObject *gconf_peditor_new_font (GConfChangeSet *changeset,
gchar *key,
GtkWidget *font_picker,
gchar *first_property_name,
...);
void gconf_peditor_widget_set_guard (GConfPropertyEditor *peditor,
GtkWidget *widget);