2005-05-31 [colin] 1.9.11cvs28

* src/Makefile.am
	* src/account.c
	* src/action.c
	* src/addr_compl.c
	* src/addressbook.c
	* src/codeconv.c
	* src/compose.c
	* src/export.c
	* src/folder.c
	* src/folderview.c
	* src/image_viewer.c
	* src/main.c
	* src/mainwindow.c
	* src/messageview.c
	* src/mimeview.c
	* src/msgcache.c
	* src/prefs_account.c
	* src/prefs_actions.c
	* src/prefs_common.c
	* src/prefs_compose_writing.c
	* src/prefs_customheader.c
	* src/prefs_ext_prog.c
	* src/prefs_filtering.c
	* src/prefs_filtering_action.c
	* src/prefs_fonts.c
	* src/prefs_image_viewer.c
	* src/prefs_message.c
	* src/prefs_message.h
	* src/prefs_msg_colors.c
	* src/prefs_other.c
	* src/prefs_other.h
	* src/prefs_quote.c
	* src/prefs_receive.c
	* src/prefs_receive.h
	* src/prefs_send.c
	* src/prefs_send.h
	* src/prefs_spelling.c
	* src/prefs_summaries.c
	* src/prefs_summary_column.c
	* src/prefs_template.c
	* src/prefs_themes.c
	* src/prefs_toolbar.c
	* src/prefs_wrapping.c
	* src/procmime.c
	* src/procmsg.c
	* src/send_message.h
	* src/ssl_manager.c
	* src/summary_search.c
	* src/summaryview.c
	* src/textview.c
	* src/wizard.c
	* src/common/smtp.c
	* src/common/smtp.h
	* src/gtk/gtkutils.h
		o Move the rest of Common prefs to new style
		o Lots of -Wall warning fixes
		o fix FIXME in cache memusage calculation
		o Let return receipts be sent from any account
		o Little cache optimisation (read)
		o Fix bug #746 (don't treat commas as separators
		  when inside a quoted string)
This commit is contained in:
Colin Leroy 2005-05-31 19:00:21 +00:00
parent ee984ee04b
commit 96c9a3e76e
57 changed files with 2166 additions and 2159 deletions

View file

@ -1,3 +1,67 @@
2005-05-31 [colin] 1.9.11cvs28
* src/Makefile.am
* src/account.c
* src/action.c
* src/addr_compl.c
* src/addressbook.c
* src/codeconv.c
* src/compose.c
* src/export.c
* src/folder.c
* src/folderview.c
* src/image_viewer.c
* src/main.c
* src/mainwindow.c
* src/messageview.c
* src/mimeview.c
* src/msgcache.c
* src/prefs_account.c
* src/prefs_actions.c
* src/prefs_common.c
* src/prefs_compose_writing.c
* src/prefs_customheader.c
* src/prefs_ext_prog.c
* src/prefs_filtering.c
* src/prefs_filtering_action.c
* src/prefs_fonts.c
* src/prefs_image_viewer.c
* src/prefs_message.c
* src/prefs_message.h
* src/prefs_msg_colors.c
* src/prefs_other.c
* src/prefs_other.h
* src/prefs_quote.c
* src/prefs_receive.c
* src/prefs_receive.h
* src/prefs_send.c
* src/prefs_send.h
* src/prefs_spelling.c
* src/prefs_summaries.c
* src/prefs_summary_column.c
* src/prefs_template.c
* src/prefs_themes.c
* src/prefs_toolbar.c
* src/prefs_wrapping.c
* src/procmime.c
* src/procmsg.c
* src/send_message.h
* src/ssl_manager.c
* src/summary_search.c
* src/summaryview.c
* src/textview.c
* src/wizard.c
* src/common/smtp.c
* src/common/smtp.h
* src/gtk/gtkutils.h
o Move the rest of Common prefs to new style
o Lots of -Wall warning fixes
o fix FIXME in cache memusage calculation
o Let return receipts be sent from any account
o Little cache optimisation (read)
o Fix bug #746 (don't treat commas as separators
when inside a quoted string)
2005-05-31 [paul] 1.9.11cvs27
* src/prefs_common.c

View file

@ -516,3 +516,4 @@
( cvs diff -u -r 1.155.2.24 -r 1.155.2.25 src/Makefile.am; cvs diff -u -r 1.115.2.36 -r 1.115.2.37 src/main.c; cvs diff -u -r 1.204.2.41 -r 1.204.2.42 src/prefs_common.c; diff -u /dev/null src/prefs_summaries.c; diff -u /dev/null src/prefs_summaries.h; ) > 1.9.11cvs25.patchset
( cvs diff -u -r 1.61.2.24 -r 1.61.2.25 src/account.c; cvs diff -u -r 1.27.2.9 -r 1.27.2.10 src/addr_compl.c; cvs diff -u -r 1.382.2.123 -r 1.382.2.124 src/compose.c; cvs diff -u -r 1.26.2.15 -r 1.26.2.16 src/foldersel.c; cvs diff -u -r 1.60.2.14 -r 1.60.2.15 src/prefs_actions.c; cvs diff -u -r 1.204.2.42 -r 1.204.2.43 src/prefs_common.c; cvs diff -u -r 1.103.2.18 -r 1.103.2.19 src/prefs_common.h; cvs diff -u -r 1.16.2.8 -r 1.16.2.9 src/prefs_customheader.c; cvs diff -u -r 1.16.2.8 -r 1.16.2.9 src/prefs_display_header.c; cvs diff -u -r 1.59.2.17 -r 1.59.2.18 src/prefs_filtering.c; cvs diff -u -r 1.1.4.13 -r 1.1.4.14 src/prefs_filtering_action.c; cvs diff -u -r 1.43.2.18 -r 1.43.2.19 src/prefs_matcher.c; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/prefs_summaries.c; cvs diff -u -r 1.10.2.6 -r 1.10.2.7 src/prefs_summary_column.c; cvs diff -u -r 1.12.2.9 -r 1.12.2.10 src/prefs_template.c; cvs diff -u -r 1.30.2.12 -r 1.30.2.13 src/prefs_toolbar.c; cvs diff -u -r 1.3.2.8 -r 1.3.2.9 src/ssl_manager.c; cvs diff -u -r 1.5.2.13 -r 1.5.2.14 src/gtk/pluginwindow.c; cvs diff -u -r 1.12.2.18 -r 1.12.2.19 src/gtk/prefswindow.c; cvs diff -u -r 1.1.4.9 -r 1.1.4.10 src/gtk/progressdialog.c; ) > 1.9.11cvs26.patchset
( cvs diff -u -r 1.204.2.43 -r 1.204.2.44 src/prefs_common.c; ) > 1.9.11cvs27.patchset
( cvs diff -u -r 1.155.2.25 -r 1.155.2.26 src/Makefile.am; cvs diff -u -r 1.61.2.25 -r 1.61.2.26 src/account.c; cvs diff -u -r 1.12.2.22 -r 1.12.2.23 src/action.c; cvs diff -u -r 1.27.2.10 -r 1.27.2.11 src/addr_compl.c; cvs diff -u -r 1.60.2.15 -r 1.60.2.16 src/addressbook.c; cvs diff -u -r 1.65.2.28 -r 1.65.2.29 src/codeconv.c; cvs diff -u -r 1.382.2.124 -r 1.382.2.125 src/compose.c; cvs diff -u -r 1.8.2.7 -r 1.8.2.8 src/export.c; cvs diff -u -r 1.213.2.28 -r 1.213.2.29 src/folder.c; cvs diff -u -r 1.207.2.38 -r 1.207.2.39 src/folderview.c; cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/image_viewer.c; cvs diff -u -r 1.115.2.37 -r 1.115.2.38 src/main.c; cvs diff -u -r 1.274.2.39 -r 1.274.2.40 src/mainwindow.c; cvs diff -u -r 1.94.2.51 -r 1.94.2.52 src/messageview.c; cvs diff -u -r 1.83.2.32 -r 1.83.2.33 src/mimeview.c; cvs diff -u -r 1.16.2.17 -r 1.16.2.18 src/msgcache.c; cvs diff -u -r 1.105.2.23 -r 1.105.2.24 src/prefs_account.c; cvs diff -u -r 1.60.2.15 -r 1.60.2.16 src/prefs_actions.c; cvs diff -u -r 1.204.2.44 -r 1.204.2.45 src/prefs_common.c; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/prefs_compose_writing.c; cvs diff -u -r 1.16.2.9 -r 1.16.2.10 src/prefs_customheader.c; cvs diff -u -r 1.3.2.5 -r 1.3.2.6 src/prefs_ext_prog.c; cvs diff -u -r 1.59.2.18 -r 1.59.2.19 src/prefs_filtering.c; cvs diff -u -r 1.1.4.14 -r 1.1.4.15 src/prefs_filtering_action.c; cvs diff -u -r 1.4.2.9 -r 1.4.2.10 src/prefs_fonts.c; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/prefs_image_viewer.c; diff -u /dev/null src/prefs_message.c; diff -u /dev/null src/prefs_message.h; cvs diff -u -r 1.1.2.8 -r 1.1.2.9 src/prefs_msg_colors.c; diff -u /dev/null src/prefs_other.c; diff -u /dev/null src/prefs_other.h; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/prefs_quote.c; diff -u /dev/null src/prefs_receive.c; diff -u /dev/null src/prefs_receive.h; diff -u /dev/null src/prefs_send.c; diff -u /dev/null src/prefs_send.h; cvs diff -u -r 1.5.2.7 -r 1.5.2.8 src/prefs_spelling.c; cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/prefs_summaries.c; cvs diff -u -r 1.10.2.7 -r 1.10.2.8 src/prefs_summary_column.c; cvs diff -u -r 1.12.2.10 -r 1.12.2.11 src/prefs_template.c; cvs diff -u -r 1.3.2.19 -r 1.3.2.20 src/prefs_themes.c; cvs diff -u -r 1.30.2.13 -r 1.30.2.14 src/prefs_toolbar.c; cvs diff -u -r 1.1.2.4 -r 1.1.2.5 src/prefs_wrapping.c; cvs diff -u -r 1.49.2.42 -r 1.49.2.43 src/procmime.c; cvs diff -u -r 1.150.2.26 -r 1.150.2.27 src/procmsg.c; cvs diff -u -r 1.1 -r 1.2 src/send_message.h; cvs diff -u -r 1.3.2.9 -r 1.3.2.10 src/ssl_manager.c; cvs diff -u -r 1.15.2.15 -r 1.15.2.16 src/summary_search.c; cvs diff -u -r 1.395.2.71 -r 1.395.2.72 src/summaryview.c; cvs diff -u -r 1.96.2.55 -r 1.96.2.56 src/textview.c; cvs diff -u -r 1.1.2.8 -r 1.1.2.9 src/wizard.c; cvs diff -u -r 1.11.2.10 -r 1.11.2.11 src/common/smtp.c; cvs diff -u -r 1.6.2.6 -r 1.6.2.7 src/common/smtp.h; cvs diff -u -r 1.4.2.10 -r 1.4.2.11 src/gtk/gtkutils.h; ) > 1.9.11cvs28.patchset

View file

@ -11,7 +11,7 @@ MINOR_VERSION=9
MICRO_VERSION=11
INTERFACE_AGE=0
BINARY_AGE=0
EXTRA_VERSION=27
EXTRA_VERSION=28
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=

View file

@ -96,8 +96,12 @@ sylpheed_SOURCES = \
prefs_gtk.c \
prefs_image_viewer.c \
prefs_matcher.c \
prefs_message.c \
prefs_msg_colors.c \
prefs_other.c \
prefs_quote.c \
prefs_receive.c \
prefs_send.c \
prefs_spelling.c \
prefs_summaries.c \
prefs_summary_column.c \
@ -229,8 +233,12 @@ sylpheedinclude_HEADERS = \
prefs_gtk.h \
prefs_image_viewer.h \
prefs_matcher.h \
prefs_message.h \
prefs_msg_colors.h \
prefs_other.h \
prefs_quote.h \
prefs_receive.h \
prefs_send.h \
prefs_spelling.h \
prefs_summaries.h \
prefs_summary_column.h \

View file

