usability enhancements to quoting
authorPaul Mangan <paul@claws-mail.org>
Thu, 29 Nov 2001 10:49:46 +0000 (10:49 +0000)
committerPaul Mangan <paul@claws-mail.org>
Thu, 29 Nov 2001 10:49:46 +0000 (10:49 +0000)
AUTHORS
ChangeLog.claws
configure.in
src/mainwindow.c
src/mainwindow.h
src/pixmaps/stock_mail_reply_quote.xpm [new file with mode: 0644]
src/pixmaps/stock_mail_reply_to_all_quote.xpm [new file with mode: 0644]
src/pixmaps/stock_mail_reply_to_author_quote.xpm [new file with mode: 0644]
src/prefs_common.c

diff --git a/AUTHORS b/AUTHORS
index 116aed52bdf659a1ec9469a8074556b628f27979..cdf8c0db9b1a1adf56f402630ed4d8f0d9048591 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -95,3 +95,4 @@ contributors (beside the above; based on Changelog)
        Hironori IWANE
        Manrat Chobchuen
        Shimamoto "Neko" Tatsuya
        Hironori IWANE
        Manrat Chobchuen
        Shimamoto "Neko" Tatsuya
+        Carsten Schurig
index 039dddfe4adb9417a400081d222e3a4e1109e1b9..a68b3df584f980dd4b9d50d77290a3b0b5b8706d 100644 (file)
@@ -1,3 +1,14 @@
+2001-11-29 [paul]      0.6.5claws44
+
+       * src/mainwindow.[ch]
+        * src/prefs_common.c
+        * src/pixmaps/stock_mail_reply_quote.xpm            ** NEW FILE **
+        * src/pixmaps/stock_mail_reply_to_all_quote.xpm     ** NEW FILE **
+        * src/pixmaps/stock_mail_reply_to_author_quote.xpm  ** NEW FILE **
+               usability enhancements to the quoting, implements
+                use of Ctrl key to toggle quoting settings
+                Submitted by Carsten Schurig <Carsten.Schurig@web.de>
+
 2001-11-29 [paul]      0.6.5claws43
        
         * sync with sylpheed 0.6.5cvs19
 2001-11-29 [paul]      0.6.5claws43
        
         * sync with sylpheed 0.6.5cvs19
index cb265e305e52d3120cb5ec9faa3891ff9d7a51d1..6f9d8eb6653353e3837ce73d5a75a7ea6fd9519a 100644 (file)
@@ -8,7 +8,7 @@ MINOR_VERSION=6
 MICRO_VERSION=5
 INTERFACE_AGE=0
 BINARY_AGE=0
 MICRO_VERSION=5
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=claws43
+EXTRA_VERSION=claws44
 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
 
 dnl
 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
 
 dnl
index be0cc09ffff57c3da3e12d8bb4f67acd57a6e5a6..03cc613066df2024582adbab358caebdb92f7890 100644 (file)
@@ -20,6 +20,7 @@
 #include "defs.h"
 
 #include <glib.h>
 #include "defs.h"
 
 #include <glib.h>
+#include <gdk/gdkkeysyms.h>
 #include <gtk/gtkmain.h>
 #include <gtk/gtkwindow.h>
 #include <gtk/gtkwidget.h>
 #include <gtk/gtkmain.h>
 #include <gtk/gtkwindow.h>
 #include <gtk/gtkwidget.h>
@@ -127,10 +128,16 @@ static void toolbar_compose_mail_cb               (GtkWidget      *widget,
                                         gpointer        data);
 static void toolbar_reply_cb           (GtkWidget      *widget,
                                         gpointer        data);
                                         gpointer        data);
 static void toolbar_reply_cb           (GtkWidget      *widget,
                                         gpointer        data);
+static void toolbar_reply_quote_cb     (GtkWidget      *widget,
+                                        gpointer        data);
 static void toolbar_reply_to_all_cb    (GtkWidget      *widget,
                                         gpointer        data);
 static void toolbar_reply_to_all_cb    (GtkWidget      *widget,
                                         gpointer        data);
+static void toolbar_reply_to_all_quote_cb      (GtkWidget      *widget,
+                                        gpointer        data);
 static void toolbar_reply_to_sender_cb (GtkWidget      *widget,
                                         gpointer        data);
 static void toolbar_reply_to_sender_cb (GtkWidget      *widget,
                                         gpointer        data);
+static void toolbar_reply_to_sender_quote_cb   (GtkWidget      *widget,
+                                        gpointer        data);
 static void toolbar_forward_cb         (GtkWidget      *widget,
                                         gpointer        data);
 
 static void toolbar_forward_cb         (GtkWidget      *widget,
                                         gpointer        data);
 
@@ -393,6 +400,18 @@ static void activate_compose_button (MainWindow *mainwin,
                                ToolbarStyle      style,
                                ComposeButtonType type);
 
                                ToolbarStyle      style,
                                ComposeButtonType type);
 
+static void focus_out          (GtkWidget *widget, 
+                                GdkEventFocus *event,
+                                gpointer data);
+
+static void key_pressed                (GtkWidget      *widget, 
+                                GdkEventKey    *event,
+                                gpointer       data);
+
+static void key_released       (GtkWidget      *widget,
+                                GdkEventKey    *event,
+                                gpointer       data);
+
 #define  SEPARATE_ACTION  667
 
 static GtkItemFactoryEntry mainwin_entries[] =
 #define  SEPARATE_ACTION  667
 
 static GtkItemFactoryEntry mainwin_entries[] =
@@ -672,8 +691,15 @@ MainWindow *main_window_create(SeparateType type)
                           GTK_SIGNAL_FUNC(manage_window_focus_in), NULL);
        gtk_signal_connect(GTK_OBJECT(window), "focus_out_event",
                           GTK_SIGNAL_FUNC(manage_window_focus_out), NULL);
                           GTK_SIGNAL_FUNC(manage_window_focus_in), NULL);
        gtk_signal_connect(GTK_OBJECT(window), "focus_out_event",
                           GTK_SIGNAL_FUNC(manage_window_focus_out), NULL);
+       gtk_signal_connect(GTK_OBJECT(window), "focus_out_event",
+                          GTK_SIGNAL_FUNC(focus_out), mainwin);
+       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
+                          GTK_SIGNAL_FUNC(key_pressed), mainwin);
+       gtk_signal_connect(GTK_OBJECT(window), "key_release_event",
+                          GTK_SIGNAL_FUNC(key_released), mainwin);
 
        gtk_widget_realize(window);
 
        gtk_widget_realize(window);
+       gtk_widget_add_events(window, GDK_KEY_PRESS_MASK|GDK_KEY_RELEASE_MASK);
 
        gtkut_widget_set_app_icon(window);
 
 
        gtkut_widget_set_app_icon(window);
 
@@ -930,6 +956,7 @@ void main_window_unlock(MainWindow *mainwin)
 
        main_window_set_menu_sensitive(mainwin);
        main_window_set_toolbar_sensitive(mainwin);
 
        main_window_set_menu_sensitive(mainwin);
        main_window_set_toolbar_sensitive(mainwin);
+       main_window_set_toolbar_reply_buttons(mainwin, 0);
 
        if (mainwin->lock_count == 0)
                gtk_widget_set_sensitive(mainwin->ac_button, TRUE);
 
        if (mainwin->lock_count == 0)
                gtk_widget_set_sensitive(mainwin->ac_button, TRUE);
@@ -946,6 +973,7 @@ void main_window_reflect_prefs_all(void)
                main_window_show_cur_account(mainwin);
                main_window_set_menu_sensitive(mainwin);
                main_window_set_toolbar_sensitive(mainwin);
                main_window_show_cur_account(mainwin);
                main_window_set_menu_sensitive(mainwin);
                main_window_set_toolbar_sensitive(mainwin);
+               main_window_set_toolbar_reply_buttons(mainwin, 0);
 
                if (prefs_common.immediate_exec)
                        gtk_widget_hide(mainwin->exec_btn);
 
                if (prefs_common.immediate_exec)
                        gtk_widget_hide(mainwin->exec_btn);
@@ -1294,8 +1322,11 @@ void main_window_set_toolbar_sensitive(MainWindow *mainwin)
                {mainwin->compose_mail_btn, M_HAVE_ACCOUNT},
                {mainwin->compose_news_btn, M_HAVE_ACCOUNT},
                {mainwin->reply_btn       , M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST},
                {mainwin->compose_mail_btn, M_HAVE_ACCOUNT},
                {mainwin->compose_news_btn, M_HAVE_ACCOUNT},
                {mainwin->reply_btn       , M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST},
+               {mainwin->reply_quote_btn , M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST},
                {mainwin->replyall_btn    , M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST},
                {mainwin->replyall_btn    , M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST},
+               {mainwin->replyall_quote_btn    , M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST},
                {mainwin->replysender_btn , M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST},
                {mainwin->replysender_btn , M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST},
+               {mainwin->replysender_quote_btn , M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST},
                {mainwin->fwd_btn         , M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST},
                /* {mainwin->prefs_btn      , M_UNLOCKED},
                {mainwin->account_btn    , M_UNLOCKED}, */
                {mainwin->fwd_btn         , M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST},
                /* {mainwin->prefs_btn      , M_UNLOCKED},
                {mainwin->account_btn    , M_UNLOCKED}, */
@@ -1600,8 +1631,11 @@ static void main_window_set_widgets(MainWindow *mainwin, SeparateType type)
 #include "pixmaps/stock_mail_compose.xpm"
 #include "pixmaps/stock_news_compose.xpm"
 #include "pixmaps/stock_mail_reply.xpm"
 #include "pixmaps/stock_mail_compose.xpm"
 #include "pixmaps/stock_news_compose.xpm"
 #include "pixmaps/stock_mail_reply.xpm"
+#include "pixmaps/stock_mail_reply_quote.xpm"
 #include "pixmaps/stock_mail_reply_to_all.xpm"
 #include "pixmaps/stock_mail_reply_to_all.xpm"
+#include "pixmaps/stock_mail_reply_to_all_quote.xpm"
 #include "pixmaps/stock_mail_reply_to_author.xpm"
 #include "pixmaps/stock_mail_reply_to_author.xpm"
+#include "pixmaps/stock_mail_reply_to_author_quote.xpm"
 #include "pixmaps/stock_mail_forward.xpm"
 #include "pixmaps/stock_mail_send.xpm"
 #include "pixmaps/stock_preferences.xpm"
 #include "pixmaps/stock_mail_forward.xpm"
 #include "pixmaps/stock_mail_send.xpm"
 #include "pixmaps/stock_preferences.xpm"
@@ -1632,8 +1666,11 @@ static void main_window_toolbar_create(MainWindow *mainwin,
        GtkWidget *compose_mail_btn_plain;
        GtkWidget *compose_news_btn_plain;
        GtkWidget *reply_btn;
        GtkWidget *compose_mail_btn_plain;
        GtkWidget *compose_news_btn_plain;
        GtkWidget *reply_btn;
+       GtkWidget *reply_quote_btn;
        GtkWidget *replyall_btn;
        GtkWidget *replyall_btn;
+       GtkWidget *replyall_quote_btn;
        GtkWidget *replysender_btn;
        GtkWidget *replysender_btn;
+       GtkWidget *replysender_quote_btn;
        GtkWidget *fwd_btn;
        GtkWidget *send_btn;
        /*
        GtkWidget *fwd_btn;
        GtkWidget *send_btn;
        /*
@@ -1784,6 +1821,14 @@ static void main_window_toolbar_create(MainWindow *mainwin,
                                            icon_wid,
                                            toolbar_reply_cb,
                                            mainwin);
                                            icon_wid,
                                            toolbar_reply_cb,
                                            mainwin);
+       CREATE_TOOLBAR_ICON(stock_mail_reply_quote_xpm);
+       reply_quote_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
+                                           _("Reply"),
+                                           _("Reply to the message quoting it"),
+                                           "Reply quoting",
+                                           icon_wid,
+                                           toolbar_reply_quote_cb,
+                                           mainwin);
        CREATE_TOOLBAR_ICON(stock_mail_reply_to_all_xpm);
        replyall_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
                                               _("All"),
        CREATE_TOOLBAR_ICON(stock_mail_reply_to_all_xpm);
        replyall_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
                                               _("All"),
@@ -1792,6 +1837,14 @@ static void main_window_toolbar_create(MainWindow *mainwin,
                                               icon_wid,
                                               toolbar_reply_to_all_cb,
                                               mainwin);
                                               icon_wid,
                                               toolbar_reply_to_all_cb,
                                               mainwin);
+       CREATE_TOOLBAR_ICON(stock_mail_reply_to_all_quote_xpm);
+       replyall_quote_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
+                                              _("All"),
+                                              _("Reply to all quoting the message"),
+                                              "Reply to all quoting",
+                                              icon_wid,
+                                              toolbar_reply_to_all_quote_cb,
+                                              mainwin);
        CREATE_TOOLBAR_ICON(stock_mail_reply_to_author_xpm);
        replysender_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
                                                  _("Sender"),
        CREATE_TOOLBAR_ICON(stock_mail_reply_to_author_xpm);
        replysender_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
                                                  _("Sender"),
@@ -1800,6 +1853,14 @@ static void main_window_toolbar_create(MainWindow *mainwin,
                                                  icon_wid,
                                                  toolbar_reply_to_sender_cb,
                                                  mainwin);
                                                  icon_wid,
                                                  toolbar_reply_to_sender_cb,
                                                  mainwin);
+       CREATE_TOOLBAR_ICON(stock_mail_reply_to_author_quote_xpm);
+       replysender_quote_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
+                                                 _("Sender"),
+                                                 _("Reply to sender quoting the message"),
+                                                 "Reply to sender quoting",
+                                                 icon_wid,
+                                                 toolbar_reply_to_sender_quote_cb,
+                                                 mainwin);
        CREATE_TOOLBAR_ICON(stock_mail_forward_xpm);
        fwd_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
                                          _("Forward"),
        CREATE_TOOLBAR_ICON(stock_mail_forward_xpm);
        fwd_btn = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
                                          _("Forward"),
@@ -1882,8 +1943,11 @@ static void main_window_toolbar_create(MainWindow *mainwin,
        mainwin->compose_mail_btn_plain = compose_mail_btn_plain;
        mainwin->compose_news_btn_plain = compose_news_btn_plain;
        mainwin->reply_btn       = reply_btn;
        mainwin->compose_mail_btn_plain = compose_mail_btn_plain;
        mainwin->compose_news_btn_plain = compose_news_btn_plain;
        mainwin->reply_btn       = reply_btn;
+       mainwin->reply_quote_btn = reply_quote_btn;
        mainwin->replyall_btn    = replyall_btn;
        mainwin->replyall_btn    = replyall_btn;
+       mainwin->replyall_quote_btn     = replyall_quote_btn;
        mainwin->replysender_btn = replysender_btn;
        mainwin->replysender_btn = replysender_btn;
+       mainwin->replysender_quote_btn  = replysender_quote_btn;
        mainwin->fwd_btn         = fwd_btn;
        mainwin->send_btn        = send_btn;
        /*
        mainwin->fwd_btn         = fwd_btn;
        mainwin->send_btn        = send_btn;
        /*
@@ -2003,6 +2067,14 @@ static void toolbar_reply_cb     (GtkWidget      *widget,
        reply_cb(mainwin, COMPOSE_REPLY, NULL);
 }
 
        reply_cb(mainwin, COMPOSE_REPLY, NULL);
 }
 
+static void toolbar_reply_quote_cb     (GtkWidget *widget, 
+                                        gpointer data)
+{
+       MainWindow *mainwin = (MainWindow *)data;
+
+       reply_cb(mainwin, COMPOSE_REPLY_WITH_QUOTE, NULL);
+}
+
 static void toolbar_reply_to_all_cb    (GtkWidget      *widget,
                                         gpointer        data)
 {
 static void toolbar_reply_to_all_cb    (GtkWidget      *widget,
                                         gpointer        data)
 {
@@ -2011,6 +2083,14 @@ static void toolbar_reply_to_all_cb      (GtkWidget      *widget,
        reply_cb(mainwin, COMPOSE_REPLY_TO_ALL, NULL);
 }
 
        reply_cb(mainwin, COMPOSE_REPLY_TO_ALL, NULL);
 }
 
+static void toolbar_reply_to_all_quote_cb      (GtkWidget *widget, 
+                                                gpointer data)
+{
+       MainWindow *mainwin = (MainWindow *)data;
+       
+       reply_cb(mainwin, COMPOSE_REPLY_TO_ALL_WITH_QUOTE, NULL);
+}
+
 static void toolbar_reply_to_sender_cb (GtkWidget      *widget,
                                         gpointer        data)
 {
 static void toolbar_reply_to_sender_cb (GtkWidget      *widget,
                                         gpointer        data)
 {
@@ -2019,6 +2099,14 @@ static void toolbar_reply_to_sender_cb   (GtkWidget      *widget,
        reply_cb(mainwin, COMPOSE_REPLY_TO_SENDER, NULL);
 }
 
        reply_cb(mainwin, COMPOSE_REPLY_TO_SENDER, NULL);
 }
 
+static void toolbar_reply_to_sender_quote_cb   (GtkWidget *widget, 
+                                                gpointer data)
+{
+       MainWindow *mainwin = (MainWindow *)data;
+
+       reply_cb(mainwin, COMPOSE_REPLY_TO_SENDER_WITH_QUOTE, NULL);
+}
+
 static void toolbar_forward_cb (GtkWidget      *widget,
                                 gpointer        data)
 {
 static void toolbar_forward_cb (GtkWidget      *widget,
                                 gpointer        data)
 {
@@ -2442,10 +2530,22 @@ static void reply_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
                compose_reply(msginfo, prefs_common.reply_with_quote,
                              FALSE, FALSE);
                break;
                compose_reply(msginfo, prefs_common.reply_with_quote,
                              FALSE, FALSE);
                break;
+       case COMPOSE_REPLY_WITH_QUOTE:
+               compose_reply(msginfo, TRUE, FALSE, FALSE);
+               break;
+       case COMPOSE_REPLY_WITHOUT_QUOTE:
+               compose_reply(msginfo, FALSE, FALSE, FALSE);
+               break;
        case COMPOSE_REPLY_TO_SENDER:
                compose_reply(msginfo, prefs_common.reply_with_quote,
                              FALSE, TRUE);
                break;
        case COMPOSE_REPLY_TO_SENDER:
                compose_reply(msginfo, prefs_common.reply_with_quote,
                              FALSE, TRUE);
                break;
+       case COMPOSE_REPLY_TO_SENDER_WITH_QUOTE:
+               compose_reply(msginfo, TRUE, FALSE, TRUE);
+               break;
+       case COMPOSE_REPLY_TO_SENDER_WITHOUT_QUOTE:
+               compose_reply(msginfo, FALSE, FALSE, TRUE);
+               break;
        case COMPOSE_FOLLOWUP_AND_REPLY_TO:
                compose_followup_and_reply_to(msginfo,
                                              prefs_common.reply_with_quote,
        case COMPOSE_FOLLOWUP_AND_REPLY_TO:
                compose_followup_and_reply_to(msginfo,
                                              prefs_common.reply_with_quote,
@@ -2455,6 +2555,12 @@ static void reply_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
                compose_reply(msginfo, prefs_common.reply_with_quote,
                              TRUE, TRUE);
                break;
                compose_reply(msginfo, prefs_common.reply_with_quote,
                              TRUE, TRUE);
                break;
+       case COMPOSE_REPLY_TO_ALL_WITH_QUOTE:
+               compose_reply(msginfo, TRUE, TRUE, FALSE);
+               break;
+       case COMPOSE_REPLY_TO_ALL_WITHOUT_QUOTE:
+               compose_reply(msginfo, FALSE, TRUE, FALSE);
+               break;
        case COMPOSE_FORWARD:
                if (!sel->next) {
                        compose_forward(NULL, msginfo, FALSE);
        case COMPOSE_FORWARD:
                if (!sel->next) {
                        compose_forward(NULL, msginfo, FALSE);
@@ -2825,3 +2931,43 @@ void main_window_toolbar_set_compose_button(MainWindow *mainwin, ComposeButtonTy
                                        prefs_common.toolbar_style,
                                        compose_btn_type);
 }
                                        prefs_common.toolbar_style,
                                        compose_btn_type);
 }
+
+static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data)
+{
+       MainWindow *mainwin = (MainWindow *)data;
+       
+       if (!mainwin) return;
+       if (event && (event->keyval == GDK_Control_L) || (event->keyval == GDK_Control_R)) {
+               main_window_set_toolbar_reply_buttons(mainwin, TRUE);
+       }
+}
+
+static void key_released(GtkWidget *widget, GdkEventKey *event, gpointer data)
+{
+       MainWindow *mainwin = (MainWindow *)data;
+       
+       if (!mainwin) return;
+        if (event && (event->keyval == GDK_Control_L) || (event->keyval == GDK_Control_R)) {
+                main_window_set_toolbar_reply_buttons(mainwin, FALSE);
+       }
+}
+
+void main_window_set_toolbar_reply_buttons(MainWindow *mainwin, gboolean keymod)
+{
+       gboolean quote = (prefs_common.reply_with_quote ^ keymod);
+       
+       gtk_widget_hide(quote ? mainwin->reply_btn : mainwin->reply_quote_btn);
+       gtk_widget_show(!quote ? mainwin->reply_btn : mainwin->reply_quote_btn);
+       gtk_widget_hide(quote ? mainwin->replyall_btn : mainwin->replyall_quote_btn);
+       gtk_widget_show(!quote ? mainwin->replyall_btn : mainwin->replyall_quote_btn);
+       gtk_widget_hide(quote ? mainwin->replysender_btn : mainwin->replysender_quote_btn);
+       gtk_widget_show(!quote ? mainwin->replysender_btn : mainwin->replysender_quote_btn);
+}
+
+static void focus_out (GtkWidget *widget, GdkEventFocus *event, gpointer data)
+{
+       MainWindow *mainwin = (MainWindow *)data;
+       
+       main_window_set_toolbar_reply_buttons(mainwin, FALSE);
+
+}
index 704592f1129636eb5249bd3ce9344dd98f15e2a9..1103864e9fd95366a7a0b755140f2d3e7af93b95 100644 (file)
@@ -95,8 +95,11 @@ struct _MainWindow
        ComposeButtonType compose_btn_type;
        
        GtkWidget *reply_btn;
        ComposeButtonType compose_btn_type;
        
        GtkWidget *reply_btn;
+       GtkWidget *reply_quote_btn;
        GtkWidget *replyall_btn;
        GtkWidget *replyall_btn;
+       GtkWidget *replyall_quote_btn;
        GtkWidget *replysender_btn;
        GtkWidget *replysender_btn;
+       GtkWidget *replysender_quote_btn;
        GtkWidget *fwd_btn;
        GtkWidget *send_btn;
        /*
        GtkWidget *fwd_btn;
        GtkWidget *send_btn;
        /*
@@ -156,8 +159,11 @@ void main_window_empty_trash               (MainWindow     *mainwin,
 void main_window_add_mailbox           (MainWindow     *mainwin);
 
 void main_window_set_toolbar_sensitive (MainWindow     *mainwin);
 void main_window_add_mailbox           (MainWindow     *mainwin);
 
 void main_window_set_toolbar_sensitive (MainWindow     *mainwin);
+void main_window_set_toolbar_reply_buttons     (MainWindow     *mainwin,
+                                        gboolean keymod);
 void main_window_set_menu_sensitive    (MainWindow     *mainwin);
 
 void main_window_set_menu_sensitive    (MainWindow     *mainwin);
 
+
 void main_window_popup                 (MainWindow     *mainwin);
 
 void main_window_toolbar_set_compose_button    
 void main_window_popup                 (MainWindow     *mainwin);
 
 void main_window_toolbar_set_compose_button    
diff --git a/src/pixmaps/stock_mail_reply_quote.xpm b/src/pixmaps/stock_mail_reply_quote.xpm
new file mode 100644 (file)
index 0000000..4964016
--- /dev/null
@@ -0,0 +1,146 @@
+/* XPM */
+static char * stock_mail_reply_quote_xpm[] = {
+"24 24 119 2",
+"      c None",
+".     c #000000",
+"+     c #7B7B78",
+"@     c #C7C7C3",
+"#     c #F1F0EB",
+"$     c #BFBFBC",
+"%     c #5F5E5E",
+"&     c #E3E3DF",
+"*     c #F3F3EF",
+"=     c #F2F2EE",
+"-     c #F1F1EC",
+";     c #F0EFEB",
+">     c #D2D2CD",
+",     c #969592",
+"'     c #616060",
+")     c #B5B5B4",
+"!     c #F8F8F6",
+"~     c #F7F7F5",
+"{     c #F6F6F3",
+"]     c #F5F5F2",
+"^     c #F4F4F0",
+"/     c #F2F1ED",
+"(     c #F1F0EC",
+"_     c #F0EFEA",
+":     c #EFEEE9",
+"<     c #4F4F4D",
+"[     c #BDBCB8",
+"}     c #A7A6A3",
+"|     c #C6C6C4",
+"1     c #7C7C7B",
+"2     c #525251",
+"3     c #DBDBD9",
+"4     c #F5F4F1",
+"5     c #F4F3F0",
+"6     c #F3F2EE",
+"7     c #999894",
+"8     c #62625F",
+"9     c #BCBCB6",
+"0     c #EBE9E3",
+"a     c #838381",
+"b     c #D7D6D4",
+"c     c #A8A8A6",
+"d     c #515150",
+"e     c #7E7D7C",
+"f     c #DAD9D5",
+"g     c #EFEEE8",
+"h     c #EEEDE7",
+"i     c #4F4E4C",
+"j     c #BCBBB6",
+"k     c #EBE9E2",
+"l     c #EAE8E1",
+"m     c #F6F5F2",
+"n     c #F4F3EF",
+"o     c #B5B4B1",
+"p     c #9B9A97",
+"q     c #646361",
+"r     c #92918E",
+"s     c #EEEDE8",
+"t     c #EDECE6",
+"u     c #4E4E4C",
+"v     c #797976",
+"w     c #797874",
+"x     c #E9E8E1",
+"y     c #E8E7DF",
+"z     c #B4B3AF",
+"A     c #D0D0CD",
+"B     c #F2F2ED",
+"C     c #BFBEBA",
+"D     c #BEBDB9",
+"E     c #7A7A77",
+"F     c #979691",
+"G     c #EAE9E2",
+"H     c #959590",
+"I     c #787773",
+"J     c #B8B7B0",
+"K     c #E6E4DC",
+"L     c #626260",
+"M     c #ECEBE4",
+"N     c #EBEAE3",
+"O     c #E9E7E0",
+"P     c #E8E6DF",
+"Q     c #E7E5DD",
+"R     c #777671",
+"S     c #93918C",
+"T     c #736453",
+"U     c #7F6F5C",
+"V     c #BEBDB8",
+"W     c #989793",
+"X     c #ECEAE4",
+"Y     c #E8E6DE",
+"Z     c #E6E4DB",
+"`     c #E4E3DA",
+" .    c #75746F",
+"..    c #91908A",
+"+.    c #8B7964",
+"@.    c #96836D",
+"#.    c #EBEAE4",
+"$.    c #E7E6DE",
+"%.    c #E6E5DC",
+"&.    c #E5E4DB",
+"*.    c #E4E2DA",
+"=.    c #CCCBC4",
+"-.    c #A3A29D",
+";.    c #A28D75",
+">.    c #AD977E",
+",.    c #CDCCC6",
+"'.    c #959490",
+").    c #B9A186",
+"!.    c #C5AC8F",
+"~.    c #E0D8B0",
+"{.    c #B39C82",
+"].    c #BCA488",
+"^.    c #AA947B",
+"/.    c #A18D75",
+"(.    c #98856E",
+"_.    c #8F7D68",
+":.    c #867561",
+"<.    c #7D6D5B",
+"[.    c #746554",
+"                                                ",
+"                                                ",
+"                          . . . .               ",
+"                . . . . . + @ # $ .             ",
+"      . . . . . % $ & * = - ; > , .             ",
+"    . ' ) ! ~ { ] ^ * / ( _ : < [ } .           ",
+"    . | 1 2 3 4 5 6 / # _ : 7 8 9 0 .           ",
+"    . a b c d e f / # _ g h i j k l .           ",
+"      . m 4 n o p q r s t u v w x y z .         ",
+"      . A * B ( ; C D E u F G H I J K .         ",
+"      . . / ( _ : L t M N l O P Q R S .         ",
+"    . T U . . g V W X 0 l O Y Q Z `  ....       ",
+"    . T U +.@.. . #.G x y $.%.&.*.=.-.. .       ",
+"      . . +.@.;.>.. . y $.K ,.'.. . .           ",
+"          . . ;.>.).!.. H . . .       .         ",
+"          . . ;.>.).!.. .           . ~..       ",
+"      . . +.@.;.>.. .       . .   . ~.~.~..     ",
+"    . T U +.@.. .         . {..     . ~.~.~..   ",
+"    . T U . .           . ].{.. . . . . . . .   ",
+"      . .             . !.].{.^./.(._.:.<.[..   ",
+"                      . !.].{.^./.(._.:.<..     ",
+"                        . ].{.. . . . . .       ",
+"                          . {..                 ",
+"                            . .                 "};
diff --git a/src/pixmaps/stock_mail_reply_to_all_quote.xpm b/src/pixmaps/stock_mail_reply_to_all_quote.xpm
new file mode 100644 (file)
index 0000000..393f50d
--- /dev/null
@@ -0,0 +1,116 @@
+/* XPM */
+static char * stock_mail_reply_to_all_quote_xpm[] = {
+"24 24 89 1",
+"      c None",
+".     c #000000",
+"+     c #7B7B78",
+"@     c #C7C7C3",
+"#     c #F1F0EB",
+"$     c #BFBFBC",
+"%     c #5F5E5E",
+"&     c #E3E3DF",
+"*     c #F3F3EF",
+"=     c #F2F2EE",
+"-     c #F1F1EC",
+";     c #F0EFEB",
+">     c #D2D2CD",
+",     c #969592",
+"'     c #616060",
+")     c #B5B5B4",
+"!     c #F8F8F6",
+"~     c #F7F7F5",
+"{     c #F6F6F3",
+"]     c #F5F5F2",
+"^     c #F4F4F0",
+"/     c #F2F1ED",
+"(     c #F1F0EC",
+"_     c #F0EFEA",
+":     c #EFEEE9",
+"<     c #4F4F4D",
+"[     c #BDBCB8",
+"}     c #A7A6A3",
+"|     c #C6C6C4",
+"1     c #7C7C7B",
+"2     c #525251",
+"3     c #DBDBD9",
+"4     c #F5F4F1",
+"5     c #F4F3F0",
+"6     c #F3F2EE",
+"7     c #999894",
+"8     c #62625F",
+"9     c #BCBCB6",
+"0     c #EBE9E3",
+"a     c #E0D8B0",
+"b     c #838381",
+"c     c #D7D6D4",
+"d     c #A8A8A6",
+"e     c #515150",
+"f     c #7E7D7C",
+"g     c #DAD9D5",
+"h     c #EFEEE8",
+"i     c #EEEDE7",
+"j     c #EBE9E2",
+"k     c #F6F5F2",
+"l     c #F4F3EF",
+"m     c #B5B4B1",
+"n     c #9B9A97",
+"o     c #646361",
+"p     c #92918E",
+"q     c #EEEDE8",
+"r     c #EDECE6",
+"s     c #B39C82",
+"t     c #E9E8E1",
+"u     c #E8E7DF",
+"v     c #D0D0CD",
+"w     c #F2F2ED",
+"x     c #BFBEBA",
+"y     c #BEBDB9",
+"z     c #7A7A77",
+"A     c #BCA488",
+"B     c #626260",
+"C     c #C5AC8F",
+"D     c #AA947B",
+"E     c #A18D75",
+"F     c #98856E",
+"G     c #8F7D68",
+"H     c #867561",
+"I     c #7D6D5B",
+"J     c #746554",
+"K     c #736453",
+"L     c #7F6F5C",
+"M     c #BEBDB8",
+"N     c #989793",
+"O     c #ECEAE4",
+"P     c #8B7964",
+"Q     c #96836D",
+"R     c #EBEAE4",
+"S     c #EAE9E2",
+"T     c #A28D75",
+"U     c #AD977E",
+"V     c #E7E6DE",
+"W     c #B9A186",
+"X     c #959590",
+"                        ",
+"                        ",
+"             ....       ",
+"        .....+@#$.      ",
+"   .....%$&*=-;>,.      ",
+"  .')!~{]^*/(_:<[}..    ",
+"  .|123456/#_:7890.a.   ",
+"  .bcdefg/#_hi..j.aaa.  ",
+"   .k4lmnopqr.s.tu.aaa. ",
+"   .v*w(;xyz.As........ ",
+"   ../(_:Br.CAsDEFGHIJ. ",
+"  .KL..hMNO.CAsDEFGHI.  ",
+"  .KLPQ..RSt.As......   ",
+"   ..PQTU..uV.s....     ",
+"     ..TUWC.X...   .    ",
+"     ..TUWC..     .a.   ",
+"   ..PQTU..   .. .aaa.  ",
+"  .KLPQ..    .s.  .aaa. ",
+"  .KL..     .As........ ",
+"   ..      .CAsDEFGHIJ. ",
+"           .CAsDEFGHI.  ",
+"            .As......   ",
+"             .s.        ",
+"              ..        "};
diff --git a/src/pixmaps/stock_mail_reply_to_author_quote.xpm b/src/pixmaps/stock_mail_reply_to_author_quote.xpm
new file mode 100644 (file)
index 0000000..3e88fca
--- /dev/null
@@ -0,0 +1,134 @@
+/* XPM */
+static char * stock_mail_reply_to_author_quote_xpm[] = {
+"24 24 107 2",
+"      c None",
+".     c #000000",
+"+     c #7B7B78",
+"@     c #C7C7C3",
+"#     c #F1F0EB",
+"$     c #BFBFBC",
+"%     c #5F5E5E",
+"&     c #E3E3DF",
+"*     c #F3F3EF",
+"=     c #F2F2EE",
+"-     c #F1F1EC",
+";     c #F0EFEB",
+">     c #D2D2CD",
+",     c #969592",
+"'     c #616060",
+")     c #B5B5B4",
+"!     c #F8F8F6",
+"~     c #F7F7F5",
+"{     c #F6F6F3",
+"]     c #F5F5F2",
+"^     c #F4F4F0",
+"/     c #F2F1ED",
+"(     c #F1F0EC",
+"_     c #F0EFEA",
+":     c #EFEEE9",
+"<     c #4F4F4D",
+"[     c #BDBCB8",
+"}     c #A7A6A3",
+"|     c #C6C6C4",
+"1     c #7C7C7B",
+"2     c #525251",
+"3     c #DBDBD9",
+"4     c #F5F4F1",
+"5     c #F4F3F0",
+"6     c #F3F2EE",
+"7     c #999894",
+"8     c #62625F",
+"9     c #BCBCB6",
+"0     c #EBE9E3",
+"a     c #838381",
+"b     c #D7D6D4",
+"c     c #A8A8A6",
+"d     c #515150",
+"e     c #7E7D7C",
+"f     c #DAD9D5",
+"g     c #EFEEE8",
+"h     c #EEEDE7",
+"i     c #4F4E4C",
+"j     c #BCBBB6",
+"k     c #EBE9E2",
+"l     c #EAE8E1",
+"m     c #EEEDE8",
+"n     c #EDECE6",
+"o     c #4E4E4C",
+"p     c #797976",
+"q     c #797874",
+"r     c #E9E8E1",
+"s     c #E8E7DF",
+"t     c #B4B3AF",
+"u     c #DED5BB",
+"v     c #AF9F7E",
+"w     c #7A7A77",
+"x     c #979691",
+"y     c #EAE9E2",
+"z     c #959590",
+"A     c #787773",
+"B     c #B8B7B0",
+"C     c #E6E4DC",
+"D     c #ECEBE4",
+"E     c #EBEAE3",
+"F     c #E9E7E0",
+"G     c #E8E6DF",
+"H     c #E7E5DD",
+"I     c #777671",
+"J     c #93918C",
+"K     c #FFFFD1",
+"L     c #FFFFDA",
+"M     c #E8E6DE",
+"N     c #E6E4DB",
+"O     c #E4E3DA",
+"P     c #75746F",
+"Q     c #91908A",
+"R     c #FFFFE2",
+"S     c #FFFFEB",
+"T     c #E7E6DE",
+"U     c #E6E5DC",
+"V     c #E5E4DB",
+"W     c #E4E2DA",
+"X     c #CCCBC4",
+"Y     c #A3A29D",
+"Z     c #FFFFF3",
+"`     c #FFFFFC",
+" .    c #CDCCC6",
+"..    c #959490",
+"+.    c #FFFFFF",
+"@.    c #CECDC7",
+"#.    c #E0D8B0",
+"$.    c #B39C82",
+"%.    c #BCA488",
+"&.    c #C5AC8F",
+"*.    c #AA947B",
+"=.    c #A18D75",
+"-.    c #98856E",
+";.    c #8F7D68",
+">.    c #867561",
+",.    c #7D6D5B",
+"'.    c #746554",
+"                                                ",
+"                            . . . .             ",
+"                  . . . . . + @ # $ .           ",
+"        . . . . . % $ & * = - ; > , .           ",
+"      . ' ) ! ~ { ] ^ * / ( _ : < [ } .         ",
+"      . | 1 2 3 4 5 6 / # _ : 7 8 9 0 .         ",
+"      . a b c d e f / # _ g h i j k l .         ",
+". . . . . . . . . . . . m n o p q r s t .       ",
+". u u u u u u u u u v . w o x y z A B C .       ",
+". u v v v v v v v v v . D E l F G H I J .       ",
+". u K L v v v v . v v . 0 l F M H N O P Q .     ",
+". u K L R S v v . v v . r s T U V W X Y . .     ",
+". u v v R S Z ` v v v . s T C  .... . .         ",
+". u v v v v Z ` +.+.v . @.z . . .       .       ",
+". u v v v v Z ` +.+.v . . .           . #..     ",
+". u v v R S Z ` v . . .       . .   . #.#.#..   ",
+". u K L R S v v v v .       . $..     . #.#.#.. ",
+". u K L v v v . v v .     . %.$.. . . . . . . . ",
+". u v v v v v v . . .   . &.%.$.*.=.-.;.>.,.'.. ",
+". u v v v v v v v v .   . &.%.$.*.=.-.;.>.,..   ",
+". v v v v v v v v v .     . %.$.. . . . . .     ",
+". . . . . . . . . .         . $..               ",
+"                              . .               ",
+"                                                "};
index 3e6ba646afc6dc1c6167fc5c94c01b745c37f1ef..93678b5fbceb776ceffb22fefc5609425841095a 100644 (file)
@@ -116,9 +116,10 @@ static struct Compose {
        GtkWidget *checkbtn_wrapatsend;
 
        GtkWidget *checkbtn_quote;
        GtkWidget *checkbtn_wrapatsend;
 
        GtkWidget *checkbtn_quote;
-       GtkWidget * checkbtn_forward_as_attachment;
-       GtkWidget * checkbtn_smart_wrapping;
-       GtkWidget * checkbtn_block_cursor;
+       GtkWidget *checkbtn_forward_as_attachment;
+       GtkWidget *checkbtn_smart_wrapping;
+       GtkWidget *checkbtn_block_cursor;
+       GtkWidget *checkbtn_reply_with_quote;
 
        /* spelling */
 #if USE_PSPELL
 
        /* spelling */
 #if USE_PSPELL
@@ -350,7 +351,7 @@ static PrefParam param[] = {
         prefs_dictionary_set_data_from_optmenu, prefs_dictionary_set_optmenu },
 #endif
        {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
         prefs_dictionary_set_data_from_optmenu, prefs_dictionary_set_optmenu },
 #endif
        {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
-        NULL, NULL, NULL},
+        &compose.checkbtn_reply_with_quote, prefs_set_data_from_toggle, prefs_set_toggle},
 
        /* Account autoselection */
        {"reply_account_autoselect", "TRUE",
 
        /* Account autoselection */
        {"reply_account_autoselect", "TRUE",
@@ -1604,6 +1605,8 @@ static void prefs_quote_create(void)
 
        GtkWidget *btn_quotedesc;
 
 
        GtkWidget *btn_quotedesc;
 
+       GtkWidget *checkbtn_reply_with_quote;
+
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        gtk_widget_show (vbox1);
        gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        gtk_widget_show (vbox1);
        gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
@@ -1611,6 +1614,8 @@ static void prefs_quote_create(void)
 
        /* reply */
 
 
        /* reply */
 
+       PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
+
        PACK_FRAME (vbox1, frame_quote, _("Reply format"));
 
        vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
        PACK_FRAME (vbox1, frame_quote, _("Reply format"));
 
        vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
@@ -1700,6 +1705,7 @@ static void prefs_quote_create(void)
        gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
                           GTK_SIGNAL_FUNC(prefs_quote_description), NULL);
 
        gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
                           GTK_SIGNAL_FUNC(prefs_quote_description), NULL);
 
+       compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
        quote.entry_quotemark    = entry_quotemark;
        quote.text_quotefmt      = text_quotefmt;
        quote.entry_fw_quotemark = entry_fw_quotemark;
        quote.entry_quotemark    = entry_quotemark;
        quote.text_quotefmt      = text_quotefmt;
        quote.entry_fw_quotemark = entry_fw_quotemark;