GtkFontChooser: Enable font selection
This commit is contained in:
committed by
Matthias Clasen
parent
c9150374d9
commit
f3e9bb312e
@ -351,11 +351,74 @@ spin_change_cb (GtkAdjustment *adjustment, gpointer data)
|
|||||||
|
|
||||||
desc = pango_context_get_font_description (gtk_widget_get_pango_context (priv->preview));
|
desc = pango_context_get_font_description (gtk_widget_get_pango_context (priv->preview));
|
||||||
pango_font_description_set_size (desc, priv->size);
|
pango_font_description_set_size (desc, priv->size);
|
||||||
gtk_widget_modify_font (priv->preview, desc);
|
gtk_widget_override_font (priv->preview, desc);
|
||||||
|
|
||||||
gtk_widget_queue_draw (priv->preview);
|
gtk_widget_queue_draw (priv->preview);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
set_range_marks (GtkWidget* size_slider, gint* sizes, gint length)
|
||||||
|
{
|
||||||
|
gint i;
|
||||||
|
|
||||||
|
gtk_scale_clear_marks (GTK_SCALE (size_slider));
|
||||||
|
|
||||||
|
for (i=0; i<length; i++)
|
||||||
|
gtk_scale_add_mark (GTK_SCALE (size_slider),
|
||||||
|
(gdouble) sizes[i],
|
||||||
|
GTK_POS_BOTTOM, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cursor_changed_cb (GtkTreeView *treeview, gpointer data)
|
||||||
|
{
|
||||||
|
gchar *family_name;
|
||||||
|
PangoFontFace *face;
|
||||||
|
PangoFontDescription *desc;
|
||||||
|
|
||||||
|
GtkTreeIter iter;
|
||||||
|
GtkTreePath *path = gtk_tree_path_new ();
|
||||||
|
|
||||||
|
GtkFontSelectionPrivate *priv = (GtkFontSelectionPrivate*)data;
|
||||||
|
|
||||||
|
gtk_tree_view_get_cursor (treeview, &path, NULL);
|
||||||
|
|
||||||
|
if (!path)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (priv->model), &iter, path))
|
||||||
|
return;
|
||||||
|
|
||||||
|
gtk_tree_model_get (GTK_TREE_MODEL (priv->model), &iter,
|
||||||
|
FACE_COLUMN, &face,
|
||||||
|
FAMILY_NAME_COLUMN, &family_name,
|
||||||
|
-1);
|
||||||
|
|
||||||
|
if (!face && !family_name)
|
||||||
|
return;
|
||||||
|
if (!face)
|
||||||
|
{
|
||||||
|
g_free (family_name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!family_name)
|
||||||
|
{
|
||||||
|
g_object_unref ((gpointer)face);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
desc = pango_font_face_describe (face);
|
||||||
|
pango_font_description_set_size (desc, priv->size);
|
||||||
|
gtk_widget_override_font (priv->preview, desc);
|
||||||
|
|
||||||
|
|
||||||
|
/* Free resources */
|
||||||
|
g_free (family_name);
|
||||||
|
g_object_unref ((gpointer)face);
|
||||||
|
pango_font_description_free(desc);
|
||||||
|
gtk_tree_path_free (path);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_font_selection_init (GtkFontSelection *fontsel)
|
gtk_font_selection_init (GtkFontSelection *fontsel)
|
||||||
{
|
{
|
||||||
@ -414,7 +477,7 @@ gtk_font_selection_init (GtkFontSelection *fontsel)
|
|||||||
gtk_box_pack_start (GTK_BOX (preview_and_size), scrolled_win, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (preview_and_size), scrolled_win, FALSE, FALSE, 0);
|
||||||
|
|
||||||
/* Setting the size requests for various widgets */
|
/* Setting the size requests for various widgets */
|
||||||
gtk_widget_set_size_request (fontsel, -1, 460);
|
gtk_widget_set_size_request (GTK_WIDGET (fontsel), -1, 460);
|
||||||
gtk_widget_set_size_request (scrolled_win, -1, PREVIEW_HEIGHT);
|
gtk_widget_set_size_request (scrolled_win, -1, PREVIEW_HEIGHT);
|
||||||
gtk_widget_set_size_request (priv->preview, -1, PREVIEW_HEIGHT - 6);
|
gtk_widget_set_size_request (priv->preview, -1, PREVIEW_HEIGHT - 6);
|
||||||
|
|
||||||
@ -477,6 +540,10 @@ gtk_font_selection_init (GtkFontSelection *fontsel)
|
|||||||
"value-changed", G_CALLBACK (spin_change_cb), (gpointer)priv);
|
"value-changed", G_CALLBACK (spin_change_cb), (gpointer)priv);
|
||||||
priv->ignore_slider = FALSE;
|
priv->ignore_slider = FALSE;
|
||||||
|
|
||||||
|
/* Font selection callbacks */
|
||||||
|
g_signal_connect (G_OBJECT (priv->family_face_list), "cursor-changed",
|
||||||
|
G_CALLBACK (cursor_changed_cb), (gpointer)priv);
|
||||||
|
|
||||||
gtk_widget_pop_composite_child();
|
gtk_widget_pop_composite_child();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user