aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-08-24 05:45:07 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-08-24 05:45:07 +0000
commitd99c5a9b8032f5290c640bcea7f406326c325c04 (patch)
treedf9554fb5f98a8f609da336905861f5bbc6dca47 /src
parentd501e68c2df3979e02f8674364dc0f43f7dc438f (diff)
use GtkFontButton for font setting.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@504 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src')
-rw-r--r--src/prefs.c40
-rw-r--r--src/prefs.h2
-rw-r--r--src/prefs_common.c97
3 files changed, 53 insertions, 86 deletions
diff --git a/src/prefs.c b/src/prefs.c
index 759a1564..444d3ae8 100644
--- a/src/prefs.c
+++ b/src/prefs.c
@@ -836,3 +836,43 @@ void prefs_set_spinbtn(PrefParam *pparam)
pparam->type);
}
}
+
+void prefs_set_data_from_fontbtn(PrefParam *pparam)
+{
+ gchar **str;
+ const gchar *font_str;
+
+ g_return_if_fail(*pparam->widget != NULL);
+
+ font_str = gtk_font_button_get_font_name
+ (GTK_FONT_BUTTON(*pparam->widget));
+
+ switch (pparam->type) {
+ case P_STRING:
+ str = (gchar **)pparam->data;
+ g_free(*str);
+ *str = font_str[0] ? g_strdup(font_str) : NULL;
+ break;
+ default:
+ g_warning("Invalid PrefType for GtkFontButton widget: %d\n",
+ pparam->type);
+ }
+}
+
+void prefs_set_fontbtn(PrefParam *pparam)
+{
+ gchar **str;
+
+ g_return_if_fail(*pparam->widget != NULL);
+
+ switch (pparam->type) {
+ case P_STRING:
+ str = (gchar **)pparam->data;
+ gtk_font_button_set_font_name(GTK_FONT_BUTTON(*pparam->widget),
+ *str ? *str : "");
+ break;
+ default:
+ g_warning("Invalid PrefType for GtkFontButton widget: %d\n",
+ pparam->type);
+ }
+}
diff --git a/src/prefs.h b/src/prefs.h
index 015dd002..b81bea68 100644
--- a/src/prefs.h
+++ b/src/prefs.h
@@ -186,5 +186,7 @@ void prefs_set_data_from_toggle (PrefParam *pparam);
void prefs_set_toggle (PrefParam *pparam);
void prefs_set_data_from_spinbtn(PrefParam *pparam);
void prefs_set_spinbtn (PrefParam *pparam);
+void prefs_set_data_from_fontbtn(PrefParam *pparam);
+void prefs_set_fontbtn (PrefParam *pparam);
#endif /* __PREFS_H__ */
diff --git a/src/prefs_common.c b/src/prefs_common.c
index 9c9b8c88..305d1892 100644
--- a/src/prefs_common.c
+++ b/src/prefs_common.c
@@ -117,8 +117,7 @@ static struct Quote {
} quote;
static struct Display {
- GtkWidget *entry_textfont;
- GtkWidget *button_textfont;
+ GtkWidget *fontbtn_textfont;
GtkWidget *chkbtn_folder_unread;
GtkWidget *entry_ng_abbrev_len;
@@ -217,7 +216,6 @@ static struct KeybindDialog {
} keybind;
static GtkWidget *quote_desc_win;
-static GtkWidget *font_sel_win;
static GtkWidget *quote_color_win;
static GtkWidget *color_dialog;
@@ -360,8 +358,10 @@ static PrefParam param[] = {
prefs_set_data_from_text, prefs_set_text},
/* Display */
- {"message_font_name", DEFAULT_MESSAGE_FONT, &prefs_common.textfont, P_STRING,
- &display.entry_textfont, prefs_set_data_from_entry, prefs_set_entry},
+ {"message_font_name", DEFAULT_MESSAGE_FONT,
+ &prefs_common.textfont, P_STRING,
+ &display.fontbtn_textfont,
+ prefs_set_data_from_fontbtn, prefs_set_fontbtn},
{"display_folder_unread_num", "TRUE",
&prefs_common.display_folder_unread, P_BOOL,
@@ -779,12 +779,6 @@ static void set_button_bg_color (GtkWidget *widget,
static void prefs_enable_message_color_toggled (void);
static void prefs_recycle_colors_toggled (GtkWidget *widget);
-static void prefs_font_select (GtkButton *button);
-static gboolean prefs_font_selection_key_pressed(GtkWidget *widget,
- GdkEventKey *event,
- gpointer data);
-static void prefs_font_selection_ok (GtkButton *button);
-
static void prefs_keybind_select (void);
static gint prefs_keybind_deleted (GtkWidget *widget,
GdkEventAny *event,
@@ -1610,8 +1604,7 @@ static void prefs_display_create(void)
GtkWidget *frame_font;
GtkWidget *table1;
GtkWidget *label_textfont;
- GtkWidget *entry_textfont;
- GtkWidget *button_textfont;
+ GtkWidget *fontbtn_textfont;
GtkWidget *chkbtn_transhdr;
GtkWidget *chkbtn_folder_unread;
GtkWidget *hbox1;
@@ -1635,7 +1628,7 @@ static void prefs_display_create(void)
PACK_FRAME(vbox1, frame_font, _("Font"));
- table1 = gtk_table_new (1, 3, FALSE);
+ table1 = gtk_table_new (1, 2, FALSE);
gtk_widget_show (table1);
gtk_container_add (GTK_CONTAINER (frame_font), table1);
gtk_container_set_border_width (GTK_CONTAINER (table1), 8);
@@ -1647,18 +1640,11 @@ static void prefs_display_create(void)
gtk_table_attach (GTK_TABLE (table1), label_textfont, 0, 1, 0, 1,
GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
- entry_textfont = gtk_entry_new ();
- gtk_widget_show (entry_textfont);
- gtk_table_attach (GTK_TABLE (table1), entry_textfont, 1, 2, 0, 1,
+ fontbtn_textfont = gtk_font_button_new ();
+ gtk_widget_show (fontbtn_textfont);
+ gtk_table_attach (GTK_TABLE (table1), fontbtn_textfont, 1, 2, 0, 1,
(GTK_EXPAND | GTK_FILL), 0, 0, 0);
- button_textfont = gtk_button_new_with_label ("... ");
- gtk_widget_show (button_textfont);
- gtk_table_attach (GTK_TABLE (table1), button_textfont, 2, 3, 0, 1,
- 0, 0, 0, 0);
- g_signal_connect (G_OBJECT (button_textfont), "clicked",
- G_CALLBACK (prefs_font_select), NULL);
-
vbox2 = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox2);
gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
@@ -1744,8 +1730,7 @@ static void prefs_display_create(void)
g_signal_connect (G_OBJECT (button_dispitem), "clicked",
G_CALLBACK (prefs_summary_column_open), NULL);
- display.entry_textfont = entry_textfont;
- display.button_textfont = button_textfont;
+ display.fontbtn_textfont = fontbtn_textfont;
display.chkbtn_transhdr = chkbtn_transhdr;
display.chkbtn_folder_unread = chkbtn_folder_unread;
@@ -3214,66 +3199,6 @@ static gboolean prefs_quote_description_key_pressed(GtkWidget *widget,
return FALSE;
}
-static void prefs_font_select(GtkButton *button)
-{
- if (!font_sel_win) {
- font_sel_win = gtk_font_selection_dialog_new
- (_("Font selection"));
- gtk_window_set_position(GTK_WINDOW(font_sel_win),
- GTK_WIN_POS_CENTER);
- g_signal_connect(G_OBJECT(font_sel_win), "delete_event",
- G_CALLBACK(gtk_widget_hide_on_delete), NULL);
- g_signal_connect
- (G_OBJECT(font_sel_win), "key_press_event",
- G_CALLBACK(prefs_font_selection_key_pressed), NULL);
- g_signal_connect
- (G_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button),
- "clicked",
- G_CALLBACK(prefs_font_selection_ok), NULL);
- g_signal_connect_closure
- (G_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->cancel_button),
- "clicked",
- g_cclosure_new_swap(G_CALLBACK(gtk_widget_hide_on_delete),
- font_sel_win, NULL),
- FALSE);
- }
-
- if (prefs_common.textfont)
- gtk_font_selection_dialog_set_font_name
- (GTK_FONT_SELECTION_DIALOG(font_sel_win),
- prefs_common.textfont);
-
- manage_window_set_transient(GTK_WINDOW(font_sel_win));
- gtk_window_set_modal(GTK_WINDOW(font_sel_win), TRUE);
- gtk_widget_grab_focus
- (GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button);
- gtk_widget_show(font_sel_win);
-}
-
-static gboolean prefs_font_selection_key_pressed(GtkWidget *widget,
- GdkEventKey *event,
- gpointer data)
-{
- if (event && event->keyval == GDK_Escape)
- gtk_widget_hide(font_sel_win);
- return FALSE;
-}
-
-static void prefs_font_selection_ok(GtkButton *button)
-{
- gchar *fontname;
-
- fontname = gtk_font_selection_dialog_get_font_name
- (GTK_FONT_SELECTION_DIALOG(font_sel_win));
-
- if (fontname) {
- gtk_entry_set_text(GTK_ENTRY(display.entry_textfont), fontname);
- g_free(fontname);
- }
-
- gtk_widget_hide(font_sel_win);
-}
-
static void prefs_keybind_select(void)
{
GtkWidget *window;