From: Colin Leroy Date: Tue, 31 May 2005 01:08:04 +0000 (+0000) Subject: 2005-05-31 [colin] 1.9.11cvs24 X-Git-Tag: rel_1_9_12~85 X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=c23a989fb34f01366b730c45509cb309083fdfe6 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 --- diff --git a/ChangeLog-gtk2.claws b/ChangeLog-gtk2.claws index eef45c726..ca543c0ba 100644 --- a/ChangeLog-gtk2.claws +++ b/ChangeLog-gtk2.claws @@ -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 diff --git a/PATCHSETS b/PATCHSETS index b1b693c15..bd3b4949e 100644 --- a/PATCHSETS +++ b/PATCHSETS @@ -512,3 +512,4 @@ ( 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 diff --git a/configure.ac b/configure.ac index 6d22df0cc..d1d909375 100644 --- a/configure.ac +++ b/configure.ac @@ -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= diff --git a/src/Makefile.am b/src/Makefile.am index 0b70532e1..96a84000e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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 \ diff --git a/src/gtk/prefswindow.c b/src/gtk/prefswindow.c index 345f23683..69c9adbbf 100644 --- a/src/gtk/prefswindow.c +++ b/src/gtk/prefswindow.c @@ -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); diff --git a/src/main.c b/src/main.c index c4689864d..b8ad85867 100644 --- a/src/main.c +++ b/src/main.c @@ -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(); diff --git a/src/prefs_common.c b/src/prefs_common.c index 21bc28fbe..1c6cf07d4 100644 --- a/src/prefs_common.c +++ b/src/prefs_common.c @@ -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, - "e.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, "e.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, - "e.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, "e.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, - "e.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; +} diff --git a/src/prefs_common.h b/src/prefs_common.h index a6631f461..1ebd7cd73 100644 --- a/src/prefs_common.h +++ b/src/prefs_common.h @@ -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 index 000000000..007547f2c --- /dev/null +++ b/src/prefs_quote.c @@ -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 +#include + +#include +#include +#include +#include + +#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 index 000000000..3de1359c8 --- /dev/null +++ b/src/prefs_quote.h @@ -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 */