sync check for 0.4.99claws3
[claws.git] / src / prefs_common.c
index 770862ab3ea29097b512491f0d851da5573dd2c6..fa39f40c6e9acfc705370f5deb084cea1da1d810 100644 (file)
@@ -82,6 +82,8 @@ static struct Send {
        GtkWidget *checkbtn_queuemsg;
 
        GtkWidget *optmenu_charset;
+       
+       GtkWidget *checkbtn_returnreceipt;
 } send;
 
 static struct Compose {
@@ -98,7 +100,6 @@ static struct Compose {
 } compose;
 
 static struct Display {
-
        GtkWidget *entry_textfont;
        GtkWidget *button_textfont;
 
@@ -113,6 +114,8 @@ static struct Display {
        GtkWidget *chkbtn_swapfrom;
        GtkWidget *chkbtn_hscrollbar;
        GtkWidget *chkbtn_useaddrbook;
+
+       GtkWidget *entry_datefmt;
 } display;
 
 static struct Message {
@@ -133,12 +136,12 @@ static struct Message {
 
 #if USE_GPGME
 static struct Privacy {
-       GtkWidget *checkbtn_gpgme_warning;
        GtkWidget *checkbtn_default_encrypt;
        GtkWidget *checkbtn_default_sign;
        GtkWidget *checkbtn_auto_check_signatures;
+       GtkWidget *checkbtn_gpg_signature_popup;
        GtkWidget *checkbtn_passphrase_grab;
-       GtkWidget *checkbtn_signature_popup;
+       GtkWidget *checkbtn_gpg_warning;
        GtkWidget *optmenu_default_signkey;
 } privacy;
 #endif
@@ -152,7 +155,6 @@ static struct Interface {
        GtkWidget *checkbtn_cleanonexit;
        GtkWidget *checkbtn_askonclean;
        GtkWidget *checkbtn_warnqueued;
-       GtkWidget *checkbtn_returnreceipt;
        GtkWidget *checkbtn_addaddrbyclick;
 } interface;
 
@@ -175,8 +177,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);
@@ -314,7 +314,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,
@@ -459,9 +459,6 @@ static PrefParam param[] = {
 
 #if USE_GPGME
        /* Privacy */
-       {"gpgme_warning", "TRUE", &prefs_common.gpgme_warning, P_BOOL,
-        &privacy.checkbtn_gpgme_warning,
-        prefs_set_data_from_toggle, prefs_set_toggle},
        {"default_encrypt", "FALSE", &prefs_common.default_encrypt, P_BOOL,
         &privacy.checkbtn_default_encrypt,
         prefs_set_data_from_toggle, prefs_set_toggle},
@@ -472,15 +469,18 @@ static PrefParam param[] = {
         &prefs_common.auto_check_signatures, P_BOOL,
         &privacy.checkbtn_auto_check_signatures,
         prefs_set_data_from_toggle, prefs_set_toggle},
-       {"signature_popup", "FALSE",
-        &prefs_common.signature_popup, P_BOOL,
-        &privacy.checkbtn_signature_popup,
+       {"gpg_signature_popup", "FALSE",
+        &prefs_common.gpg_signature_popup, P_BOOL,
+        &privacy.checkbtn_gpg_signature_popup,
         prefs_set_data_from_toggle, prefs_set_toggle},
 #ifndef __MINGW32__
        {"passphrase_grab", "FALSE", &prefs_common.passphrase_grab, P_BOOL,
         &privacy.checkbtn_passphrase_grab,
         prefs_set_data_from_toggle, prefs_set_toggle},
 #endif /* __MINGW32__ */
+       {"gpg_warning", "TRUE", &prefs_common.gpg_warning, P_BOOL,
+        &privacy.checkbtn_gpg_warning,
+        prefs_set_data_from_toggle, prefs_set_toggle},
        {"default_signkey", CS_AUTO, &prefs_common.default_signkey, P_STRING,
         &privacy.optmenu_default_signkey,
         prefs_common_default_signkey_set_data_from_optmenu,
@@ -513,7 +513,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,
@@ -870,6 +870,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);
@@ -913,6 +914,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);
@@ -973,6 +976,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;
 }
@@ -1131,22 +1135,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;
@@ -1188,14 +1192,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)
@@ -1240,6 +1247,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;
@@ -1280,6 +1288,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);
 
@@ -1333,6 +1343,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);
@@ -1343,7 +1357,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);
@@ -1384,7 +1398,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;
 }
