1 /*
2 This program is free software; you can redistribute it and/or modify
3 it under the terms of the GNU General Public License as published by
4 the Free Software Foundation; either version 2, or (at your option)
5 any later version.
6
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 GNU General Public License for more details.
11
12 You should have received a copy of the GNU General Public License
13 along with this program; if not, write to the Free Software
14 Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
15 */
16
17 #include <gtk/gtk.h>
18 #include "font_sel.h"
19 #include "main.h"
20
21 GtkWidget *font_entry;
22
font_dlg_ok_clicked(GtkWidget * widget,gboolean * flag)23 static void font_dlg_ok_clicked(GtkWidget *widget, gboolean *flag)
24 {
25 *flag = TRUE;
26 }
27
font_browse_clicked(GtkWidget * widget,gpointer u)28 static void font_browse_clicked(GtkWidget *widget, gpointer u)
29 {
30 const gchar *curfont;
31 gboolean is_confirmed = FALSE;
32
33 GtkFontSelectionDialog *font_dlg =
34 GTK_FONT_SELECTION_DIALOG(gtk_font_selection_dialog_new("Select Font"));
35
36 gtk_font_selection_dialog_set_preview_text(font_dlg, PROJNAME);
37
38 curfont = gtk_entry_get_text(GTK_ENTRY(font_entry));
39
40 if (g_utf8_strlen(curfont, -1))
41 gtk_font_selection_dialog_set_font_name(font_dlg, curfont);
42
43
44 g_signal_connect(G_OBJECT(font_dlg->ok_button), "clicked",
45 G_CALLBACK(font_dlg_ok_clicked), &is_confirmed);
46
47 gtk_dialog_run(GTK_DIALOG(font_dlg));
48
49 if(is_confirmed)
50 set_font(gtk_font_selection_dialog_get_font_name(font_dlg), TRUE);
51
52 gtk_widget_destroy(GTK_WIDGET(font_dlg));
53 }
54
font_clear_clicked(GtkWidget * widget,gpointer u)55 static void font_clear_clicked(GtkWidget *widget, gpointer u)
56 {
57 set_font(NULL, TRUE);
58 }
59
font_entry_set_from_style(GtkWidget * w,GtkStyle * prev,gpointer u)60 static void font_entry_set_from_style(GtkWidget *w, GtkStyle *prev, gpointer u)
61 {
62 gchar *font = get_font();
63 gtk_entry_set_text(GTK_ENTRY(font_entry), font ? font : "");
64 }
65
create_font_sel(void)66 GtkWidget *create_font_sel(void)
67 {
68 GtkWidget *box = gtk_hbox_new(FALSE, 0);
69 GtkWidget *button;
70
71 button = gtk_button_new_from_stock(GTK_STOCK_SELECT_FONT);
72 await_activation(button);
73 g_signal_connect(G_OBJECT(button), "clicked",
74 G_CALLBACK(font_browse_clicked), NULL);
75 gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0);
76
77 font_entry = gtk_entry_new();
78 gtk_editable_set_editable(GTK_EDITABLE(font_entry), FALSE);
79 gtk_box_pack_start(GTK_BOX(box), font_entry, TRUE, TRUE, 3);
80
81 g_signal_connect(G_OBJECT(font_entry), "style-set",
82 G_CALLBACK(font_entry_set_from_style), NULL);
83
84 button = gtk_button_new_from_stock(GTK_STOCK_CLEAR);
85 await_activation(button);
86 g_signal_connect(G_OBJECT(button), "clicked",
87 G_CALLBACK(font_clear_clicked), NULL);
88 gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0);
89
90 return box;
91 }
92