@ -603,8 +603,6 @@ static void account_edit_create(void)
GtkWidget *hbox;
GtkWidget *scrolledwin;
GtkWidget *list_view;
gchar *titles[N_EDIT_ACCOUNT_COLS];
gint i;
GtkWidget *vbox2;
GtkWidget *add_btn;
@ -925,7 +923,6 @@ static void account_clone(GtkWidget *widget, gpointer data)
static void account_delete(GtkWidget *widget, gpointer data)
{
PrefsAccount *ac_prefs;
gint account_id;
GList *list;
Folder *folder;
@ -1421,7 +1418,6 @@ GtkTreePath *account_list_view_get_selected_account_path(GtkWidget *list_view)
GtkTreeSelection *selector;
GtkTreeModel *model;
GtkTreeIter iter;
GtkTreePath *res;
selector = gtk_tree_view_get_selection(GTK_TREE_VIEW(list_view));

View file

@ -1145,7 +1145,6 @@ static void create_io_dialog(Children *children)
GtkWidget *progress_bar = NULL;
GtkWidget *abort_button;
GtkWidget *close_button;
PangoFontDescription *text_font;
debug_print("Creating action IO dialog\n");

View file

@ -131,9 +131,6 @@ struct _CompletionWindow {
static GtkListStore *addr_compl_create_store (void);
static void addr_compl_list_view_add_address (GtkWidget *list_view,
const gchar *address);
static GtkWidget *addr_compl_list_view_create (CompletionWindow *window);
static void addr_compl_create_list_view_columns (GtkWidget *list_view);
@ -1468,19 +1465,6 @@ static GtkListStore *addr_compl_create_store(void)
G_TYPE_STRING,
-1);
}
static void addr_compl_list_view_add_address(GtkWidget *list_view,
const gchar *address)
{
GtkTreeIter iter;
GtkListStore *store = GTK_LIST_STORE(gtk_tree_view_get_model
(GTK_TREE_VIEW(list_view)));
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
ADDR_COMPL_ADDRESS, address,
-1);
}
static GtkWidget *addr_compl_list_view_create(CompletionWindow *window)
{

View file

@ -3733,7 +3733,7 @@ static void addressbook_perform_search(
gchar *name;
gint queryID;
guint idleID;
AddressObjectType aoType;
AddressObjectType aoType = ADDR_NONE;
/* Setup a query */
if( *searchTerm == '\0' || strlen( searchTerm ) < 1 ) return;

View file

@ -116,9 +116,7 @@ static void conv_anytoutf8(gchar *outbuf, gint outlen, const gchar *inbuf);
static void conv_utf8toeuc(gchar *outbuf, gint outlen, const gchar *inbuf);
static void conv_utf8tojis(gchar *outbuf, gint outlen, const gchar *inbuf);
static void conv_unreadable_eucjp(gchar *str);
static void conv_unreadable_8bit(gchar *str);
static void conv_unreadable_latin(gchar *str);
static void conv_jistodisp(gchar *outbuf, gint outlen, const gchar *inbuf);
static void conv_sjistodisp(gchar *outbuf, gint outlen, const gchar *inbuf);
@ -511,131 +509,6 @@ static void conv_utf8tojis(gchar *outbuf, gint outlen, const gchar *inbuf)
conv_euctojis(outbuf, outlen, eucstr);
}
static gchar valid_eucjp_tbl[][96] = {
/* 0xa2a0 - 0xa2ff */
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0 },
/* 0xa3a0 - 0xa3ff */
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 },
/* 0xa4a0 - 0xa4ff */
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
/* 0xa5a0 - 0xa5ff */
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
/* 0xa6a0 - 0xa6ff */
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
/* 0xa7a0 - 0xa7ff */
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
/* 0xa8a0 - 0xa8ff */
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
static gboolean isprintableeuckanji(guchar c1, guchar c2)
{
if (c1 <= 0xa0 || c1 >= 0xf5)
return FALSE;
if (c2 <= 0xa0 || c2 == 0xff)
return FALSE;
if (c1 >= 0xa9 && c1 <= 0xaf)
return FALSE;
if (c1 >= 0xa2 && c1 <= 0xa8)
return (gboolean)valid_eucjp_tbl[c1 - 0xa2][c2 - 0xa0];
if (c1 == 0xcf) {
if (c2 >= 0xd4 && c2 <= 0xfe)
return FALSE;
} else if (c1 == 0xf4) {
if (c2 >= 0xa7 && c2 <= 0xfe)
return FALSE;
}
return TRUE;
}
static void conv_unreadable_eucjp(gchar *str)
{
register guchar *p = str;
while (*p != '\0') {
if (IS_ASCII(*p)) {
/* convert CR+LF -> LF */
if (*p == '\r' && *(p + 1) == '\n')
memmove(p, p + 1, strlen(p));
/* printable 7 bit code */
p++;
} else if (iseuckanji(*p)) {
if (isprintableeuckanji(*p, *(p + 1))) {
/* printable euc-jp code */
p += 2;
} else {
/* substitute unprintable code */
*p++ = SUBST_CHAR;
if (*p != '\0') {
if (IS_ASCII(*p))
p++;
else
*p++ = SUBST_CHAR;
}
}
} else if (iseuchwkana1(*p)) {
if (iseuchwkana2(*(p + 1)))
/* euc-jp hankaku kana */
p += 2;
else
*p++ = SUBST_CHAR;
} else if (iseucaux(*p)) {
if (iseuckanji(*(p + 1)) && iseuckanji(*(p + 2))) {
/* auxiliary kanji */
p += 3;
} else
*p++ = SUBST_CHAR;
} else
/* substitute unprintable 1 byte code */
*p++ = SUBST_CHAR;
}
}
static void conv_unreadable_8bit(gchar *str)
{
register guchar *p = str;
@ -649,20 +522,6 @@ static void conv_unreadable_8bit(gchar *str)
}
}
static void conv_unreadable_latin(gchar *str)
{
register guchar *p = str;
while (*p != '\0') {
/* convert CR+LF -> LF */
if (*p == '\r' && *(p + 1) == '\n')
memmove(p, p + 1, strlen(p));
else if ((*p & 0xff) >= 0x7f && (*p & 0xff) <= 0x9f)
*p = SUBST_CHAR;
p++;
}
}
#define NCV '\0'
void conv_mb_alnum(gchar *str)

View file

@ -34,8 +34,6 @@
static void smtp_session_destroy(Session *session);
gint smtp_from(SMTPSession *session);
static gint smtp_auth(SMTPSession *session);
static gint smtp_starttls(SMTPSession *session);
static gint smtp_auth_cram_md5(SMTPSession *session);
@ -50,7 +48,6 @@ static gint smtp_rcpt(SMTPSession *session);
static gint smtp_data(SMTPSession *session);
static gint smtp_send_data(SMTPSession *session);
static gint smtp_make_ready(SMTPSession *session);
gint smtp_quit(SMTPSession *session);
static gint smtp_eom(SMTPSession *session);
static gint smtp_session_recv_msg(Session *session, const gchar *msg);

View file

@ -121,5 +121,7 @@ struct _SMTPSession
};
Session *smtp_session_new (void);
gint smtp_from(SMTPSession *session);
gint smtp_quit(SMTPSession *session);
#endif /* __SMTP_H__ */

View file

