1 #include <math.h>
2 #include <stdio.h>
3 #include <string.h>
4 #include <gtk/gtk.h>
5 #include <gdk/gdk.h>
6 #include <pango/pango.h>
7 #include "gtkfontcombo.h"
8 
9 #define PREVIEW_TEXT "ABCDEFGHI abcdefghi 0123456789"
10 
11 void
quit()12 quit ()
13 {
14   gtk_main_quit();
15 }
16 
17 void
new_font(GtkFontCombo * font_combo,gpointer data)18 new_font(GtkFontCombo *font_combo, gpointer data)
19 {
20  GtkWidget *preview_entry;
21  GtkStyle *style, *previous_style;
22  const gchar *text;
23 
24  preview_entry = GTK_WIDGET(data);
25 
26  previous_style = gtk_widget_get_style(preview_entry);
27  style = gtk_style_copy (previous_style);
28 
29  pango_font_description_free(style->font_desc);
30  style->font_desc = gtk_font_combo_get_font_description(font_combo);
31 
32  gtk_widget_set_style(GTK_WIDGET(preview_entry), style);
33  gtk_style_unref(style);
34 
35  printf("NEW FONT %s\n",pango_font_description_to_string(style->font_desc));
36 
37  text = gtk_entry_get_text(GTK_ENTRY(preview_entry));
38  if (strlen(text) == 0)
39    gtk_entry_set_text(GTK_ENTRY(preview_entry), PREVIEW_TEXT);
40  gtk_entry_set_position(GTK_ENTRY(preview_entry), 0);
41 }
42 
main(int argc,char * argv[])43 int main(int argc, char *argv[])
44 {
45  GtkWidget *window1;
46  GtkWidget *vbox1;
47  GtkWidget *font_combo;
48  GtkWidget *preview_entry;
49 
50  gtk_init(&argc,&argv);
51 
52  window1=gtk_window_new(GTK_WINDOW_TOPLEVEL);
53  gtk_window_set_title(GTK_WINDOW(window1), "GtkFontCombo Demo");
54  gtk_container_border_width(GTK_CONTAINER(window1),0);
55 
56  g_signal_connect (GTK_OBJECT (window1), "destroy",
57 		     G_CALLBACK (quit), NULL);
58 
59  vbox1=gtk_vbox_new(FALSE,0);
60  gtk_container_add(GTK_CONTAINER(window1),vbox1);
61  gtk_widget_show(vbox1);
62 
63  font_combo = gtk_font_combo_new();
64  gtk_box_pack_start(GTK_BOX(vbox1),font_combo, FALSE, FALSE, 0);
65  gtk_widget_show(font_combo);
66 
67  preview_entry = gtk_entry_new();
68  gtk_box_pack_start(GTK_BOX(vbox1),preview_entry, TRUE, TRUE,0);
69  gtk_widget_show(preview_entry);
70  gtk_entry_set_text(GTK_ENTRY(preview_entry), PREVIEW_TEXT);
71  gtk_widget_show(window1);
72 
73  new_font(GTK_FONT_COMBO(font_combo), preview_entry);
74 /*********** SIGNALS ************/
75 
76  g_signal_connect(GTK_OBJECT(font_combo),
77                     "changed",
78                     G_CALLBACK(new_font), preview_entry);
79 
80  gtk_main();
81 
82  return(0);
83 }
84 
85 
86