GtkFontChooser: Improvements in the font face listing
This commit is contained in:

committed by
Matthias Clasen

parent
8655384f51
commit
f854a46890
@ -131,6 +131,8 @@ struct _GtkFontSelectionDialogPrivate
|
|||||||
#define FONT_STYLE_LIST_WIDTH 170
|
#define FONT_STYLE_LIST_WIDTH 170
|
||||||
#define FONT_SIZE_LIST_WIDTH 60
|
#define FONT_SIZE_LIST_WIDTH 60
|
||||||
|
|
||||||
|
#define ROW_FORMAT_STRING "<span size=\"small\" foreground=\"%s\">%s %s</span>\n<span>%s</span>"
|
||||||
|
|
||||||
/* These are what we use as the standard font sizes, for the size list.
|
/* These are what we use as the standard font sizes, for the size list.
|
||||||
*/
|
*/
|
||||||
#define FONT_SIZES_LENGTH 25
|
#define FONT_SIZES_LENGTH 25
|
||||||
@ -149,6 +151,7 @@ enum {
|
|||||||
enum {
|
enum {
|
||||||
FAMILY_COLUMN,
|
FAMILY_COLUMN,
|
||||||
FACE_COLUMN,
|
FACE_COLUMN,
|
||||||
|
FAMILY_NAME_COLUMN,
|
||||||
TEXT_COLUMN
|
TEXT_COLUMN
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -390,10 +393,12 @@ gtk_font_selection_populate_list (GtkTreeView *treeview)
|
|||||||
GtkListStore *model;
|
GtkListStore *model;
|
||||||
PangoFontFamily *match_family;
|
PangoFontFamily *match_family;
|
||||||
PangoFontFamily **families;
|
PangoFontFamily **families;
|
||||||
gint n_families, i;
|
gint n_families, n_faces, i, j;
|
||||||
GtkTreeIter match_row;
|
GtkTreeIter match_row;
|
||||||
|
GString *tmp = g_string_new (NULL);
|
||||||
|
const gchar* row_format = ROW_FORMAT_STRING;
|
||||||
|
|
||||||
model = GTK_LIST_STORE(gtk_tree_view_get_model (treeview));
|
model = GTK_LIST_STORE (gtk_tree_view_get_model (treeview));
|
||||||
|
|
||||||
pango_context_list_families (gtk_widget_get_pango_context (GTK_WIDGET (treeview)),
|
pango_context_list_families (gtk_widget_get_pango_context (GTK_WIDGET (treeview)),
|
||||||
&families,
|
&families,
|
||||||
@ -408,10 +413,19 @@ gtk_font_selection_populate_list (GtkTreeView *treeview)
|
|||||||
const gchar *name = pango_font_family_get_name (families[i]);
|
const gchar *name = pango_font_family_get_name (families[i]);
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
|
|
||||||
|
/* foreground_color, default family, face, family, desc, sample string */
|
||||||
|
g_string_printf (tmp, ROW_FORMAT_STRING,
|
||||||
|
"darkgrey",
|
||||||
|
"sans", /* FIXME: This has to be the global font */
|
||||||
|
"Regular",
|
||||||
|
PREVIEW_TEXT);
|
||||||
|
|
||||||
|
|
||||||
gtk_list_store_append (model, &iter);
|
gtk_list_store_append (model, &iter);
|
||||||
gtk_list_store_set (model, &iter,
|
gtk_list_store_set (model, &iter,
|
||||||
FAMILY_COLUMN, families[i],
|
FAMILY_COLUMN, families[i],
|
||||||
TEXT_COLUMN, name,
|
FAMILY_NAME_COLUMN, name,
|
||||||
|
TEXT_COLUMN, tmp->str,
|
||||||
-1);
|
-1);
|
||||||
|
|
||||||
if (i == 0 || !g_ascii_strcasecmp (name, "sans"))
|
if (i == 0 || !g_ascii_strcasecmp (name, "sans"))
|
||||||
@ -423,6 +437,7 @@ gtk_font_selection_populate_list (GtkTreeView *treeview)
|
|||||||
|
|
||||||
set_cursor_to_iter (treeview, &match_row);
|
set_cursor_to_iter (treeview, &match_row);
|
||||||
|
|
||||||
|
g_string_free (tmp, TRUE);
|
||||||
g_free (families);
|
g_free (families);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -432,9 +447,10 @@ gtk_font_selection_bootstrap_fontlist (GtkTreeView* treeview)
|
|||||||
GtkTreeViewColumn *col;
|
GtkTreeViewColumn *col;
|
||||||
GtkListStore *fonts_model;
|
GtkListStore *fonts_model;
|
||||||
|
|
||||||
fonts_model = gtk_list_store_new (3,
|
fonts_model = gtk_list_store_new (4,
|
||||||
PANGO_TYPE_FONT_FAMILY,
|
PANGO_TYPE_FONT_FAMILY,
|
||||||
PANGO_TYPE_FONT_FACE,
|
PANGO_TYPE_FONT_FACE,
|
||||||
|
G_TYPE_STRING,
|
||||||
G_TYPE_STRING);
|
G_TYPE_STRING);
|
||||||
gtk_tree_view_set_model (treeview, GTK_TREE_MODEL (fonts_model));
|
gtk_tree_view_set_model (treeview, GTK_TREE_MODEL (fonts_model));
|
||||||
|
|
||||||
@ -444,6 +460,7 @@ gtk_font_selection_bootstrap_fontlist (GtkTreeView* treeview)
|
|||||||
col = gtk_tree_view_column_new_with_attributes ("Family",
|
col = gtk_tree_view_column_new_with_attributes ("Family",
|
||||||
gtk_cell_renderer_text_new (),
|
gtk_cell_renderer_text_new (),
|
||||||
"markup", TEXT_COLUMN,
|
"markup", TEXT_COLUMN,
|
||||||
|
"font", FAMILY_NAME_COLUMN,
|
||||||
NULL);
|
NULL);
|
||||||
gtk_tree_view_append_column (treeview, col);
|
gtk_tree_view_append_column (treeview, col);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user