@ -1233,7 +1233,7 @@ Compose *compose_forward_multiple(PrefsAccount *account, GSList *msginfo_list)
void compose_reedit(MsgInfo *msginfo)
{
Compose *compose;
Compose *compose = NULL;
PrefsAccount *account = NULL;
GtkTextView *textview;
GtkTextBuffer *textbuf;
@ -1452,7 +1452,8 @@ void compose_entry_append(Compose *compose, const gchar *address,
ComposeEntryType type)
{
gchar *header;
gchar **parts = g_strsplit(address, ",", 0);
gchar *cur, *begin;
gboolean in_quote = FALSE;
int i = 0;
if (!address || *address == '\0') return;
@ -1478,14 +1479,39 @@ void compose_entry_append(Compose *compose, const gchar *address,
break;
}
header = prefs_common.trans_hdr ? gettext(header) : header;
while (parts[i] && *parts[i]) {
gchar *tmp = parts[i];
cur = begin = (gchar *)address;
/* we separate the line by commas, but not if we're inside a quoted
* string */
while (*cur != '\0') {
if (*cur == '"')
in_quote = !in_quote;
if (*cur == ',' && !in_quote) {
gchar *tmp = g_strdup(begin);
gchar *o_tmp = tmp;
tmp[cur-begin]='\0';
cur++;
begin = cur;
while (*tmp == ' ')
tmp++;
compose_add_header_entry(compose, header, tmp);
g_free(o_tmp);
continue;
}
cur++;
}
if (begin < cur) {
gchar *tmp = g_strdup(begin);
gchar *o_tmp = tmp;
tmp[cur-begin]='\0';
cur++;
begin = cur;
while (*tmp == ' ')
tmp++;
compose_add_header_entry(compose, header, tmp);
i++;
g_free(o_tmp);
}
g_strfreev(parts);
}
void compose_entry_mark_default_to(Compose *compose, const gchar *mailto)
@ -1585,7 +1611,7 @@ static void compose_entries_set(Compose *compose, const gchar *mailto)
compose_entry_append(compose, to, COMPOSE_TO);
if (cc)
compose_entry_append(compose, cc, COMPOSE_CC);
if (subject)
if (subject) {
if (!g_utf8_validate (subject, -1, NULL)) {
temp = g_locale_to_utf8 (subject, -1, NULL, &len, NULL);
gtk_entry_set_text(GTK_ENTRY(compose->subject_entry), temp);
@ -1593,6 +1619,7 @@ static void compose_entries_set(Compose *compose, const gchar *mailto)
} else {
gtk_entry_set_text(GTK_ENTRY(compose->subject_entry), subject);
}
}
if (body) {
GtkTextView *text = GTK_TEXT_VIEW(compose->text);
GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
@ -2694,7 +2721,6 @@ static gboolean compose_get_line_break_pos(GtkTextBuffer *buffer,
static gboolean compose_is_sig_separator(Compose *compose, GtkTextBuffer *textbuf, GtkTextIter *iter)
{
char *text = NULL;
GtkTextIter start = *iter;
GtkTextIter end_iter;
int start_pos = gtk_text_iter_get_offset(&start);
@ -3498,11 +3524,12 @@ static gint compose_write_to_file(Compose *compose, FILE *fp, gint action)
g_strdup(out_codeset));
/* protect trailing spaces when signing message */
if (action == COMPOSE_WRITE_FOR_SEND && compose->use_signing &&
privacy_system_can_sign(compose->privacy_system))
privacy_system_can_sign(compose->privacy_system)) {
if (encoding == ENC_7BIT)
encoding = ENC_QUOTED_PRINTABLE;
else if (encoding == ENC_8BIT)
encoding = ENC_BASE64;
}
if (encoding != ENC_UNKNOWN)
procmime_encode_content(mimetext, encoding);
@ -3546,7 +3573,6 @@ static gint compose_write_body_to_file(Compose *compose, const gchar *file)
FILE *fp;
size_t len;
gchar *chars, *tmp;
const gchar *src_codeset, *dest_codeset;
if ((fp = fopen(file, "wb")) == NULL) {
FILE_OP_ERROR(file, "fopen");
@ -5409,7 +5435,6 @@ static void compose_attach_info_free(AttachInfo *ainfo)
static void compose_attach_remove_selected(Compose *compose)
{
GtkTreeView *tree_view = GTK_TREE_VIEW(compose->attach_clist);
AttachInfo *ainfo;
GtkTreeSelection *selection;
GList *sel, *cur;
GtkTreeModel *model;
@ -6134,8 +6159,6 @@ static gboolean attach_button_pressed(GtkWidget *widget, GdkEventButton *event,
gpointer data)
{
Compose *compose = (Compose *)data;
GtkTreeView *tree_view = GTK_TREE_VIEW(compose->attach_clist);
GtkTreeIter iter;
if (!event) return FALSE;

View file

@ -105,7 +105,6 @@ gint export_mbox(FolderItem *default_src)
const gchar *dest_codeset = conv_get_locale_charset_str();
gchar *mbox;
#warning FIXME_GTK2 /* should we use g_filename_from_utf8()? */
mbox = conv_codeset_strdup(utf8mbox, src_codeset, dest_codeset);
if (!mbox) {
g_warning("faild to convert character set\n");

View file

@ -1549,7 +1549,7 @@ static gint syncronize_flags(FolderItem *item, MsgInfoList *msglist)
item->folder, item, msglist, relation)) == 0) {
GTuples *tuples;
MsgInfo *msginfo;
MsgPermFlags permflags;
MsgPermFlags permflags = 0;
gboolean skip;
for (cur = msglist; cur != NULL; cur = g_slist_next(cur)) {
@ -2082,7 +2082,7 @@ GSList *folder_item_get_msg_list(FolderItem *item)
return msgcache_get_msg_list(item->cache);
}
static void msginfo_set_mime_flags(GNode *node, gpointer data)
void msginfo_set_mime_flags(GNode *node, gpointer data)
{
MsgInfo *msginfo = data;
MimeInfo *mimeinfo = node->data;

View file

@ -1200,7 +1200,6 @@ static void folderview_update_node(FolderView *folderview, GtkCTreeNode *node)
style = bold_tgtfold_style;
} else if (item->prefs->color > 0) {
GdkColor gdk_color;
gtkut_convert_int_to_gdk_color(item->prefs->color, &gdk_color);
color_style = gtk_style_copy(normal_style);
color_style->fg[GTK_STATE_NORMAL] = gdk_color;
@ -1267,7 +1266,6 @@ gboolean folderview_update_item_claws(gpointer source, gpointer data)
FolderView *folderview = (FolderView *)data;
GtkCTree *ctree;
GtkCTreeNode *node;
g_return_val_if_fail(update_info != NULL, TRUE);
g_return_val_if_fail(update_info->item != NULL, TRUE);
g_return_val_if_fail(folderview != NULL, FALSE);
@ -2089,7 +2087,7 @@ static gboolean folderview_drag_motion_cb(GtkWidget *widget,
FolderView *folderview)
{
gint row, column;
FolderItem *item, *src_item = NULL;
FolderItem *item = NULL, *src_item = NULL;
GtkCTreeNode *node = NULL;
gboolean acceptable = FALSE;
GtkAdjustment *pos = gtk_scrolled_window_get_vadjustment(

View file

@ -179,5 +179,6 @@ GtkWidget *gtkut_account_menu_new (GList *ac_list,
void gtkut_set_widget_bgcolor_rgb (GtkWidget *widget,
guint rgbvalue);
void gtkut_widget_set_small_font_size(GtkWidget *widget);
GtkWidget *gtkut_get_focused_child (GtkContainer *parent);
#endif /* __GTKUTILS_H__ */

View file

@ -114,7 +114,7 @@ static void image_viewer_load_file(ImageViewer *imageviewer, const gchar *imgfil
(GTK_SCROLLED_WINDOW(imageviewer->scrolledwin),
imageviewer->image);
} else
gtk_pixmap_set(imageviewer->image, pixmap, mask);
gtk_pixmap_set(GTK_PIXMAP(imageviewer->image), pixmap, mask);
gtk_widget_show(imageviewer->image);

View file

@ -56,11 +56,15 @@
#include "prefs_ext_prog.h"
#include "prefs_fonts.h"
#include "prefs_image_viewer.h"
#include "prefs_message.h"
#include "prefs_receive.h"
#include "prefs_msg_colors.h"
#include "prefs_quote.h"
#include "prefs_spelling.h"
#include "prefs_summaries.h"
#include "prefs_themes.h"
#include "prefs_other.h"
#include "prefs_send.h"
#include "prefs_wrapping.h"
#include "prefs_compose_writing.h"
#include "prefs_display_header.h"
@ -308,7 +312,6 @@ int main(int argc, char *argv[])
set_log_file(RC_DIR G_DIR_SEPARATOR_S "sylpheed.log");
folder_system_init();
prefs_common_init();
prefs_common_read_config();
prefs_themes_init();
@ -321,6 +324,10 @@ int main(int argc, char *argv[])
prefs_image_viewer_init();
prefs_quote_init();
prefs_summaries_init();
prefs_message_init();
prefs_other_init();
prefs_receive_init();
prefs_send_init();
#ifdef USE_ASPELL
gtkaspell_checkers_init();
prefs_spelling_init();
@ -519,6 +526,10 @@ static void exit_sylpheed(MainWindow *mainwin)
image_viewer_done();
prefs_quote_done();
prefs_summaries_done();
prefs_message_done();
prefs_other_done();
prefs_receive_done();
prefs_send_done();
#ifdef USE_ASPELL
prefs_spelling_done();
gtkaspell_checkers_quit();
@ -674,7 +685,6 @@ static void initial_processing(FolderItem *item, gpointer data)
static void draft_all_messages(void)
{
GList *compose_list = NULL;
GList *elem = NULL;
while ((compose_list = compose_get_compose_list()) != NULL) {
Compose *c = (Compose*)compose_list->data;

View file

@ -363,9 +363,6 @@ static void create_processing_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
static void prefs_common_open_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
static void prefs_template_open_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
@ -2992,12 +2989,6 @@ static void create_processing_cb(MainWindow *mainwin, guint action,
summary_filter_open(mainwin->summaryview, (PrefsFilterType)action, 1);
}
static void prefs_common_open_cb(MainWindow *mainwin, guint action,
GtkWidget *widget)
{
/* prefs_common_open(); */
}
static void prefs_pre_processing_open_cb(MainWindow *mainwin, guint action,
GtkWidget *widget)
{

View file

@ -499,7 +499,7 @@ static gint disposition_notification_send(MsgInfo *msginfo)
gchar tmp[MAXPATHLEN + 1];
FILE *fp;
GList *ac_list;
PrefsAccount *account;
PrefsAccount *account = NULL;
gint ok;
gchar *to;
FolderItem *queue, *outbox;
@ -553,23 +553,34 @@ static gint disposition_notification_send(MsgInfo *msginfo)
ac_list = account_find_all_from_address(ac_list, msginfo->cc);
if (ac_list == NULL) {
alertpanel_error(_("This message is asking for a return "
AlertValue val =
alertpanel_with_type(_("Warning"),
_("This message is asking for a return "
"receipt notification\n"
"but according to its 'To:' and 'CC:' "
"headers it was not\nofficially addressed "
"to you.\n"
"Receipt notification cancelled."));
return -1;
"It is advised to not to send the return ."
"receipt."),
_("Send"), _("+Don't Send"), NULL,
NULL, ALERT_WARNING);
if (val != G_ALERTDEFAULT)
return -1;
}
if (g_list_length(ac_list) > 1)
account = select_account_from_list(ac_list);
else
else if (ac_list != NULL)
account = (PrefsAccount *) ac_list->data;
g_list_free(ac_list);
if (account == NULL)
account = account_get_default();
if (!account || account->protocol == A_NNTP) {
alertpanel_error(_("Account for sending mail is not specified.\n"
"Please select a mail account before sending."));
return -1;
}
/* write to temporary file */
g_snprintf(tmp, sizeof(tmp), "%s%ctmpmsg%d",
@ -1403,7 +1414,6 @@ static void reply_cb(gpointer data, guint action, GtkWidget *widget)
{
MessageView *messageview = (MessageView *)data;
GSList *msginfo_list = NULL;
MsgInfo *msginfo;
g_return_if_fail(messageview->msginfo);

View file

@ -1507,7 +1507,7 @@ static void toggle_icon(GtkToggleButton *button, MimeView *mimeview)
static void icon_list_append_icon (MimeView *mimeview, MimeInfo *mimeinfo)
{
GtkWidget *pixmap;
GtkWidget *pixmap = NULL;
GtkWidget *vbox;
GtkWidget *button;
gchar *tip;

View file

@ -225,13 +225,14 @@ gint msgcache_get_memory_usage(MsgCache *cache)
* Cache saving functions
*/
#define READ_CACHE_DATA(data, fp) \
#define READ_CACHE_DATA(data, fp, total_len) \
{ \
if (msgcache_read_cache_data_str(fp, &data, conv) < 0) { \
if ((tmp_len = msgcache_read_cache_data_str(fp, &data, conv)) < 0) { \
procmsg_msginfo_free(msginfo); \
error = TRUE; \
break; \
} \
total_len += tmp_len; \
}
#define READ_CACHE_DATA_INT(n, fp) \
@ -305,7 +306,7 @@ static FILE *msgcache_open_data_file(const gchar *file, guint version,
fp = NULL;
}
}
if (mode == DATA_READ)
return fp;
@ -360,7 +361,7 @@ static gint msgcache_read_cache_data_str(FILE *fp, gchar **str,
} else
*str = tmpstr;
return 0;
return len;
}
gchar *strconv_strdup_convert(StringConverter *conv, gchar *srcstr)
@ -396,7 +397,15 @@ MsgCache *msgcache_read_cache(FolderItem *item, const gchar *cache_file)
StringConverter *conv = NULL;
gchar *srccharset = NULL;
const gchar *dstcharset = NULL;
gchar *ref = NULL;
guint memusage = 0;
guint tmp_len = 0;
#if 0
struct timeval start;
struct timeval end;
struct timeval diff;
gettimeofday(&start, NULL);
#endif
g_return_val_if_fail(cache_file != NULL, NULL);
g_return_val_if_fail(item != NULL, NULL);
@ -444,35 +453,38 @@ MsgCache *msgcache_read_cache(FolderItem *item, const gchar *cache_file)
cache = msgcache_new();
g_hash_table_freeze(cache->msgnum_table);
g_hash_table_freeze(cache->msgid_table);
while (fread(&num, sizeof(num), 1, fp) == 1) {
msginfo = procmsg_msginfo_new();
msginfo->msgnum = num;
memusage += sizeof(MsgInfo);
READ_CACHE_DATA_INT(msginfo->size, fp);
READ_CACHE_DATA_INT(msginfo->mtime, fp);
READ_CACHE_DATA_INT(msginfo->date_t, fp);
READ_CACHE_DATA_INT(msginfo->flags.tmp_flags, fp);
READ_CACHE_DATA(msginfo->fromname, fp, memusage);
READ_CACHE_DATA(msginfo->fromname, fp);
READ_CACHE_DATA(msginfo->date, fp);
READ_CACHE_DATA(msginfo->from, fp);
READ_CACHE_DATA(msginfo->to, fp);
READ_CACHE_DATA(msginfo->cc, fp);
READ_CACHE_DATA(msginfo->newsgroups, fp);
READ_CACHE_DATA(msginfo->subject, fp);
READ_CACHE_DATA(msginfo->msgid, fp);
READ_CACHE_DATA(msginfo->inreplyto, fp);
READ_CACHE_DATA(msginfo->xref, fp);
READ_CACHE_DATA(msginfo->date, fp, memusage);
READ_CACHE_DATA(msginfo->from, fp, memusage);
READ_CACHE_DATA(msginfo->to, fp, memusage);
READ_CACHE_DATA(msginfo->cc, fp, memusage);
READ_CACHE_DATA(msginfo->newsgroups, fp, memusage);
READ_CACHE_DATA(msginfo->subject, fp, memusage);
READ_CACHE_DATA(msginfo->msgid, fp, memusage);
READ_CACHE_DATA(msginfo->inreplyto, fp, memusage);
READ_CACHE_DATA(msginfo->xref, fp, memusage);
READ_CACHE_DATA_INT(msginfo->planned_download, fp);
READ_CACHE_DATA_INT(msginfo->total_size, fp);
READ_CACHE_DATA_INT(refnum, fp);
for (; refnum != 0; refnum--) {
gchar *ref = NULL;
ref = NULL;
READ_CACHE_DATA(ref, fp);
READ_CACHE_DATA(ref, fp, memusage);
if (ref && strlen(ref))
msginfo->references =
@ -488,10 +500,10 @@ MsgCache *msgcache_read_cache(FolderItem *item, const gchar *cache_file)
g_hash_table_insert(cache->msgnum_table, &msginfo->msgnum, msginfo);
if(msginfo->msgid)
g_hash_table_insert(cache->msgid_table, msginfo->msgid, msginfo);
cache->memusage += procmsg_msginfo_memusage(msginfo);
}
fclose(fp);
g_hash_table_thaw(cache->msgnum_table);
g_hash_table_thaw(cache->msgid_table);
if (conv != NULL) {
if (conv->free != NULL)
@ -505,10 +517,15 @@ MsgCache *msgcache_read_cache(FolderItem *item, const gchar *cache_file)
}
cache->last_access = time(NULL);
cache->memusage = memusage;
debug_print("done. (%d items read)\n", g_hash_table_size(cache->msgnum_table));
debug_print("Cache size: %d messages, %d byte\n", g_hash_table_size(cache->msgnum_table), cache->memusage);
#if 0
gettimeofday(&end, NULL);
timersub(&end, &start, &diff);
printf("spent %d seconds %d usages %d;%d\n", diff.tv_sec, diff.tv_usec, cache->memusage, memusage);
#endif
return cache;
}

View file

@ -561,15 +561,7 @@ static void pop_bfr_smtp_tm_set_sens (GtkWidget *widget,
static void prefs_account_edit_custom_header (void);
static gint prefs_account_deleted (GtkWidget *widget,
GdkEventAny *event,
gpointer data);
static gboolean prefs_account_key_pressed (GtkWidget *widget,
GdkEventKey *event,
gpointer data);
static void prefs_account_ok (void);
static gint prefs_account_apply (void);
static void prefs_account_cancel (void);
typedef struct AccountPage
{
@ -2352,27 +2344,6 @@ static void prefs_account_advanced_create(void)
advanced.trash_folder_entry = trash_folder_entry;
}
static gint prefs_account_deleted(GtkWidget *widget, GdkEventAny *event,
gpointer data)
{
prefs_account_cancel();
return TRUE;
}
static gboolean prefs_account_key_pressed(GtkWidget *widget, GdkEventKey *event,
gpointer data)
{
if (event && event->keyval == GDK_Escape)
prefs_account_cancel();
return FALSE;
}
static void prefs_account_ok(void)
{
if (prefs_account_apply() == 0)
gtk_main_quit();
}
static gint prefs_account_apply(void)
{
RecvProtocol protocol;
@ -2436,12 +2407,6 @@ static gint prefs_account_apply(void)
return 0;
}
static void prefs_account_cancel(void)
{
cancelled = TRUE;
gtk_main_quit();
}
static void pop_bfr_smtp_tm_set_sens(GtkWidget *widget, gpointer data)
{
gtk_widget_set_sensitive(p_send.pop_bfr_smtp_tm_entry,

View file

@ -432,7 +432,6 @@ static void prefs_actions_set_dialog(void)
static void prefs_actions_set_list(void)
{
gchar *action;
GtkTreeIter iter;
GtkListStore *store;
@ -897,7 +896,7 @@ static gboolean prefs_actions_selected(GtkTreeSelection *selector,
if (cmd && cmd[2])
ENTRY_SET_TEXT(actions.cmd_entry, &cmd[2]);
else
return;
return TRUE;
*cmd = 0x00;
ENTRY_SET_TEXT(actions.name_entry, buf);

File diff suppressed because it is too large Load diff

View file

@ -255,7 +255,7 @@ void prefs_compose_writing_init(void)
page->page.create_widget = prefs_compose_writing_create_widget;
page->page.destroy_widget = prefs_compose_writing_destroy_widget;
page->page.save_page = prefs_compose_writing_save;
page->page.weight = 60.0;
page->page.weight = 190.0;
prefs_gtk_register_page((PrefsPage *) page);
prefs_writing = page;
}

View file

@ -154,8 +154,6 @@ static void prefs_custom_header_create(void)
GtkWidget *up_btn;
GtkWidget *down_btn;
gchar *title[1];
debug_print("Creating custom header setting window...\n");
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
@ -569,7 +567,7 @@ static void prefs_custom_header_up(void)
if (!gtk_tree_selection_get_selected
(gtk_tree_view_get_selection
(GTK_TREE_VIEW(customhdr.list_view)),
(GtkTreeModel **) &store,
(GtkTreeModel **) &store,
&isel))
return;

View file

@ -272,7 +272,7 @@ void prefs_ext_prog_init(void)
page->page.create_widget = prefs_ext_prog_create_widget;
page->page.destroy_widget = prefs_ext_prog_destroy_widget;
page->page.save_page = prefs_ext_prog_save;
page->page.weight = 45.0;
page->page.weight = 155.0;
prefs_gtk_register_page((PrefsPage *) page);
prefs_ext_prog = page;
}

View file

@ -213,8 +213,6 @@ static void prefs_filtering_create(void)
GtkWidget *bottom_btn;
static GdkGeometry geometry;
gchar *title[1];
debug_print("Creating filtering configuration window...\n");
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
@ -612,7 +610,6 @@ static void prefs_filtering_set_dialog(const gchar *header, const gchar *key)
GSList *cur;
GSList * prefs_filtering;
gchar *cond_str;
gint row;
GtkListStore *list_store;
list_store = GTK_LIST_STORE(gtk_tree_view_get_model(list_view));

View file

@ -567,8 +567,6 @@ static void prefs_filtering_action_list_view_set_row(GtkTreeIter *row,
*/
static void prefs_filtering_action_set_dialog(GSList *action_list)
{
GtkTreeView *list_view = GTK_TREE_VIEW
(filtering_action.action_list_view);
GSList *cur;
gtk_list_store_clear(GTK_LIST_STORE(gtk_tree_view_get_model
@ -880,7 +878,6 @@ static void prefs_filtering_action_delete_cb(void)
GtkTreeModel *model;
gboolean is_valid;
GtkTreeIter row;
FilteringAction *action;
if (!gtk_tree_selection_get_selected(selection, &model, &row))
return;
@ -1316,7 +1313,6 @@ static void prefs_filtering_action_list_view_insert_action(GtkWidget *list_vie
{
GtkListStore *store = GTK_LIST_STORE(gtk_tree_view_get_model
(GTK_TREE_VIEW(list_view)));
gint result = -1;
GtkTreeIter iter;

View file

@ -183,7 +183,7 @@ void prefs_fonts_init(void)
page->page.create_widget = prefs_fonts_create_widget;
page->page.destroy_widget = prefs_fonts_destroy_widget;
page->page.save_page = prefs_fonts_save;
page->page.weight = 60.0;
page->page.weight = 135.0;
prefs_gtk_register_page((PrefsPage *) page);
prefs_fonts = page;
}

View file

@ -151,7 +151,7 @@ void prefs_image_viewer_init(void)
page->page.create_widget = imageviewer_create_widget_func;
page->page.destroy_widget = imageviewer_destroy_widget_func;
page->page.save_page = imageviewer_save_func;
page->page.weight = 60.0;
page->page.weight = 160.0;
prefs_gtk_register_page((PrefsPage *) page);
prefs_imageviewer = page;
}

301
src/prefs_message.c Normal file
View file

@ -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 "prefs_display_header.h"
#include "gtk/gtkutils.h"
#include "gtk/prefswindow.h"
#include "manage_window.h"
typedef struct _MessagePage
{
PrefsPage page;
GtkWidget *window;
GtkWidget *chkbtn_mbalnum;
GtkWidget *chkbtn_disphdrpane;
GtkWidget *chkbtn_disphdr;
GtkWidget *chkbtn_html;
GtkWidget *chkbtn_cursor;
GtkWidget *spinbtn_linespc;
GtkWidget *chkbtn_smoothscroll;
GtkWidget *spinbtn_scrollstep;
GtkWidget *chkbtn_halfpage;
GtkWidget *chkbtn_attach_desc;
} MessagePage;
void prefs_message_create_widget(PrefsPage *_page, GtkWindow *window,
gpointer data)
{
MessagePage *prefs_message = (MessagePage *) _page;
GtkWidget *vbox1;
GtkWidget *vbox2;
GtkWidget *vbox3;
GtkWidget *hbox1;
GtkWidget *chkbtn_mbalnum;
GtkWidget *chkbtn_disphdrpane;
GtkWidget *chkbtn_disphdr;
GtkWidget *button_edit_disphdr;
GtkWidget *chkbtn_html;
GtkWidget *chkbtn_cursor;
GtkWidget *hbox_linespc;
GtkWidget *label_linespc;
GtkObject *spinbtn_linespc_adj;
GtkWidget *spinbtn_linespc;
GtkWidget *frame_scr;
GtkWidget *vbox_scr;
GtkWidget *chkbtn_smoothscroll;
GtkWidget *hbox_scr;
GtkWidget *label_scr;
GtkObject *spinbtn_scrollstep_adj;
GtkWidget *spinbtn_scrollstep;
GtkWidget *chkbtn_halfpage;
GtkWidget *chkbtn_attach_desc;
vbox1 = gtk_vbox_new (FALSE, VSPACING);
gtk_widget_show (vbox1);
gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
vbox2 = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox2);
gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
PACK_CHECK_BUTTON
(vbox2, chkbtn_mbalnum,
_("Display multi-byte alphanumeric as\n"
"ASCII character (Japanese only)"));
gtk_label_set_justify (GTK_LABEL (GTK_BIN(chkbtn_mbalnum)->child),
GTK_JUSTIFY_LEFT);
PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
_("Display header pane above message view"));
hbox1 = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox1);
gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
_("Display short headers on message view"));
button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
gtk_widget_show (button_edit_disphdr);
gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
FALSE, TRUE, 0);
g_signal_connect (G_OBJECT (button_edit_disphdr), "clicked",
G_CALLBACK (prefs_display_header_open),
NULL);
SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
PACK_CHECK_BUTTON(vbox2, chkbtn_html,
_("Render HTML messages as text"));
PACK_CHECK_BUTTON(vbox2, chkbtn_cursor,
_("Display cursor in message view"));
PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
hbox1 = gtk_hbox_new (FALSE, 32);
gtk_widget_show (hbox1);
gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
hbox_linespc = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox1);
gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
label_linespc = gtk_label_new (_("Line space"));
gtk_widget_show (label_linespc);
gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
FALSE, FALSE, 0);
spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
spinbtn_linespc = gtk_spin_button_new
(GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
gtk_widget_show (spinbtn_linespc);
gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
FALSE, FALSE, 0);
gtk_widget_set_size_request (spinbtn_linespc, 64, -1);
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
label_linespc = gtk_label_new (_("pixel(s)"));
gtk_widget_show (label_linespc);
gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
FALSE, FALSE, 0);
PACK_FRAME(vbox1, frame_scr, _("Scroll"));
vbox_scr = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox_scr);
gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
hbox1 = gtk_hbox_new (FALSE, 32);
gtk_widget_show (hbox1);
gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
hbox_scr = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox_scr);
gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
label_scr = gtk_label_new (_("Step"));
gtk_widget_show (label_scr);
gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
spinbtn_scrollstep = gtk_spin_button_new
(GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
gtk_widget_show (spinbtn_scrollstep);
gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
FALSE, FALSE, 0);
gtk_widget_set_size_request (spinbtn_scrollstep, 64, -1);
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
TRUE);
label_scr = gtk_label_new (_("pixel(s)"));
gtk_widget_show (label_scr);
gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
vbox3 = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox3);
gtk_box_pack_start (GTK_BOX (vbox1), vbox3, FALSE, FALSE, 0);
PACK_CHECK_BUTTON(vbox3, chkbtn_attach_desc,
_("Show attachment descriptions (rather than names)"));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chkbtn_mbalnum),
prefs_common.conv_mb_alnum);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chkbtn_disphdrpane),
prefs_common.display_header_pane);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chkbtn_disphdr),
prefs_common.display_header);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chkbtn_html),
prefs_common.render_html);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chkbtn_cursor),
prefs_common.textview_cursor_visible);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chkbtn_smoothscroll),
prefs_common.enable_smooth_scroll);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chkbtn_halfpage),
prefs_common.scroll_halfpage);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chkbtn_attach_desc),
prefs_common.attach_desc);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbtn_linespc),
prefs_common.line_space);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbtn_scrollstep),
prefs_common.scroll_step);
prefs_message->window = GTK_WIDGET(window);
prefs_message->chkbtn_mbalnum = chkbtn_mbalnum;
prefs_message->chkbtn_disphdrpane = chkbtn_disphdrpane;
prefs_message->chkbtn_disphdr = chkbtn_disphdr;
prefs_message->chkbtn_html = chkbtn_html;
prefs_message->chkbtn_cursor = chkbtn_cursor;
prefs_message->spinbtn_linespc = spinbtn_linespc;
prefs_message->chkbtn_smoothscroll = chkbtn_smoothscroll;
prefs_message->spinbtn_scrollstep = spinbtn_scrollstep;
prefs_message->chkbtn_halfpage = chkbtn_halfpage;
prefs_message->chkbtn_attach_desc = chkbtn_attach_desc;
prefs_message->page.widget = vbox1;
}
void prefs_message_save(PrefsPage *_page)
{
MessagePage *page = (MessagePage *) _page;
prefs_common.conv_mb_alnum = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->chkbtn_mbalnum));
prefs_common.display_header_pane = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->chkbtn_disphdrpane));
prefs_common.display_header = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->chkbtn_disphdr));
prefs_common.render_html = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->chkbtn_html));
prefs_common.textview_cursor_visible = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->chkbtn_cursor));
prefs_common.enable_smooth_scroll = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->chkbtn_smoothscroll));
prefs_common.scroll_halfpage = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->chkbtn_halfpage));
prefs_common.attach_desc = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->chkbtn_attach_desc));
prefs_common.line_space = gtk_spin_button_get_value_as_int(
GTK_SPIN_BUTTON(page->spinbtn_linespc));
prefs_common.scroll_step = gtk_spin_button_get_value_as_int(
GTK_SPIN_BUTTON(page->spinbtn_scrollstep));
}
static void prefs_message_destroy_widget(PrefsPage *_page)
{
}
MessagePage *prefs_message;
void prefs_message_init(void)
{
MessagePage *page;
static gchar *path[3];
path[0] = _("Message View");
path[1] = _("Text options");
path[2] = NULL;
page = g_new0(MessagePage, 1);
page->page.path = path;
page->page.create_widget = prefs_message_create_widget;
page->page.destroy_widget = prefs_message_destroy_widget;
page->page.save_page = prefs_message_save;
page->page.weight = 170.0;
prefs_gtk_register_page((PrefsPage *) page);
prefs_message = page;
}
void prefs_message_done(void)
{
prefs_gtk_unregister_page((PrefsPage *) prefs_message);
g_free(prefs_message);
}

26
src/prefs_message.h Normal file
View file

@ -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_MESSAGE_H
#define PREFS_MESSAGE_H
void prefs_message_init (void);
void prefs_message_done (void);
#endif /* PREFS_MESSAGE_H */

View file

@ -400,7 +400,7 @@ void prefs_msg_colors_init(void)
page->page.create_widget = prefs_msg_colors_create_widget;
page->page.destroy_widget = prefs_msg_colors_destroy_widget;
page->page.save_page = prefs_msg_colors_save;
page->page.weight = 60.0;
page->page.weight = 165.0;
prefs_gtk_register_page((PrefsPage *) page);
prefs_msg_colors = page;
}

272
src/prefs_other.c Normal file
View file

@ -0,0 +1,272 @@
/*
* 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"
typedef struct _OtherPage
{
PrefsPage page;
GtkWidget *window;
GtkWidget *checkbtn_addaddrbyclick;
GtkWidget *checkbtn_confonexit;
GtkWidget *checkbtn_cleanonexit;
GtkWidget *checkbtn_askonclean;
GtkWidget *checkbtn_warnqueued;
GtkWidget *checkbtn_cliplog;
GtkWidget *loglength_entry;
GtkWidget *spinbtn_iotimeout;
} OtherPage;
void prefs_other_create_widget(PrefsPage *_page, GtkWindow *window,
gpointer data)
{
OtherPage *prefs_other = (OtherPage *) _page;
GtkWidget *vbox1;
GtkWidget *hbox1;
GtkWidget *frame_addr;
GtkWidget *vbox_addr;
GtkWidget *checkbtn_addaddrbyclick;
GtkWidget *frame_cliplog;
GtkWidget *vbox_cliplog;
GtkWidget *hbox_cliplog;
GtkWidget *checkbtn_cliplog;
GtkWidget *loglength_label;
GtkWidget *loglength_entry;
GtkTooltips *loglength_tooltip;
GtkWidget *frame_exit;
GtkWidget *vbox_exit;
GtkWidget *checkbtn_confonexit;
GtkWidget *checkbtn_cleanonexit;
GtkWidget *checkbtn_askonclean;
GtkWidget *checkbtn_warnqueued;
GtkWidget *label_iotimeout;
GtkWidget *spinbtn_iotimeout;
GtkObject *spinbtn_iotimeout_adj;
gchar *tmp;
vbox1 = gtk_vbox_new (FALSE, VSPACING);
gtk_widget_show (vbox1);
gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
PACK_FRAME (vbox1, frame_addr, _("Address book"));
vbox_addr = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox_addr);
gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
PACK_CHECK_BUTTON
(vbox_addr, checkbtn_addaddrbyclick,
_("Add address to destination when double-clicked"));
/* Clip Log */
PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
vbox_cliplog = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox_cliplog);
gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
_("Clip the log size"));
hbox_cliplog = gtk_hbox_new (FALSE, 3);
gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
gtk_widget_show (hbox_cliplog);
loglength_label = gtk_label_new (_("Log window length"));
gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
FALSE, TRUE, 0);
gtk_widget_show (GTK_WIDGET (loglength_label));
loglength_tooltip = gtk_tooltips_new();
loglength_entry = gtk_entry_new ();
gtk_widget_set_size_request (GTK_WIDGET (loglength_entry), 64, -1);
gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
FALSE, TRUE, 0);
gtk_widget_show (GTK_WIDGET (loglength_entry));
gtk_tooltips_set_tip(GTK_TOOLTIPS(loglength_tooltip), loglength_entry,
_("0 to stop logging in the log window"),
NULL);
SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
/* On Exit */
PACK_FRAME (vbox1, frame_exit, _("On exit"));
vbox_exit = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox_exit);
gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
_("Confirm on exit"));
hbox1 = gtk_hbox_new (FALSE, 32);
gtk_widget_show (hbox1);
gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
_("Empty trash on exit"));
PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
_("Ask before emptying"));
SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
_("Warn if there are queued messages"));
hbox1 = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox1);
gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
label_iotimeout = gtk_label_new (_("Socket I/O timeout:"));
gtk_widget_show (label_iotimeout);
gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
spinbtn_iotimeout_adj = gtk_adjustment_new (60, 0, 1000, 1, 10, 10);
spinbtn_iotimeout = gtk_spin_button_new
(GTK_ADJUSTMENT (spinbtn_iotimeout_adj), 1, 0);
gtk_widget_show (spinbtn_iotimeout);
gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_iotimeout,
FALSE, FALSE, 0);
gtk_widget_set_size_request (spinbtn_iotimeout, 64, -1);
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_iotimeout), TRUE);
label_iotimeout = gtk_label_new (_("seconds"));
gtk_widget_show (label_iotimeout);
gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_addaddrbyclick),
prefs_common.add_address_by_click);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_confonexit),
prefs_common.confirm_on_exit);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_cleanonexit),
prefs_common.clean_on_exit);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_askonclean),
prefs_common.ask_on_clean);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_warnqueued),
prefs_common.warn_queued_on_exit);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_cliplog),
prefs_common.cliplog);
tmp = g_strdup_printf("%d", prefs_common.loglength);
gtk_entry_set_text(GTK_ENTRY(loglength_entry), tmp);
g_free(tmp);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbtn_iotimeout),
prefs_common.io_timeout_secs);
prefs_other->checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
prefs_other->checkbtn_confonexit = checkbtn_confonexit;
prefs_other->checkbtn_cleanonexit = checkbtn_cleanonexit;
prefs_other->checkbtn_askonclean = checkbtn_askonclean;
prefs_other->checkbtn_warnqueued = checkbtn_warnqueued;
prefs_other->checkbtn_cliplog = checkbtn_cliplog;
prefs_other->loglength_entry = loglength_entry;
prefs_other->spinbtn_iotimeout = spinbtn_iotimeout;
prefs_other->page.widget = vbox1;
}
void prefs_other_save(PrefsPage *_page)
{
OtherPage *page = (OtherPage *) _page;
MainWindow *mainwindow;
gchar *tmp = gtk_editable_get_chars(GTK_EDITABLE(page->loglength_entry), 0, -1);
if (tmp && atoi(tmp)) {
prefs_common.loglength = atoi(tmp);
}
prefs_common.add_address_by_click = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_addaddrbyclick));
prefs_common.confirm_on_exit = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_confonexit));
prefs_common.clean_on_exit = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_cleanonexit));
prefs_common.ask_on_clean = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_askonclean));
prefs_common.warn_queued_on_exit = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_warnqueued));
prefs_common.cliplog = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_cliplog));
prefs_common.io_timeout_secs = gtk_spin_button_get_value_as_int(
GTK_SPIN_BUTTON(page->spinbtn_iotimeout));
sock_set_io_timeout(prefs_common.io_timeout_secs);
mainwindow = mainwindow_get_mainwindow();
log_window_set_clipping(mainwindow->logwin, prefs_common.cliplog,
prefs_common.loglength);
}
static void prefs_other_destroy_widget(PrefsPage *_page)
{
}
OtherPage *prefs_other;
void prefs_other_init(void)
{
OtherPage *page;
static gchar *path[2];
path[0] = _("Other");
path[1] = NULL;
page = g_new0(OtherPage, 1);
page->page.path = path;
page->page.create_widget = prefs_other_create_widget;
page->page.destroy_widget = prefs_other_destroy_widget;
page->page.save_page = prefs_other_save;
page->page.weight = 5.0;
prefs_gtk_register_page((PrefsPage *) page);
prefs_other = page;
}
void prefs_other_done(void)
{
prefs_gtk_unregister_page((PrefsPage *) prefs_other);
g_free(prefs_other);
}

26
src/prefs_other.h Normal file
View file

@ -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_OTHER_H
#define PREFS_OTHER_H
void prefs_other_init (void);
void prefs_other_done (void);
#endif /* PREFS_OTHER_H */

View file

@ -81,8 +81,6 @@ void prefs_quote_create_widget(PrefsPage *_page, GtkWindow *window,
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);
@ -239,8 +237,6 @@ void prefs_quote_create_widget(PrefsPage *_page, GtkWindow *window,
void prefs_quote_save(PrefsPage *_page)
{
QuotePage *page = (QuotePage *) _page;
GtkTextBuffer *buffer;
GtkTextIter start, end;
g_free(prefs_common.quotefmt);
prefs_common.quotefmt = NULL;
@ -289,7 +285,7 @@ void prefs_quote_init(void)
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;
page->page.weight = 185.0;
prefs_gtk_register_page((PrefsPage *) page);
prefs_quote = page;
}

370
src/prefs_receive.c Normal file
View file

@ -0,0 +1,370 @@
/*
* 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 "inc.h"
#include "gtk/gtkutils.h"
#include "gtk/prefswindow.h"
#include "gtk/menu.h"
#include "manage_window.h"
typedef struct _ReceivePage
{
PrefsPage page;
GtkWidget *window;
GtkWidget *checkbtn_incext;
GtkWidget *entry_incext;
GtkWidget *checkbtn_autochk;
GtkWidget *spinbtn_autochk;
GtkWidget *checkbtn_chkonstartup;
GtkWidget *checkbtn_scan_after_inc;
GtkWidget *checkbtn_newmail_auto;
GtkWidget *checkbtn_newmail_manu;
GtkWidget *entry_newmail_notify_cmd;
GtkWidget *optmenu_recvdialog;
GtkWidget *checkbtn_no_recv_err_panel;
GtkWidget *checkbtn_close_recv_dialog;
GtkWidget *hbox_newmail_notify;
} ReceivePage;
ReceivePage *prefs_receive;
static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
{
gboolean toggled;
toggled = gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON(prefs_receive->checkbtn_newmail_manu)) ||
gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON(prefs_receive->checkbtn_newmail_auto));
gtk_widget_set_sensitive(prefs_receive->hbox_newmail_notify, toggled);
}
void prefs_receive_create_widget(PrefsPage *_page, GtkWindow *window,
gpointer data)
{
ReceivePage *prefs_receive = (ReceivePage *) _page;
GtkWidget *vbox1;
GtkWidget *vbox2;
GtkWidget *frame_incext;
GtkWidget *checkbtn_incext;
GtkWidget *hbox;
GtkWidget *label_incext;
GtkWidget *entry_incext;
GtkWidget *hbox_autochk;
GtkWidget *checkbtn_autochk;
GtkWidget *label_autochk1;
GtkObject *spinbtn_autochk_adj;
GtkWidget *spinbtn_autochk;
GtkWidget *label_autochk2;
GtkWidget *checkbtn_chkonstartup;
GtkWidget *checkbtn_scan_after_inc;
GtkWidget *frame_newmail;
GtkWidget *hbox_newmail_notify;
GtkWidget *checkbtn_newmail_auto;
GtkWidget *checkbtn_newmail_manu;
GtkWidget *entry_newmail_notify_cmd;
GtkWidget *label_newmail_notify_cmd;
GtkWidget *hbox_recvdialog;
GtkWidget *label_recvdialog;
GtkWidget *menu;
GtkWidget *menuitem;
GtkWidget *optmenu_recvdialog;
GtkWidget *checkbtn_no_recv_err_panel;
GtkWidget *checkbtn_close_recv_dialog;
vbox1 = gtk_vbox_new (FALSE, VSPACING);
gtk_widget_show (vbox1);
gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
PACK_FRAME(vbox1, frame_incext, _("External program"));
vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
gtk_widget_show (vbox2);
gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
/* Use of external incorporation program */
PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
_("Use external program for incorporation"));
hbox = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox);
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
label_incext = gtk_label_new (_("Command"));
gtk_widget_show (label_incext);
gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
entry_incext = gtk_entry_new ();
gtk_widget_show (entry_incext);
gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
vbox2 = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox2);
gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
/* Auto-checking */
hbox_autochk = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox_autochk);
gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
_("Auto-check new mail"));
label_autochk1 = gtk_label_new (_("every"));
gtk_widget_show (label_autochk1);
gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
spinbtn_autochk = gtk_spin_button_new
(GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
gtk_widget_show (spinbtn_autochk);
gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
gtk_widget_set_size_request (spinbtn_autochk, 64, -1);
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
label_autochk2 = gtk_label_new (_("minute(s)"));
gtk_widget_show (label_autochk2);
gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
_("Check new mail on startup"));
PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
_("Update all local folders after incorporation"));
/* receive dialog */
hbox_recvdialog = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox_recvdialog);
gtk_box_pack_start (GTK_BOX (vbox2), hbox_recvdialog, FALSE, FALSE, 0);
label_recvdialog = gtk_label_new (_("Show receive dialog"));
gtk_misc_set_alignment(GTK_MISC(label_recvdialog), 0, 0.5);
gtk_widget_show (label_recvdialog);
gtk_box_pack_start (GTK_BOX (hbox_recvdialog), label_recvdialog, FALSE, FALSE, 0);
optmenu_recvdialog = gtk_option_menu_new ();
gtk_widget_show (optmenu_recvdialog);
gtk_box_pack_start (GTK_BOX (hbox_recvdialog), optmenu_recvdialog, FALSE, FALSE, 0);
menu = gtk_menu_new ();
MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
MENUITEM_ADD (menu, menuitem, _("Only on manual receiving"),
RECV_DIALOG_MANUAL);
MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
PACK_CHECK_BUTTON (vbox2, checkbtn_no_recv_err_panel,
_("Don't popup error dialog on receive error"));
PACK_CHECK_BUTTON (vbox2, checkbtn_close_recv_dialog,
_("Close receive dialog when finished"));
PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
"arrives"));
vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
gtk_widget_show (vbox2);
gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
hbox = gtk_hbox_new (TRUE, 8);
gtk_widget_show (hbox);
PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
_("after autochecking"));
PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
_("after manual checking"));
gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox_newmail_notify);
gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
FALSE, 0);
label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
"(use %d as number of new "
"mails)"));
gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
GTK_JUSTIFY_RIGHT);
gtk_widget_show (label_newmail_notify_cmd);
gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
label_newmail_notify_cmd, FALSE, FALSE, 0);
entry_newmail_notify_cmd = gtk_entry_new ();
gtk_widget_show (entry_newmail_notify_cmd);
gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
entry_newmail_notify_cmd, TRUE, TRUE, 0);
gtk_widget_set_sensitive(hbox_newmail_notify,
prefs_common.newmail_notify_auto ||
prefs_common.newmail_notify_manu);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_incext),
prefs_common.use_extinc);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_no_recv_err_panel),
prefs_common.no_recv_err_panel);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_close_recv_dialog),
prefs_common.close_recv_dialog);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_chkonstartup),
prefs_common.chk_on_startup);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_scan_after_inc),
prefs_common.scan_all_after_inc);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_newmail_auto),
prefs_common.newmail_notify_auto);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_newmail_manu),
prefs_common.newmail_notify_manu);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_autochk),
prefs_common.autochk_newmail);
gtk_entry_set_text(GTK_ENTRY(entry_incext),
prefs_common.extinc_cmd);
gtk_entry_set_text(GTK_ENTRY(entry_newmail_notify_cmd),
prefs_common.newmail_notify_cmd);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbtn_autochk),
prefs_common.autochk_itv);
gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu_recvdialog),
prefs_common.recv_dialog_mode);
prefs_receive->window = GTK_WIDGET(window);
prefs_receive->checkbtn_incext = checkbtn_incext;
prefs_receive->entry_incext = entry_incext;
prefs_receive->checkbtn_autochk = checkbtn_autochk;
prefs_receive->spinbtn_autochk = spinbtn_autochk;
prefs_receive->checkbtn_chkonstartup = checkbtn_chkonstartup;
prefs_receive->checkbtn_scan_after_inc = checkbtn_scan_after_inc;
prefs_receive->checkbtn_newmail_auto = checkbtn_newmail_auto;
prefs_receive->checkbtn_newmail_manu = checkbtn_newmail_manu;
prefs_receive->entry_newmail_notify_cmd = entry_newmail_notify_cmd;
prefs_receive->optmenu_recvdialog = optmenu_recvdialog;
prefs_receive->checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
prefs_receive->checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
prefs_receive->hbox_newmail_notify = hbox_newmail_notify;
prefs_receive->page.widget = vbox1;
g_signal_connect(G_OBJECT(checkbtn_newmail_auto), "toggled",
G_CALLBACK(prefs_common_recv_dialog_newmail_notify_toggle_cb),
NULL);
g_signal_connect(G_OBJECT(checkbtn_newmail_manu), "toggled",
G_CALLBACK(prefs_common_recv_dialog_newmail_notify_toggle_cb),
NULL);
}
void prefs_receive_save(PrefsPage *_page)
{
ReceivePage *page = (ReceivePage *) _page;
gchar *tmp;
GtkWidget *menu;
GtkWidget *menuitem;
prefs_common.use_extinc = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_incext));
prefs_common.no_recv_err_panel = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_no_recv_err_panel));
prefs_common.close_recv_dialog = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_close_recv_dialog));
prefs_common.chk_on_startup = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_chkonstartup));
prefs_common.scan_all_after_inc = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_scan_after_inc));
prefs_common.newmail_notify_auto = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_newmail_auto));
prefs_common.newmail_notify_manu = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_newmail_manu));
prefs_common.autochk_newmail = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_autochk));
prefs_common.autochk_itv = gtk_spin_button_get_value_as_int(
GTK_SPIN_BUTTON(page->spinbtn_autochk));
tmp = gtk_editable_get_chars(GTK_EDITABLE(page->entry_incext), 0, -1);
g_free(prefs_common.extinc_cmd);
prefs_common.extinc_cmd = tmp;
tmp = gtk_editable_get_chars(GTK_EDITABLE(page->entry_newmail_notify_cmd), 0, -1);
g_free(prefs_common.newmail_notify_cmd);
prefs_common.newmail_notify_cmd = tmp;
menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(page->optmenu_recvdialog));
menuitem = gtk_menu_get_active(GTK_MENU(menu));
prefs_common.recv_dialog_mode = GPOINTER_TO_INT
(g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
inc_autocheck_timer_remove();
inc_autocheck_timer_set();
}
static void prefs_receive_destroy_widget(PrefsPage *_page)
{
}
void prefs_receive_init(void)
{
ReceivePage *page;
static gchar *path[3];
path[0] = _("Mail Handling");
path[1] = _("Receive");
path[2] = NULL;
page = g_new0(ReceivePage, 1);
page->page.path = path;
page->page.create_widget = prefs_receive_create_widget;
page->page.destroy_widget = prefs_receive_destroy_widget;
page->page.save_page = prefs_receive_save;
page->page.weight = 200.0;
prefs_gtk_register_page((PrefsPage *) page);
prefs_receive = page;
}
void prefs_receive_done(void)
{
prefs_gtk_unregister_page((PrefsPage *) prefs_receive);
g_free(prefs_receive);
}

26
src/prefs_receive.h Normal file
View file

@ -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_RECEIVE_H
#define PREFS_RECEIVE_H
void prefs_receive_init (void);
void prefs_receive_done (void);
#endif /* PREFS_RECEIVE_H */

336
src/prefs_send.c Normal file
View file

