add option to disable the 'Subject is empty' warning dialogue
[claws.git] / src / prefs_send.c
index 090953ff5da0210b46f853b0908863e2d46ca471..ee8f876c4f7f5702679d4f271eb58a1d5f427179 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 2005-2007 Colin Leroy <colin@colino.net> & The Claws Mail Team
+ * Copyright (C) 2005-2012 Colin Leroy <colin@colino.net> & The Claws Mail Team
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -19,6 +19,7 @@
 
 #ifdef HAVE_CONFIG_H
 #  include "config.h"
+#include "claws-features.h"
 #endif
 
 #include "defs.h"
@@ -51,6 +52,7 @@ typedef struct _SendPage
        GtkWidget *checkbtn_confirm_send_queued_messages;
        GtkWidget *checkbtn_never_send_retrcpt;
        GtkWidget *checkbtn_senddialog;
+       GtkWidget *checkbtn_warn_empty_subj;
        GtkWidget *combobox_charset;
        GtkWidget *combobox_encoding_method;
 } SendPage;
@@ -61,9 +63,9 @@ static gchar * prefs_common_charset_set_data_from_optmenu(GtkWidget *widget)
        GtkTreeIter iter;
        gchar *data = NULL;
 
-       g_return_val_if_fail(widget != NULL, NULL);
+       cm_return_val_if_fail(widget != NULL, NULL);
 