@@ -1407,8 +1421,10 @@ static void prefs_display_create(void)
        GtkWidget *hbox1;
        GtkWidget *label_datefmt;
        GtkWidget *label_datefmt_btn;
-       GtkWidget *button_dispitem;
        GtkWidget *tmplabel, *tmpentry, *tmpbutton;
+       GtkWidget *entry_datefmt;
+       GtkTooltips *tooltips_datefmt;
+       GtkWidget *button_dispitem;
 
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        gtk_widget_show (vbox1);
@@ -1417,7 +1433,7 @@ static void prefs_display_create(void)
 
        PACK_FRAME(vbox1, frame_font, _("Font"));
 
-       table1 = gtk_table_new (4, 3, FALSE);
+       table1 = gtk_table_new (1, 3, FALSE);
        gtk_widget_show (table1);
        gtk_container_add (GTK_CONTAINER (frame_font), table1);
        gtk_container_set_border_width (GTK_CONTAINER (table1), 8);
@@ -1528,9 +1544,9 @@ static void prefs_display_create(void)
        gtk_widget_show (hbox1);
        gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
 
-       label_datefmt = gtk_label_new(_("Date format"));
-       gtk_widget_show(label_datefmt);
-       gtk_box_pack_start(GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
+       label_datefmt = gtk_label_new (_("Date format"));
+       gtk_widget_show (label_datefmt);
+       gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
 
        entry_datefmt = gtk_entry_new ();
        gtk_widget_show (entry_datefmt);
@@ -1563,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)
@@ -1575,7 +1592,7 @@ static void prefs_message_create(void)
        GtkWidget *chkbtn_mbalnum;
        GtkWidget *chkbtn_disphdrpane;
        GtkWidget *chkbtn_disphdr;
-       GtkWidget *button_edit_disphdr; 
+       GtkWidget *button_edit_disphdr;
        GtkWidget *hbox_linespc;
        GtkWidget *label_linespc;
        GtkObject *spinbtn_linespc_adj;
@@ -1629,15 +1646,15 @@ static void prefs_message_create(void)
        gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
 
        PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
-               _("Display short headers on message view"));
+                         _("Display short headers on message view"));
 
        button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
        gtk_widget_show (button_edit_disphdr);
        gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
-                                 FALSE, TRUE, 0);
+                         FALSE, TRUE, 0);
        gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
-                                           GTK_SIGNAL_FUNC (prefs_display_header_open),
-                                           NULL);
+                           GTK_SIGNAL_FUNC (prefs_display_header_open),
+                           NULL);
 
        SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
 
@@ -1729,12 +1746,12 @@ static void prefs_privacy_create(void)
        GtkWidget *vbox1;
        GtkWidget *vbox2;
        GtkWidget *hbox1;
-       GtkWidget *checkbtn_gpgme_warning;
        GtkWidget *checkbtn_default_encrypt;
        GtkWidget *checkbtn_default_sign;
        GtkWidget *checkbtn_auto_check_signatures;
-       GtkWidget *checkbtn_signature_popup;
+       GtkWidget *checkbtn_gpg_signature_popup;
        GtkWidget *checkbtn_passphrase_grab;
+       GtkWidget *checkbtn_gpg_warning;
        GtkWidget *label;
        GtkWidget *menuitem;
        GtkWidget *optmenu;
@@ -1749,10 +1766,6 @@ static void prefs_privacy_create(void)
        gtk_widget_show (vbox2);
        gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
 
