]> Pileus Git - ~andy/gtk/blob - tests/testfontchooserdialog.c
5facadc2a0b7cfae8b3298bd92790104a4f57b81
[~andy/gtk] / tests / testfontchooserdialog.c
1 /* testfontchooserdialog.c
2  * Copyright (C) 2011 Alberto Ruiz <aruiz@gnome.org>
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  */
19
20 #include <string.h>
21 #include <gtk/gtk.h>
22 #include "prop-editor.h"
23
24 static gboolean
25 monospace_filter (const PangoFontFamily *family,
26                   const PangoFontFace   *face,
27                   gpointer               data)
28 {
29   return pango_font_family_is_monospace ((PangoFontFamily *) family);
30 }
31
32 static void
33 notify_font_cb (GtkFontChooser *fontchooser, GParamSpec *pspec, gpointer data)
34 {
35   PangoFontFamily *family;
36   PangoFontFace *face;
37
38   g_debug ("Changed font name %s", gtk_font_chooser_get_font (fontchooser));
39
40   family = gtk_font_chooser_get_font_family (fontchooser);
41   face = gtk_font_chooser_get_font_face (fontchooser);
42   if (family)
43     {
44        g_debug ("  Family: %s is-monospace:%s",
45                 pango_font_family_get_name (family),
46                 pango_font_family_is_monospace (family) ? "true" : "false");
47     }
48   else
49     g_debug ("  No font family!");
50
51   if (face)
52     g_debug ("  Face description: %s", pango_font_face_get_face_name (face));
53   else
54     g_debug ("  No font face!");
55 }
56
57 static void
58 notify_preview_text_cb (GObject *fontchooser, GParamSpec *pspec, gpointer data)
59 {
60   g_debug ("Changed preview text %s", gtk_font_chooser_get_preview_text (GTK_FONT_CHOOSER (fontchooser)));
61 }
62
63 static void
64 font_activated_cb (GtkFontChooser *chooser, const gchar *font_name, gpointer data)
65 {
66   g_debug ("font-activated: %s", font_name);
67 }
68
69 int
70 main (int argc, char *argv[])
71 {
72   GtkWidget *window;
73   GtkWidget *font_button;
74
75   gtk_init (&argc, &argv);
76
77   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
78   font_button = gtk_font_button_new ();
79   gtk_container_add (GTK_CONTAINER (window), font_button);
80   gtk_widget_show_all (window);
81
82   g_signal_connect (font_button, "notify::font",
83                     G_CALLBACK (notify_font_cb), NULL);
84   g_signal_connect (font_button, "notify::preview-text",
85                     G_CALLBACK (notify_preview_text_cb), NULL);
86   g_signal_connect (font_button, "font-activated",
87                     G_CALLBACK (font_activated_cb), NULL);
88
89   if (argc >= 2 && strcmp (argv[1], "--monospace") == 0)
90     {
91       gtk_font_chooser_set_filter_func (GTK_FONT_CHOOSER (font_button),
92                                         monospace_filter, NULL, NULL);
93     }
94
95   g_signal_connect (window, "delete-event",
96                     G_CALLBACK (gtk_main_quit), NULL);
97
98   create_prop_editor (G_OBJECT (font_button), 0);
99
100   gtk_main ();
101
102   return 0;
103 }