changed date format logic, moved rrr to send tab (prefs_common.c)
[claws.git] / src / prefs_common.c
index ec15af26c3802af43adbca9d4fbb8ee9f7a0d93f..0fd8aaaeef18443715ed7c41a264c27feda2bf26 100644 (file)
@@ -82,6 +82,8 @@ static struct Send {
        GtkWidget *checkbtn_queuemsg;
 
        GtkWidget *optmenu_charset;
+       
+       GtkWidget *checkbtn_returnreceipt;
 } send;
 
 static struct Compose {
@@ -98,9 +100,14 @@ static struct Compose {
 } compose;
 
 static struct Display {
+
        GtkWidget *entry_textfont;
        GtkWidget *button_textfont;
 
+       GtkWidget *entry_smallfont;
+       GtkWidget *entry_normalfont;
+       GtkWidget *entry_boldfont;
+
        GtkWidget *chkbtn_folder_unread;
 
        GtkWidget *chkbtn_transhdr;
@@ -108,6 +115,8 @@ static struct Display {
        GtkWidget *chkbtn_swapfrom;
        GtkWidget *chkbtn_hscrollbar;
        GtkWidget *chkbtn_useaddrbook;
+
+       GtkWidget *entry_datefmt;
 } display;
 
 static struct Message {
@@ -147,9 +156,7 @@ static struct Interface {
        GtkWidget *checkbtn_cleanonexit;
        GtkWidget *checkbtn_askonclean;
        GtkWidget *checkbtn_warnqueued;
-       GtkWidget *checkbtn_returnreceipt;
        GtkWidget *checkbtn_addaddrbyclick;
-       GtkWidget *checkbtn_retrievedialog;
 } interface;
 
 static struct Other {
@@ -171,8 +178,6 @@ static GtkWidget *quote_desc_win;
 static GtkWidget *font_sel_win;
 static GtkWidget *quote_color_win;
 static GtkWidget *color_dialog;
-static GtkWidget *entry_datefmt;
-static GtkWidget *datefmt_sample;
 
 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam);
 static void prefs_common_charset_set_optmenu         (PrefParam *pparam);
@@ -277,6 +282,18 @@ static PrefParam param[] = {
         &prefs_common.textfont, P_STRING,
         &display.entry_textfont,
         prefs_set_data_from_entry, prefs_set_entry},
+       {"small_font",   "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
+        &prefs_common.smallfont,   P_STRING,
+        &display.entry_smallfont,
+        prefs_set_data_from_entry, prefs_set_entry},
+       {"bold_font",    "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
+        &prefs_common.boldfont,    P_STRING,
+        &display.entry_boldfont,
+        prefs_set_data_from_entry, prefs_set_entry},
+       {"normal_font",  "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
+        &prefs_common.normalfont,  P_STRING,
+        &display.entry_normalfont, 
+        prefs_set_data_from_entry, prefs_set_entry},
 
        {"display_folder_unread_num", "TRUE",
         &prefs_common.display_folder_unread, P_BOOL,
@@ -298,7 +315,7 @@ static PrefParam param[] = {
         &display.chkbtn_useaddrbook,
         prefs_set_data_from_toggle, prefs_set_toggle},
        {"date_format", "%y/%m/%d(%a) %H:%M", &prefs_common.date_format,
-        P_STRING, &entry_datefmt,
+        P_STRING, &display.entry_datefmt,
         prefs_set_data_from_entry, prefs_set_entry},
 
        {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
@@ -483,9 +500,6 @@ static PrefParam param[] = {
        {"open_unread_on_enter", "FALSE", &prefs_common.open_unread_on_enter,
         P_BOOL, &interface.checkbtn_openunread,
         prefs_set_data_from_toggle, prefs_set_toggle},
-       {"show_retrieve_dialog", "FALSE", &prefs_common.show_retrieve_dialog,
-        P_BOOL, &interface.checkbtn_retrievedialog,
-        prefs_set_data_from_toggle, prefs_set_toggle},
        {"open_inbox_on_inc", "TRUE", &prefs_common.open_inbox_on_inc,
         P_BOOL, &interface.checkbtn_openinbox,
         prefs_set_data_from_toggle, prefs_set_toggle},
@@ -500,7 +514,7 @@ static PrefParam param[] = {
         &interface.checkbtn_confonexit,
         prefs_set_data_from_toggle, prefs_set_toggle},
        {"send_return_receipt", "TRUE", &prefs_common.return_receipt, P_BOOL,
-        &interface.checkbtn_returnreceipt,
+        &send.checkbtn_returnreceipt,
         prefs_set_data_from_toggle, prefs_set_toggle},
        {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
         &interface.checkbtn_cleanonexit,
@@ -579,11 +593,11 @@ static void display_item_key_pressed      (GtkWidget      *widget,
                                         GdkEventKey    *event,
                                         gboolean       *cancelled);
 
-static void prefs_font_select                  (GtkButton      *button);
+static void prefs_font_select  (GtkButton *button, GtkEntry *entry);
 static void prefs_font_selection_key_pressed   (GtkWidget      *widget,
                                                 GdkEventKey    *event,
                                                 gpointer        data);
-static void prefs_font_selection_ok            (GtkButton      *button);
+static void prefs_font_selection_ok            (GtkButton      *button, GtkEntry *entry);
 
 static gint prefs_common_deleted       (GtkWidget      *widget,
                                         GdkEventAny    *event,
@@ -857,6 +871,7 @@ static void prefs_send_create(void)
        GtkWidget *optmenu;
        GtkWidget *optmenu_menu;
        GtkWidget *menuitem;
+       GtkWidget *checkbtn_returnreceipt;
 
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        gtk_widget_show (vbox1);
@@ -900,6 +915,8 @@ static void prefs_send_create(void)
                           _("Save sent message to outbox"));
        PACK_CHECK_BUTTON (vbox2, checkbtn_queuemsg,
                           _("Queue message that failed to send"));
+       PACK_CHECK_BUTTON (vbox2, checkbtn_returnreceipt,
+                          _("Send return receipt on request"));
 
        hbox1 = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox1);
@@ -960,6 +977,7 @@ static void prefs_send_create(void)
 
        send.checkbtn_savemsg  = checkbtn_savemsg;
        send.checkbtn_queuemsg = checkbtn_queuemsg;
+       send.checkbtn_returnreceipt = checkbtn_returnreceipt;
 
        send.optmenu_charset = optmenu;
 }
@@ -1118,22 +1136,22 @@ static void prefs_compose_create(void)
        compose.checkbtn_wrapatsend  = checkbtn_wrapatsend;
 }
 
-
-/* alfons - nice ui for darko */
-
 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
 {
-       gchar *text;
+       gchar     *text;
+       GtkWidget *datefmt_sample = NULL;
 
        g_return_if_fail(widget != NULL);
        g_return_if_fail(*widget != NULL);
-       g_return_if_fail(entry_datefmt != NULL);
+       g_return_if_fail(display.entry_datefmt != NULL);
+
+       datefmt_sample = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(*widget), "datefmt_sample");
        g_return_if_fail(datefmt_sample != NULL);
 
        text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
        g_free(prefs_common.date_format);
        prefs_common.date_format = text;
-       gtk_entry_set_text(GTK_ENTRY(entry_datefmt), text);
+       gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
 
        gtk_widget_destroy(*widget);
        *widget = NULL;
@@ -1175,14 +1193,17 @@ static void date_format_entry_on_change(GtkEditable *editable, GtkLabel *example
 
 static void date_format_select_row(GtkWidget *date_format_list, gint row,
                                        gint column, GdkEventButton *event,
-                                       gpointer data)
+                                       GtkWidget *date_format)
 {
-       gint curs_pos;
-       gchar *format;
-       gchar *old_format;
-       gchar *new_format;
+       gint      curs_pos;
+       gchar     *format;
+       gchar     *old_format;
+       gchar     *new_format;
+       GtkWidget *datefmt_sample = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(date_format), "datefmt_sample");
 
        g_return_if_fail(date_format_list != NULL);
+       g_return_if_fail(date_format != NULL);
+       g_return_if_fail(datefmt_sample != NULL);
 
        /* only on double click */
        if (event->type != GDK_2BUTTON_PRESS)
@@ -1227,6 +1248,7 @@ static GtkWidget *create_date_format(GtkButton *button, void *data)
        GtkWidget      *confirm_area;
        GtkWidget      *ok_btn;
        GtkWidget      *cancel_btn;
+       GtkWidget          *datefmt_sample = NULL;
 
        const struct  {
                gchar *fmt;
@@ -1267,6 +1289,8 @@ static GtkWidget *create_date_format(GtkButton *button, void *data)
        gtk_container_add(GTK_CONTAINER(date_format), vbox1);
 
        scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
+       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow1),
+                       GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
        gtk_widget_show(scrolledwindow1);
        gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
 
@@ -1320,6 +1344,10 @@ static GtkWidget *create_date_format(GtkButton *button, void *data)
        datefmt_sample = gtk_entry_new_with_max_length(300);
        gtk_widget_show(datefmt_sample);
        gtk_box_pack_start(GTK_BOX(hbox2), datefmt_sample, TRUE, TRUE, 40);
+       
+       /* we need the "sample" entry box; add it as data so callbacks can
+        * get the entry box */
+       gtk_object_set_data(GTK_OBJECT(date_format), "datefmt_sample", datefmt_sample);
 
        hbox1 = gtk_hbox_new(FALSE, 0);
        gtk_widget_show(hbox1);
@@ -1330,7 +1358,7 @@ static GtkWidget *create_date_format(GtkButton *button, void *data)
        gtk_box_pack_start(GTK_BOX(hbox1), label6, FALSE, TRUE, 0);
        gtk_misc_set_padding(GTK_MISC(label6), 8, 0);
 
-       label7 = gtk_label_new(_("label7"));
+       label7 = gtk_label_new("");
        gtk_widget_show(label7);
        gtk_box_pack_start(GTK_BOX(hbox1), label7, TRUE, TRUE, 60);
        gtk_label_set_justify(GTK_LABEL(label7), GTK_JUSTIFY_LEFT);
@@ -1371,7 +1399,7 @@ static GtkWidget *create_date_format(GtkButton *button, void *data)
 
        gtk_signal_connect(GTK_OBJECT(date_format_list), "select_row",
                           GTK_SIGNAL_FUNC(date_format_select_row),
-                          &datefmt_sample);
+                          date_format);
 
        return date_format;
 }
@@ -1395,6 +1423,8 @@ static void prefs_display_create(void)
        GtkWidget *label_datefmt;
        GtkWidget *label_datefmt_btn;
        GtkWidget *button_dispitem;
+       GtkWidget *tmplabel, *tmpentry, *tmpbutton;
+       GtkWidget *entry_datefmt;
 
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        gtk_widget_show (vbox1);
@@ -1403,7 +1433,7 @@ static void prefs_display_create(void)
 
        PACK_FRAME(vbox1, frame_font, _("Font"));
 
-       table1 = gtk_table_new (1, 3, FALSE);
+       table1 = gtk_table_new (4, 3, FALSE);
        gtk_widget_show (table1);
        gtk_container_add (GTK_CONTAINER (frame_font), table1);
        gtk_container_set_border_width (GTK_CONTAINER (table1), 8);
@@ -1425,7 +1455,61 @@ static void prefs_display_create(void)
        gtk_table_attach (GTK_TABLE (table1), button_textfont, 2, 3, 0, 1,
                          0, 0, 0, 0);
        gtk_signal_connect (GTK_OBJECT (button_textfont), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_font_select), NULL);
+                           GTK_SIGNAL_FUNC (prefs_font_select), entry_textfont);
+
+       tmplabel = gtk_label_new (_("Small"));
+       gtk_widget_show (tmplabel);
+       gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 1, 2,
+                         GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
+
+       tmpentry = gtk_entry_new ();
+       gtk_widget_show (tmpentry);
+       gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 1, 2,
+                         (GTK_EXPAND | GTK_FILL), 0, 0, 0);
+
+       tmpbutton = gtk_button_new_with_label ("... ");
+       gtk_widget_show (tmpbutton);
+       gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 1, 2,
+                         0, 0, 0, 0);
+       gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
+                           GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
+       display.entry_smallfont = tmpentry;                       
+
+       tmplabel = gtk_label_new (_("Normal"));
+       gtk_widget_show (tmplabel);
+       gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 2, 3,
+                         GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
+
+       tmpentry = gtk_entry_new ();
+       gtk_widget_show (tmpentry);
+       gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 2, 3,
+                         (GTK_EXPAND | GTK_FILL), 0, 0, 0);
+
+       tmpbutton = gtk_button_new_with_label ("... ");
+       gtk_widget_show (tmpbutton);
+       gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 2, 3,
+                         0, 0, 0, 0);
+       gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
+                               GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
+       display.entry_normalfont = tmpentry;                      
+
+       tmplabel = gtk_label_new (_("Bold"));
+       gtk_widget_show (tmplabel);
+       gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 3, 4,
+                         GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
+
+       tmpentry = gtk_entry_new ();
+       gtk_widget_show (tmpentry);
+       gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 3, 4,
+                         (GTK_EXPAND | GTK_FILL), 0, 0, 0);
+
+       tmpbutton = gtk_button_new_with_label ("... ");
+       gtk_widget_show (tmpbutton);
+       gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 3, 4,
+                         0, 0, 0, 0);
+       gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
+                               GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
+       display.entry_boldfont = tmpentry;                        
 
        vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
        gtk_widget_show (vbox2);