-       g_return_val_if_fail(gtk_combo_box_get_active_iter(
+       cm_return_val_if_fail(gtk_combo_box_get_active_iter(
                                GTK_COMBO_BOX(widget), &iter), NULL);
 
        model = gtk_combo_box_get_model(GTK_COMBO_BOX(widget));
@@ -99,7 +101,7 @@ static void prefs_common_charset_set_optmenu(GtkWidget *widget, gchar *data)
        GtkComboBox *combobox = GTK_COMBO_BOX(widget);
        GtkTreeModel *model;
        ComboboxSelCtx *ctx = NULL;
-       g_return_if_fail(combobox != NULL);
+       cm_return_if_fail(combobox != NULL);
 
        model = gtk_combo_box_get_model(combobox);
 
@@ -117,7 +119,7 @@ static gboolean _combobox_separator_func(GtkTreeModel *model,
 {
        gchar *txt = NULL;
 
-       g_return_val_if_fail(model != NULL, FALSE);
+       cm_return_val_if_fail(model != NULL, FALSE);
 
        gtk_tree_model_get(model, iter, COMBOBOX_TEXT, &txt, -1);
 
@@ -139,13 +141,12 @@ static void prefs_send_create_widget(PrefsPage *_page, GtkWindow *window,
        GtkListStore *optmenu;
        GtkTreeIter iter;
        GtkCellRenderer *rend;
-       GtkTooltips *charset_tooltip;
        GtkWidget *combobox_encoding;
        GtkWidget *label_encoding;
-       GtkTooltips *encoding_tooltip;
        GtkWidget *checkbtn_senddialog;
        GtkWidget *checkbtn_confirm_send_queued_messages;
        GtkWidget *checkbtn_never_send_retrcpt;
+       GtkWidget *checkbtn_warn_empty_subj;
        GtkWidget *table;
 
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
@@ -167,6 +168,8 @@ static void prefs_send_create_widget(PrefsPage *_page, GtkWindow *window,
 
        PACK_CHECK_BUTTON(vbox2, checkbtn_senddialog,
                        _("Show send dialog"));
+       PACK_CHECK_BUTTON(vbox2, checkbtn_warn_empty_subj,
+                       _("Warn when Subject is empty"));
 
        table = gtk_table_new(2, 2, FALSE);
        gtk_widget_show(table);
@@ -182,8 +185,6 @@ static void prefs_send_create_widget(PrefsPage *_page, GtkWindow *window,
        gtk_label_set_justify(GTK_LABEL(label_outcharset), GTK_JUSTIFY_RIGHT);
        gtk_misc_set_alignment(GTK_MISC(label_outcharset), 1, 0.5);
 
-       charset_tooltip = gtk_tooltips_new();
-
        optmenu = gtk_list_store_new(2,
                        G_TYPE_STRING,          /* Menu label */
                        G_TYPE_STRING);         /* Actual charset data string */
@@ -200,10 +201,9 @@ static void prefs_send_create_widget(PrefsPage *_page, GtkWindow *window,
                        (GtkTreeViewRowSeparatorFunc)_combobox_separator_func, NULL, NULL);
 
        gtk_widget_show (combobox_charset);
-       gtk_tooltips_set_tip(GTK_TOOLTIPS(charset_tooltip), combobox_charset,
+       CLAWS_SET_TIP(combobox_charset,
                             _("If 'Automatic' is selected, the optimal encoding"
-                              " for the current locale will be used"),
-                            NULL);
+                              " for the current locale will be used"));
        gtk_table_attach(GTK_TABLE(table), combobox_charset, 1, 2, 1, 2,
                        (GtkAttachOptions) (GTK_FILL),
                        (GtkAttachOptions) (0), 0, 0);
@@ -251,6 +251,7 @@ static void prefs_send_create_widget(PrefsPage *_page, GtkWindow *window,
        SET_MENUITEM(_("Japanese (Shift_JIS)"),          CS_SHIFT_JIS);
 #endif /* 0 */
        SET_MENUITEM(NULL, NULL);
+       SET_MENUITEM(_("Simplified Chinese (GB18030)"),  CS_GB18030);
        SET_MENUITEM(_("Simplified Chinese (GB2312)"),   CS_GB2312);
        SET_MENUITEM(_("Simplified Chinese (GBK)"),      CS_GBK);
        SET_MENUITEM(_("Traditional Chinese (Big5)"),    CS_BIG5);
@@ -274,14 +275,11 @@ static void prefs_send_create_widget(PrefsPage *_page, GtkWindow *window,
        gtk_label_set_justify(GTK_LABEL(label_encoding), GTK_JUSTIFY_RIGHT);
        gtk_misc_set_alignment(GTK_MISC(label_encoding), 1, 0.5);
 
-       encoding_tooltip = gtk_tooltips_new();
-
        combobox_encoding = gtkut_sc_combobox_create(NULL, FALSE);
        gtk_widget_show (combobox_encoding);
-       gtk_tooltips_set_tip(GTK_TOOLTIPS(encoding_tooltip), combobox_encoding,
+       CLAWS_SET_TIP(combobox_encoding,
                             _("Specify Content-Transfer-Encoding used when"
-                              " message body contains non-ASCII characters"),
-                            NULL);
+                              " message body contains non-ASCII characters"));
        gtk_table_attach(GTK_TABLE(table), combobox_encoding, 1, 2, 2, 3,
                        (GtkAttachOptions) (GTK_FILL),
                        (GtkAttachOptions) (0), 0, 0);
@@ -290,6 +288,7 @@ static void prefs_send_create_widget(PrefsPage *_page, GtkWindow *window,
                                GTK_COMBO_BOX(combobox_encoding)));
 
        COMBOBOX_ADD(optmenu, _("Automatic"),    CTE_AUTO);
+       COMBOBOX_ADD(optmenu, NULL, 0);
        COMBOBOX_ADD(optmenu, "base64",          CTE_BASE64);
        COMBOBOX_ADD(optmenu, "quoted-printable", CTE_QUOTED_PRINTABLE);
        COMBOBOX_ADD(optmenu, "8bit",            CTE_8BIT);
@@ -302,6 +301,8 @@ static void prefs_send_create_widget(PrefsPage *_page, GtkWindow *window,
                prefs_common.never_send_retrcpt);
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_senddialog),
                !prefs_common.send_dialog_invisible);
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_warn_empty_subj),
+               prefs_common.warn_empty_subj);
        prefs_common_charset_set_optmenu(combobox_charset, 
                prefs_common.outgoing_charset);
        combobox_select_by_data(GTK_COMBO_BOX(combobox_encoding),
@@ -313,6 +314,7 @@ static void prefs_send_create_widget(PrefsPage *_page, GtkWindow *window,
        prefs_send->checkbtn_confirm_send_queued_messages = checkbtn_confirm_send_queued_messages;
        prefs_send->checkbtn_never_send_retrcpt = checkbtn_never_send_retrcpt;
        prefs_send->checkbtn_senddialog = checkbtn_senddialog;
+       prefs_send->checkbtn_warn_empty_subj = checkbtn_warn_empty_subj;
        prefs_send->combobox_charset = combobox_charset;
        prefs_send->combobox_encoding_method = combobox_encoding;
 
@@ -331,6 +333,8 @@ static void prefs_send_save(PrefsPage *_page)
                GTK_TOGGLE_BUTTON(page->checkbtn_never_send_retrcpt));
        prefs_common.send_dialog_invisible = !gtk_toggle_button_get_active(
                GTK_TOGGLE_BUTTON(page->checkbtn_senddialog));
+       prefs_common.warn_empty_subj = gtk_toggle_button_get_active(
+               GTK_TOGGLE_BUTTON(page->checkbtn_warn_empty_subj));
 
        g_free(prefs_common.outgoing_charset);
        prefs_common.outgoing_charset = prefs_common_charset_set_data_from_optmenu(