-       PACK_CHECK_BUTTON
-               (vbox2, checkbtn_gpgme_warning,
-                _("Display warning on startup if GnuPG does not work"));
-
        PACK_CHECK_BUTTON (vbox2, checkbtn_default_encrypt,
                           _("Encrypt message by default"));
 
@@ -1762,7 +1775,7 @@ static void prefs_privacy_create(void)
        PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
                           _("Automatically check signatures"));
 
-       PACK_CHECK_BUTTON (vbox2, checkbtn_signature_popup,
+       PACK_CHECK_BUTTON (vbox2, checkbtn_gpg_signature_popup,
                           _("Show signature check result in a popup window"));
 
 #ifndef __MINGW32__
@@ -1770,6 +1783,10 @@ static void prefs_privacy_create(void)
                           _("Grab input while entering a passphrase"));
 #endif
 
+       PACK_CHECK_BUTTON
+               (vbox2, checkbtn_gpg_warning,
+                _("Display warning on startup if GnuPG doesn't work"));
+
        hbox1 = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox1);
        gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
@@ -1789,13 +1806,14 @@ static void prefs_privacy_create(void)
        /* FIXME: disabled because not implemented */
        gtk_widget_set_sensitive(optmenu, FALSE);
 
-       privacy.checkbtn_gpgme_warning   = checkbtn_gpgme_warning;
        privacy.checkbtn_default_encrypt = checkbtn_default_encrypt;
        privacy.checkbtn_default_sign    = checkbtn_default_sign;
        privacy.checkbtn_auto_check_signatures
                                         = checkbtn_auto_check_signatures;
-       privacy.checkbtn_signature_popup = checkbtn_signature_popup;
+       privacy.checkbtn_gpg_signature_popup
+                                        = checkbtn_gpg_signature_popup;
        privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
+       privacy.checkbtn_gpg_warning     = checkbtn_gpg_warning;
        privacy.optmenu_default_signkey  = optmenu;
 }
 
@@ -1865,7 +1883,6 @@ static void prefs_interface_create(void)
        GtkWidget *checkbtn_cleanonexit;
        GtkWidget *checkbtn_askonclean;
        GtkWidget *checkbtn_warnqueued;
-       GtkWidget *checkbtn_returnreceipt;
 
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        gtk_widget_show (vbox1);
@@ -1935,9 +1952,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;
@@ -1947,7 +1961,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;
 }
 
 static void prefs_other_create(void)
@@ -1991,6 +2004,7 @@ static void prefs_other_create(void)
        gtk_box_pack_start (GTK_BOX (hbox1), uri_combo, TRUE, TRUE, 0);
        gtkut_combo_set_items (GTK_COMBO (uri_combo),
                               "netscape -remote 'openURL(%s,raise)'",
+                              "netscape '%s'",
                               "gnome-moz-remote --raise --newwin '%s'",
                               "kterm -e w3m '%s'",
                               "kterm -e lynx '%s'",
@@ -2052,7 +2066,7 @@ void prefs_quote_colors_dialog(void)
        if (!quote_color_win)
                prefs_quote_colors_dialog_create();
        gtk_widget_show(quote_color_win);
-       manage_window_set_transient(GTK_WINDOW(dialog.window));
+       manage_window_set_transient(GTK_WINDOW(quote_color_win));
 
        gtk_main();
        gtk_widget_hide(quote_color_win);
@@ -2113,7 +2127,7 @@ static void prefs_quote_colors_dialog_create(void)
        gtk_widget_set_usize (color_buttons.quote_level3_btn, 40, 30);
        gtk_container_set_border_width
                (GTK_CONTAINER (color_buttons.quote_level3_btn), 5);
-               
+
        color_buttons.uri_btn = gtk_button_new_with_label ("");
        gtk_table_attach (GTK_TABLE (table), color_buttons.uri_btn,
                          0, 1, 3, 4, 0, 0, 0, 0);
@@ -2665,7 +2679,7 @@ static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
                                     gpointer data)
 {
        if (event && event->keyval == GDK_Escape)
-               prefs_common_cancel();  
+               prefs_common_cancel();
 }
 
 static void prefs_common_ok(void)