Added font editor.
2002-02-10 Richard Hestilow <hestilow@ximian.com> * gconf-property-editor.[ch]: Added font editor.
This commit is contained in:
parent
2ff827ab7c
commit
94370f5702
3 changed files with 106 additions and 0 deletions
|
@ -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>
|
Sun Jan 6 02:52:59 2002 Jonathan Blandford <jrb@redhat.com>
|
||||||
|
|
||||||
* gconf-property-editor.c (peditor_select_radio_widget_changed):
|
* gconf-property-editor.c (peditor_select_radio_widget_changed):
|
||||||
|
|
|
@ -862,3 +862,100 @@ gconf_value_float_to_int (const GConfValue *value)
|
||||||
return new_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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -93,6 +93,11 @@ GObject *gconf_peditor_new_numeric_range (GConfChangeSet *changeset,
|
||||||
GtkWidget *range,
|
GtkWidget *range,
|
||||||
gchar *first_property_name,
|
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,
|
void gconf_peditor_widget_set_guard (GConfPropertyEditor *peditor,
|
||||||
GtkWidget *widget);
|
GtkWidget *widget);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue