2005-05-31 [colin] 1.9.11cvs24
authorColin Leroy <colin@colino.net>
Tue, 31 May 2005 01:08:04 +0000 (01:08 +0000)
committerColin Leroy <colin@colino.net>
Tue, 31 May 2005 01:08:04 +0000 (01:08 +0000)
* src/Makefile.am
* src/main.c
* src/prefs_quote.c ** ADDED **
* src/prefs_quote.h ** ADDED **
Move Common/Quote to Compose/Quoting
* src/prefs_common.c
* src/prefs_common.h
Remove old quote stuff, add
convenience functions for GtkTextView prefs
* src/gtk/prefswindow.c
Set default height higher

ChangeLog-gtk2.claws
PATCHSETS
configure.ac
src/Makefile.am
src/gtk/prefswindow.c
src/main.c
src/prefs_common.c
src/prefs_common.h
src/prefs_quote.c [new file with mode: 0644]
src/prefs_quote.h [new file with mode: 0644]

index eef45c7260b8abfe4f836524e561419811f95c8c..ca543c0bab2c50c27508eed6aa6a7ce3be1d846a 100644 (file)
@@ -1,3 +1,17 @@
+2005-05-31 [colin]     1.9.11cvs24
+
+       * src/Makefile.am
+       * src/main.c
+       * src/prefs_quote.c ** ADDED **
+       * src/prefs_quote.h ** ADDED **
+               Move Common/Quote to Compose/Quoting
+       * src/prefs_common.c
+       * src/prefs_common.h
+               Remove old quote stuff, add
+               convenience functions for GtkTextView prefs
+       * src/gtk/prefswindow.c
+               Set default height higher
+
 2005-05-30 [colin]     1.9.11cvs23
 
        * src/Makefile.am
index b1b693c153cb43f7d5b00a7ca1c712da822ad028..bd3b4949e8699e310a1bc1f8cbd9ef9e7ccf655e 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.382.2.122 -r 1.382.2.123 src/compose.c; cvs diff -u -r 1.52.2.10 -r 1.52.2.11 src/prefs_folder_item.c; cvs diff -u -r 1.49.2.41 -r 1.49.2.42 src/procmime.c; ) > 1.9.11cvs21.patchset
 ( cvs diff -u -r 1.36.2.30 -r 1.36.2.31 src/common/utils.c; cvs diff -u -r 1.100.2.20 -r 1.100.2.21 AUTHORS; ) > 1.9.11cvs22.patchset
 ( cvs diff -u -r 1.155.2.22 -r 1.155.2.23 src/Makefile.am; cvs diff -u -r 1.115.2.34 -r 1.115.2.35 src/main.c; cvs diff -u -r 1.204.2.39 -r 1.204.2.40 src/prefs_common.c; cvs diff -u -r 0 -r 1 src/prefs_compose_writing.c; cvs diff -u -r 0 -r 1 src/prefs_compose_writing.h; ) > 1.9.11cvs23.patchset
+( cvs diff -u -r 1.155.2.23 -r 1.155.2.24 src/Makefile.am; cvs diff -u -r 1.115.2.35 -r 1.115.2.36 src/main.c; cvs diff -u -r 1.204.2.40 -r 1.204.2.41 src/prefs_common.c; cvs diff -u -r 1.103.2.17 -r 1.103.2.18 src/prefs_common.h; cvs diff -u -r 0 -r 1 src/prefs_quote.c; cvs diff -u -r 0 -r 1 src/prefs_quote.h; cvs diff -u -r 1.12.2.17 -r 1.12.2.18 src/gtk/prefswindow.c; ) > 1.9.11cvs24.patchset
index 6d22df0cc113f842f03662c0cf22035374445b98..d1d90937574eaec2faa2337440c1704b9b64480b 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=9
 MICRO_VERSION=11
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=23
+EXTRA_VERSION=24
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index 0b70532e1b70e5917b8fa14793a47ce28a03b5b4..96a84000e37f2163bb61cf584da94f24991de1bb 100644 (file)
@@ -97,6 +97,7 @@ sylpheed_SOURCES = \
        prefs_image_viewer.c \
        prefs_matcher.c \
        prefs_msg_colors.c \
+       prefs_quote.c \
        prefs_spelling.c \
        prefs_summary_column.c \
        prefs_template.c \
@@ -228,6 +229,7 @@ sylpheedinclude_HEADERS = \
        prefs_image_viewer.h \
        prefs_matcher.h \
        prefs_msg_colors.h \
+       prefs_quote.h \
        prefs_spelling.h \
        prefs_summary_column.h \
        prefs_template.h \
index 345f2368337bbc9209326375ff0666efa9025399..69c9adbbf126f4febba12f36da695816140b9e03 100644 (file)
@@ -344,7 +344,7 @@ void prefswindow_open_full(const gchar *title, GSList *prefs_pages, gpointer dat
 
        prefswindow->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(prefswindow->window), title);
-       gtk_window_set_default_size(GTK_WINDOW(prefswindow->window), 600, 340);
+       gtk_window_set_default_size(GTK_WINDOW(prefswindow->window), 600, 440);
        gtk_window_set_position (GTK_WINDOW(prefswindow->window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal (GTK_WINDOW (prefswindow->window), TRUE);
        gtk_window_set_resizable (GTK_WINDOW(prefswindow->window), TRUE);
index c4689864d1e91be2f35130c0142abb56b1e8c7fd..b8ad858672d4447c48e3e8792cef7b079ea4f88c 100644 (file)
@@ -57,6 +57,7 @@
 #include "prefs_fonts.h"
 #include "prefs_image_viewer.h"
 #include "prefs_msg_colors.h"
+#include "prefs_quote.h"
 #include "prefs_spelling.h"
 #include "prefs_themes.h"
 #include "prefs_wrapping.h"
@@ -317,6 +318,7 @@ int main(int argc, char *argv[])
        prefs_msg_colors_init();
        image_viewer_init();
        prefs_image_viewer_init();
+       prefs_quote_init();
 #ifdef USE_ASPELL
        gtkaspell_checkers_init();
        prefs_spelling_init();
@@ -513,6 +515,7 @@ static void exit_sylpheed(MainWindow *mainwin)
        prefs_msg_colors_done();
        prefs_image_viewer_done();
        image_viewer_done();
+       prefs_quote_done();
 #ifdef USE_ASPELL       
        prefs_spelling_done();
        gtkaspell_checkers_quit();
index 21bc28fbe3f4fb5e8d0266a8e07f48d7229e9482..1c6cf07d45551c22e2da06485d889f0b44f08c83 100644 (file)
@@ -55,7 +55,6 @@
 #include "filesel.h"
 #include "folderview.h"
 #include "stock_pixmap.h"
-#include "quote_fmt.h"
 #include "prefswindow.h"
 
 enum {
@@ -98,37 +97,6 @@ static struct Send {
        GtkWidget *optmenu_encoding_method;
 } p_send;
 
-static struct Compose {
-       GtkWidget *entry_fw_quotemark;
-       GtkWidget *text_fw_quotefmt;
-
-       GtkWidget *checkbtn_autoextedit;
-       GtkWidget *spinbtn_undolevel;
-       GtkObject *spinbtn_undolevel_adj;
-
-       GtkWidget *checkbtn_reply_account_autosel;
-       GtkWidget *checkbtn_forward_account_autosel;
-       GtkWidget *checkbtn_reedit_account_autosel;
-       GtkWidget *checkbtn_quote;
-       GtkWidget *checkbtn_default_reply_list;
-       GtkWidget *checkbtn_forward_as_attachment;
-       GtkWidget *checkbtn_redirect_keep_from;
-       GtkWidget *checkbtn_reply_with_quote;
-       
-       GtkWidget *checkbtn_autosave;
-       GtkWidget *entry_autosave_length;
-} compose;
-
-static struct Quote {
-       GtkWidget *entry_quotemark;
-       GtkWidget *text_quotefmt;
-
-       GtkWidget *entry_fw_quotemark;
-       GtkWidget *text_fw_quotefmt;
-       
-       GtkWidget *entry_quote_chars;
-} quote;
-
 static struct Display {
        GtkWidget *chkbtn_folder_unread;
        GtkWidget *entry_ng_abbrev_len;
@@ -338,22 +306,19 @@ static PrefParam param[] = {
 
        /* Quote */
        {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
-        &quote.entry_quotemark, prefs_set_data_from_entry, prefs_set_entry},
+        NULL, NULL, NULL},
        {"reply_quote_format", "On %d\\n%f wrote:\\n\\n%q",
-        &prefs_common.quotefmt, P_STRING, &quote.text_quotefmt,
-        prefs_set_data_from_text, prefs_set_text},
+        &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
 
        {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
-        &quote.entry_fw_quotemark,
-        prefs_set_data_from_entry, prefs_set_entry},
+        NULL, NULL, NULL},
        {"forward_quote_format",
         "\\n\\nBegin forwarded message:\\n\\n"
         "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
         "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M",
-        &prefs_common.fw_quotefmt, P_STRING, &quote.text_fw_quotefmt,
-        prefs_set_data_from_text, prefs_set_text},
+        &prefs_common.fw_quotefmt, P_STRING, NULL, NULL, NULL},
        {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
-        &quote.entry_quote_chars, prefs_set_data_from_entry, prefs_set_entry},
+        NULL, NULL, NULL},
 
        /* Display */
        /* Obsolete fonts. For coexisting with Gtk+-1.2 version */
@@ -749,7 +714,6 @@ static PrefParam param[] = {
 static void prefs_common_create                (void);
 static void prefs_receive_create       (void);
 static void prefs_send_create          (void);
-static void prefs_quote_create         (void);
 static void prefs_display_create       (void);
 static void prefs_message_create       (void);
 static void prefs_interface_create     (void);
@@ -953,8 +917,6 @@ static void prefs_common_create(void)
        SET_NOTEBOOK_LABEL(notebook, _("Receive"),   page++);
        prefs_send_create();
        SET_NOTEBOOK_LABEL(notebook, _("Send"),      page++);
-       prefs_quote_create();
-       SET_NOTEBOOK_LABEL(notebook, _("Quote"),     page++);
        prefs_display_create();
        SET_NOTEBOOK_LABEL(notebook, _("Display"),   page++);
        prefs_message_create();
@@ -1341,168 +1303,6 @@ static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpoi
        gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
 }
 
-static void prefs_quote_create(void)
-{
-       GtkWidget *vbox1;
-       GtkWidget *frame_quote;
-       GtkWidget *vbox_quote;
-       GtkWidget *hbox1;
-       GtkWidget *hbox2;
-       GtkWidget *label_quotemark;
-       GtkWidget *entry_quotemark;
-       GtkWidget *scrolledwin_quotefmt;
-       GtkWidget *text_quotefmt;
-
-       GtkWidget *entry_fw_quotemark;
-       GtkWidget *text_fw_quotefmt;
-
-       GtkWidget *entry_quote_chars;
-       GtkWidget *label_quote_chars;
-       
-       GtkWidget *btn_quotedesc;
-
-       GtkWidget *checkbtn_reply_with_quote;
-
-       vbox1 = gtk_vbox_new (FALSE, VSPACING);
-       gtk_widget_show (vbox1);
-       gtk_container_add (GTK_CONTAINER (notebook), vbox1);
-       gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
-
-       /* 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);
-       gtk_widget_show (vbox_quote);
-       gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
-       gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
-
-       hbox1 = gtk_hbox_new (FALSE, 32);
-       gtk_widget_show (hbox1);
-       gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
-
-       hbox2 = gtk_hbox_new (FALSE, 8);
-       gtk_widget_show (hbox2);
-       gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
-
-       label_quotemark = gtk_label_new (_("Quotation mark"));
-       gtk_widget_show (label_quotemark);
-       gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
-
-       entry_quotemark = gtk_entry_new ();
-       gtk_widget_show (entry_quotemark);
-       gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
-       gtk_widget_set_size_request (entry_quotemark, 64, -1);
-
-       scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
-       gtk_widget_show (scrolledwin_quotefmt);
-       gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt,
-                           TRUE, TRUE, 0);
-       gtk_scrolled_window_set_policy
-               (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
-                GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-       gtk_scrolled_window_set_shadow_type
-               (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt), GTK_SHADOW_IN);
-
-       text_quotefmt = gtk_text_view_new ();
-       gtk_widget_show (text_quotefmt);
-       gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
-       gtk_text_view_set_editable (GTK_TEXT_VIEW (text_quotefmt), TRUE);
-       gtk_widget_set_size_request(text_quotefmt, -1, 60);
-
-       /* forward */
-
-       PACK_FRAME (vbox1, frame_quote, _("Forward format"));
-
-       vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
-       gtk_widget_show (vbox_quote);
-       gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
-       gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
-
-       hbox1 = gtk_hbox_new (FALSE, 32);
-       gtk_widget_show (hbox1);
-       gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
-
-       hbox2 = gtk_hbox_new (FALSE, 8);
-       gtk_widget_show (hbox2);
-       gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
-
-       label_quotemark = gtk_label_new (_("Quotation mark"));
-       gtk_widget_show (label_quotemark);
-       gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
-
-       entry_fw_quotemark = gtk_entry_new ();
-       gtk_widget_show (entry_fw_quotemark);
-       gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
-                           FALSE, FALSE, 0);
-       gtk_widget_set_size_request (entry_fw_quotemark, 64, -1);
-
-       scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
-       gtk_widget_show (scrolledwin_quotefmt);
-       gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt,
-                           TRUE, TRUE, 0);
-       gtk_scrolled_window_set_policy
-               (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
-                GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-       gtk_scrolled_window_set_shadow_type
-               (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt), GTK_SHADOW_IN);
-
-       text_fw_quotefmt = gtk_text_view_new ();
-       gtk_widget_show (text_fw_quotefmt);
-       gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
-                         text_fw_quotefmt);
-       gtk_text_view_set_editable (GTK_TEXT_VIEW (text_fw_quotefmt), TRUE);
-       gtk_widget_set_size_request (text_fw_quotefmt, -1, 60);
-
-       hbox1 = gtk_hbox_new (FALSE, 32);
-       gtk_widget_show (hbox1);
-       gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
-
-       btn_quotedesc =
-               gtk_button_new_with_label (_(" Description of symbols "));
-       gtk_widget_show (btn_quotedesc);
-       gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
-       g_signal_connect(G_OBJECT(btn_quotedesc), "clicked",
-                        G_CALLBACK(quote_fmt_quote_description), NULL);
-
-       /* quote chars */
-
-       PACK_FRAME (vbox1, frame_quote, _("Quotation characters"));
-
-       vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
-       gtk_widget_show (vbox_quote);
-       gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
-       gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
-
-       hbox1 = gtk_hbox_new (FALSE, 32);
-       gtk_widget_show (hbox1);
-       gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
-
-       hbox2 = gtk_hbox_new (FALSE, 8);
-       gtk_widget_show (hbox2);
-       gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
-
-       label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
-       gtk_widget_show (label_quote_chars);
-       gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
-
-       entry_quote_chars = gtk_entry_new ();
-       gtk_widget_show (entry_quote_chars);
-       gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
-                           FALSE, FALSE, 0);
-       gtk_widget_set_size_request (entry_quote_chars, 64, -1);
-
-
-       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.text_fw_quotefmt   = text_fw_quotefmt;
-       quote.entry_quote_chars  = entry_quote_chars;
-}
-
 static void prefs_display_create(void)
 {
        GtkWidget *vbox1;
@@ -2951,48 +2751,57 @@ static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
        gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
 }
 
-/*
-static void prefs_common_cancel(void)
-{
-       gtk_widget_hide(dialog.window);
-       inc_unlock();
-}
-*/
-
-/* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
+void pref_set_textview_from_pref(GtkTextView *textview, gchar *txt)
 {
-       GtkWidget *menu;
-       GtkWidget *menuitem;
+       GtkTextBuffer *buffer = gtk_text_view_get_buffer(textview);
+       gchar *o_out, *out = malloc(txt?(strlen(txt)+1):1);
+       gchar *t = txt;
+       memset(out, 0, strlen(txt)+1);
+       o_out = out;
+       while (*t != '\0') {
+               if (*t == '\\' && *(t+1) == 'n') {
+                       *out++ = '\n';
+                       t++;
+               } else if (*t == '\\') {
+                       t++;
+               } else {
+                       *out++ = *t;
+               }
+               t++;
+       }
+       *out='\0';
 
-       menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
-       menuitem = gtk_menu_get_active(GTK_MENU(menu));
-       *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
-               (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
-}  */
+       gtk_text_buffer_set_text(buffer, o_out?o_out:"", -1);
+       g_free(o_out);
+}
 
-/* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
+gchar *pref_get_pref_from_textview(GtkTextView *textview) 
 {
-       RecvDialogShow dialog_show;
-       GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
-       GtkWidget *menu;
-       GtkWidget *menuitem;
-
-       dialog_show = *((RecvDialogShow *)pparam->data);
-
-       switch (dialog_show) {
-       case RECVDIALOG_ALWAYS:
-               gtk_option_menu_set_history(optmenu, 0);
-               break;
-       case RECVDIALOG_WINDOW_ACTIVE:
-               gtk_option_menu_set_history(optmenu, 1);
-               break;
-       case RECVDIALOG_NEVER:
-               gtk_option_menu_set_history(optmenu, 2);
-               break;
-       default:
+       GtkTextBuffer *buffer;
+       GtkTextIter start, end;
+       gchar *o_out, *out, *tmp, *t;
+       
+       buffer = gtk_text_view_get_buffer(textview);
+       gtk_text_buffer_get_start_iter(buffer, &start);
+       gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
+       tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
+       t = tmp;
+       o_out = out = malloc(2*strlen(tmp)+1);
+       
+       while (*t != '\0') {
+               if (*t == '\n') {
+                       *out++ = '\\';
+                       *out++ = 'n';
+               } else if (*t == '\\') {
+                       *out++ = '\\';
+                       *out++ = '\\';
+               } else {
+                       *out++ = *t;
+               }
+               t++;
        }
+       *out = '\0';
+       g_free(tmp);
 
-       menu = gtk_option_menu_get_menu(optmenu);
-       menuitem = gtk_menu_get_active(GTK_MENU(menu));
-       gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
-}     */
+       return o_out;
+}
index a6631f461d3dfa48fe5e85b80eba8dc7242dbb77..1ebd7cd730d8a93a82d3d37eeec3daf25a6b7317 100644 (file)
@@ -323,5 +323,7 @@ void prefs_common_read_config       (void);
 void prefs_common_write_config (void);
 void prefs_common_open         (void);
 PrefsCommon *prefs_common_get  (void);
+void pref_set_textview_from_pref(GtkTextView *textview, gchar *txt);
+gchar *pref_get_pref_from_textview(GtkTextView *textview);
 
 #endif /* __PREFS_COMMON_H__ */
diff --git a/src/prefs_quote.c b/src/prefs_quote.c
new file mode 100644 (file)
index 0000000..007547f
--- /dev/null
@@ -0,0 +1,301 @@
+/*
+ * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
+ * Copyright (C) 2004 Hiroyuki Yamamoto & The Sylpheed-Claws 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include "defs.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+
+#include "prefs_common.h"
+#include "prefs_gtk.h"
+
+#include "gtk/gtkutils.h"
+#include "gtk/prefswindow.h"
+
+#include "manage_window.h"
+#include "quote_fmt.h"
+
+typedef struct _QuotePage
+{
+       PrefsPage page;
+
+       GtkWidget *window;
+
+       GtkWidget *entry_quotemark;
+       GtkWidget *text_quotefmt;
+       GtkWidget *entry_fw_quotemark;
+       GtkWidget *text_fw_quotefmt;
+       GtkWidget *entry_quote_chars;
+       GtkWidget *label_quote_chars;
+       GtkWidget *btn_quotedesc;
+       GtkWidget *checkbtn_reply_with_quote;
+} QuotePage;
+
+void prefs_quote_create_widget(PrefsPage *_page, GtkWindow *window, 
+                                 gpointer data)
+{
+       QuotePage *prefs_quote = (QuotePage *) _page;
+       
+       GtkWidget *vbox1;
+       GtkWidget *frame_quote;
+       GtkWidget *vbox_quote;
+       GtkWidget *hbox1;
+       GtkWidget *hbox2;
+       GtkWidget *label_quotemark;
+       GtkWidget *entry_quotemark;
+       GtkWidget *scrolledwin_quotefmt;
+       GtkWidget *text_quotefmt;
+
+       GtkWidget *entry_fw_quotemark;
+       GtkWidget *text_fw_quotefmt;
+
+       GtkWidget *entry_quote_chars;
+       GtkWidget *label_quote_chars;
+       
+       GtkWidget *btn_quotedesc;
+
+       GtkWidget *checkbtn_reply_with_quote;
+
+       GtkTextBuffer *buffer;
+
+       vbox1 = gtk_vbox_new (FALSE, VSPACING);
+       gtk_widget_show (vbox1);
+       gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
+
+       /* 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);
+       gtk_widget_show (vbox_quote);
+       gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
+       gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
+
+       hbox1 = gtk_hbox_new (FALSE, 32);
+       gtk_widget_show (hbox1);
+       gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
+
+       hbox2 = gtk_hbox_new (FALSE, 8);
+       gtk_widget_show (hbox2);
+       gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
+
+       label_quotemark = gtk_label_new (_("Quotation mark"));
+       gtk_widget_show (label_quotemark);
+       gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
+
+       entry_quotemark = gtk_entry_new ();
+       gtk_widget_show (entry_quotemark);
+       gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
+       gtk_widget_set_size_request (entry_quotemark, 64, -1);
+
+       scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
+       gtk_widget_show (scrolledwin_quotefmt);
+       gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt,
+                           TRUE, TRUE, 0);
+       gtk_scrolled_window_set_policy
+               (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
+                GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+       gtk_scrolled_window_set_shadow_type
+               (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt), GTK_SHADOW_IN);
+
+       text_quotefmt = gtk_text_view_new ();
+       gtk_widget_show (text_quotefmt);
+       gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
+       gtk_text_view_set_editable (GTK_TEXT_VIEW (text_quotefmt), TRUE);
+       gtk_widget_set_size_request(text_quotefmt, -1, 60);
+
+       /* forward */
+
+       PACK_FRAME (vbox1, frame_quote, _("Forward format"));
+
+       vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
+       gtk_widget_show (vbox_quote);
+       gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
+       gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
+
+       hbox1 = gtk_hbox_new (FALSE, 32);
+       gtk_widget_show (hbox1);
+       gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
+
+       hbox2 = gtk_hbox_new (FALSE, 8);
+       gtk_widget_show (hbox2);
+       gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
+
+       label_quotemark = gtk_label_new (_("Quotation mark"));
+       gtk_widget_show (label_quotemark);
+       gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
+
+       entry_fw_quotemark = gtk_entry_new ();
+       gtk_widget_show (entry_fw_quotemark);
+       gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
+                           FALSE, FALSE, 0);
+       gtk_widget_set_size_request (entry_fw_quotemark, 64, -1);
+
+       scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
+       gtk_widget_show (scrolledwin_quotefmt);
+       gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt,
+                           TRUE, TRUE, 0);
+       gtk_scrolled_window_set_policy
+               (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
+                GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+       gtk_scrolled_window_set_shadow_type
+               (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt), GTK_SHADOW_IN);
+
+       text_fw_quotefmt = gtk_text_view_new ();
+       gtk_widget_show (text_fw_quotefmt);
+       gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
+                         text_fw_quotefmt);
+       gtk_text_view_set_editable (GTK_TEXT_VIEW (text_fw_quotefmt), TRUE);
+       gtk_widget_set_size_request (text_fw_quotefmt, -1, 60);
+
+       hbox1 = gtk_hbox_new (FALSE, 32);
+       gtk_widget_show (hbox1);
+       gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
+
+       btn_quotedesc =
+               gtk_button_new_with_label (_(" Description of symbols "));
+       gtk_widget_show (btn_quotedesc);
+       gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
+       g_signal_connect(G_OBJECT(btn_quotedesc), "clicked",
+                        G_CALLBACK(quote_fmt_quote_description), NULL);
+
+       /* quote chars */
+
+       PACK_FRAME (vbox1, frame_quote, _("Quotation characters"));
+
+       vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
+       gtk_widget_show (vbox_quote);
+       gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
+       gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
+
+       hbox1 = gtk_hbox_new (FALSE, 32);
+       gtk_widget_show (hbox1);
+       gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
+
+       hbox2 = gtk_hbox_new (FALSE, 8);
+       gtk_widget_show (hbox2);
+       gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
+
+       label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
+       gtk_widget_show (label_quote_chars);
+       gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
+
+       entry_quote_chars = gtk_entry_new ();
+       gtk_widget_show (entry_quote_chars);
+       gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
+                           FALSE, FALSE, 0);
+       gtk_widget_set_size_request (entry_quote_chars, 64, -1);
+
+       pref_set_textview_from_pref(GTK_TEXT_VIEW(text_quotefmt), prefs_common.quotefmt);
+       pref_set_textview_from_pref(GTK_TEXT_VIEW(text_fw_quotefmt), prefs_common.fw_quotefmt);
+
+       gtk_entry_set_text(GTK_ENTRY(entry_quotemark), 
+                       prefs_common.quotemark?prefs_common.quotemark:"");
+       gtk_entry_set_text(GTK_ENTRY(entry_fw_quotemark), 
+                       prefs_common.fw_quotemark?prefs_common.fw_quotemark:"");
+       gtk_entry_set_text(GTK_ENTRY(entry_quote_chars), 
+                       prefs_common.quote_chars?prefs_common.quote_chars:"");
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_reply_with_quote),
+                       prefs_common.reply_with_quote);
+       
+       prefs_quote->window             = GTK_WIDGET(window);
+       prefs_quote->text_quotefmt      = text_quotefmt;
+       prefs_quote->text_fw_quotefmt   = text_fw_quotefmt;
+       prefs_quote->entry_quotemark    = entry_quotemark;
+       prefs_quote->entry_fw_quotemark = entry_fw_quotemark;
+       prefs_quote->entry_quote_chars  = entry_quote_chars;
+       prefs_quote->checkbtn_reply_with_quote
+                                       = checkbtn_reply_with_quote;
+       prefs_quote->page.widget = vbox1;
+}
+
+void prefs_quote_save(PrefsPage *_page)
+{
+       QuotePage *page = (QuotePage *) _page;
+       GtkTextBuffer *buffer;
+       GtkTextIter start, end;
+       
+       g_free(prefs_common.quotefmt); 
+       prefs_common.quotefmt = NULL;
+       g_free(prefs_common.fw_quotefmt); 
+       prefs_common.fw_quotefmt = NULL;
+       g_free(prefs_common.quotemark); 
+       prefs_common.quotemark = NULL;
+       g_free(prefs_common.fw_quotemark); 
+       prefs_common.fw_quotemark = NULL;
+       g_free(prefs_common.quote_chars); 
+       prefs_common.quote_chars = NULL;
+       
+       prefs_common.quotefmt = pref_get_pref_from_textview(
+                       GTK_TEXT_VIEW(page->text_quotefmt));
+
+       prefs_common.fw_quotefmt = pref_get_pref_from_textview(
+                       GTK_TEXT_VIEW(page->text_fw_quotefmt));
+
+       prefs_common.quotemark = gtk_editable_get_chars(
+                       GTK_EDITABLE(page->entry_quotemark), 0, -1);
+       prefs_common.fw_quotemark = gtk_editable_get_chars(
+                       GTK_EDITABLE(page->entry_fw_quotemark), 0, -1);
+       prefs_common.quote_chars = gtk_editable_get_chars(
+                       GTK_EDITABLE(page->entry_quote_chars), 0, -1);
+       prefs_common.reply_with_quote = gtk_toggle_button_get_active(
+                       GTK_TOGGLE_BUTTON(page->checkbtn_reply_with_quote));
+}
+
+static void prefs_quote_destroy_widget(PrefsPage *_page)
+{
+}
+
+QuotePage *prefs_quote;
+
+void prefs_quote_init(void)
+{
+       QuotePage *page;
+       static gchar *path[3];
+
+       path[0] = _("Compose");
+       path[1] = _("Quoting");
+       path[2] = NULL;
+
+       page = g_new0(QuotePage, 1);
+       page->page.path = path;
+       page->page.create_widget = prefs_quote_create_widget;
+       page->page.destroy_widget = prefs_quote_destroy_widget;
+       page->page.save_page = prefs_quote_save;
+       page->page.weight = 60.0;
+       prefs_gtk_register_page((PrefsPage *) page);
+       prefs_quote = page;
+}
+
+void prefs_quote_done(void)
+{
+       prefs_gtk_unregister_page((PrefsPage *) prefs_quote);
+       g_free(prefs_quote);
+}
diff --git a/src/prefs_quote.h b/src/prefs_quote.h
new file mode 100644 (file)
index 0000000..3de1359
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
+ * Copyright (C) 2004 Hiroyuki Yamamoto & the Sylpheed-Claws 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef PREFS_QUOTE_H
+#define PREFS_QUOTE_H
+
+void prefs_quote_init  (void);
+void prefs_quote_done  (void);
+
+#endif /* PREFS_QUOTE_H */