@ -0,0 +1,336 @@
/*
* 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/menu.h"
#include "gtk/gtkutils.h"
#include "gtk/prefswindow.h"
#include "manage_window.h"
typedef struct _SendPage
{
PrefsPage page;
GtkWidget *window;
GtkWidget *checkbtn_savemsg;
GtkWidget *optmenu_senddialog;
GtkWidget *optmenu_charset;
GtkWidget *optmenu_encoding_method;
} SendPage;
static gchar * prefs_common_charset_set_data_from_optmenu(GtkWidget *widget)
{
GtkWidget *menu;
GtkWidget *menuitem;
gchar *charset;
menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(widget));
menuitem = gtk_menu_get_active(GTK_MENU(menu));
charset = g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID);
return g_strdup(charset);
}
static void prefs_common_charset_set_optmenu(GtkWidget *widget, gchar *data)
{
GtkOptionMenu *optmenu = GTK_OPTION_MENU(widget);
gint index;
g_return_if_fail(optmenu != NULL);
g_return_if_fail(data != NULL);
index = menu_find_option_menu_index(optmenu, data,
(GCompareFunc)strcmp2);
if (index >= 0)
gtk_option_menu_set_history(optmenu, index);
else
gtk_option_menu_set_history(optmenu, 0);
}
static TransferEncodingMethod prefs_common_encoding_set_data_from_optmenu(GtkWidget *widget)
{
GtkWidget *menu;
GtkWidget *menuitem;
menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(widget));
menuitem = gtk_menu_get_active(GTK_MENU(menu));
return GPOINTER_TO_INT
(g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
}
static void prefs_common_encoding_set_optmenu(GtkWidget *widget, TransferEncodingMethod method)
{
GtkOptionMenu *optmenu = GTK_OPTION_MENU(widget);
gint index;
g_return_if_fail(optmenu != NULL);
index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(method),
NULL);
if (index >= 0)
gtk_option_menu_set_history(optmenu, index);
else
gtk_option_menu_set_history(optmenu, 0);
}
void prefs_send_create_widget(PrefsPage *_page, GtkWindow *window,
gpointer data)
{
SendPage *prefs_send = (SendPage *) _page;
GtkWidget *vbox1;
GtkWidget *vbox2;
GtkWidget *hbox1;
GtkWidget *checkbtn_savemsg;
GtkWidget *label_outcharset;
GtkWidget *optmenu_charset;
GtkWidget *optmenu_menu;
GtkWidget *menuitem;
GtkTooltips *charset_tooltip;
GtkWidget *optmenu_encoding;
GtkWidget *label_encoding;
GtkTooltips *encoding_tooltip;
GtkWidget *label_senddialog;
GtkWidget *menu;
GtkWidget *optmenu_senddialog;
GtkWidget *hbox_senddialog;
vbox1 = gtk_vbox_new (FALSE, VSPACING);
gtk_widget_show (vbox1);
gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
vbox2 = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox2);
gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
_("Save sent messages to Sent folder"));
hbox_senddialog = gtk_hbox_new (FALSE, 8);
gtk_widget_show(hbox_senddialog);
gtk_box_pack_start (GTK_BOX (vbox1), hbox_senddialog, FALSE, FALSE, 0);
label_senddialog = gtk_label_new (_("Show send dialog"));
gtk_widget_show (label_senddialog);
gtk_box_pack_start (GTK_BOX (hbox_senddialog), label_senddialog, FALSE, FALSE, 0);
optmenu_senddialog = gtk_option_menu_new ();
gtk_widget_show (optmenu_senddialog);
gtk_box_pack_start (GTK_BOX (hbox_senddialog), optmenu_senddialog, FALSE, FALSE, 0);
menu = gtk_menu_new ();
MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
hbox1 = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox1);
gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
label_outcharset = gtk_label_new (_("Outgoing encoding"));
gtk_widget_show (label_outcharset);
gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
charset_tooltip = gtk_tooltips_new();
optmenu_charset = gtk_option_menu_new ();
gtk_widget_show (optmenu_charset);
gtk_tooltips_set_tip(GTK_TOOLTIPS(charset_tooltip), optmenu_charset,
_("If `Automatic' is selected, the optimal encoding"
" for the current locale will be used"),
NULL);
gtk_box_pack_start (GTK_BOX (hbox1), optmenu_charset, FALSE, FALSE, 0);
optmenu_menu = gtk_menu_new ();
#define SET_MENUITEM(str, data) \
{ \
MENUITEM_ADD(optmenu_menu, menuitem, str, data); \
}
SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
SET_MENUITEM(NULL, NULL);
SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
SET_MENUITEM(NULL, NULL);
SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
SET_MENUITEM(NULL, NULL);
SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
SET_MENUITEM(NULL, NULL);
SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
SET_MENUITEM(NULL, NULL);
SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
SET_MENUITEM(NULL, NULL);
SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
SET_MENUITEM(NULL, NULL);
SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
SET_MENUITEM(NULL, NULL);
SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
SET_MENUITEM(NULL, NULL);
SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
#if 0
SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
#endif /* 0 */
SET_MENUITEM(NULL, NULL);
SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
SET_MENUITEM(_("Simplified Chinese (GBK)"), CS_GBK);
SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
#if 0
SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
#endif /* 0 */
SET_MENUITEM(NULL, NULL);
SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
SET_MENUITEM(NULL, NULL);
SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_charset),
optmenu_menu);
hbox1 = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox1);
gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
hbox1 = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox1);
gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
label_encoding = gtk_label_new (_("Transfer encoding"));
gtk_widget_show (label_encoding);
gtk_box_pack_start (GTK_BOX (hbox1), label_encoding, FALSE, FALSE, 0);
encoding_tooltip = gtk_tooltips_new();
optmenu_encoding = gtk_option_menu_new ();
gtk_widget_show (optmenu_encoding);
gtk_tooltips_set_tip(GTK_TOOLTIPS(encoding_tooltip), optmenu_encoding,
_("Specify Content-Transfer-Encoding used when"
" message body contains non-ASCII characters"),
NULL);
gtk_box_pack_start (GTK_BOX (hbox1), optmenu_encoding, FALSE, FALSE, 0);
optmenu_menu = gtk_menu_new ();
SET_MENUITEM(_("Automatic"), CTE_AUTO);
SET_MENUITEM("base64", CTE_BASE64);
SET_MENUITEM("quoted-printable", CTE_QUOTED_PRINTABLE);
SET_MENUITEM("8bit", CTE_8BIT);
gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_encoding),
optmenu_menu);
hbox1 = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox1);
gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_savemsg),
prefs_common.savemsg);
gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu_senddialog),
prefs_common.send_dialog_mode);
prefs_common_charset_set_optmenu(optmenu_charset,
prefs_common.outgoing_charset);
prefs_common_encoding_set_optmenu(optmenu_encoding,
prefs_common.encoding_method);
prefs_send->window = GTK_WIDGET(window);
prefs_send->checkbtn_savemsg = checkbtn_savemsg;
prefs_send->optmenu_senddialog = optmenu_senddialog;
prefs_send->optmenu_charset = optmenu_charset;
prefs_send->optmenu_encoding_method = optmenu_encoding;
prefs_send->page.widget = vbox1;
}
void prefs_send_save(PrefsPage *_page)
{
SendPage *page = (SendPage *) _page;
GtkWidget *menu;
GtkWidget *menuitem;
prefs_common.savemsg = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_savemsg));
menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(page->optmenu_senddialog));
menuitem = gtk_menu_get_active(GTK_MENU(menu));
prefs_common.send_dialog_mode = GPOINTER_TO_INT
(g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
g_free(prefs_common.outgoing_charset);
prefs_common.outgoing_charset = prefs_common_charset_set_data_from_optmenu(
page->optmenu_charset);
prefs_common.encoding_method = prefs_common_encoding_set_data_from_optmenu(
page->optmenu_encoding_method);
}
static void prefs_send_destroy_widget(PrefsPage *_page)
{
}
SendPage *prefs_send;
void prefs_send_init(void)
{
SendPage *page;
static gchar *path[3];
path[0] = _("Mail Handling");
path[1] = _("Send");
path[2] = NULL;
page = g_new0(SendPage, 1);
page->page.path = path;
page->page.create_widget = prefs_send_create_widget;
page->page.destroy_widget = prefs_send_destroy_widget;
page->page.save_page = prefs_send_save;
page->page.weight = 195.0;
prefs_gtk_register_page((PrefsPage *) page);
prefs_send = page;
}
void prefs_send_done(void)
{
prefs_gtk_unregister_page((PrefsPage *) prefs_send);
g_free(prefs_send);
}

26
src/prefs_send.h Normal file
View file

@ -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_SEND_H
#define PREFS_SEND_H
void prefs_send_init (void);
void prefs_send_done (void);
#endif /* PREFS_SEND_H */

View file

@ -367,7 +367,7 @@ void prefs_spelling_init(void)
page->page.create_widget = prefs_spelling_create_widget;
page->page.destroy_widget = prefs_spelling_destroy_widget;
page->page.save_page = prefs_spelling_save;
page->page.weight = 50.0;
page->page.weight = 180.0;
prefs_gtk_register_page((PrefsPage *) page);
prefs_spelling = page;

View file