@@ -1495,6 +1579,7 @@ static void prefs_display_create(void)
        display.chkbtn_swapfrom    = chkbtn_swapfrom;
        display.chkbtn_hscrollbar  = chkbtn_hscrollbar;
        display.chkbtn_useaddrbook = chkbtn_useaddrbook;
+       display.entry_datefmt      = entry_datefmt;
 }
 
 static void prefs_message_create(void)
@@ -1797,8 +1882,6 @@ static void prefs_interface_create(void)
        GtkWidget *checkbtn_cleanonexit;
        GtkWidget *checkbtn_askonclean;
        GtkWidget *checkbtn_warnqueued;
-       GtkWidget *checkbtn_retrievedialog;
-       GtkWidget *checkbtn_returnreceipt;
 
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        gtk_widget_show (vbox1);
@@ -1819,10 +1902,6 @@ static void prefs_interface_create(void)
                (vbox2, checkbtn_openunread,
                 _("Open first unread message when entering a folder"));
 
-       PACK_CHECK_BUTTON
-               (vbox2, checkbtn_retrievedialog,
-                _("Display dialog when retrieving mail"));
-
        PACK_CHECK_BUTTON
                (vbox2, checkbtn_openinbox,
                 _("Go to inbox after receiving new mail"));
@@ -1872,9 +1951,6 @@ static void prefs_interface_create(void)
        PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
                           _("Warn if there are queued messages"));
 