@ -35,6 +35,7 @@
#include "prefs_gtk.h"
#include "prefs_summary_column.h"
#include "gtk/menu.h"
#include "gtk/gtkutils.h"
#include "gtk/prefswindow.h"
@ -54,6 +55,14 @@ typedef struct _SummariesPage
GtkWidget *chkbtn_threadsubj;
GtkWidget *button_datefmt;
GtkWidget *entry_datefmt;
GtkWidget *checkbtn_always_show_msg;
GtkWidget *checkbtn_openunread;
GtkWidget *checkbtn_mark_as_read_on_newwin;
GtkWidget *checkbtn_openinbox;
GtkWidget *checkbtn_immedexec;
GtkWidget *optmenu_nextunreadmsgdialog;
} SummariesPage;
enum {
@ -121,7 +130,6 @@ static GtkWidget *date_format_create(GtkButton *button, void *data)
{ "%Z", NULL }
};
gchar *titles[2];
gint i;
const gint TIME_FORMAT_ELEMS =
sizeof time_format / sizeof time_format[0];
@ -288,6 +296,393 @@ static GtkWidget *date_format_create(GtkButton *button, void *data)
return datefmt_win;
}
static struct KeybindDialog {
GtkWidget *window;
GtkWidget *combo;
} keybind;
static void prefs_keybind_select (void);
static gint prefs_keybind_deleted (GtkWidget *widget,
GdkEventAny *event,
gpointer data);
static gboolean prefs_keybind_key_pressed (GtkWidget *widget,
GdkEventKey *event,
gpointer data);
static void prefs_keybind_cancel (void);
static void prefs_keybind_apply_clicked (GtkWidget *widget);
static void prefs_keybind_select(void)
{
GtkWidget *window;
GtkWidget *vbox1;
GtkWidget *hbox1;
GtkWidget *label;
GtkWidget *combo;
GtkWidget *confirm_area;
GtkWidget *ok_btn;
GtkWidget *cancel_btn;
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_container_set_border_width (GTK_CONTAINER (window), 8);
gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
gtk_window_set_modal (GTK_WINDOW (window), TRUE);
gtk_window_set_resizable(GTK_WINDOW (window), FALSE);
manage_window_set_transient (GTK_WINDOW (window));
vbox1 = gtk_vbox_new (FALSE, VSPACING);
gtk_container_add (GTK_CONTAINER (window), vbox1);
gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
hbox1 = gtk_hbox_new (FALSE, 8);
gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
label = gtk_label_new
(_("Select preset:"));
gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
hbox1 = gtk_hbox_new (FALSE, 8);
gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
combo = gtk_combo_new ();
gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
gtkut_combo_set_items (GTK_COMBO (combo),
_("Default"),
"Mew / Wanderlust",
"Mutt",
_("Old Sylpheed"),
NULL);
gtk_editable_set_editable(GTK_EDITABLE(GTK_COMBO (combo)->entry), FALSE);
hbox1 = gtk_hbox_new (FALSE, 8);
gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
label = gtk_label_new
(_("You can also modify each menu shortcut by pressing\n"
"any key(s) when placing the mouse pointer on the item."));
gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
hbox1 = gtk_hbox_new (FALSE, 8);
gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
gtkut_stock_button_set_create (&confirm_area, &ok_btn, GTK_STOCK_OK,
&cancel_btn, GTK_STOCK_CANCEL,
NULL, NULL);
gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
gtk_widget_grab_default (ok_btn);
MANAGE_WINDOW_SIGNALS_CONNECT(window);
g_signal_connect (G_OBJECT (window), "delete_event",
G_CALLBACK (prefs_keybind_deleted), NULL);
g_signal_connect (G_OBJECT (window), "key_press_event",
G_CALLBACK (prefs_keybind_key_pressed), NULL);
g_signal_connect (G_OBJECT (ok_btn), "clicked",
G_CALLBACK (prefs_keybind_apply_clicked),
NULL);
g_signal_connect (G_OBJECT (cancel_btn), "clicked",
G_CALLBACK (prefs_keybind_cancel),
NULL);
gtk_widget_show_all(window);
keybind.window = window;
keybind.combo = combo;
}
static gboolean prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
gpointer data)
{
if (event && event->keyval == GDK_Escape)
prefs_keybind_cancel();
return FALSE;
}
static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
gpointer data)
{
prefs_keybind_cancel();
return TRUE;
}
static void prefs_keybind_cancel(void)
{
gtk_widget_destroy(keybind.window);
keybind.window = NULL;
keybind.combo = NULL;
}
struct KeyBind {
const gchar *accel_path;
const gchar *accel_key;
};
static void prefs_keybind_apply(struct KeyBind keybind[], gint num)
{
gint i;
guint key;
GdkModifierType mods;
for (i = 0; i < num; i++) {
const gchar *accel_key
= keybind[i].accel_key ? keybind[i].accel_key : "";
gtk_accelerator_parse(accel_key, &key, &mods);
gtk_accel_map_change_entry(keybind[i].accel_path,
key, mods, TRUE);
}
}
static void prefs_keybind_apply_clicked(GtkWidget *widget)
{
GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
const gchar *text;
struct KeyBind *menurc;
gint n_menurc;
static struct KeyBind default_menurc[] = {
{"<Main>/File/Empty all Trash folders", ""},
{"<Main>/File/Save as...", "<control>S"},
{"<Main>/File/Print...", ""},
{"<Main>/File/Exit", "<control>Q"},
{"<Main>/Edit/Copy", "<control>C"},
{"<Main>/Edit/Select all", "<control>A"},
{"<Main>/Edit/Find in current message...", "<control>F"},
{"<Main>/Edit/Search folder...", "<shift><control>F"},
{"<Main>/View/Show or hide/Message View", "V"},
{"<Main>/View/Thread view", "<control>T"},
{"<Main>/View/Go to/Prev message", "P"},
{"<Main>/View/Go to/Next message", "N"},
{"<Main>/View/Go to/Prev unread message", "<shift>P"},
{"<Main>/View/Go to/Next unread message", "<shift>N"},
{"<Main>/View/Go to/Other folder...", "G"},
{"<Main>/View/Open in new window", "<control><alt>N"},
{"<Main>/View/Message source", "<control>U"},
{"<Main>/View/Show all headers", "<control>H"},
{"<Main>/View/Update summary", "<control><alt>U"},
{"<Main>/Message/Receive/Get from current account",
"<control>I"},
{"<Main>/Message/Receive/Get from all accounts","<shift><control>I"},
{"<Main>/Message/Compose an email message", "<control>M"},
{"<Main>/Message/Reply", "<control>R"},
{"<Main>/Message/Reply to/all", "<shift><control>R"},
{"<Main>/Message/Reply to/sender", ""},
{"<Main>/Message/Reply to/mailing list", "<control>L"},
{"<Main>/Message/Forward", "<control><alt>F"},
/* {"<Main>/Message/Forward as attachment", ""}, */
{"<Main>/Message/Move...", "<control>O"},
{"<Main>/Message/Copy...", "<shift><control>O"},
{"<Main>/Message/Delete", "<control>D"},
{"<Main>/Message/Mark/Mark", "<shift>asterisk"},
{"<Main>/Message/Mark/Unmark", "U"},
{"<Main>/Message/Mark/Mark as unread", "<shift>exclam"},
{"<Main>/Message/Mark/Mark as read", ""},
{"<Main>/Tools/Address book", "<shift><control>A"},
{"<Main>/Tools/Execute", "X"},
{"<Main>/Tools/Log window", "<shift><control>L"},
{"<Compose>/Message/Close", "<control>W"},
{"<Compose>/Edit/Select all", "<control>A"},
{"<Compose>/Edit/Advanced/Move a word backward", ""},
{"<Compose>/Edit/Advanced/Move a word forward", ""},
{"<Compose>/Edit/Advanced/Move to beginning of line", ""},
{"<Compose>/Edit/Advanced/Delete a word backward", ""},
{"<Compose>/Edit/Advanced/Delete a word forward", ""},
};
static struct KeyBind mew_wl_menurc[] = {
{"<Main>/File/Empty all Trash folders", "<shift>D"},
{"<Main>/File/Save as...", "Y"},
{"<Main>/File/Print...", "<shift>numbersign"},
{"<Main>/File/Exit", "<shift>Q"},
{"<Main>/Edit/Copy", "<control>C"},
{"<Main>/Edit/Select all", "<control>A"},
{"<Main>/Edit/Find in current message...", "<control>F"},
{"<Main>/Edit/Search folder...", "<control>S"},
{"<Main>/View/Show or hide/Message View", ""},
{"<Main>/View/Thread view", "<shift>T"},
{"<Main>/View/Go to/Prev message", "P"},
{"<Main>/View/Go to/Next message", "N"},
{"<Main>/View/Go to/Prev unread message", "<shift>P"},
{"<Main>/View/Go to/Next unread message", "<shift>N"},
{"<Main>/View/Go to/Other folder...", "G"},
{"<Main>/View/Open in new window", "<control><alt>N"},
{"<Main>/View/Message source", "<control>U"},
{"<Main>/View/Show all headers", "<shift>H"},
{"<Main>/View/Update summary", "<shift>S"},
{"<Main>/Message/Receive/Get from current account",
"<control>I"},
{"<Main>/Message/Receive/Get from all accounts","<shift><control>I"},
{"<Main>/Message/Compose an email message", "W"},
{"<Main>/Message/Reply", "<control>R"},
{"<Main>/Message/Reply to/all", "<shift>A"},
{"<Main>/Message/Reply to/sender", ""},
{"<Main>/Message/Reply to/mailing list", "<control>L"},
{"<Main>/Message/Forward", "F"},
/* {"<Main>/Message/Forward as attachment", "<shift>F"}, */
{"<Main>/Message/Move...", "O"},
{"<Main>/Message/Copy...", "<shift>O"},
{"<Main>/Message/Delete", "D"},
{"<Main>/Message/Mark/Mark", "<shift>asterisk"},
{"<Main>/Message/Mark/Unmark", "U"},
{"<Main>/Message/Mark/Mark as unread", "<shift>exclam"},
{"<Main>/Message/Mark/Mark as read", "<shift>R"},
{"<Main>/Tools/Address book", "<shift><control>A"},
{"<Main>/Tools/Execute", "X"},
{"<Main>/Tools/Log window", "<shift><control>L"},
{"<Compose>/Message/Close", "<alt>W"},
{"<Compose>/Edit/Select all", ""},
{"<Compose>/Edit/Advanced/Move a word backward," "<alt>B"},
{"<Compose>/Edit/Advanced/Move a word forward", "<alt>F"},
{"<Compose>/Edit/Advanced/Move to beginning of line", "<control>A"},
{"<Compose>/Edit/Advanced/Delete a word backward", "<control>W"},
{"<Compose>/Edit/Advanced/Delete a word forward", "<alt>D"},
};
static struct KeyBind mutt_menurc[] = {
{"<Main>/File/Empty all Trash folders", ""},
{"<Main>/File/Save as...", "S"},
{"<Main>/File/Print...", "P"},
{"<Main>/File/Exit", "Q"},
{"<Main>/Edit/Copy", "<control>C"},
{"<Main>/Edit/Select all", "<control>A"},
{"<Main>/Edit/Find in current message...", "<control>F"},
{"<Main>/Edit/Search messages...", "slash"},
{"<Main>/View/Show or hide/Message view", "V"},
{"<Main>/View/Thread view", "<control>T"},
{"<Main>/View/Go to/Prev message", ""},
{"<Main>/View/Go to/Next message", ""},
{"<Main>/View/Go to/Prev unread message", ""},
{"<Main>/View/Go to/Next unread message", ""},
{"<Main>/View/Go to/Other folder...", "C"},
{"<Main>/View/Open in new window", "<control><alt>N"},
{"<Main>/View/Message source", "<control>U"},
{"<Main>/View/Show all headers", "<control>H"},
{"<Main>/View/Update summary", "<control><alt>U"},
{"<Main>/Message/Receive/Get from current account",
"<control>I"},
{"<Main>/Message/Receive/Get from all accounts","<shift><control>I"},
{"<Main>/Message/Compose an email message", "M"},
{"<Main>/Message/Reply", "R"},
{"<Main>/Message/Reply to/all", "G"},
{"<Main>/Message/Reply to/sender", ""},
{"<Main>/Message/Reply to/mailing list", "<control>L"},
{"<Main>/Message/Forward", "F"},
{"<Main>/Message/Forward as attachment", ""},
{"<Main>/Message/Move...", "<control>O"},
{"<Main>/Message/Copy...", "<shift>C"},
{"<Main>/Message/Delete", "D"},
{"<Main>/Message/Mark/Mark", "<shift>F"},
{"<Main>/Message/Mark/Unmark", "U"},
{"<Main>/Message/Mark/Mark as unread", "<shift>N"},
{"<Main>/Message/Mark/Mark as read", ""},
{"<Main>/Tools/Address book", "<shift><control>A"},
{"<Main>/Tools/Execute", "X"},
{"<Main>/Tools/Log window", "<shift><control>L"},
{"<Compose>/Message/Close", "<alt>W"},
{"<Compose>/Edit/Select all", ""},
{"<Compose>/Edit/Advanced/Move a word backward", "<alt>B"},
{"<Compose>/Edit/Advanced/Move a word forward", "<alt>F"},
{"<Compose>/Edit/Advanced/Move to beginning of line", "<control>A"},
{"<Compose>/Edit/Advanced/Delete a word backward", "<control>W"},
{"<Compose>/Edit/Advanced/Delete a word forward", "<alt>D"},
};
static struct KeyBind old_sylpheed_menurc[] = {
{"<Main>/File/Empty all Trash folders", ""},
{"<Main>/File/Save as...", ""},
{"<Main>/File/Print...", "<alt>P"},
{"<Main>/File/Exit", "<alt>Q"},
{"<Main>/Edit/Copy", "<control>C"},
{"<Main>/Edit/Select all", "<control>A"},
{"<Main>/Edit/Find in current message...", "<control>F"},
{"<Main>/Edit/Search folder...", "<control>S"},
{"<Main>/View/Show or hide/Message View", ""},
{"<Main>/View/Thread view", "<control>T"},
{"<Main>/View/Go to/Prev message", "P"},
{"<Main>/View/Go to/Next message", "N"},
{"<Main>/View/Go to/Prev unread message", "<shift>P"},
{"<Main>/View/Go to/Next unread message", "<shift>N"},
{"<Main>/View/Go to/Other folder...", "<alt>G"},
{"<Main>/View/Open in new window", "<shift><control>N"},
{"<Main>/View/Message source", "<control>U"},
{"<Main>/View/Show all headers", "<control>H"},
{"<Main>/View/Update summary", "<alt>U"},
{"<Main>/Message/Receive/Get from current account",
"<alt>I"},
{"<Main>/Message/Receive/Get from all accounts","<shift><alt>I"},
{"<Main>/Message/Compose an email message", "<alt>N"},
{"<Main>/Message/Reply", "<alt>R"},
{"<Main>/Message/Reply to/all", "<shift><alt>R"},
{"<Main>/Message/Reply to/sender", "<control><alt>R"},
{"<Main>/Message/Reply to/mailing list", "<control>L"},
{"<Main>/Message/Forward", "<shift><alt>F"},
/* "(menu-path \"<Main>/Message/Forward as attachment", "<shift><control>F"}, */
{"<Main>/Message/Move...", "<alt>O"},
{"<Main>/Message/Copy...", ""},
{"<Main>/Message/Delete", "<alt>D"},
{"<Main>/Message/Mark/Mark", "<shift>asterisk"},
{"<Main>/Message/Mark/Unmark", "U"},
{"<Main>/Message/Mark/Mark as unread", "<shift>exclam"},
{"<Main>/Message/Mark/Mark as read", ""},
{"<Main>/Tools/Address book", "<alt>A"},
{"<Main>/Tools/Execute", "<alt>X"},
{"<Main>/Tools/Log window", "<alt>L"},
{"<Compose>/Message/Close", "<alt>W"},
{"<Compose>/Edit/Select all", ""},
{"<Compose>/Edit/Advanced/Move a word backward", "<alt>B"},
{"<Compose>/Edit/Advanced/Move a word forward", "<alt>F"},
{"<Compose>/Edit/Advanced/Move to beginning of line", "<control>A"},
{"<Compose>/Edit/Advanced/Delete a word backward", "<control>W"},
{"<Compose>/Edit/Advanced/Delete a word forward", "<alt>D"},
};
text = gtk_entry_get_text(entry);
if (!strcmp(text, _("Default"))) {
menurc = default_menurc;
n_menurc = G_N_ELEMENTS(default_menurc);
} else if (!strcmp(text, "Mew / Wanderlust")) {
menurc = mew_wl_menurc;
n_menurc = G_N_ELEMENTS(mew_wl_menurc);
} else if (!strcmp(text, "Mutt")) {
menurc = mutt_menurc;
n_menurc = G_N_ELEMENTS(mutt_menurc);
} else if (!strcmp(text, _("Old Sylpheed"))) {
menurc = old_sylpheed_menurc;
n_menurc = G_N_ELEMENTS(old_sylpheed_menurc);
} else {
return;
}
/* prefs_keybind_apply(empty_menurc, G_N_ELEMENTS(empty_menurc)); */
prefs_keybind_apply(menurc, n_menurc);
gtk_widget_destroy(keybind.window);
keybind.window = NULL;
keybind.combo = NULL;
}
void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
gpointer data)
{
@ -311,6 +706,19 @@ void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
GtkWidget *entry_datefmt;
GtkWidget *button_dispitem;
GtkWidget *checkbtn_always_show_msg;
GtkWidget *checkbtn_openunread;
GtkWidget *checkbtn_mark_as_read_on_newwin;
GtkWidget *checkbtn_openinbox;
GtkWidget *checkbtn_immedexec;
GtkTooltips *immedexec_tooltip;
GtkWidget *label;
GtkWidget *menu;
GtkWidget *menuitem;
GtkWidget *button_keybind;
GtkWidget *hbox_nextunreadmsgdialog;
GtkWidget *optmenu_nextunreadmsgdialog;
vbox1 = gtk_vbox_new (FALSE, VSPACING);
gtk_widget_show (vbox1);
gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
@ -406,6 +814,83 @@ void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
G_CALLBACK (prefs_summary_column_open),
NULL);
vbox2 = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox2);
gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
/* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
_("Emulate the behavior of mouse operation of\n"
"Emacs-based mailer"));
gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
GTK_JUSTIFY_LEFT); */
PACK_CHECK_BUTTON
(vbox2, checkbtn_always_show_msg,
_("Always open messages in summary when selected"));
PACK_CHECK_BUTTON
(vbox2, checkbtn_openunread,
_("Open first unread message when entering a folder"));
PACK_CHECK_BUTTON
(vbox2, checkbtn_mark_as_read_on_newwin,
_("Only mark message as read when opened in new window"));
PACK_CHECK_BUTTON
(vbox2, checkbtn_openinbox,
_("Go to inbox after receiving new mail"));
vbox3 = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox3);
gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
immedexec_tooltip = gtk_tooltips_new();
PACK_CHECK_BUTTON
(vbox3, checkbtn_immedexec,
_("Execute immediately when moving or deleting messages"));
gtk_tooltips_set_tip(GTK_TOOLTIPS(immedexec_tooltip), checkbtn_immedexec,
_("Messages will be marked until execution"
" if this is turned off"),
NULL);
hbox1 = gtk_hbox_new (FALSE, 0);
gtk_widget_show (hbox1);
gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
/* Next Unread Message Dialog */
hbox_nextunreadmsgdialog = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox_nextunreadmsgdialog);
gtk_box_pack_start (GTK_BOX (vbox1), hbox_nextunreadmsgdialog, FALSE, FALSE, 0);
label = gtk_label_new (_("Show no-unread-message dialog"));
gtk_widget_show (label);
gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), label, FALSE, FALSE, 8);
optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
gtk_widget_show (optmenu_nextunreadmsgdialog);
gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), optmenu_nextunreadmsgdialog, FALSE, FALSE, 8);
menu = gtk_menu_new ();
MENUITEM_ADD (menu, menuitem, _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
MENUITEM_ADD (menu, menuitem, _("Assume 'Yes'"),
NEXTUNREADMSGDIALOG_ASSUME_YES);
MENUITEM_ADD (menu, menuitem, _("Assume 'No'"),
NEXTUNREADMSGDIALOG_ASSUME_NO);
gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog), menu);
hbox1 = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox1);
gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
gtk_widget_show (button_keybind);
gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
g_signal_connect (G_OBJECT (button_keybind), "clicked",
G_CALLBACK (prefs_keybind_select), NULL);
prefs_summaries->window = GTK_WIDGET(window);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chkbtn_transhdr),
@ -423,6 +908,20 @@ void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
gtk_entry_set_text(GTK_ENTRY(entry_datefmt),
prefs_common.date_format?prefs_common.date_format:"");
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_always_show_msg),
prefs_common.always_show_msg);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_openunread),
prefs_common.open_unread_on_enter);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_mark_as_read_on_newwin),
prefs_common.mark_as_read_on_new_window);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_openinbox),
prefs_common.open_inbox_on_inc);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_immedexec),
prefs_common.immediate_exec);
gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu_nextunreadmsgdialog),
prefs_common.next_unread_msg_dialog);
prefs_summaries->chkbtn_transhdr = chkbtn_transhdr;
prefs_summaries->chkbtn_folder_unread = chkbtn_folder_unread;
prefs_summaries->spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
@ -431,12 +930,21 @@ void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
prefs_summaries->chkbtn_threadsubj = chkbtn_threadsubj;
prefs_summaries->entry_datefmt = entry_datefmt;
prefs_summaries->checkbtn_always_show_msg = checkbtn_always_show_msg;
prefs_summaries->checkbtn_openunread = checkbtn_openunread;
prefs_summaries->checkbtn_mark_as_read_on_newwin = checkbtn_mark_as_read_on_newwin;
prefs_summaries->checkbtn_openinbox = checkbtn_openinbox;
prefs_summaries->checkbtn_immedexec = checkbtn_immedexec;
prefs_summaries->optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
prefs_summaries->page.widget = vbox1;
}
void prefs_summaries_save(PrefsPage *_page)
{
SummariesPage *page = (SummariesPage *) _page;
GtkWidget *menu;
GtkWidget *menuitem;
prefs_common.trans_hdr = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->chkbtn_transhdr));
@ -454,6 +962,22 @@ void prefs_summaries_save(PrefsPage *_page)
g_free(prefs_common.date_format);
prefs_common.date_format = gtk_editable_get_chars(
GTK_EDITABLE(page->entry_datefmt), 0, -1);
prefs_common.always_show_msg = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_always_show_msg));
prefs_common.open_unread_on_enter = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_openunread));
prefs_common.mark_as_read_on_new_window = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_mark_as_read_on_newwin));
prefs_common.open_inbox_on_inc = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_openinbox));
prefs_common.immediate_exec = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_immedexec));
menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(page->optmenu_nextunreadmsgdialog));
menuitem = gtk_menu_get_active(GTK_MENU(menu));
prefs_common.next_unread_msg_dialog = GPOINTER_TO_INT
(g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
}
static void prefs_summaries_destroy_widget(PrefsPage *_page)
@ -476,7 +1000,7 @@ void prefs_summaries_init(void)
page->page.create_widget = prefs_summaries_create_widget;
page->page.destroy_widget = prefs_summaries_destroy_widget;
page->page.save_page = prefs_summaries_save;
page->page.weight = 60.0;
page->page.weight = 140.0;
prefs_gtk_register_page((PrefsPage *) page);
prefs_summaries = page;
}

View file

@ -127,7 +127,7 @@ static gboolean prefs_summary_column_key_pressed(GtkWidget *widget,
static GtkListStore *prefs_summary_column_create_store (void);
static gint prefs_summary_column_insert_column (GtkListStore *store,
static void prefs_summary_column_insert_column (GtkListStore *store,
gint row,
const gchar *name,
SummaryColumnType type);
@ -421,7 +421,6 @@ static void prefs_summary_column_set_dialog(SummaryColumnState *state)
state = prefs_summary_column_get_config();
for (pos = 0; pos < N_SUMMARY_COLS; pos++) {
gint row;
type = state[pos].type;
name = gettext(col_name[type]);
@ -668,7 +667,7 @@ static GtkListStore *prefs_summary_column_create_store(void)
-1);
}
static gint prefs_summary_column_insert_column(GtkListStore *store,
static void prefs_summary_column_insert_column(GtkListStore *store,
gint row,
const gchar *name,
SummaryColumnType type)
@ -687,8 +686,7 @@ static gint prefs_summary_column_insert_column(GtkListStore *store,
SUMCOL_NAME, name,
SUMCOL_TYPE, type,
-1);
return -1 + gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store),
NULL);
return;
} else {
/* change existing */
gtk_list_store_set(store, &iter,
@ -774,7 +772,6 @@ static void drag_data_get(GtkTreeView *tree_view, GdkDragContext *context,
GtkSelectionData *data, guint info,
guint time, GtkTreeModel *model)
{
GtkWidget *source;
GtkTreeIter iter;
SummaryColumnType type;
GtkTreeModel *source_model;
@ -803,7 +800,6 @@ static void drag_data_received(GtkTreeView *tree_view, GdkDragContext *context,
GtkTreePath *dst = NULL, *sel = NULL;
GtkTreeIter isel, idst;
GtkTreeViewDropPosition pos;
gboolean before;
SummaryColumnType type;
GtkTreeModel *sel_model;
gchar *name;

View file

@ -304,8 +304,6 @@ static void prefs_template_window_setup(void)
{
GSList *tmpl_list;
GSList *cur;
gchar *title[1];
gint row;
Template *tmpl;
GtkListStore *store;
@ -448,7 +446,6 @@ static GSList *prefs_template_get_list(void)
static void prefs_template_list_view_set_row(GtkTreeIter *row)
{
Template *tmpl;
Template *tmp_tmpl;
gchar *name;
gchar *subject;
gchar *to;

View file

@ -347,7 +347,7 @@ void prefs_themes_init(void)
page->page.create_widget = prefs_themes_create_widget;
page->page.destroy_widget = prefs_themes_destroy_widget;
page->page.save_page = prefs_themes_save;
page->page.weight = 15.0;
page->page.weight = 130.0;
prefs_gtk_register_page((PrefsPage *) page);
tdata->page = page;

View file

@ -879,6 +879,7 @@ void prefs_toolbar_init(void)
page->page.destroy_widget = prefs_toolbar_destroy_widget;
page->page.save_page = prefs_toolbar_save;
page->source = TOOLBAR_MAIN;
page->page.weight = 50.0;
prefs_gtk_register_page((PrefsPage *) page);
prefs_toolbar_mainwindow = page;
@ -892,6 +893,7 @@ void prefs_toolbar_init(void)
page->page.destroy_widget = prefs_toolbar_destroy_widget;
page->page.save_page = prefs_toolbar_save;
page->source = TOOLBAR_MSGVIEW;
page->page.weight = 45.0;
prefs_gtk_register_page((PrefsPage *) page);
prefs_toolbar_messageview = page;
@ -905,6 +907,7 @@ void prefs_toolbar_init(void)
page->page.destroy_widget = prefs_toolbar_destroy_widget;
page->page.save_page = prefs_toolbar_save;
page->source = TOOLBAR_COMPOSE;
page->page.weight = 40.0;
prefs_gtk_register_page((PrefsPage *) page);
prefs_toolbar_composewindow = page;
}
@ -1099,7 +1102,6 @@ static gboolean icon_list_selected(GtkTreeSelection *selector,
ToolbarPage *prefs_toolbar)
{
GtkTreeIter iter;
GtkTreeView *list_ico = gtk_tree_selection_get_tree_view(selector);
gchar *text;
if (currently_selected ||!gtk_tree_model_get_iter(model, &iter, path))
@ -1135,7 +1137,6 @@ static gboolean set_list_selected(GtkTreeSelection *selector,
{
GtkTreeIter iter;
GtkTreeView *list_ico = GTK_TREE_VIEW(prefs_toolbar->list_view_icons);
GtkTreeView *list_set = GTK_TREE_VIEW(prefs_toolbar->list_view_set);
gchar *syl_act = toolbar_ret_descr_from_val(A_SYL_ACTIONS);
gchar *file, *icon_text, *descr;
GList *cur;

View file

@ -161,7 +161,7 @@ void prefs_wrapping_init(void)
page->page.create_widget = prefs_wrapping_create_widget;
page->page.destroy_widget = prefs_wrapping_destroy_widget;
page->page.save_page = prefs_wrapping_save;
page->page.weight = 60.0;
page->page.weight = 182.0;
prefs_gtk_register_page((PrefsPage *) page);
prefs_wrapping = page;
}

View file

@ -340,10 +340,6 @@ gboolean procmime_decode_content(MimeInfo *mimeinfo)
tmpfp);
got_error = TRUE;
continue;
} else if (len >= 0) {
/* print out the error message only once
* per block */
got_error = FALSE;
}
fwrite(outbuf, sizeof(gchar), len, tmpfp);
}
@ -404,7 +400,7 @@ gboolean procmime_decode_content(MimeInfo *mimeinfo)
gboolean procmime_encode_content(MimeInfo *mimeinfo, EncodingType encoding)
{
FILE *infp, *outfp;
FILE *infp = NULL, *outfp;
gint len;
gchar *tmpfilename;
struct stat statbuf;
@ -745,7 +741,6 @@ FILE *procmime_get_text_content(MimeInfo *mimeinfo)
}
dup2(oldout, 1);
#warning FIXME_GTK2 HTML/RTF not yet utf8
/* CodeConverter seems to have no effect here */
} else if (mimeinfo->type == MIMETYPE_TEXT && !g_ascii_strcasecmp(mimeinfo->subtype, "html")) {
HTMLParser *parser;
@ -921,7 +916,7 @@ gchar *procmime_get_mime_type(const gchar *filename)
static GHashTable *mime_type_table = NULL;
MimeType *mime_type;
const gchar *p;
gchar *ext;
gchar *ext = NULL;
gchar *base;
if (!mime_type_table) {
@ -2081,7 +2076,6 @@ gint procmime_write_mimeinfo(MimeInfo *mimeinfo, FILE *fp)
gchar *procmime_get_part_file_name(MimeInfo *mimeinfo)
{
gchar *base;
const gchar *base_;
if ((mimeinfo->type == MIMETYPE_TEXT) && !g_ascii_strcasecmp(mimeinfo->subtype, "html"))
base = g_strdup("mimetmp.html");

View file

@ -726,7 +726,7 @@ parse_again:
nothing_to_sort = TRUE;
cur = orig;
while (cur) {
gchar *file;
gchar *file = NULL;
PrefsAccount *ac = procmsg_get_account_from_file(file);
msg = (MsgInfo *)cur->data;
file = folder_item_fetch_msg(queue, msg->msgnum);
@ -774,7 +774,6 @@ static gboolean procmsg_is_last_for_account(FolderItem *queue, MsgInfo *msginfo,
g_free(file);
for (cur = elem; cur; cur = cur->next) {
MsgInfo *cur_msginfo = (MsgInfo *)cur->data;
PrefsAccount *cur_ac = NULL;
file = folder_item_fetch_msg(queue, cur_msginfo->msgnum);
if (cur_msginfo != msginfo && !MSG_IS_LOCKED(cur_msginfo->flags)) {
@ -1154,6 +1153,7 @@ void procmsg_msginfo_free(MsgInfo *msginfo)
guint procmsg_msginfo_memusage(MsgInfo *msginfo)
{
guint memusage = 0;
GSList *refs;
memusage += sizeof(MsgInfo);
if (msginfo->fromname)
@ -1180,11 +1180,10 @@ guint procmsg_msginfo_memusage(MsgInfo *msginfo)
memusage += strlen(msginfo->dispositionnotificationto);
if (msginfo->returnreceiptto)
memusage += strlen(msginfo->returnreceiptto);
#warning FIXME: Calculate size of references list
#if 0
if (msginfo->references)
memusage += strlen(msginfo->references);
#endif
for (refs = msginfo->references; refs; refs=refs->next) {
gchar *r = (gchar *)refs->data;
memusage += r?strlen(r):0;
}
if (msginfo->fromspace)
memusage += strlen(msginfo->fromspace);
@ -1835,7 +1834,7 @@ MsgInfo *procmsg_msginfo_new_from_mimeinfo(MsgInfo *src_msginfo, MimeInfo *mimei
gchar *tmpfile = get_tmp_file();
str_write_to_file(mimeinfo->data.mem, tmpfile);
g_free(mimeinfo->data.mem);
mimeinfo->content == MIMECONTENT_FILE;
mimeinfo->content = MIMECONTENT_FILE;
mimeinfo->data.filename = g_strdup(tmpfile);
g_free(tmpfile);
}

View file

@ -40,5 +40,9 @@ gint send_message_local (const gchar *command,
gint send_message_smtp (PrefsAccount *ac_prefs,
GSList *to_list,
FILE *fp);
gint send_message_smtp_full (PrefsAccount *ac_prefs,
GSList *to_list,
FILE *fp,
gboolean keep_session);
#endif /* __SEND_H__ */

View file

@ -329,9 +329,7 @@ static void ssl_manager_double_clicked(GtkTreeView *list_view,
gpointer data)
{
SSLCertificate *cert;
gchar *cmd;
GtkTreeIter iter;
gboolean is_valid;
GtkTreeModel *model = gtk_tree_view_get_model(list_view);
if (!gtk_tree_model_get_iter(model, &iter, path))
@ -355,11 +353,9 @@ static void ssl_manager_delete_cb(GtkWidget *widget,
gpointer data)
{
SSLCertificate *cert;
GList *rowlist;
int val;
GtkTreeIter sel;
GtkTreeModel *model;
gchar *action;
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection
(GTK_TREE_VIEW(manager.certlist)),
@ -387,11 +383,8 @@ static void ssl_manager_view_cb(GtkWidget *widget,
gpointer data)
{
SSLCertificate *cert;
GList *rowlist;
int val;
GtkTreeIter sel;
GtkTreeModel *model;
gchar *action;
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection
(GTK_TREE_VIEW(manager.certlist)),

View file

@ -316,7 +316,6 @@ static void summary_search_execute(gboolean backward, gboolean search_all)
gboolean body_matched;
const gchar *from_str, *to_str, *subject_str, *body_str;
StrFindFunc str_find_func;
gboolean valid;
if (summary_is_locked(summaryview)) return;
summary_lock(summaryview);

View file

@ -48,6 +48,7 @@
#include "main.h"
#include "menu.h"
#include "mbox.h"
#include "mainwindow.h"
#include "folderview.h"
#include "summaryview.h"

View file

@ -444,8 +444,6 @@ void textview_show_message(TextView *textview, MimeInfo *mimeinfo,
void textview_show_part(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
{
GtkTextView *text;
g_return_if_fail(mimeinfo != NULL);
g_return_if_fail(fp != NULL);
@ -2091,8 +2089,6 @@ static gboolean textview_uri_button_pressed(GtkTextTag *tag, GObject *obj,
{
GdkEventButton *bevent;
RemoteURI *uri = NULL;
GSList *cur;
gchar *trimmed_uri;
if (!event)
return FALSE;

View file

@ -181,20 +181,6 @@ static GtkWidget* create_page (WizardWindow *wizard, const char * title)
return vbox;
}
static GtkWidget*
create_page_with_text (WizardWindow *wizard, const char * title,
const char * text)
{
GtkWidget *label;
GtkWidget *page;
page = create_page (wizard, title);
label = gtk_label_new (text);
gtk_box_pack_start (GTK_BOX(page), label, TRUE, TRUE, 0);
return page;
}
#define GTK_TABLE_ADD_ROW_AT(table,text,entry,i) { \
GtkWidget *label = gtk_label_new(text); \
gtk_table_attach(GTK_TABLE(table), label, \