-       PACK_CHECK_BUTTON (vbox_exit, checkbtn_returnreceipt,
-                          _("Send return receipt on request"));
-
        interface.checkbtn_emacs          = checkbtn_emacs;
        interface.checkbtn_openunread     = checkbtn_openunread;
        interface.checkbtn_openinbox      = checkbtn_openinbox;
@@ -1884,8 +1960,6 @@ static void prefs_interface_create(void)
        interface.checkbtn_cleanonexit    = checkbtn_cleanonexit;
        interface.checkbtn_askonclean     = checkbtn_askonclean;
        interface.checkbtn_warnqueued     = checkbtn_warnqueued;
-       interface.checkbtn_returnreceipt  = checkbtn_returnreceipt;
-       interface.checkbtn_retrievedialog = checkbtn_retrievedialog;
 }
 
 static void prefs_other_create(void)
@@ -2495,7 +2569,7 @@ static void display_item_key_pressed(GtkWidget *widget, GdkEventKey *event,
        }
 }
 
-static void prefs_font_select(GtkButton *button)
+static void prefs_font_select(GtkButton *button, GtkEntry *entry)
 {
        if (!font_sel_win) {
                font_sel_win = gtk_font_selection_dialog_new
@@ -2513,7 +2587,7 @@ static void prefs_font_select(GtkButton *button)
                        (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button),
                         "clicked",
                         GTK_SIGNAL_FUNC(prefs_font_selection_ok),
-                        NULL);
+                        entry);
                gtk_signal_connect_object
                        (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->cancel_button),
                         "clicked",
@@ -2536,7 +2610,7 @@ static void prefs_font_selection_key_pressed(GtkWidget *widget,
                gtk_widget_hide(font_sel_win);
 }
 
-static void prefs_font_selection_ok(GtkButton *button)
+static void prefs_font_selection_ok(GtkButton *button, GtkEntry *entry)
 {
        gchar *fontname;
 
@@ -2544,7 +2618,7 @@ static void prefs_font_selection_ok(GtkButton *button)
                (GTK_FONT_SELECTION_DIALOG(font_sel_win));
 
        if (fontname) {
-               gtk_entry_set_text(GTK_ENTRY(display.entry_textfont), fontname);
+               gtk_entry_set_text(entry, fontname);
                g_free(fontname);
        }