2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2003 Hiroyuki Yamamoto
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
28 #include <gdk/gdkkeysyms.h>
33 #include <sys/types.h>
39 #include "prefs_gtk.h"
40 #include "prefs_common.h"
41 #include "prefs_display_header.h"
42 #include "prefs_summary_column.h"
43 #include "mainwindow.h"
44 #include "summaryview.h"
45 #include "messageview.h"
46 #include "manage_window.h"
52 #include "alertpanel.h"
56 #include "folderview.h"
57 #include "stock_pixmap.h"
58 #include "quote_fmt.h"
60 PrefsCommon prefs_common;
62 static PrefsDialog dialog;
64 static struct Receive {
65 GtkWidget *checkbtn_incext;
66 GtkWidget *entry_incext;
67 GtkWidget *button_incext;
69 GtkWidget *checkbtn_local;
70 GtkWidget *checkbtn_filter_on_inc;
71 GtkWidget *entry_spool;
73 GtkWidget *checkbtn_autochk;
74 GtkWidget *spinbtn_autochk;
75 GtkObject *spinbtn_autochk_adj;
77 GtkWidget *checkbtn_chkonstartup;
78 GtkWidget *checkbtn_scan_after_inc;
81 GtkWidget *checkbtn_newmail_auto;
82 GtkWidget *checkbtn_newmail_manu;
83 GtkWidget *entry_newmail_notify_cmd;
84 GtkWidget *hbox_newmail_notify;
85 GtkWidget *optmenu_recvdialog;
86 GtkWidget *checkbtn_no_recv_err_panel;
87 GtkWidget *checkbtn_close_recv_dialog;
91 GtkWidget *checkbtn_extsend;
92 GtkWidget *entry_extsend;
93 GtkWidget *button_extsend;
95 GtkWidget *checkbtn_savemsg;
96 GtkWidget *checkbtn_queuemsg;
97 GtkWidget *optmenu_senddialog;
99 GtkWidget *optmenu_charset;
100 GtkWidget *optmenu_encoding_method;
103 static struct Compose {
104 GtkWidget *entry_fw_quotemark;
105 GtkWidget *text_fw_quotefmt;
107 GtkWidget *checkbtn_autoextedit;
108 GtkWidget *spinbtn_undolevel;
109 GtkObject *spinbtn_undolevel_adj;
110 GtkWidget *spinbtn_linewrap;
111 GtkObject *spinbtn_linewrap_adj;
112 GtkWidget *checkbtn_wrapquote;
113 GtkWidget *checkbtn_autowrap;
114 GtkWidget *checkbtn_wrapatsend;
116 GtkWidget *checkbtn_reply_account_autosel;
117 GtkWidget *checkbtn_forward_account_autosel;
118 GtkWidget *checkbtn_reedit_account_autosel;
119 GtkWidget *checkbtn_quote;
120 GtkWidget *checkbtn_default_reply_list;
121 GtkWidget *checkbtn_forward_as_attachment;
122 GtkWidget *checkbtn_redirect_keep_from;
123 GtkWidget *checkbtn_smart_wrapping;
124 GtkWidget *checkbtn_block_cursor;
125 GtkWidget *checkbtn_reply_with_quote;
127 GtkWidget *checkbtn_autosave;
128 GtkWidget *entry_autosave_length;
131 static struct Quote {
132 GtkWidget *entry_quotemark;
133 GtkWidget *text_quotefmt;
135 GtkWidget *entry_fw_quotemark;
136 GtkWidget *text_fw_quotefmt;
138 GtkWidget *entry_quote_chars;
141 static struct Display {
142 GtkWidget *entry_textfont;
143 GtkWidget *button_textfont;
145 GtkWidget *entry_smallfont;
146 GtkWidget *entry_normalfont;
147 GtkWidget *entry_boldfont;
149 GtkWidget *chkbtn_folder_unread;
150 GtkWidget *entry_ng_abbrev_len;
151 GtkWidget *spinbtn_ng_abbrev_len;
152 GtkObject *spinbtn_ng_abbrev_len_adj;
154 GtkWidget *chkbtn_transhdr;
156 GtkWidget *chkbtn_swapfrom;
157 GtkWidget *chkbtn_useaddrbook;
158 GtkWidget *chkbtn_threadsubj;
159 GtkWidget *entry_datefmt;
162 static struct Message {
163 GtkWidget *chkbtn_enablecol;
164 GtkWidget *button_edit_col;
165 GtkWidget *chkbtn_mbalnum;
166 GtkWidget *chkbtn_disphdrpane;
167 GtkWidget *chkbtn_disphdr;
168 GtkWidget *spinbtn_linespc;
169 GtkObject *spinbtn_linespc_adj;
170 GtkWidget *chkbtn_headspc;
172 GtkWidget *chkbtn_smoothscroll;
173 GtkWidget *spinbtn_scrollstep;
174 GtkObject *spinbtn_scrollstep_adj;
175 GtkWidget *chkbtn_halfpage;
177 GtkWidget *chkbtn_attach_desc;
181 static struct Privacy {
182 GtkWidget *checkbtn_auto_check_signatures;
183 GtkWidget *checkbtn_gpg_signature_popup;
184 GtkWidget *checkbtn_store_passphrase;
185 GtkWidget *spinbtn_store_passphrase;
186 GtkObject *spinbtn_store_passphrase_adj;
187 GtkWidget *checkbtn_passphrase_grab;
188 GtkWidget *checkbtn_gpg_warning;
192 static struct Interface {
193 /* GtkWidget *checkbtn_emacs; */
194 GtkWidget *checkbtn_always_show_msg;
195 GtkWidget *checkbtn_openunread;
196 GtkWidget *checkbtn_mark_as_read_on_newwin;
197 GtkWidget *checkbtn_openinbox;
198 GtkWidget *checkbtn_immedexec;
199 GtkWidget *optmenu_nextunreadmsgdialog;
200 GtkWidget *entry_pixmap_theme;
201 GtkWidget *combo_pixmap_theme;
204 static struct Other {
205 GtkWidget *uri_combo;
206 GtkWidget *uri_entry;
207 GtkWidget *printcmd_entry;
208 GtkWidget *exteditor_combo;
209 GtkWidget *exteditor_entry;
211 GtkWidget *checkbtn_addaddrbyclick;
212 GtkWidget *checkbtn_confonexit;
213 GtkWidget *checkbtn_cleanonexit;
214 GtkWidget *checkbtn_askonclean;
215 GtkWidget *checkbtn_warnqueued;
216 GtkWidget *checkbtn_cliplog;
217 GtkWidget *loglength_entry;
220 GtkWidget *checkbtn_ssl_ask_unknown_valid;
224 GtkWidget *spinbtn_iotimeout;
225 GtkObject *spinbtn_iotimeout_adj;
228 static struct MessageColorButtons {
229 GtkWidget *quote_level1_btn;
230 GtkWidget *quote_level2_btn;
231 GtkWidget *quote_level3_btn;
233 GtkWidget *tgt_folder_btn;
234 GtkWidget *signature_btn;
237 static struct KeybindDialog {
242 static GtkWidget *font_sel_win;
243 static guint font_sel_conn_id;
244 static GtkWidget *quote_color_win;
245 static GtkWidget *color_dialog;
247 static void prefs_common_charset_set_data_from_optmenu (PrefParam *pparam);
248 static void prefs_common_charset_set_optmenu (PrefParam *pparam);
249 static void prefs_common_encoding_set_data_from_optmenu (PrefParam *pparam);
250 static void prefs_common_encoding_set_optmenu (PrefParam *pparam);
251 static void prefs_common_recv_dialog_set_data_from_optmenu (PrefParam *pparam);
252 static void prefs_common_recv_dialog_set_optmenu (PrefParam *pparam);
253 static void prefs_common_recv_dialog_newmail_notify_toggle_cb (GtkWidget *w,
255 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam);
256 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam);
257 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam);
258 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam);
259 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam);
260 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam);
263 parameter name, default value, pointer to the prefs variable, data type,
264 pointer to the widget pointer,
265 pointer to the function for data setting,
266 pointer to the function for widget setting
269 static PrefParam param[] = {
271 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
272 &receive.checkbtn_incext,
273 prefs_set_data_from_toggle, prefs_set_toggle},
274 {"ext_inc_path", DEFAULT_INC_PATH, &prefs_common.extinc_cmd, P_STRING,
275 &receive.entry_incext,
276 prefs_set_data_from_entry, prefs_set_entry},
278 {"inc_local", "TRUE", &prefs_common.inc_local, P_BOOL,
279 &receive.checkbtn_local,
280 prefs_set_data_from_toggle, prefs_set_toggle},
281 {"filter_on_inc_local", "TRUE", &prefs_common.filter_on_inc, P_BOOL,
282 &receive.checkbtn_filter_on_inc,
283 prefs_set_data_from_toggle, prefs_set_toggle},
284 {"spool_path", DEFAULT_SPOOL_PATH, &prefs_common.spool_path, P_STRING,
285 &receive.entry_spool,
286 prefs_set_data_from_entry, prefs_set_entry},
288 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
289 &receive.checkbtn_autochk,
290 prefs_set_data_from_toggle, prefs_set_toggle},
291 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
292 &receive.spinbtn_autochk,
293 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
294 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
295 &receive.checkbtn_chkonstartup,
296 prefs_set_data_from_toggle, prefs_set_toggle},
297 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
298 P_BOOL, &receive.checkbtn_scan_after_inc,
299 prefs_set_data_from_toggle, prefs_set_toggle},
300 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
301 P_BOOL, &receive.checkbtn_newmail_manu,
302 prefs_set_data_from_toggle, prefs_set_toggle},
303 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
304 P_BOOL, &receive.checkbtn_newmail_auto,
305 prefs_set_data_from_toggle, prefs_set_toggle},
306 {"newmail_notify_cmd", "", &prefs_common.newmail_notify_cmd, P_STRING,
307 &receive.entry_newmail_notify_cmd,
308 prefs_set_data_from_entry, prefs_set_entry},
309 {"receive_dialog_mode", "1", &prefs_common.recv_dialog_mode, P_ENUM,
310 &receive.optmenu_recvdialog,
311 prefs_common_recv_dialog_set_data_from_optmenu,
312 prefs_common_recv_dialog_set_optmenu},
313 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
314 P_BOOL, &receive.checkbtn_no_recv_err_panel,
315 prefs_set_data_from_toggle, prefs_set_toggle},
316 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
317 P_BOOL, &receive.checkbtn_close_recv_dialog,
318 prefs_set_data_from_toggle, prefs_set_toggle},
321 {"use_ext_sendmail", "FALSE", &prefs_common.use_extsend, P_BOOL,
322 &p_send.checkbtn_extsend,
323 prefs_set_data_from_toggle, prefs_set_toggle},
324 {"ext_sendmail_cmd", DEFAULT_SENDMAIL_CMD,
325 &prefs_common.extsend_cmd, P_STRING,
326 &p_send.entry_extsend, prefs_set_data_from_entry, prefs_set_entry},
327 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
328 &p_send.checkbtn_savemsg,
329 prefs_set_data_from_toggle, prefs_set_toggle},
330 {"queue_message", "FALSE", &prefs_common.queue_msg, P_BOOL,
331 &p_send.checkbtn_queuemsg,
332 prefs_set_data_from_toggle, prefs_set_toggle},
333 {"send_dialog_mode", "0", &prefs_common.send_dialog_mode, P_ENUM,
334 &p_send.optmenu_senddialog,
335 prefs_common_send_dialog_set_data_from_optmenu,
336 prefs_common_send_dialog_set_optmenu},
338 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
339 &p_send.optmenu_charset,
340 prefs_common_charset_set_data_from_optmenu,
341 prefs_common_charset_set_optmenu},
342 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
343 &p_send.optmenu_encoding_method,
344 prefs_common_encoding_set_data_from_optmenu,
345 prefs_common_encoding_set_optmenu},
348 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
349 &compose.checkbtn_autoextedit,
350 prefs_set_data_from_toggle, prefs_set_toggle},
351 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
352 P_BOOL, &compose.checkbtn_forward_as_attachment,
353 prefs_set_data_from_toggle, prefs_set_toggle},
354 {"redirect_keep_from", "FALSE",
355 &prefs_common.redirect_keep_from, P_BOOL,
356 &compose.checkbtn_redirect_keep_from,
357 prefs_set_data_from_toggle, prefs_set_toggle},
358 {"undo_level", "50", &prefs_common.undolevels, P_INT,
359 &compose.spinbtn_undolevel,
360 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
361 {"block_cursor", "FALSE", &prefs_common.block_cursor,
362 P_BOOL, &compose.checkbtn_block_cursor,
363 prefs_set_data_from_toggle, prefs_set_toggle},
365 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
366 &compose.spinbtn_linewrap,
367 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
368 {"linewrap_quotation", "FALSE", &prefs_common.linewrap_quote, P_BOOL,
369 &compose.checkbtn_wrapquote,
370 prefs_set_data_from_toggle, prefs_set_toggle},
371 {"linewrap_auto", "FALSE", &prefs_common.autowrap, P_BOOL,
372 &compose.checkbtn_autowrap,
373 prefs_set_data_from_toggle, prefs_set_toggle},
374 {"linewrap_before_sending", "FALSE",
375 &prefs_common.linewrap_at_send, P_BOOL,
376 &compose.checkbtn_wrapatsend,
377 prefs_set_data_from_toggle, prefs_set_toggle},
378 {"smart_wrapping", "TRUE", &prefs_common.smart_wrapping,
379 P_BOOL, &compose.checkbtn_smart_wrapping,
380 prefs_set_data_from_toggle, prefs_set_toggle},
381 {"autosave", "FALSE", &prefs_common.autosave,
382 P_BOOL, &compose.checkbtn_autosave,
383 prefs_set_data_from_toggle, prefs_set_toggle},
384 {"autosave_length", "50", &prefs_common.autosave_length,
385 P_INT, &compose.entry_autosave_length,
386 prefs_set_data_from_entry, prefs_set_entry},
388 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
390 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path, P_STRING,
392 {"dictionary", "", &prefs_common.dictionary, P_STRING,
394 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode, P_INT,
396 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
398 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
400 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
403 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
404 &compose.checkbtn_reply_with_quote, prefs_set_data_from_toggle, prefs_set_toggle},
406 /* Account autoselection */
407 {"reply_account_autoselect", "TRUE",
408 &prefs_common.reply_account_autosel, P_BOOL,
409 &compose.checkbtn_reply_account_autosel,
410 prefs_set_data_from_toggle, prefs_set_toggle},
411 {"forward_account_autoselect", "TRUE",
412 &prefs_common.forward_account_autosel, P_BOOL,
413 &compose.checkbtn_forward_account_autosel,
414 prefs_set_data_from_toggle, prefs_set_toggle},
415 {"reedit_account_autoselect", "TRUE",
416 &prefs_common.reedit_account_autosel, P_BOOL,
417 &compose.checkbtn_reedit_account_autosel,
418 prefs_set_data_from_toggle, prefs_set_toggle},
420 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
421 &compose.checkbtn_default_reply_list,
422 prefs_set_data_from_toggle, prefs_set_toggle},
424 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
428 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
429 "e.entry_quotemark, prefs_set_data_from_entry, prefs_set_entry},
430 {"reply_quote_format", "On %d\\n%f wrote:\\n\\n%Q",
431 &prefs_common.quotefmt, P_STRING, "e.text_quotefmt,
432 prefs_set_data_from_text, prefs_set_text},
434 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
435 "e.entry_fw_quotemark,
436 prefs_set_data_from_entry, prefs_set_entry},
437 {"forward_quote_format",
438 "\\n\\nBegin forwarded message:\\n\\n"
439 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
440 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M",
441 &prefs_common.fw_quotefmt, P_STRING, "e.text_fw_quotefmt,
442 prefs_set_data_from_text, prefs_set_text},
443 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
444 "e.entry_quote_chars, prefs_set_data_from_entry, prefs_set_entry},
447 {"widget_font", NULL, &prefs_common.widgetfont, P_STRING,
449 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
450 &prefs_common.textfont, P_STRING,
451 &display.entry_textfont,
452 prefs_set_data_from_entry, prefs_set_entry},
453 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
454 &prefs_common.smallfont, P_STRING,
455 &display.entry_smallfont,
456 prefs_set_data_from_entry, prefs_set_entry},
457 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
458 &prefs_common.boldfont, P_STRING,
459 &display.entry_boldfont,
460 prefs_set_data_from_entry, prefs_set_entry},
461 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
462 &prefs_common.normalfont, P_STRING,
463 &display.entry_normalfont,
464 prefs_set_data_from_entry, prefs_set_entry},
467 {"display_folder_unread_num", "TRUE",
468 &prefs_common.display_folder_unread, P_BOOL,
469 &display.chkbtn_folder_unread,
470 prefs_set_data_from_toggle, prefs_set_toggle},
471 {"newsgroup_abbrev_len", "16",
472 &prefs_common.ng_abbrev_len, P_INT,
473 &display.spinbtn_ng_abbrev_len,
474 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
476 {"translate_header", "TRUE", &prefs_common.trans_hdr, P_BOOL,
477 &display.chkbtn_transhdr,
478 prefs_set_data_from_toggle, prefs_set_toggle},
480 /* Display: Summary View */
481 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
482 &display.chkbtn_swapfrom,
483 prefs_set_data_from_toggle, prefs_set_toggle},
484 {"use_address_book", "TRUE", &prefs_common.use_addr_book, P_BOOL,
485 &display.chkbtn_useaddrbook,
486 prefs_set_data_from_toggle, prefs_set_toggle},
487 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
488 &display.chkbtn_threadsubj,
489 prefs_set_data_from_toggle, prefs_set_toggle},
490 {"date_format", "%y/%m/%d(%a) %H:%M", &prefs_common.date_format,
491 P_STRING, &display.entry_datefmt,
492 prefs_set_data_from_entry, prefs_set_entry},
494 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
496 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
498 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
499 P_INT, NULL, NULL, NULL },
501 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
503 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
505 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
507 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
510 {"folderview_vscrollbar_policy", "0",
511 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
514 {"summary_col_show_mark", "TRUE",
515 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
516 {"summary_col_show_unread", "TRUE",
517 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
518 {"summary_col_show_mime", "TRUE",
519 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
520 {"summary_col_show_subject", "TRUE",
521 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
522 {"summary_col_show_from", "TRUE",
523 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
524 {"summary_col_show_date", "TRUE",
525 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
526 {"summary_col_show_size", "TRUE",
527 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
528 {"summary_col_show_number", "FALSE",
529 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
530 {"summary_col_show_score", "FALSE",
531 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
532 {"summary_col_show_locked", "FALSE",
533 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
535 {"summary_col_pos_mark", "0",
536 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
537 {"summary_col_pos_unread", "1",
538 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
539 {"summary_col_pos_mime", "2",
540 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
541 {"summary_col_pos_subject", "3",
542 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
543 {"summary_col_pos_from", "4",
544 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
545 {"summary_col_pos_date", "5",
546 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
547 {"summary_col_pos_size", "6",
548 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
549 {"summary_col_pos_number", "7",
550 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
551 {"summary_col_pos_score", "8",
552 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
553 {"summary_col_pos_locked", "9",
554 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
556 {"summary_col_size_mark", "10",
557 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
558 {"summary_col_size_unread", "13",
559 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
560 {"summary_col_size_mime", "10",
561 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
562 {"summary_col_size_subject", "200",
563 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
564 {"summary_col_size_from", "120",
565 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
566 {"summary_col_size_date", "118",
567 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
568 {"summary_col_size_size", "45",
569 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
570 {"summary_col_size_number", "40",
571 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
572 {"summary_col_size_score", "40",
573 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
574 {"summary_col_size_locked", "13",
575 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
578 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
580 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
582 {"folderview_width", "179", &prefs_common.folderview_width, P_INT,
584 {"folderview_height", "600", &prefs_common.folderview_height, P_INT,
587 {"folder_col_folder", "150", &prefs_common.folder_col_folder, P_INT,
589 {"folder_col_new", "32", &prefs_common.folder_col_new, P_INT,
591 {"folder_col_unread", "32", &prefs_common.folder_col_unread, P_INT,
593 {"folder_col_total", "32", &prefs_common.folder_col_total, P_INT,
596 {"summaryview_width", "600", &prefs_common.summaryview_width, P_INT,
598 {"summaryview_height", "173", &prefs_common.summaryview_height, P_INT,
601 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
603 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
605 {"messageview_width", "600", &prefs_common.msgview_width, P_INT,
607 {"messageview_height", "540", &prefs_common.msgview_height, P_INT,
610 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
612 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
614 {"mainview_width", "600", &prefs_common.mainview_width, P_INT,
616 {"mainview_height", "600", &prefs_common.mainview_height, P_INT,
618 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
620 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
622 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
624 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
626 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
628 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
630 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
632 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
634 {"compose_width", "600", &prefs_common.compose_width, P_INT,
636 {"compose_height", "560", &prefs_common.compose_height, P_INT,
640 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
641 &message.chkbtn_enablecol,
642 prefs_set_data_from_toggle, prefs_set_toggle},
644 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
646 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
648 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
650 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
652 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
654 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
656 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
657 P_BOOL, NULL, NULL, NULL},
659 {"convert_mb_alnum", "FALSE", &prefs_common.conv_mb_alnum, P_BOOL,
660 &message.chkbtn_mbalnum,
661 prefs_set_data_from_toggle, prefs_set_toggle},
662 {"display_header_pane", "TRUE", &prefs_common.display_header_pane,
663 P_BOOL, &message.chkbtn_disphdrpane,
664 prefs_set_data_from_toggle, prefs_set_toggle},
665 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
666 &message.chkbtn_disphdr,
667 prefs_set_data_from_toggle, prefs_set_toggle},
668 {"line_space", "2", &prefs_common.line_space, P_INT,
669 &message.spinbtn_linespc,
670 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
671 {"enable_head_space", "FALSE", &prefs_common.head_space, P_BOOL,
672 &message.chkbtn_headspc,
673 prefs_set_data_from_toggle, prefs_set_toggle},
675 {"enable_smooth_scroll", "FALSE",
676 &prefs_common.enable_smooth_scroll, P_BOOL,
677 &message.chkbtn_smoothscroll,
678 prefs_set_data_from_toggle, prefs_set_toggle},
679 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
680 &message.spinbtn_scrollstep,
681 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
682 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
683 &message.chkbtn_halfpage,
684 prefs_set_data_from_toggle, prefs_set_toggle},
686 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
689 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
690 &message.chkbtn_attach_desc,
691 prefs_set_data_from_toggle, prefs_set_toggle},
694 {"mime_image_viewer", "display '%s'",
695 &prefs_common.mime_image_viewer, P_STRING, NULL, NULL, NULL},
696 {"mime_audio_player", "play '%s'",
697 &prefs_common.mime_audio_player, P_STRING, NULL, NULL, NULL},
698 {"mime_open_command", "gedit '%s'",
699 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
703 {"auto_check_signatures", "TRUE",
704 &prefs_common.auto_check_signatures, P_BOOL,
705 &privacy.checkbtn_auto_check_signatures,
706 prefs_set_data_from_toggle, prefs_set_toggle},
707 {"gpg_signature_popup", "FALSE",
708 &prefs_common.gpg_signature_popup, P_BOOL,
709 &privacy.checkbtn_gpg_signature_popup,
710 prefs_set_data_from_toggle, prefs_set_toggle},
711 {"store_passphrase", "FALSE", &prefs_common.store_passphrase, P_BOOL,
712 &privacy.checkbtn_store_passphrase,
713 prefs_set_data_from_toggle, prefs_set_toggle},
714 {"store_passphrase_timeout", "0",
715 &prefs_common.store_passphrase_timeout, P_INT,
716 &privacy.spinbtn_store_passphrase,
717 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
719 {"passphrase_grab", "FALSE", &prefs_common.passphrase_grab, P_BOOL,
720 &privacy.checkbtn_passphrase_grab,
721 prefs_set_data_from_toggle, prefs_set_toggle},
722 #endif /* __MINGW32__ */
723 {"gpg_warning", "TRUE", &prefs_common.gpg_warning, P_BOOL,
724 &privacy.checkbtn_gpg_warning,
725 prefs_set_data_from_toggle, prefs_set_toggle},
726 #endif /* USE_GPGME */
729 {"separate_folder", "FALSE", &prefs_common.sep_folder, P_BOOL,
731 {"separate_message", "FALSE", &prefs_common.sep_msg, P_BOOL,
734 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
735 NULL, NULL, NULL}, */
736 {"always_show_message_when_selected", "FALSE",
737 &prefs_common.always_show_msg,
738 P_BOOL, &interface.checkbtn_always_show_msg,
739 prefs_set_data_from_toggle, prefs_set_toggle},
740 {"open_unread_on_enter", "FALSE", &prefs_common.open_unread_on_enter,
741 P_BOOL, &interface.checkbtn_openunread,
742 prefs_set_data_from_toggle, prefs_set_toggle},
743 {"mark_as_read_on_new_window", "FALSE",
744 &prefs_common.mark_as_read_on_new_window,
745 P_BOOL, &interface.checkbtn_mark_as_read_on_newwin,
746 prefs_set_data_from_toggle, prefs_set_toggle},
747 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
748 P_BOOL, &interface.checkbtn_openinbox,
749 prefs_set_data_from_toggle, prefs_set_toggle},
750 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
751 &interface.checkbtn_immedexec,
752 prefs_set_data_from_toggle, prefs_set_toggle},
753 {"nextunreadmsg_dialog", NULL, &prefs_common.next_unread_msg_dialog, P_ENUM,
754 &interface.optmenu_nextunreadmsgdialog,
755 prefs_nextunreadmsgdialog_set_data_from_optmenu,
756 prefs_nextunreadmsgdialog_set_optmenu},
758 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
759 &prefs_common.pixmap_theme_path, P_STRING,
760 &interface.entry_pixmap_theme, prefs_set_data_from_entry, prefs_set_entry},
762 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
766 {"uri_open_command", DEFAULT_BROWSER_CMD,
767 &prefs_common.uri_cmd, P_STRING,
768 &other.uri_entry, prefs_set_data_from_entry, prefs_set_entry},
769 {"print_command", "lpr %s", &prefs_common.print_cmd, P_STRING,
770 &other.printcmd_entry, prefs_set_data_from_entry, prefs_set_entry},
771 {"ext_editor_command", "gedit %s",
772 &prefs_common.ext_editor_cmd, P_STRING,
773 &other.exteditor_entry, prefs_set_data_from_entry, prefs_set_entry},
775 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
776 P_BOOL, &other.checkbtn_addaddrbyclick,
777 prefs_set_data_from_toggle, prefs_set_toggle},
779 {"confirm_on_exit", "TRUE", &prefs_common.confirm_on_exit, P_BOOL,
780 &other.checkbtn_confonexit,
781 prefs_set_data_from_toggle, prefs_set_toggle},
782 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
783 &other.checkbtn_cleanonexit,
784 prefs_set_data_from_toggle, prefs_set_toggle},
785 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
786 &other.checkbtn_askonclean,
787 prefs_set_data_from_toggle, prefs_set_toggle},
788 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
789 P_BOOL, &other.checkbtn_warnqueued,
790 prefs_set_data_from_toggle, prefs_set_toggle},
793 {"ssl_ask_unknown_valid", "TRUE", &prefs_common.ssl_ask_unknown_valid,
794 P_BOOL, &other.checkbtn_ssl_ask_unknown_valid,
795 prefs_set_data_from_toggle, prefs_set_toggle},
798 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
800 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
803 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
804 P_INT, &other.spinbtn_iotimeout,
805 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
806 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
808 {"important_score", "1", &prefs_common.important_score, P_INT,
810 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
811 &other.checkbtn_cliplog,
812 prefs_set_data_from_toggle, prefs_set_toggle},
813 {"log_length", "500", &prefs_common.loglength, P_INT,
814 &other.loglength_entry,
815 prefs_set_data_from_entry, prefs_set_entry},
817 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
819 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
822 {"color_new", "179", &prefs_common.color_new, P_COLOR,
825 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
828 /* widget creating functions */
829 static void prefs_common_create (void);
830 static void prefs_receive_create (void);
831 static void prefs_send_create (void);
832 static void prefs_compose_create (void);
833 static void prefs_quote_create (void);
834 static void prefs_display_create (void);
835 static void prefs_message_create (void);
837 static void prefs_privacy_create (void);
839 static void prefs_interface_create (void);
840 static void prefs_other_create (void);
842 static void date_format_ok_btn_clicked (GtkButton *button,
844 static void date_format_cancel_btn_clicked (GtkButton *button,
846 static void date_format_key_pressed (GtkWidget *keywidget,
849 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
852 static void date_format_entry_on_change (GtkEditable *editable,
854 static void date_format_select_row (GtkWidget *date_format_list,
857 GdkEventButton *event,
858 GtkWidget *date_format);
859 static GtkWidget *date_format_create (GtkButton *button,
862 static void prefs_quote_colors_dialog (void);
863 static void prefs_quote_colors_dialog_create (void);
864 static void prefs_quote_colors_key_pressed (GtkWidget *widget,
867 static void quote_color_set_dialog (GtkWidget *widget,
869 static void quote_colors_set_dialog_ok (GtkWidget *widget,
871 static void quote_colors_set_dialog_cancel (GtkWidget *widget,
873 static void quote_colors_set_dialog_key_pressed (GtkWidget *widget,
876 static void set_button_bg_color (GtkWidget *widget,
878 static void prefs_enable_message_color_toggled (void);
879 static void prefs_recycle_colors_toggled (GtkWidget *widget);
881 static void prefs_font_select (GtkButton *button, GtkEntry *entry);
883 static void prefs_font_selection_key_pressed (GtkWidget *widget,
886 static void prefs_font_selection_ok (GtkButton *button, GtkEntry *entry);
888 static void prefs_keybind_select (void);
889 static gint prefs_keybind_deleted (GtkWidget *widget,
892 static void prefs_keybind_key_pressed (GtkWidget *widget,
895 static void prefs_keybind_cancel (void);
896 static void prefs_keybind_apply_clicked (GtkWidget *widget);
898 static gint prefs_common_deleted (GtkWidget *widget,
901 static void prefs_common_key_pressed (GtkWidget *widget,
904 static void prefs_common_ok (void);
905 static void prefs_common_apply (void);
906 static void prefs_common_cancel (void);
908 void prefs_common_init(void)
910 prefs_common.disphdr_list = NULL;
913 PrefsCommon *prefs_common_get(void)
915 return &prefs_common;
918 void prefs_common_read_config(void)
922 gchar buf[PREFSBUFSIZE];
924 prefs_read_config(param, "Common", COMMON_RC);
926 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
928 if ((fp = fopen(path, "rb")) == NULL) {
929 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
934 while (fgets(buf, sizeof(buf), fp) != NULL) {
936 if (buf[0] == '\0') continue;
937 prefs_common.mime_open_cmd_history =
938 add_history(prefs_common.mime_open_cmd_history, buf);
942 prefs_common.mime_open_cmd_history =
943 g_list_reverse(prefs_common.mime_open_cmd_history);
946 void prefs_common_save_config(void)
952 prefs_save_config(param, "Common", COMMON_RC);
954 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
956 if ((fp = fopen(path, "wb")) == NULL) {
957 FILE_OP_ERROR(path, "fopen");
962 for (cur = prefs_common.mime_open_cmd_history;
963 cur != NULL; cur = cur->next) {
964 fputs((gchar *)cur->data, fp);
972 void prefs_common_open(void)
974 if (prefs_rc_is_readonly(COMMON_RC))
979 if (!dialog.window) {
980 prefs_common_create();
983 manage_window_set_transient(GTK_WINDOW(dialog.window));
984 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
985 gtk_widget_grab_focus(dialog.ok_btn);
987 prefs_set_dialog(param);
989 gtk_widget_show(dialog.window);
992 static void prefs_common_create(void)
996 debug_print("Creating common preferences window...\n");
998 prefs_dialog_create(&dialog);
999 gtk_window_set_title (GTK_WINDOW(dialog.window),
1000 _("Common Preferences"));
1001 gtk_signal_connect (GTK_OBJECT(dialog.window), "delete_event",
1002 GTK_SIGNAL_FUNC(prefs_common_deleted), NULL);
1003 gtk_signal_connect (GTK_OBJECT(dialog.window), "key_press_event",
1004 GTK_SIGNAL_FUNC(prefs_common_key_pressed), NULL);
1005 MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
1007 gtk_signal_connect (GTK_OBJECT(dialog.ok_btn), "clicked",
1008 GTK_SIGNAL_FUNC(prefs_common_ok), NULL);
1009 gtk_signal_connect (GTK_OBJECT(dialog.apply_btn), "clicked",
1010 GTK_SIGNAL_FUNC(prefs_common_apply), NULL);
1011 gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
1012 GTK_SIGNAL_FUNC(prefs_common_cancel),
1013 GTK_OBJECT(dialog.window));
1015 /* create all widgets on notebook */
1016 prefs_receive_create();
1017 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
1018 prefs_send_create();
1019 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
1020 prefs_compose_create();
1021 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
1022 prefs_quote_create();
1023 SET_NOTEBOOK_LABEL(dialog.notebook, _("Quote"), page++);
1024 prefs_display_create();
1025 SET_NOTEBOOK_LABEL(dialog.notebook, _("Display"), page++);
1026 prefs_message_create();
1027 SET_NOTEBOOK_LABEL(dialog.notebook, _("Message"), page++);
1029 prefs_privacy_create();
1030 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
1032 prefs_interface_create();
1033 SET_NOTEBOOK_LABEL(dialog.notebook, _("Interface"), page++);
1034 prefs_other_create();
1035 SET_NOTEBOOK_LABEL(dialog.notebook, _("Other"), page++);
1037 gtk_widget_show_all(dialog.window);
1040 static void prefs_receive_create(void)
1044 GtkWidget *frame_incext;
1045 GtkWidget *checkbtn_incext;
1047 GtkWidget *label_incext;
1048 GtkWidget *entry_incext;
1049 /* GtkWidget *button_incext; */
1051 GtkWidget *frame_spool;
1052 GtkWidget *checkbtn_local;
1053 GtkWidget *checkbtn_filter_on_inc;
1054 GtkWidget *label_spool;
1055 GtkWidget *entry_spool;
1057 GtkWidget *hbox_autochk;
1058 GtkWidget *checkbtn_autochk;
1059 GtkWidget *label_autochk1;
1060 GtkObject *spinbtn_autochk_adj;
1061 GtkWidget *spinbtn_autochk;
1062 GtkWidget *label_autochk2;
1063 GtkWidget *checkbtn_chkonstartup;
1064 GtkWidget *checkbtn_scan_after_inc;
1067 GtkWidget *frame_newmail;
1068 GtkWidget *hbox_newmail_notify;
1069 GtkWidget *checkbtn_newmail_auto;
1070 GtkWidget *checkbtn_newmail_manu;
1071 GtkWidget *entry_newmail_notify_cmd;
1072 GtkWidget *label_newmail_notify_cmd;
1074 GtkWidget *hbox_recvdialog;
1075 GtkWidget *label_recvdialog;
1077 GtkWidget *menuitem;
1078 GtkWidget *optmenu_recvdialog;
1079 GtkWidget *checkbtn_no_recv_err_panel;
1080 GtkWidget *checkbtn_close_recv_dialog;
1082 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1083 gtk_widget_show (vbox1);
1084 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1085 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1087 PACK_FRAME(vbox1, frame_incext, _("External program"));
1089 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1090 gtk_widget_show (vbox2);
1091 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
1092 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1094 /* Use of external incorporation program */
1095 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
1096 _("Use external program for incorporation"));
1098 hbox = gtk_hbox_new (FALSE, 8);
1099 gtk_widget_show (hbox);
1100 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1101 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1103 label_incext = gtk_label_new (_("Command"));
1104 gtk_widget_show (label_incext);
1105 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1107 entry_incext = gtk_entry_new ();
1108 gtk_widget_show (entry_incext);
1109 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1112 button_incext = gtk_button_new_with_label ("... ");
1113 gtk_widget_show (button_incext);
1114 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1117 PACK_FRAME(vbox1, frame_spool, _("Local spool"));
1119 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1120 gtk_widget_show (vbox2);
1121 gtk_container_add (GTK_CONTAINER (frame_spool), vbox2);
1122 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1124 hbox = gtk_hbox_new (FALSE, 32);
1125 gtk_widget_show (hbox);
1126 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1128 PACK_CHECK_BUTTON (hbox, checkbtn_local, _("Incorporate from spool"));
1129 PACK_CHECK_BUTTON (hbox, checkbtn_filter_on_inc,
1130 _("Filter on incorporation"));
1131 SET_TOGGLE_SENSITIVITY (checkbtn_local, checkbtn_filter_on_inc);
1133 hbox = gtk_hbox_new (FALSE, 8);
1134 gtk_widget_show (hbox);
1135 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1136 SET_TOGGLE_SENSITIVITY (checkbtn_local, hbox);
1138 label_spool = gtk_label_new (_("Spool directory"));
1139 gtk_widget_show (label_spool);
1140 gtk_box_pack_start (GTK_BOX (hbox), label_spool, FALSE, FALSE, 0);
1142 entry_spool = gtk_entry_new ();
1143 gtk_widget_show (entry_spool);
1144 gtk_box_pack_start (GTK_BOX (hbox), entry_spool, TRUE, TRUE, 0);
1146 vbox2 = gtk_vbox_new (FALSE, 0);
1147 gtk_widget_show (vbox2);
1148 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1151 hbox_autochk = gtk_hbox_new (FALSE, 8);
1152 gtk_widget_show (hbox_autochk);
1153 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1155 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1156 _("Auto-check new mail"));
1158 label_autochk1 = gtk_label_new (_("every"));
1159 gtk_widget_show (label_autochk1);
1160 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1162 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1163 spinbtn_autochk = gtk_spin_button_new
1164 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1165 gtk_widget_show (spinbtn_autochk);
1166 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1167 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1168 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1170 label_autochk2 = gtk_label_new (_("minute(s)"));
1171 gtk_widget_show (label_autochk2);
1172 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1174 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1175 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1176 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1178 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1179 _("Check new mail on startup"));
1180 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1181 _("Update all local folders after incorporation"));
1184 /* receive dialog */
1185 hbox_recvdialog = gtk_hbox_new (FALSE, 8);
1186 gtk_widget_show (hbox_recvdialog);
1187 gtk_box_pack_start (GTK_BOX (vbox2), hbox_recvdialog, FALSE, FALSE, 0);
1189 label_recvdialog = gtk_label_new (_("Show receive dialog"));
1190 gtk_misc_set_alignment(GTK_MISC(label_recvdialog), 0, 0.5);
1191 gtk_widget_show (label_recvdialog);
1192 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), label_recvdialog, FALSE, FALSE, 0);
1194 optmenu_recvdialog = gtk_option_menu_new ();
1195 gtk_widget_show (optmenu_recvdialog);
1196 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), optmenu_recvdialog, FALSE, FALSE, 0);
1198 menu = gtk_menu_new ();
1199 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
1200 MENUITEM_ADD (menu, menuitem, _("Only if a window is active"),
1201 RECV_DIALOG_ACTIVE);
1202 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
1204 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
1206 PACK_CHECK_BUTTON (vbox2, checkbtn_no_recv_err_panel,
1207 _("Don't popup error dialog on receive error"));
1209 PACK_CHECK_BUTTON (vbox2, checkbtn_close_recv_dialog,
1210 _("Close receive dialog when finished"));
1212 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1214 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1215 gtk_widget_show (vbox2);
1216 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1217 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1219 hbox = gtk_hbox_new (TRUE, 8);
1220 gtk_widget_show (hbox);
1221 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1222 _("after autochecking"));
1223 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1224 _("after manual checking"));
1225 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1226 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1227 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1229 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1230 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1233 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1234 gtk_widget_show (hbox);
1235 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1238 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1239 "(use %d as number of new "
1241 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1243 gtk_widget_show (label_newmail_notify_cmd);
1244 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1245 label_newmail_notify_cmd, FALSE, FALSE, 0);
1247 entry_newmail_notify_cmd = gtk_entry_new ();
1248 gtk_widget_show (entry_newmail_notify_cmd);
1249 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1250 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1252 gtk_widget_set_sensitive(hbox_newmail_notify,
1253 prefs_common.newmail_notify_auto ||
1254 prefs_common.newmail_notify_manu);
1256 receive.checkbtn_incext = checkbtn_incext;
1257 receive.entry_incext = entry_incext;
1258 /* receive.button_incext = button_incext; */
1260 receive.checkbtn_local = checkbtn_local;
1261 receive.checkbtn_filter_on_inc = checkbtn_filter_on_inc;
1262 receive.entry_spool = entry_spool;
1264 receive.checkbtn_autochk = checkbtn_autochk;
1265 receive.spinbtn_autochk = spinbtn_autochk;
1266 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1268 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1269 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1272 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1273 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1274 receive.hbox_newmail_notify = hbox_newmail_notify;
1275 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1276 receive.optmenu_recvdialog = optmenu_recvdialog;
1277 receive.checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
1278 receive.checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
1281 static void prefs_send_create(void)
1285 GtkWidget *frame_extsend;
1286 GtkWidget *vbox_extsend;
1287 GtkWidget *checkbtn_extsend;
1289 GtkWidget *label_extsend;
1290 GtkWidget *entry_extsend;
1291 /* GtkWidget *button_extsend; */
1292 GtkWidget *checkbtn_savemsg;
1293 GtkWidget *checkbtn_queuemsg;
1294 GtkWidget *label_outcharset;
1295 GtkWidget *optmenu_charset;
1296 GtkWidget *optmenu_menu;
1297 GtkWidget *menuitem;
1298 GtkWidget *label_charset_desc;
1299 GtkWidget *optmenu_encoding;
1300 GtkWidget *label_encoding;
1301 GtkWidget *label_encoding_desc;
1302 GtkWidget *label_senddialog;
1304 GtkWidget *optmenu_senddialog;
1305 GtkWidget *hbox_senddialog;
1307 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1308 gtk_widget_show (vbox1);
1309 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1310 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1312 PACK_FRAME(vbox1, frame_extsend, _("External program"));
1314 vbox_extsend = gtk_vbox_new (FALSE, VSPACING_NARROW);
1315 gtk_widget_show (vbox_extsend);
1316 gtk_container_add (GTK_CONTAINER (frame_extsend), vbox_extsend);
1317 gtk_container_set_border_width (GTK_CONTAINER (vbox_extsend), 8);
1319 PACK_CHECK_BUTTON (vbox_extsend, checkbtn_extsend,
1320 _("Use external program for sending"));
1322 hbox1 = gtk_hbox_new (FALSE, 8);
1323 gtk_widget_show (hbox1);
1324 gtk_box_pack_start (GTK_BOX (vbox_extsend), hbox1, FALSE, FALSE, 0);
1325 SET_TOGGLE_SENSITIVITY(checkbtn_extsend, hbox1);
1327 label_extsend = gtk_label_new (_("Command"));
1328 gtk_widget_show (label_extsend);
1329 gtk_box_pack_start (GTK_BOX (hbox1), label_extsend, FALSE, FALSE, 0);
1331 entry_extsend = gtk_entry_new ();
1332 gtk_widget_show (entry_extsend);
1333 gtk_box_pack_start (GTK_BOX (hbox1), entry_extsend, TRUE, TRUE, 0);
1336 button_extsend = gtk_button_new_with_label ("... ");
1337 gtk_widget_show (button_extsend);
1338 gtk_box_pack_start (GTK_BOX (hbox1), button_extsend, FALSE, FALSE, 0);
1341 vbox2 = gtk_vbox_new (FALSE, 0);
1342 gtk_widget_show (vbox2);
1343 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1345 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1346 _("Save sent messages to Sent folder"));
1347 PACK_CHECK_BUTTON (vbox2, checkbtn_queuemsg,
1348 _("Queue messages that fail to send"));
1350 hbox_senddialog = gtk_hbox_new (FALSE, 8);
1351 gtk_widget_show (hbox1);
1352 gtk_box_pack_start (GTK_BOX (vbox1), hbox_senddialog, FALSE, FALSE, 0);
1354 label_senddialog = gtk_label_new (_("Show send dialog"));
1355 gtk_widget_show (label_senddialog);
1356 gtk_box_pack_start (GTK_BOX (hbox_senddialog), label_senddialog, FALSE, FALSE, 0);
1358 optmenu_senddialog = gtk_option_menu_new ();
1359 gtk_widget_show (optmenu_senddialog);
1360 gtk_box_pack_start (GTK_BOX (hbox_senddialog), optmenu_senddialog, FALSE, FALSE, 0);
1362 menu = gtk_menu_new ();
1363 MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
1364 MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
1366 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
1368 hbox1 = gtk_hbox_new (FALSE, 8);
1369 gtk_widget_show (hbox1);
1370 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1372 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1373 gtk_widget_show (label_outcharset);
1374 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1376 optmenu_charset = gtk_option_menu_new ();
1377 gtk_widget_show (optmenu_charset);
1378 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_charset, FALSE, FALSE, 0);
1380 optmenu_menu = gtk_menu_new ();
1382 #define SET_MENUITEM(str, data) \
1384 MENUITEM_ADD(optmenu_menu, menuitem, str, data); \
1387 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1388 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1390 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1392 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1393 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1394 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1395 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1396 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1397 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1398 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1400 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1402 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1404 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1405 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1407 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1409 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1410 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1412 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1413 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1415 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1416 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1418 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1419 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1420 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1422 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_charset),
1425 hbox1 = gtk_hbox_new (FALSE, 8);
1426 gtk_widget_show (hbox1);
1427 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1429 label_charset_desc = gtk_label_new
1430 (_("If `Automatic' is selected, the optimal encoding\n"
1431 "for the current locale will be used."));
1432 gtk_widget_show (label_charset_desc);
1433 gtk_box_pack_start (GTK_BOX (hbox1), label_charset_desc,
1435 gtk_label_set_justify (GTK_LABEL (label_charset_desc),
1438 hbox1 = gtk_hbox_new (FALSE, 8);
1439 gtk_widget_show (hbox1);
1440 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1442 label_encoding = gtk_label_new (_("Transfer encoding"));
1443 gtk_widget_show (label_encoding);
1444 gtk_box_pack_start (GTK_BOX (hbox1), label_encoding, FALSE, FALSE, 0);
1446 optmenu_encoding = gtk_option_menu_new ();
1447 gtk_widget_show (optmenu_encoding);
1448 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_encoding, FALSE, FALSE, 0);
1450 optmenu_menu = gtk_menu_new ();
1452 SET_MENUITEM(_("Automatic"), CTE_AUTO);
1453 SET_MENUITEM("base64", CTE_BASE64);
1454 SET_MENUITEM("quoted-printable", CTE_QUOTED_PRINTABLE);
1455 SET_MENUITEM("8bit", CTE_8BIT);
1457 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_encoding),
1460 hbox1 = gtk_hbox_new (FALSE, 8);
1461 gtk_widget_show (hbox1);
1462 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1464 label_encoding_desc = gtk_label_new
1465 (_("Specify Content-Transfer-Encoding used when\n"
1466 "message body contains non-ASCII characters."));
1467 gtk_widget_show (label_encoding_desc);
1468 gtk_box_pack_start (GTK_BOX (hbox1), label_encoding_desc,
1470 gtk_label_set_justify (GTK_LABEL (label_encoding_desc),
1473 p_send.checkbtn_extsend = checkbtn_extsend;
1474 p_send.entry_extsend = entry_extsend;
1475 /* p_send.button_extsend = button_extsend; */
1477 p_send.checkbtn_savemsg = checkbtn_savemsg;
1478 p_send.checkbtn_queuemsg = checkbtn_queuemsg;
1479 p_send.optmenu_senddialog = optmenu_senddialog;
1481 p_send.optmenu_charset = optmenu_charset;
1482 p_send.optmenu_encoding_method = optmenu_encoding;
1485 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1489 toggled = gtk_toggle_button_get_active
1490 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1491 gtk_toggle_button_get_active
1492 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1493 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1496 static void prefs_compose_create(void)
1501 GtkWidget *checkbtn_autoextedit;
1503 GtkWidget *frame_autosel;
1504 GtkWidget *hbox_autosel;
1505 GtkWidget *checkbtn_reply_account_autosel;
1506 GtkWidget *checkbtn_forward_account_autosel;
1507 GtkWidget *checkbtn_reedit_account_autosel;
1509 GtkWidget *hbox_undolevel;
1510 GtkWidget *label_undolevel;
1511 GtkObject *spinbtn_undolevel_adj;
1512 GtkWidget *spinbtn_undolevel;
1514 GtkWidget *vbox_linewrap;
1519 GtkWidget *label_linewrap;
1520 GtkObject *spinbtn_linewrap_adj;
1521 GtkWidget *spinbtn_linewrap;
1522 GtkWidget *checkbtn_wrapquote;
1523 GtkWidget *checkbtn_autowrap;
1524 GtkWidget *checkbtn_wrapatsend;
1526 GtkWidget *checkbtn_default_reply_list;
1528 GtkWidget *checkbtn_forward_as_attachment;
1529 GtkWidget *checkbtn_redirect_keep_from;
1530 GtkWidget *checkbtn_smart_wrapping;
1531 GtkWidget *checkbtn_block_cursor;
1532 GtkWidget *frame_msgwrap;
1534 GtkWidget *hbox_autosave;
1535 GtkWidget *checkbtn_autosave;
1536 GtkWidget *entry_autosave_length;
1537 GtkWidget *label_autosave_length;
1539 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1540 gtk_widget_show (vbox1);
1541 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1542 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1544 /* Account autoselection */
1545 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1547 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1548 gtk_widget_show (hbox_autosel);
1549 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1550 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1552 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1553 _("when replying"));
1554 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1555 _("when forwarding"));
1556 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1557 _("when re-editing"));
1559 vbox2 = gtk_vbox_new (FALSE, 0);
1560 gtk_widget_show (vbox2);
1561 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1563 PACK_CHECK_BUTTON (vbox2, checkbtn_default_reply_list,
1564 _("Reply button invokes mailing list reply"));
1566 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1567 _("Automatically launch the external editor"));
1569 hbox5 = gtk_hbox_new (FALSE, 8);
1570 gtk_widget_show (hbox5);
1571 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1573 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1574 _("Forward as attachment"));
1576 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1579 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1580 _("Keep the original 'From' header when redirecting"));
1583 hbox_autosave = gtk_hbox_new (FALSE, 8);
1584 gtk_widget_show (hbox_autosave);
1585 gtk_box_pack_start (GTK_BOX (vbox1), hbox_autosave, FALSE, FALSE, 0);
1587 PACK_CHECK_BUTTON (hbox_autosave, checkbtn_autosave,
1588 _("Autosave to Drafts folder every "));
1590 entry_autosave_length = gtk_entry_new();
1591 gtk_widget_set_usize (entry_autosave_length, 64, -1);
1592 gtk_widget_show (entry_autosave_length);
1593 gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
1595 label_autosave_length = gtk_label_new(_("characters"));
1596 gtk_widget_show (label_autosave_length);
1597 gtk_box_pack_start (GTK_BOX (hbox_autosave), label_autosave_length, FALSE, FALSE, 0);
1599 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1600 gtk_widget_show (hbox_undolevel);
1601 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1603 label_undolevel = gtk_label_new (_("Undo level"));
1604 gtk_widget_show (label_undolevel);
1605 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1607 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1608 spinbtn_undolevel = gtk_spin_button_new
1609 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1610 gtk_widget_show (spinbtn_undolevel);
1611 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1612 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1613 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1616 PACK_FRAME(vbox1, frame_msgwrap, _("Message wrapping"));
1618 vbox_linewrap = gtk_vbox_new (FALSE, VSPACING_NARROW);
1619 gtk_widget_show (vbox_linewrap);
1620 gtk_container_add (GTK_CONTAINER (frame_msgwrap), vbox_linewrap);
1621 gtk_container_set_border_width (GTK_CONTAINER (vbox_linewrap), 8);
1623 hbox3 = gtk_hbox_new (FALSE, 8);
1624 gtk_widget_show (hbox3);
1625 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox3, FALSE, FALSE, 0);
1628 label_linewrap = gtk_label_new (_("Wrap messages at"));
1629 gtk_widget_show (label_linewrap);
1630 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1632 spinbtn_linewrap_adj = gtk_adjustment_new (72, 20, 1024, 1, 10, 10);
1633 spinbtn_linewrap = gtk_spin_button_new
1634 (GTK_ADJUSTMENT (spinbtn_linewrap_adj), 1, 0);
1635 gtk_widget_show (spinbtn_linewrap);
1636 gtk_box_pack_start (GTK_BOX (hbox3), spinbtn_linewrap, FALSE, FALSE, 0);
1637 gtk_widget_set_usize (spinbtn_linewrap, 64, -1);
1638 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linewrap), TRUE);
1640 label_linewrap = gtk_label_new (_("characters"));
1641 gtk_widget_show (label_linewrap);
1642 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1644 hbox4 = gtk_hbox_new (FALSE, VSPACING);
1645 gtk_widget_show (hbox4);
1646 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox4, FALSE, FALSE, 0);
1648 PACK_CHECK_BUTTON (hbox4, checkbtn_wrapquote, _("Wrap quotation"));
1650 PACK_CHECK_BUTTON (hbox4, checkbtn_autowrap, _("Wrap on input"));
1653 (hbox4, checkbtn_wrapatsend, _("Wrap before sending"));
1655 PACK_CHECK_BUTTON (vbox_linewrap, checkbtn_smart_wrapping,
1656 _("Smart wrapping (EXPERIMENTAL)"));
1659 compose.checkbtn_quote = checkbtn_quote;
1660 compose.entry_quotemark = entry_quotemark;
1661 compose.text_quotefmt = text_quotefmt;
1664 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1666 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1667 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1668 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1670 compose.spinbtn_undolevel = spinbtn_undolevel;
1671 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1673 compose.spinbtn_linewrap = spinbtn_linewrap;
1674 compose.spinbtn_linewrap_adj = spinbtn_linewrap_adj;
1675 compose.checkbtn_wrapquote = checkbtn_wrapquote;
1676 compose.checkbtn_autowrap = checkbtn_autowrap;
1677 compose.checkbtn_wrapatsend = checkbtn_wrapatsend;
1679 compose.checkbtn_autosave = checkbtn_autosave;
1680 compose.entry_autosave_length = entry_autosave_length;
1682 compose.checkbtn_forward_as_attachment =
1683 checkbtn_forward_as_attachment;
1684 compose.checkbtn_redirect_keep_from =
1685 checkbtn_redirect_keep_from;
1686 compose.checkbtn_smart_wrapping =
1687 checkbtn_smart_wrapping;
1688 compose.checkbtn_block_cursor =
1689 checkbtn_block_cursor;
1690 compose.checkbtn_default_reply_list = checkbtn_default_reply_list;
1693 static void prefs_quote_create(void)
1696 GtkWidget *frame_quote;
1697 GtkWidget *vbox_quote;
1700 GtkWidget *label_quotemark;
1701 GtkWidget *entry_quotemark;
1702 GtkWidget *scrolledwin_quotefmt;
1703 GtkWidget *text_quotefmt;
1705 GtkWidget *entry_fw_quotemark;
1706 GtkWidget *text_fw_quotefmt;
1708 GtkWidget *entry_quote_chars;
1709 GtkWidget *label_quote_chars;
1711 GtkWidget *btn_quotedesc;
1713 GtkWidget *checkbtn_reply_with_quote;
1715 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1716 gtk_widget_show (vbox1);
1717 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1718 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1722 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1724 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1726 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1727 gtk_widget_show (vbox_quote);
1728 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1729 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1731 hbox1 = gtk_hbox_new (FALSE, 32);
1732 gtk_widget_show (hbox1);
1733 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1735 hbox2 = gtk_hbox_new (FALSE, 8);
1736 gtk_widget_show (hbox2);
1737 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1739 label_quotemark = gtk_label_new (_("Quotation mark"));
1740 gtk_widget_show (label_quotemark);
1741 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1743 entry_quotemark = gtk_entry_new ();
1744 gtk_widget_show (entry_quotemark);
1745 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
1746 gtk_widget_set_usize (entry_quotemark, 64, -1);
1748 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1749 gtk_widget_show (scrolledwin_quotefmt);
1750 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1751 gtk_scrolled_window_set_policy
1752 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1753 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1755 text_quotefmt = gtk_text_new (NULL, NULL);
1756 gtk_widget_show (text_quotefmt);
1757 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
1758 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
1759 gtk_widget_set_usize(text_quotefmt, -1, 60);
1763 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
1765 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1766 gtk_widget_show (vbox_quote);
1767 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1768 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1770 hbox1 = gtk_hbox_new (FALSE, 32);
1771 gtk_widget_show (hbox1);
1772 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1774 hbox2 = gtk_hbox_new (FALSE, 8);
1775 gtk_widget_show (hbox2);
1776 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1778 label_quotemark = gtk_label_new (_("Quotation mark"));
1779 gtk_widget_show (label_quotemark);
1780 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1782 entry_fw_quotemark = gtk_entry_new ();
1783 gtk_widget_show (entry_fw_quotemark);
1784 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
1786 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
1788 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1789 gtk_widget_show (scrolledwin_quotefmt);
1790 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1791 gtk_scrolled_window_set_policy
1792 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1793 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1795 text_fw_quotefmt = gtk_text_new (NULL, NULL);
1796 gtk_widget_show (text_fw_quotefmt);
1797 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
1799 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
1800 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
1802 hbox1 = gtk_hbox_new (FALSE, 32);
1803 gtk_widget_show (hbox1);
1804 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1807 gtk_button_new_with_label (_(" Description of symbols "));
1808 gtk_widget_show (btn_quotedesc);
1809 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
1810 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
1811 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
1815 PACK_FRAME (vbox1, frame_quote, _("Quotation characters"));
1817 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1818 gtk_widget_show (vbox_quote);
1819 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1820 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1822 hbox1 = gtk_hbox_new (FALSE, 32);
1823 gtk_widget_show (hbox1);
1824 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1826 hbox2 = gtk_hbox_new (FALSE, 8);
1827 gtk_widget_show (hbox2);
1828 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1830 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
1831 gtk_widget_show (label_quote_chars);
1832 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
1834 entry_quote_chars = gtk_entry_new ();
1835 gtk_widget_show (entry_quote_chars);
1836 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
1838 gtk_widget_set_usize (entry_quote_chars, 64, -1);
1841 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
1842 quote.entry_quotemark = entry_quotemark;
1843 quote.text_quotefmt = text_quotefmt;
1844 quote.entry_fw_quotemark = entry_fw_quotemark;
1845 quote.text_fw_quotefmt = text_fw_quotefmt;
1846 quote.entry_quote_chars = entry_quote_chars;
1849 static void prefs_display_create(void)
1852 GtkWidget *frame_font;
1854 GtkWidget *label_textfont;
1855 GtkWidget *entry_textfont;
1856 GtkWidget *button_textfont;
1857 GtkWidget *chkbtn_transhdr;
1858 GtkWidget *chkbtn_folder_unread;
1860 GtkWidget *label_ng_abbrev;
1861 GtkWidget *spinbtn_ng_abbrev_len;
1862 GtkObject *spinbtn_ng_abbrev_len_adj;
1863 GtkWidget *frame_summary;
1865 GtkWidget *chkbtn_swapfrom;
1866 GtkWidget *chkbtn_useaddrbook;
1867 GtkWidget *chkbtn_threadsubj;
1869 GtkWidget *label_datefmt;
1870 GtkWidget *button_datefmt;
1871 GtkWidget *entry_datefmt;
1872 GtkWidget *button_dispitem;
1873 GtkWidget *tmplabel, *tmpbutton, *tmpentry;
1875 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1876 gtk_widget_show (vbox1);
1877 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1878 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1880 PACK_FRAME(vbox1, frame_font, _("Font"));
1882 table1 = gtk_table_new (4, 3, FALSE);
1884 gtk_widget_show (table1);
1885 gtk_container_add (GTK_CONTAINER (frame_font), table1);
1886 gtk_container_set_border_width (GTK_CONTAINER (table1), 8);
1887 gtk_table_set_row_spacings (GTK_TABLE (table1), 8);
1888 gtk_table_set_col_spacings (GTK_TABLE (table1), 8);
1890 label_textfont = gtk_label_new (_("Text"));
1891 gtk_misc_set_alignment(GTK_MISC(label_textfont), 0, 0.5);
1892 gtk_widget_show (label_textfont);
1893 gtk_table_attach (GTK_TABLE (table1), label_textfont, 0, 1, 0, 1,
1894 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1896 entry_textfont = gtk_entry_new ();
1897 gtk_widget_show (entry_textfont);
1898 gtk_table_attach (GTK_TABLE (table1), entry_textfont, 1, 2, 0, 1,
1899 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
1901 button_textfont = gtk_button_new_with_label (" ... ");
1903 gtk_widget_show (button_textfont);
1904 gtk_table_attach (GTK_TABLE (table1), button_textfont, 2, 3, 0, 1,
1906 gtk_signal_connect (GTK_OBJECT (button_textfont), "clicked",
1907 GTK_SIGNAL_FUNC (prefs_font_select), entry_textfont);
1909 tmplabel = gtk_label_new (_("Small"));
1910 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
1911 gtk_widget_show (tmplabel);
1912 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 1, 2,
1913 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1915 tmpentry = gtk_entry_new ();
1916 gtk_widget_show (tmpentry);
1917 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 1, 2,
1918 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
1920 tmpbutton = gtk_button_new_with_label (" ... ");
1921 gtk_widget_show (tmpbutton);
1922 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 1, 2,
1924 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
1925 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
1926 display.entry_smallfont = tmpentry;
1928 tmplabel = gtk_label_new (_("Normal"));
1929 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
1930 gtk_widget_show (tmplabel);
1931 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 2, 3,
1932 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1934 tmpentry = gtk_entry_new ();
1935 gtk_widget_show (tmpentry);
1936 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 2, 3,
1937 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
1939 tmpbutton = gtk_button_new_with_label (" ... ");
1940 gtk_widget_show (tmpbutton);
1941 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 2, 3,
1943 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
1944 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
1945 display.entry_normalfont = tmpentry;
1947 tmplabel = gtk_label_new (_("Bold"));
1948 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
1949 gtk_widget_show (tmplabel);
1950 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 3, 4,
1951 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1953 tmpentry = gtk_entry_new ();
1954 gtk_widget_show (tmpentry);
1955 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 3, 4,
1956 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
1958 tmpbutton = gtk_button_new_with_label (" ... ");
1959 gtk_widget_show (tmpbutton);
1960 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 3, 4,
1962 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
1963 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
1964 display.entry_boldfont = tmpentry;
1966 vbox2 = gtk_vbox_new (FALSE, 0);
1967 gtk_widget_show (vbox2);
1968 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
1971 (vbox2, chkbtn_transhdr,
1972 _("Translate header name (such as `From:', `Subject:')"));
1974 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
1975 _("Display unread number next to folder name"));
1977 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1979 hbox1 = gtk_hbox_new (FALSE, 8);
1980 gtk_widget_show (hbox1);
1981 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1983 label_ng_abbrev = gtk_label_new
1984 (_("Abbreviate newsgroup names longer than"));
1985 gtk_widget_show (label_ng_abbrev);
1986 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1988 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
1989 spinbtn_ng_abbrev_len = gtk_spin_button_new
1990 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
1991 gtk_widget_show (spinbtn_ng_abbrev_len);
1992 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
1994 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
1995 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
1998 label_ng_abbrev = gtk_label_new
2000 gtk_widget_show (label_ng_abbrev);
2001 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
2003 /* ---- Summary ---- */
2005 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
2007 vbox2 = gtk_vbox_new (FALSE, 0);
2008 gtk_widget_show (vbox2);
2009 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
2010 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
2013 (vbox2, chkbtn_swapfrom,
2014 _("Display recipient in `From' column if sender is yourself"));
2016 (vbox2, chkbtn_useaddrbook,
2017 _("Display sender using address book"));
2019 (vbox2, chkbtn_threadsubj,
2020 _("Thread using subject in addition to standard headers"));
2022 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2024 hbox1 = gtk_hbox_new (FALSE, 8);
2025 gtk_widget_show (hbox1);
2026 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2028 label_datefmt = gtk_label_new (_("Date format"));
2029 gtk_widget_show (label_datefmt);
2030 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
2032 entry_datefmt = gtk_entry_new ();
2033 gtk_widget_show (entry_datefmt);
2034 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
2036 button_datefmt = gtk_button_new_with_label (" ... ");
2038 gtk_widget_show (button_datefmt);
2039 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
2040 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
2041 GTK_SIGNAL_FUNC (date_format_create), NULL);
2043 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
2045 hbox1 = gtk_hbox_new (FALSE, 8);
2046 gtk_widget_show (hbox1);
2047 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2049 button_dispitem = gtk_button_new_with_label
2050 (_(" Set displayed items in summary... "));
2051 gtk_widget_show (button_dispitem);
2052 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
2053 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
2054 GTK_SIGNAL_FUNC (prefs_summary_column_open),
2057 display.entry_textfont = entry_textfont;
2058 display.button_textfont = button_textfont;
2060 display.chkbtn_transhdr = chkbtn_transhdr;
2061 display.chkbtn_folder_unread = chkbtn_folder_unread;
2062 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
2063 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
2065 display.chkbtn_swapfrom = chkbtn_swapfrom;
2066 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
2067 display.chkbtn_threadsubj = chkbtn_threadsubj;
2068 display.entry_datefmt = entry_datefmt;
2071 static void prefs_message_create(void)
2077 GtkWidget *chkbtn_enablecol;
2078 GtkWidget *button_edit_col;
2079 GtkWidget *chkbtn_mbalnum;
2080 GtkWidget *chkbtn_disphdrpane;
2081 GtkWidget *chkbtn_disphdr;
2082 GtkWidget *button_edit_disphdr;
2083 GtkWidget *hbox_linespc;
2084 GtkWidget *label_linespc;
2085 GtkObject *spinbtn_linespc_adj;
2086 GtkWidget *spinbtn_linespc;
2087 GtkWidget *chkbtn_headspc;
2089 GtkWidget *frame_scr;
2090 GtkWidget *vbox_scr;
2091 GtkWidget *chkbtn_smoothscroll;
2092 GtkWidget *hbox_scr;
2093 GtkWidget *label_scr;
2094 GtkObject *spinbtn_scrollstep_adj;
2095 GtkWidget *spinbtn_scrollstep;
2096 GtkWidget *chkbtn_halfpage;
2098 GtkWidget *chkbtn_attach_desc;
2100 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2101 gtk_widget_show (vbox1);
2102 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2103 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2105 vbox2 = gtk_vbox_new (FALSE, 0);
2106 gtk_widget_show (vbox2);
2107 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2109 hbox1 = gtk_hbox_new (FALSE, 8);
2110 gtk_widget_show (hbox1);
2111 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2113 PACK_CHECK_BUTTON (hbox1, chkbtn_enablecol,
2114 _("Enable coloration of message"));
2115 gtk_signal_connect (GTK_OBJECT (chkbtn_enablecol), "toggled",
2116 GTK_SIGNAL_FUNC (prefs_enable_message_color_toggled),
2119 button_edit_col = gtk_button_new_with_label (_(" Edit... "));
2120 gtk_widget_show (button_edit_col);
2121 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_col, FALSE, TRUE, 0);
2122 gtk_signal_connect (GTK_OBJECT (button_edit_col), "clicked",
2123 GTK_SIGNAL_FUNC (prefs_quote_colors_dialog), NULL);
2125 SET_TOGGLE_SENSITIVITY(chkbtn_enablecol, button_edit_col);
2128 (vbox2, chkbtn_mbalnum,
2129 _("Display multi-byte alphanumeric as\n"
2130 "ASCII character (Japanese only)"));
2131 gtk_label_set_justify (GTK_LABEL (GTK_BIN(chkbtn_mbalnum)->child),
2134 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
2135 _("Display header pane above message view"));
2137 hbox1 = gtk_hbox_new (FALSE, 8);
2138 gtk_widget_show (hbox1);
2139 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2141 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
2142 _("Display short headers on message view"));
2144 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
2145 gtk_widget_show (button_edit_disphdr);
2146 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
2148 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
2149 GTK_SIGNAL_FUNC (prefs_display_header_open),
2152 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
2154 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2156 hbox1 = gtk_hbox_new (FALSE, 32);
2157 gtk_widget_show (hbox1);
2158 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2160 hbox_linespc = gtk_hbox_new (FALSE, 8);
2161 gtk_widget_show (hbox1);
2162 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
2164 label_linespc = gtk_label_new (_("Line space"));
2165 gtk_widget_show (label_linespc);
2166 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2169 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
2170 spinbtn_linespc = gtk_spin_button_new
2171 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
2172 gtk_widget_show (spinbtn_linespc);
2173 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
2175 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
2176 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
2178 label_linespc = gtk_label_new (_("pixel(s)"));
2179 gtk_widget_show (label_linespc);
2180 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2183 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Leave space on head"));
2185 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
2187 vbox_scr = gtk_vbox_new (FALSE, 0);
2188 gtk_widget_show (vbox_scr);
2189 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
2190 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
2192 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
2194 hbox1 = gtk_hbox_new (FALSE, 32);
2195 gtk_widget_show (hbox1);
2196 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
2198 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
2200 hbox_scr = gtk_hbox_new (FALSE, 8);
2201 gtk_widget_show (hbox_scr);
2202 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
2204 label_scr = gtk_label_new (_("Step"));
2205 gtk_widget_show (label_scr);
2206 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2208 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
2209 spinbtn_scrollstep = gtk_spin_button_new
2210 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
2211 gtk_widget_show (spinbtn_scrollstep);
2212 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
2214 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
2215 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
2218 label_scr = gtk_label_new (_("pixel(s)"));
2219 gtk_widget_show (label_scr);
2220 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2222 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
2224 vbox3 = gtk_vbox_new (FALSE, 0);
2225 gtk_widget_show (vbox3);
2226 gtk_box_pack_start (GTK_BOX (vbox1), vbox3, FALSE, FALSE, 0);
2228 PACK_CHECK_BUTTON(vbox3, chkbtn_attach_desc,
2229 _("Show attachment descriptions (rather than names)"));
2232 message.chkbtn_enablecol = chkbtn_enablecol;
2233 message.button_edit_col = button_edit_col;
2234 message.chkbtn_mbalnum = chkbtn_mbalnum;
2235 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
2236 message.chkbtn_disphdr = chkbtn_disphdr;
2237 message.spinbtn_linespc = spinbtn_linespc;
2238 message.chkbtn_headspc = chkbtn_headspc;
2240 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
2241 message.spinbtn_scrollstep = spinbtn_scrollstep;
2242 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
2243 message.chkbtn_halfpage = chkbtn_halfpage;
2245 message.chkbtn_attach_desc = chkbtn_attach_desc;
2249 static void prefs_privacy_create(void)
2255 GtkWidget *hbox_spc;
2257 GtkWidget *checkbtn_auto_check_signatures;
2258 GtkWidget *checkbtn_gpg_signature_popup;
2259 GtkWidget *checkbtn_store_passphrase;
2260 GtkObject *spinbtn_store_passphrase_adj;
2261 GtkWidget *spinbtn_store_passphrase;
2262 GtkWidget *checkbtn_passphrase_grab;
2263 GtkWidget *checkbtn_gpg_warning;
2265 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2266 gtk_widget_show (vbox1);
2267 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2268 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2270 vbox2 = gtk_vbox_new (FALSE, 0);
2271 gtk_widget_show (vbox2);
2272 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2274 PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
2275 _("Automatically check signatures"));
2277 PACK_CHECK_BUTTON (vbox2, checkbtn_gpg_signature_popup,
2278 _("Show signature check result in a popup window"));
2280 PACK_CHECK_BUTTON (vbox2, checkbtn_store_passphrase,
2281 _("Store passphrase in memory temporarily"));
2283 vbox3 = gtk_vbox_new (FALSE, 0);
2284 gtk_widget_show (vbox3);
2285 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2287 hbox1 = gtk_hbox_new (FALSE, 8);
2288 gtk_widget_show (hbox1);
2289 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2291 hbox_spc = gtk_hbox_new (FALSE, 0);
2292 gtk_widget_show (hbox_spc);
2293 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2294 gtk_widget_set_usize (hbox_spc, 12, -1);
2296 label = gtk_label_new (_("Expire after"));
2297 gtk_widget_show (label);
2298 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2300 spinbtn_store_passphrase_adj = gtk_adjustment_new (0, 0, 1440, 1, 5, 5);
2301 spinbtn_store_passphrase = gtk_spin_button_new
2302 (GTK_ADJUSTMENT (spinbtn_store_passphrase_adj), 1, 0);
2303 gtk_widget_show (spinbtn_store_passphrase);
2304 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_store_passphrase, FALSE, FALSE, 0);
2305 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_store_passphrase),
2307 gtk_widget_set_usize (spinbtn_store_passphrase, 64, -1);
2309 label = gtk_label_new (_("minute(s) "));
2310 gtk_widget_show (label);
2311 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2313 hbox1 = gtk_hbox_new (FALSE, 8);
2314 gtk_widget_show (hbox1);
2315 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2317 hbox_spc = gtk_hbox_new (FALSE, 0);
2318 gtk_widget_show (hbox_spc);
2319 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2320 gtk_widget_set_usize (hbox_spc, 12, -1);
2322 label = gtk_label_new (_("(Setting to '0' will store the passphrase\n"
2323 " for the whole session)"));
2324 gtk_widget_show (label);
2325 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2326 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2328 SET_TOGGLE_SENSITIVITY (checkbtn_store_passphrase, vbox3);
2331 PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab,
2332 _("Grab input while entering a passphrase"));
2336 (vbox2, checkbtn_gpg_warning,
2337 _("Display warning on startup if GnuPG doesn't work"));
2339 hbox1 = gtk_hbox_new (FALSE, 8);
2340 gtk_widget_show (hbox1);
2341 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2343 privacy.checkbtn_auto_check_signatures
2344 = checkbtn_auto_check_signatures;
2345 privacy.checkbtn_gpg_signature_popup
2346 = checkbtn_gpg_signature_popup;
2347 privacy.checkbtn_store_passphrase = checkbtn_store_passphrase;
2348 privacy.spinbtn_store_passphrase = spinbtn_store_passphrase;
2349 privacy.spinbtn_store_passphrase_adj = spinbtn_store_passphrase_adj;
2350 privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
2351 privacy.checkbtn_gpg_warning = checkbtn_gpg_warning;
2353 #endif /* USE_GPGME */
2355 static void prefs_interface_create(void)
2360 /* GtkWidget *checkbtn_emacs; */
2361 GtkWidget *checkbtn_always_show_msg;
2362 GtkWidget *checkbtn_openunread;
2363 GtkWidget *checkbtn_mark_as_read_on_newwin;
2364 GtkWidget *checkbtn_openinbox;
2365 GtkWidget *checkbtn_immedexec;
2369 GtkWidget *menuitem;
2371 GtkWidget *button_keybind;
2373 GtkWidget *hbox_nextunreadmsgdialog;
2374 GtkWidget *optmenu_nextunreadmsgdialog;
2376 GtkWidget *frame_pixmap_theme;
2377 GtkWidget *vbox_pixmap_theme;
2378 GtkWidget *entry_pixmap_theme;
2379 GtkWidget *combo_pixmap_theme;
2380 GList *avail_pixmap_themes = NULL;
2382 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2383 gtk_widget_show (vbox1);
2384 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2385 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2387 vbox2 = gtk_vbox_new (FALSE, 0);
2388 gtk_widget_show (vbox2);
2389 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2391 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
2392 _("Emulate the behavior of mouse operation of\n"
2393 "Emacs-based mailer"));
2394 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
2395 GTK_JUSTIFY_LEFT); */
2398 (vbox2, checkbtn_always_show_msg,
2399 _("Always open messages in summary when selected"));
2402 (vbox2, checkbtn_openunread,
2403 _("Open first unread message when entering a folder"));
2406 (vbox2, checkbtn_mark_as_read_on_newwin,
2407 _("Only mark message as read when opened in new window"));
2410 (vbox2, checkbtn_openinbox,
2411 _("Go to inbox after receiving new mail"));
2413 vbox3 = gtk_vbox_new (FALSE, 0);
2414 gtk_widget_show (vbox3);
2415 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2418 (vbox3, checkbtn_immedexec,
2419 _("Execute immediately when moving or deleting messages"));
2421 hbox1 = gtk_hbox_new (FALSE, 0);
2422 gtk_widget_show (hbox1);
2423 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2425 label = gtk_label_new
2426 (_("(Messages will be marked until execution\n"
2427 " if this is turned off)"));
2428 gtk_widget_show (label);
2429 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 8);
2430 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2432 /* Next Unread Message Dialog */
2433 hbox_nextunreadmsgdialog = gtk_hbox_new (FALSE, 8);
2434 gtk_widget_show (hbox1);
2435 gtk_box_pack_start (GTK_BOX (vbox1), hbox_nextunreadmsgdialog, FALSE, FALSE, 0);
2437 label = gtk_label_new (_("Show no-unread-message dialog"));
2438 gtk_widget_show (label);
2439 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), label, FALSE, FALSE, 8);
2441 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
2442 gtk_widget_show (optmenu_nextunreadmsgdialog);
2443 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), optmenu_nextunreadmsgdialog, FALSE, FALSE, 8);
2445 menu = gtk_menu_new ();
2446 MENUITEM_ADD (menu, menuitem, _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
2447 MENUITEM_ADD (menu, menuitem, _("Assume 'Yes'"),
2448 NEXTUNREADMSGDIALOG_ASSUME_YES);
2449 MENUITEM_ADD (menu, menuitem, _("Assume 'No'"),
2450 NEXTUNREADMSGDIALOG_ASSUME_NO);
2452 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog), menu);
2454 hbox1 = gtk_hbox_new (FALSE, 8);
2455 gtk_widget_show (hbox1);
2456 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2458 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
2459 gtk_widget_show (button_keybind);
2460 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
2461 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
2462 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
2464 PACK_FRAME(vbox1, frame_pixmap_theme, _("Icon theme"));
2466 vbox_pixmap_theme = gtk_vbox_new(FALSE, 0);
2467 gtk_widget_show(vbox_pixmap_theme);
2468 gtk_container_add(GTK_CONTAINER(frame_pixmap_theme), vbox_pixmap_theme);
2469 gtk_container_set_border_width(GTK_CONTAINER(vbox_pixmap_theme), 8);
2471 avail_pixmap_themes = stock_pixmap_themes_list_new();
2473 combo_pixmap_theme = gtk_combo_new ();
2474 gtk_widget_show (combo_pixmap_theme);
2475 gtk_box_pack_start (GTK_BOX (vbox_pixmap_theme), combo_pixmap_theme, TRUE, TRUE, 0);
2476 gtk_combo_set_popdown_strings(GTK_COMBO(combo_pixmap_theme), avail_pixmap_themes);
2477 entry_pixmap_theme = GTK_COMBO (combo_pixmap_theme)->entry;
2479 stock_pixmap_themes_list_free(avail_pixmap_themes);
2481 /* interface.checkbtn_emacs = checkbtn_emacs; */
2482 interface.checkbtn_always_show_msg = checkbtn_always_show_msg;
2483 interface.checkbtn_openunread = checkbtn_openunread;
2484 interface.checkbtn_mark_as_read_on_newwin
2485 = checkbtn_mark_as_read_on_newwin;
2486 interface.checkbtn_openinbox = checkbtn_openinbox;
2487 interface.checkbtn_immedexec = checkbtn_immedexec;
2488 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
2489 interface.combo_pixmap_theme = combo_pixmap_theme;
2490 interface.entry_pixmap_theme = entry_pixmap_theme;
2493 static void prefs_other_create(void)
2496 GtkWidget *ext_frame;
2497 GtkWidget *ext_table;
2500 GtkWidget *uri_label;
2501 GtkWidget *uri_combo;
2502 GtkWidget *uri_entry;
2504 GtkWidget *printcmd_label;
2505 GtkWidget *printcmd_entry;
2507 GtkWidget *exteditor_label;
2508 GtkWidget *exteditor_combo;
2509 GtkWidget *exteditor_entry;
2511 GtkWidget *frame_addr;
2512 GtkWidget *vbox_addr;
2513 GtkWidget *checkbtn_addaddrbyclick;
2515 GtkWidget *frame_cliplog;
2516 GtkWidget *vbox_cliplog;
2517 GtkWidget *hbox_cliplog;
2518 GtkWidget *checkbtn_cliplog;
2519 GtkWidget *loglength_label;
2520 GtkWidget *loglength_entry;
2522 GtkWidget *frame_exit;
2523 GtkWidget *vbox_exit;
2524 GtkWidget *checkbtn_confonexit;
2525 GtkWidget *checkbtn_cleanonexit;
2526 GtkWidget *checkbtn_askonclean;
2527 GtkWidget *checkbtn_warnqueued;
2529 GtkWidget *label_iotimeout;
2530 GtkWidget *spinbtn_iotimeout;
2531 GtkObject *spinbtn_iotimeout_adj;
2535 GtkWidget *frame_ssl;
2536 GtkWidget *vbox_ssl;
2537 GtkWidget *hbox_ssl;
2538 GtkWidget *checkbtn_ssl_ask_unknown_valid;
2541 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2542 gtk_widget_show (vbox1);
2543 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2544 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2546 PACK_FRAME(vbox1, ext_frame,
2547 _("External commands (%s will be replaced with file name / URI)"));
2549 ext_table = gtk_table_new (3, 2, FALSE);
2550 gtk_widget_show (ext_table);
2551 gtk_container_add (GTK_CONTAINER (ext_frame), ext_table);
2552 gtk_container_set_border_width (GTK_CONTAINER (ext_table), 8);
2553 gtk_table_set_row_spacings (GTK_TABLE (ext_table), VSPACING_NARROW);
2554 gtk_table_set_col_spacings (GTK_TABLE (ext_table), 8);
2556 uri_label = gtk_label_new (_("Web browser"));
2557 gtk_widget_show(uri_label);
2558 gtk_table_attach (GTK_TABLE (ext_table), uri_label, 0, 1, 0, 1,
2559 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2560 gtk_misc_set_alignment (GTK_MISC (uri_label), 1, 0.5);
2562 uri_combo = gtk_combo_new ();
2563 gtk_widget_show (uri_combo);
2564 gtk_table_attach (GTK_TABLE (ext_table), uri_combo, 1, 2, 0, 1,
2565 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2566 gtkut_combo_set_items (GTK_COMBO (uri_combo),
2567 DEFAULT_BROWSER_CMD,
2568 "galeon --new-tab '%s'",
2570 "mozilla -remote 'openurl(%s,new-window)'",
2571 "netscape -remote 'openURL(%s, new-window)'",
2573 "gnome-moz-remote --newwin '%s'",
2574 "kfmclient openURL '%s'",
2575 "opera -newwindow '%s'",
2576 "kterm -e w3m '%s'",
2577 "kterm -e lynx '%s'",
2579 uri_entry = GTK_COMBO (uri_combo)->entry;
2581 printcmd_label = gtk_label_new (_("Print"));
2582 gtk_widget_show (printcmd_label);
2583 gtk_table_attach (GTK_TABLE (ext_table), printcmd_label, 0, 1, 1, 2,
2584 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2585 gtk_misc_set_alignment (GTK_MISC (printcmd_label), 1, 0.5);
2587 printcmd_entry = gtk_entry_new ();
2588 gtk_widget_show (printcmd_entry);
2589 gtk_table_attach (GTK_TABLE (ext_table), printcmd_entry, 1, 2, 1, 2,
2590 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2592 exteditor_label = gtk_label_new (_("Editor"));
2593 gtk_widget_show (exteditor_label);
2594 gtk_table_attach (GTK_TABLE (ext_table), exteditor_label, 0, 1, 2, 3,
2595 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2596 gtk_misc_set_alignment (GTK_MISC (exteditor_label), 1, 0.5);
2598 exteditor_combo = gtk_combo_new ();
2599 gtk_widget_show (exteditor_combo);
2600 gtk_table_attach (GTK_TABLE (ext_table), exteditor_combo, 1, 2, 2, 3,
2601 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2602 gtkut_combo_set_items (GTK_COMBO (exteditor_combo),
2605 "mgedit --no-fork %s",
2611 exteditor_entry = GTK_COMBO (exteditor_combo)->entry;
2613 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2615 vbox_addr = gtk_vbox_new (FALSE, 0);
2616 gtk_widget_show (vbox_addr);
2617 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2618 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2621 (vbox_addr, checkbtn_addaddrbyclick,
2622 _("Add address to destination when double-clicked"));
2625 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2627 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2628 gtk_widget_show (vbox_cliplog);
2629 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2630 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2631 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2632 _("Clip the log size"));
2633 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2634 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2635 gtk_widget_show (hbox_cliplog);
2637 loglength_label = gtk_label_new (_("Log window length"));
2638 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2640 gtk_widget_show (GTK_WIDGET (loglength_label));
2641 loglength_entry = gtk_entry_new ();
2642 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2643 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2645 gtk_widget_show (GTK_WIDGET (loglength_entry));
2646 loglength_label = gtk_label_new (_("(0 to stop logging in the log window)"));
2647 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2649 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2654 PACK_FRAME (vbox1, frame_ssl, _("Security"));
2656 vbox_ssl = gtk_vbox_new (FALSE, 0);
2657 gtk_widget_show (vbox_ssl);
2658 gtk_container_add (GTK_CONTAINER (frame_ssl), vbox_ssl);
2659 gtk_container_set_border_width (GTK_CONTAINER (vbox_ssl), 8);
2660 PACK_CHECK_BUTTON (vbox_ssl, checkbtn_ssl_ask_unknown_valid,
2661 _("Ask before accepting SSL certificates"));
2662 hbox_ssl = gtk_hbox_new (FALSE, 3);
2663 gtk_container_add (GTK_CONTAINER (vbox_ssl), hbox_ssl);
2664 gtk_widget_show (hbox_ssl);
2669 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2671 vbox_exit = gtk_vbox_new (FALSE, 0);
2672 gtk_widget_show (vbox_exit);
2673 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2674 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
2676 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
2677 _("Confirm on exit"));
2679 hbox1 = gtk_hbox_new (FALSE, 32);
2680 gtk_widget_show (hbox1);
2681 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
2683 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
2684 _("Empty trash on exit"));
2685 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
2686 _("Ask before emptying"));
2687 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
2689 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
2690 _("Warn if there are queued messages"));
2692 hbox1 = gtk_hbox_new (FALSE, 8);
2693 gtk_widget_show (hbox1);
2694 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2696 label_iotimeout = gtk_label_new (_("Socket I/O timeout:"));
2697 gtk_widget_show (label_iotimeout);
2698 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2700 spinbtn_iotimeout_adj = gtk_adjustment_new (60, 0, 1000, 1, 10, 10);
2701 spinbtn_iotimeout = gtk_spin_button_new
2702 (GTK_ADJUSTMENT (spinbtn_iotimeout_adj), 1, 0);
2703 gtk_widget_show (spinbtn_iotimeout);
2704 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_iotimeout,
2706 gtk_widget_set_usize (spinbtn_iotimeout, 64, -1);
2707 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_iotimeout), TRUE);
2709 label_iotimeout = gtk_label_new (_("second(s)"));
2710 gtk_widget_show (label_iotimeout);
2711 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2713 other.uri_combo = uri_combo;
2714 other.uri_entry = uri_entry;
2715 other.printcmd_entry = printcmd_entry;
2717 other.exteditor_combo = exteditor_combo;
2718 other.exteditor_entry = exteditor_entry;
2720 other.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2722 other.checkbtn_cliplog = checkbtn_cliplog;
2723 other.loglength_entry = loglength_entry;
2725 other.checkbtn_confonexit = checkbtn_confonexit;
2726 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
2727 other.checkbtn_askonclean = checkbtn_askonclean;
2728 other.checkbtn_warnqueued = checkbtn_warnqueued;
2730 other.spinbtn_iotimeout = spinbtn_iotimeout;
2731 other.spinbtn_iotimeout_adj = spinbtn_iotimeout_adj;
2735 other.checkbtn_ssl_ask_unknown_valid = checkbtn_ssl_ask_unknown_valid;
2740 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
2742 GtkWidget *datefmt_sample = NULL;
2745 g_return_if_fail(widget != NULL);
2746 g_return_if_fail(*widget != NULL);
2747 g_return_if_fail(display.entry_datefmt != NULL);
2749 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2750 (GTK_OBJECT(*widget), "datefmt_sample"));
2751 g_return_if_fail(datefmt_sample != NULL);
2753 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
2754 g_free(prefs_common.date_format);
2755 prefs_common.date_format = text;
2756 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
2758 gtk_widget_destroy(*widget);
2762 static void date_format_cancel_btn_clicked(GtkButton *button,
2765 g_return_if_fail(widget != NULL);
2766 g_return_if_fail(*widget != NULL);
2768 gtk_widget_destroy(*widget);
2772 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
2775 if (event && event->keyval == GDK_Escape)
2776 date_format_cancel_btn_clicked(NULL, widget);
2779 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
2780 GdkEventAny *event, GtkWidget **widget)
2782 g_return_val_if_fail(widget != NULL, FALSE);
2783 g_return_val_if_fail(*widget != NULL, FALSE);
2789 static void date_format_entry_on_change(GtkEditable *editable,
2793 struct tm *cal_time;
2797 cur_time = time(NULL);
2798 cal_time = localtime(&cur_time);
2800 text = gtk_editable_get_chars(editable, 0, -1);
2802 strftime(buffer, sizeof buffer, text, cal_time);
2804 gtk_label_set_text(example, buffer);
2807 static void date_format_select_row(GtkWidget *date_format_list, gint row,
2808 gint column, GdkEventButton *event,
2809 GtkWidget *date_format)
2815 GtkWidget *datefmt_sample;
2817 /* only on double click */
2818 if (!event || event->type != GDK_2BUTTON_PRESS) return;
2821 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2822 (GTK_OBJECT(date_format), "datefmt_sample"));
2824 g_return_if_fail(date_format_list != NULL);
2825 g_return_if_fail(date_format != NULL);
2826 g_return_if_fail(datefmt_sample != NULL);
2828 /* get format from clist */
2829 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
2831 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
2832 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
2834 /* insert the format into the text entry */
2835 new_format = g_malloc(strlen(old_format) + 3);
2837 strncpy(new_format, old_format, cur_pos);
2838 new_format[cur_pos] = '\0';
2839 strcat(new_format, format);
2840 strcat(new_format, &old_format[cur_pos]);
2842 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
2843 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
2848 static GtkWidget *date_format_create(GtkButton *button, void *data)
2850 static GtkWidget *datefmt_win = NULL;
2852 GtkWidget *scrolledwindow1;
2853 GtkWidget *datefmt_clist;
2858 GtkWidget *confirm_area;
2860 GtkWidget *cancel_btn;
2861 GtkWidget *datefmt_entry;
2890 const gint TIME_FORMAT_ELEMS =
2891 sizeof time_format / sizeof time_format[0];
2893 time_format[0].txt = _("the full abbreviated weekday name");
2894 time_format[1].txt = _("the full weekday name");
2895 time_format[2].txt = _("the abbreviated month name");
2896 time_format[3].txt = _("the full month name");
2897 time_format[4].txt = _("the preferred date and time for the current locale");
2898 time_format[5].txt = _("the century number (year/100)");
2899 time_format[6].txt = _("the day of the month as a decimal number");
2900 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
2901 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
2902 time_format[9].txt = _("the day of the year as a decimal number");
2903 time_format[10].txt = _("the month as a decimal number");
2904 time_format[11].txt = _("the minute as a decimal number");
2905 time_format[12].txt = _("either AM or PM");
2906 time_format[13].txt = _("the second as a decimal number");
2907 time_format[14].txt = _("the day of the week as a decimal number");
2908 time_format[15].txt = _("the preferred date for the current locale");
2909 time_format[16].txt = _("the last two digits of a year");
2910 time_format[17].txt = _("the year as a decimal number");
2911 time_format[18].txt = _("the time zone or name or abbreviation");
2913 if (datefmt_win) return datefmt_win;
2915 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
2916 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
2917 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
2918 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2919 gtk_widget_set_usize(datefmt_win, 440, 280);
2921 vbox1 = gtk_vbox_new(FALSE, 10);
2922 gtk_widget_show(vbox1);
2923 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
2925 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
2926 gtk_scrolled_window_set_policy
2927 (GTK_SCROLLED_WINDOW(scrolledwindow1),
2928 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
2929 gtk_widget_show(scrolledwindow1);
2930 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
2932 titles[0] = _("Specifier");
2933 titles[1] = _("Description");
2934 datefmt_clist = gtk_clist_new_with_titles(2, titles);
2935 gtk_widget_show(datefmt_clist);
2936 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
2937 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
2938 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
2939 GTK_SELECTION_BROWSE);
2941 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
2943 /* phoney casting necessary because of gtk... */
2944 text[0] = (gchar *)time_format[i].fmt;
2945 text[1] = (gchar *)time_format[i].txt;
2946 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
2949 table = gtk_table_new(2, 2, FALSE);
2950 gtk_widget_show(table);
2951 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
2952 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
2953 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
2955 label1 = gtk_label_new(_("Date format"));
2956 gtk_widget_show(label1);
2957 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
2959 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
2960 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
2962 datefmt_entry = gtk_entry_new_with_max_length(256);
2963 gtk_widget_show(datefmt_entry);
2964 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
2965 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2967 /* we need the "sample" entry box; add it as data so callbacks can
2968 * get the entry box */
2969 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
2972 label2 = gtk_label_new(_("Example"));
2973 gtk_widget_show(label2);
2974 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
2976 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
2977 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
2979 label3 = gtk_label_new("");
2980 gtk_widget_show(label3);
2981 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
2982 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2983 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
2984 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
2986 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
2987 &cancel_btn, _("Cancel"), NULL, NULL);
2988 gtk_widget_grab_default(ok_btn);
2989 gtk_widget_show(confirm_area);
2991 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
2993 /* set the current format */
2994 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
2995 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
2998 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2999 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
3001 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
3002 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
3004 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
3005 GTK_SIGNAL_FUNC(date_format_key_pressed),
3007 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
3008 GTK_SIGNAL_FUNC(date_format_on_delete),
3010 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
3011 GTK_SIGNAL_FUNC(date_format_entry_on_change),
3014 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
3015 GTK_SIGNAL_FUNC(date_format_select_row),
3018 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
3019 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
3021 gtk_widget_show(datefmt_win);
3022 manage_window_set_transient(GTK_WINDOW(datefmt_win));
3024 gtk_widget_grab_focus(ok_btn);
3029 void prefs_quote_colors_dialog(void)
3031 if (!quote_color_win)
3032 prefs_quote_colors_dialog_create();
3033 gtk_widget_show(quote_color_win);
3034 manage_window_set_transient(GTK_WINDOW(quote_color_win));
3037 gtk_widget_hide(quote_color_win);
3039 textview_update_message_colors();
3040 main_window_reflect_prefs_all();
3043 static void prefs_quote_colors_dialog_create(void)
3048 GtkWidget *quotelevel1_label;
3049 GtkWidget *quotelevel2_label;
3050 GtkWidget *quotelevel3_label;
3051 GtkWidget *uri_label;
3052 GtkWidget *signature_label;
3053 GtkWidget *tgt_folder_label;
3056 GtkWidget *recycle_colors_btn;
3057 GtkWidget *frame_colors;
3059 window = gtk_window_new(GTK_WINDOW_DIALOG);
3060 gtk_container_set_border_width(GTK_CONTAINER(window), 2);
3061 gtk_window_set_title(GTK_WINDOW(window), _("Set message colors"));
3062 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
3063 gtk_window_set_modal(GTK_WINDOW(window), TRUE);
3064 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
3066 vbox = gtk_vbox_new (FALSE, VSPACING);
3067 gtk_container_add (GTK_CONTAINER (window), vbox);
3068 gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
3069 PACK_FRAME(vbox, frame_colors, _("Colors"));
3071 table = gtk_table_new (5, 2, FALSE);
3072 gtk_container_add (GTK_CONTAINER (frame_colors), table);
3073 gtk_container_set_border_width (GTK_CONTAINER (table), 8);
3074 gtk_table_set_row_spacings (GTK_TABLE (table), 2);
3075 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
3078 color_buttons.quote_level1_btn = gtk_button_new();
3079 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level1_btn,
3080 0, 1, 0, 1, 0, 0, 0, 0);
3081 gtk_widget_set_usize (color_buttons.quote_level1_btn, 40, 30);
3082 gtk_container_set_border_width
3083 (GTK_CONTAINER (color_buttons.quote_level1_btn), 5);
3085 color_buttons.quote_level2_btn = gtk_button_new();
3086 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level2_btn,
3087 0, 1, 1, 2, 0, 0, 0, 0);
3088 gtk_widget_set_usize (color_buttons.quote_level2_btn, 40, 30);
3089 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.quote_level2_btn), 5);
3091 color_buttons.quote_level3_btn = gtk_button_new_with_label ("");
3092 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level3_btn,
3093 0, 1, 2, 3, 0, 0, 0, 0);
3094 gtk_widget_set_usize (color_buttons.quote_level3_btn, 40, 30);
3095 gtk_container_set_border_width
3096 (GTK_CONTAINER (color_buttons.quote_level3_btn), 5);
3098 color_buttons.uri_btn = gtk_button_new_with_label ("");
3099 gtk_table_attach (GTK_TABLE (table), color_buttons.uri_btn,
3100 0, 1, 3, 4, 0, 0, 0, 0);
3101 gtk_widget_set_usize (color_buttons.uri_btn, 40, 30);
3102 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.uri_btn), 5);
3104 color_buttons.tgt_folder_btn = gtk_button_new_with_label ("");
3105 gtk_table_attach (GTK_TABLE (table), color_buttons.tgt_folder_btn,
3106 0, 1, 4, 5, 0, 0, 0, 0);
3107 gtk_widget_set_usize (color_buttons.tgt_folder_btn, 40, 30);
3108 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.tgt_folder_btn), 5);
3110 color_buttons.signature_btn = gtk_button_new_with_label ("");
3111 gtk_table_attach (GTK_TABLE (table), color_buttons.signature_btn,
3112 0, 1, 5, 6, 0, 0, 0, 0);
3113 gtk_widget_set_usize (color_buttons.signature_btn, 40, 30);
3114 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.signature_btn), 5);
3116 quotelevel1_label = gtk_label_new (_("Quoted Text - First Level"));
3117 gtk_table_attach (GTK_TABLE (table), quotelevel1_label, 1, 2, 0, 1,
3118 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3119 gtk_label_set_justify (GTK_LABEL (quotelevel1_label), GTK_JUSTIFY_LEFT);
3120 gtk_misc_set_alignment (GTK_MISC (quotelevel1_label), 0, 0.5);
3122 quotelevel2_label = gtk_label_new (_("Quoted Text - Second Level"));
3123 gtk_table_attach (GTK_TABLE (table), quotelevel2_label, 1, 2, 1, 2,
3124 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3125 gtk_label_set_justify (GTK_LABEL (quotelevel2_label), GTK_JUSTIFY_LEFT);
3126 gtk_misc_set_alignment (GTK_MISC (quotelevel2_label), 0, 0.5);
3128 quotelevel3_label = gtk_label_new (_("Quoted Text - Third Level"));
3129 gtk_table_attach (GTK_TABLE (table), quotelevel3_label, 1, 2, 2, 3,
3130 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3131 gtk_label_set_justify (GTK_LABEL (quotelevel3_label), GTK_JUSTIFY_LEFT);
3132 gtk_misc_set_alignment (GTK_MISC (quotelevel3_label), 0, 0.5);
3134 uri_label = gtk_label_new (_("URI link"));
3135 gtk_table_attach (GTK_TABLE (table), uri_label, 1, 2, 3, 4,
3136 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3137 gtk_label_set_justify (GTK_LABEL (uri_label), GTK_JUSTIFY_LEFT);
3138 gtk_misc_set_alignment (GTK_MISC (uri_label), 0, 0.5);
3140 tgt_folder_label = gtk_label_new (_("Target folder"));
3141 gtk_table_attach (GTK_TABLE (table), tgt_folder_label, 1, 2, 4, 5,
3142 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3143 gtk_label_set_justify (GTK_LABEL (tgt_folder_label), GTK_JUSTIFY_LEFT);
3144 gtk_misc_set_alignment (GTK_MISC (tgt_folder_label), 0, 0.5);
3146 signature_label = gtk_label_new (_("Signatures"));
3147 gtk_table_attach (GTK_TABLE (table), signature_label, 1, 2, 5, 6,
3148 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3149 gtk_label_set_justify (GTK_LABEL (signature_label), GTK_JUSTIFY_LEFT);
3150 gtk_misc_set_alignment (GTK_MISC (signature_label), 0, 0.5);
3152 PACK_CHECK_BUTTON (vbox, recycle_colors_btn,
3153 _("Recycle quote colors"));
3155 gtkut_button_set_create(&hbbox, &ok_btn, _("OK"),
3156 NULL, NULL, NULL, NULL);
3157 gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
3159 gtk_widget_grab_default(ok_btn);
3160 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3161 gtk_signal_connect(GTK_OBJECT(window), "delete_event",
3162 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3163 gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
3164 GTK_SIGNAL_FUNC(prefs_quote_colors_key_pressed),
3167 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level1_btn), "clicked",
3168 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL1");
3169 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level2_btn), "clicked",
3170 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL2");
3171 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level3_btn), "clicked",
3172 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL3");
3173 gtk_signal_connect(GTK_OBJECT(color_buttons.uri_btn), "clicked",
3174 GTK_SIGNAL_FUNC(quote_color_set_dialog), "URI");
3175 gtk_signal_connect(GTK_OBJECT(color_buttons.tgt_folder_btn), "clicked",
3176 GTK_SIGNAL_FUNC(quote_color_set_dialog), "TGTFLD");
3177 gtk_signal_connect(GTK_OBJECT(color_buttons.signature_btn), "clicked",
3178 GTK_SIGNAL_FUNC(quote_color_set_dialog), "SIGNATURE");
3179 gtk_signal_connect(GTK_OBJECT(recycle_colors_btn), "toggled",
3180 GTK_SIGNAL_FUNC(prefs_recycle_colors_toggled), NULL);
3181 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
3182 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3184 /* show message button colors and recycle options */
3185 set_button_bg_color(color_buttons.quote_level1_btn,
3186 prefs_common.quote_level1_col);
3187 set_button_bg_color(color_buttons.quote_level2_btn,
3188 prefs_common.quote_level2_col);
3189 set_button_bg_color(color_buttons.quote_level3_btn,
3190 prefs_common.quote_level3_col);
3191 set_button_bg_color(color_buttons.uri_btn,
3192 prefs_common.uri_col);
3193 set_button_bg_color(color_buttons.tgt_folder_btn,
3194 prefs_common.tgt_folder_col);
3195 set_button_bg_color(color_buttons.signature_btn,
3196 prefs_common.signature_col);
3197 gtk_toggle_button_set_active((GtkToggleButton *)recycle_colors_btn,
3198 prefs_common.recycle_quote_colors);
3200 gtk_widget_show_all(vbox);
3201 quote_color_win = window;
3204 static void prefs_quote_colors_key_pressed(GtkWidget *widget,
3205 GdkEventKey *event, gpointer data)
3207 if (event && event->keyval == GDK_Escape)
3211 static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
3213 gchar *type = (gchar *)data;
3214 gchar *title = NULL;
3215 gdouble color[4] = {0.0, 0.0, 0.0, 0.0};
3217 GtkColorSelectionDialog *dialog;
3219 if(g_strcasecmp(type, "LEVEL1") == 0) {
3220 title = _("Pick color for quotation level 1");
3221 rgbvalue = prefs_common.quote_level1_col;
3222 } else if(g_strcasecmp(type, "LEVEL2") == 0) {
3223 title = _("Pick color for quotation level 2");
3224 rgbvalue = prefs_common.quote_level2_col;
3225 } else if(g_strcasecmp(type, "LEVEL3") == 0) {
3226 title = _("Pick color for quotation level 3");
3227 rgbvalue = prefs_common.quote_level3_col;
3228 } else if(g_strcasecmp(type, "URI") == 0) {
3229 title = _("Pick color for URI");
3230 rgbvalue = prefs_common.uri_col;
3231 } else if(g_strcasecmp(type, "TGTFLD") == 0) {
3232 title = _("Pick color for target folder");
3233 rgbvalue = prefs_common.tgt_folder_col;
3234 } else if(g_strcasecmp(type, "SIGNATURE") == 0) {
3235 title = _("Pick color for signatures");
3236 rgbvalue = prefs_common.signature_col;
3237 } else { /* Should never be called */
3238 g_warning("Unrecognized datatype '%s' in quote_color_set_dialog\n", type);
3242 color_dialog = gtk_color_selection_dialog_new(title);
3243 gtk_window_set_position(GTK_WINDOW(color_dialog), GTK_WIN_POS_CENTER);
3244 gtk_window_set_modal(GTK_WINDOW(color_dialog), TRUE);
3245 gtk_window_set_policy(GTK_WINDOW(color_dialog), FALSE, FALSE, FALSE);
3246 manage_window_set_transient(GTK_WINDOW(color_dialog));
3248 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->ok_button),
3249 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_ok), data);
3250 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->cancel_button),
3251 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_cancel), data);
3252 gtk_signal_connect(GTK_OBJECT(color_dialog), "key_press_event",
3253 GTK_SIGNAL_FUNC(quote_colors_set_dialog_key_pressed),
3256 /* preselect the previous color in the color selection dialog */
3257 color[0] = (gdouble) ((rgbvalue & 0xff0000) >> 16) / 255.0;
3258 color[1] = (gdouble) ((rgbvalue & 0x00ff00) >> 8) / 255.0;
3259 color[2] = (gdouble) (rgbvalue & 0x0000ff) / 255.0;
3260 dialog = GTK_COLOR_SELECTION_DIALOG(color_dialog);
3261 gtk_color_selection_set_color
3262 (GTK_COLOR_SELECTION(dialog->colorsel), color);
3264 gtk_widget_show(color_dialog);
3267 static void quote_colors_set_dialog_ok(GtkWidget *widget, gpointer data)
3269 GtkColorSelection *colorsel = (GtkColorSelection *)
3270 ((GtkColorSelectionDialog *)color_dialog)->colorsel;
3272 gint red, green, blue, rgbvalue;
3273 gchar *type = (gchar *)data;
3275 gtk_color_selection_get_color(colorsel, color);
3277 red = (gint) (color[0] * 255.0);
3278 green = (gint) (color[1] * 255.0);
3279 blue = (gint) (color[2] * 255.0);
3280 rgbvalue = (gint) ((red * 0x10000) | (green * 0x100) | blue);
3283 fprintf(stderr, "redc = %f, greenc = %f, bluec = %f\n", color[0], color[1], color[2]);
3284 fprintf(stderr, "red = %d, green = %d, blue = %d\n", red, green, blue);
3285 fprintf(stderr, "Color is %x\n", rgbvalue);
3288 if (g_strcasecmp(type, "LEVEL1") == 0) {
3289 prefs_common.quote_level1_col = rgbvalue;
3290 set_button_bg_color(color_buttons.quote_level1_btn, rgbvalue);
3291 } else if (g_strcasecmp(type, "LEVEL2") == 0) {
3292 prefs_common.quote_level2_col = rgbvalue;
3293 set_button_bg_color(color_buttons.quote_level2_btn, rgbvalue);
3294 } else if (g_strcasecmp(type, "LEVEL3") == 0) {
3295 prefs_common.quote_level3_col = rgbvalue;
3296 set_button_bg_color(color_buttons.quote_level3_btn, rgbvalue);
3297 } else if (g_strcasecmp(type, "URI") == 0) {
3298 prefs_common.uri_col = rgbvalue;
3299 set_button_bg_color(color_buttons.uri_btn, rgbvalue);
3300 } else if (g_strcasecmp(type, "TGTFLD") == 0) {
3301 prefs_common.tgt_folder_col = rgbvalue;
3302 set_button_bg_color(color_buttons.tgt_folder_btn, rgbvalue);
3303 folderview_set_target_folder_color(prefs_common.tgt_folder_col);
3304 } else if (g_strcasecmp(type, "SIGNATURE") == 0) {
3305 prefs_common.signature_col = rgbvalue;
3306 set_button_bg_color(color_buttons.signature_btn, rgbvalue);
3308 fprintf( stderr, "Unrecognized datatype '%s' in quote_color_set_dialog_ok\n", type );
3310 gtk_widget_destroy(color_dialog);
3313 static void quote_colors_set_dialog_cancel(GtkWidget *widget, gpointer data)
3315 gtk_widget_destroy(color_dialog);
3318 static void quote_colors_set_dialog_key_pressed(GtkWidget *widget,
3322 gtk_widget_destroy(color_dialog);
3325 static void set_button_bg_color(GtkWidget *widget, gint rgbvalue)
3330 gtkut_convert_int_to_gdk_color(rgbvalue, &color);
3331 newstyle = gtk_style_copy(gtk_widget_get_default_style());
3332 newstyle->bg[GTK_STATE_NORMAL] = color;
3333 newstyle->bg[GTK_STATE_PRELIGHT] = color;
3334 newstyle->bg[GTK_STATE_ACTIVE] = color;
3336 gtk_widget_set_style(GTK_WIDGET(widget), newstyle);
3339 static void prefs_enable_message_color_toggled(void)
3343 is_active = gtk_toggle_button_get_active
3344 (GTK_TOGGLE_BUTTON(message.chkbtn_enablecol));
3345 gtk_widget_set_sensitive(message.button_edit_col, is_active);
3346 prefs_common.enable_color = is_active;
3349 static void prefs_recycle_colors_toggled(GtkWidget *widget)
3353 is_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
3354 prefs_common.recycle_quote_colors = is_active;
3357 static void prefs_font_select(GtkButton *button, GtkEntry *entry)
3361 g_return_if_fail(entry != NULL);
3363 if (!font_sel_win) {
3364 font_sel_win = gtk_font_selection_dialog_new
3365 (_("Font selection"));
3366 gtk_window_position(GTK_WINDOW(font_sel_win),
3367 GTK_WIN_POS_CENTER);
3368 gtk_signal_connect(GTK_OBJECT(font_sel_win), "delete_event",
3369 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3372 (GTK_OBJECT(font_sel_win), "key_press_event",
3373 GTK_SIGNAL_FUNC(prefs_font_selection_key_pressed),
3375 gtk_signal_connect_object
3376 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->cancel_button),
3378 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3379 GTK_OBJECT(font_sel_win));
3382 if(font_sel_conn_id) {
3383 gtk_signal_disconnect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button), font_sel_conn_id);
3385 font_sel_conn_id = gtk_signal_connect
3386 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button),
3388 GTK_SIGNAL_FUNC(prefs_font_selection_ok),
3390 printf("%i\n", font_sel_conn_id);
3392 font_name = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
3393 gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(font_sel_win), font_name);
3395 manage_window_set_transient(GTK_WINDOW(font_sel_win));
3396 gtk_window_set_modal(GTK_WINDOW(font_sel_win), TRUE);
3397 gtk_widget_grab_focus
3398 (GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button);
3399 gtk_widget_show(font_sel_win);
3402 static void prefs_font_selection_key_pressed(GtkWidget *widget,
3406 if (event && event->keyval == GDK_Escape)
3407 gtk_widget_hide(font_sel_win);
3410 static void prefs_font_selection_ok(GtkButton *button, GtkEntry *entry)
3414 fontname = gtk_font_selection_dialog_get_font_name
3415 (GTK_FONT_SELECTION_DIALOG(font_sel_win));
3418 gtk_entry_set_text(entry, fontname);
3423 gtk_widget_hide(font_sel_win);
3426 static void prefs_keybind_select(void)
3433 GtkWidget *confirm_area;
3435 GtkWidget *cancel_btn;
3437 window = gtk_window_new (GTK_WINDOW_DIALOG);
3438 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
3439 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
3440 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
3441 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
3442 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
3443 manage_window_set_transient (GTK_WINDOW (window));
3445 vbox1 = gtk_vbox_new (FALSE, VSPACING);
3446 gtk_container_add (GTK_CONTAINER (window), vbox1);
3447 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
3449 hbox1 = gtk_hbox_new (FALSE, 8);
3450 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3452 label = gtk_label_new
3453 (_("Select preset:"));
3454 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3455 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3457 hbox1 = gtk_hbox_new (FALSE, 8);
3458 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3460 combo = gtk_combo_new ();
3461 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
3462 gtkut_combo_set_items (GTK_COMBO (combo),
3468 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
3470 hbox1 = gtk_hbox_new (FALSE, 8);
3471 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3473 label = gtk_label_new
3474 (_("You can also modify each menu shortcut by pressing\n"
3475 "any key(s) when placing the mouse pointer on the item."));
3476 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3477 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3479 hbox1 = gtk_hbox_new (FALSE, 8);
3480 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3482 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
3483 &cancel_btn, _("Cancel"), NULL, NULL);
3484 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
3485 gtk_widget_grab_default (ok_btn);
3487 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3488 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3489 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
3490 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
3491 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
3492 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
3493 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
3495 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
3496 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
3499 gtk_widget_show_all(window);
3501 keybind.window = window;
3502 keybind.combo = combo;
3505 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
3508 if (event && event->keyval == GDK_Escape)
3509 prefs_keybind_cancel();
3512 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
3515 prefs_keybind_cancel();
3519 static void prefs_keybind_cancel(void)
3521 gtk_widget_destroy(keybind.window);
3522 keybind.window = NULL;
3523 keybind.combo = NULL;
3526 static void prefs_keybind_apply_clicked(GtkWidget *widget)
3528 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
3532 static gchar *default_menurc =
3533 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3534 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
3535 "(menu-path \"<Main>/File/Print...\" \"\")\n"
3536 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
3538 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3539 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3540 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3541 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
3543 "(menu-path \"<Main>/View/Expand Summary View\" \"V\")\n"
3544 "(menu-path \"<Main>/View/Expand Message View\" \"<shift>V\")\n"
3545 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3546 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3547 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3548 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3549 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3550 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3551 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3552 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3553 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3554 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3556 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3557 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3558 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
3559 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3560 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><control>R\")\n"
3561 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3562 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3563 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
3564 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
3565 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3566 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
3567 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
3568 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3569 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3570 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3571 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3573 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3574 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3575 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3577 "(menu-path \"<Compose>/File/Close\" \"<control>W\")\n"
3578 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
3579 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
3580 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
3581 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
3582 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
3583 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
3585 static gchar *mew_wl_menurc =
3586 "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
3587 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
3588 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
3589 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
3591 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3592 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3593 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3594 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3596 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3597 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3598 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
3599 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3600 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3601 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3602 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3603 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3604 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3605 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3606 "(menu-path \"<Main>/View/Show all headers\" \"<shift>H\")\n"
3607 "(menu-path \"<Main>/View/Update\" \"<shift>S\")\n"
3609 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3610 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3611 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
3612 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3613 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift>A\")\n"
3614 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3615 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3616 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3617 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
3618 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
3619 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
3620 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3621 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3622 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3623 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3624 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
3626 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3627 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3628 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3630 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3631 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3632 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3633 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3634 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3635 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3636 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3638 static gchar *mutt_menurc =
3639 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3640 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
3641 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
3642 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
3644 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3645 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3646 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3647 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
3649 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
3650 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3651 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
3652 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
3653 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
3654 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
3655 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
3656 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3657 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3658 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3659 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3661 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3662 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3663 "(menu-path \"<Main>/Message/Compose new message\" \"M\")\n"
3664 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
3665 "(menu-path \"<Main>/Message/Reply to/all\" \"G\")\n"
3666 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3667 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3668 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3669 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
3670 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3671 "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
3672 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3673 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
3674 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3675 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
3676 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3678 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3679 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3680 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3682 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3683 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3684 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3685 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3686 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3687 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3688 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3690 static gchar *old_sylpheed_menurc =
3691 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3692 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
3693 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
3694 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
3696 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3697 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3698 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3699 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3701 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3702 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3703 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3704 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3705 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3706 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3707 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3708 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
3709 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
3710 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3711 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3712 "(menu-path \"<Main>/View/Update\" \"<alt>U\")\n"
3714 "(menu-path \"<Main>/Message/Get new mail\" \"<alt>I\")\n"
3715 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><alt>I\")\n"
3716 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
3717 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
3718 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><alt>R\")\n"
3719 "(menu-path \"<Main>/Message/Reply to/sender\" \"<control><alt>R\")\n"
3720 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3721 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
3722 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
3723 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
3724 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
3725 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
3726 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3727 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3728 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3729 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3731 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
3732 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
3733 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
3735 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3736 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3737 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3738 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3739 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3740 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3741 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3743 text = gtk_entry_get_text(entry);
3745 if (!strcmp(text, _("Default")))
3746 rc_str = default_menurc;
3747 else if (!strcmp(text, "Mew / Wanderlust"))
3748 rc_str = mew_wl_menurc;
3749 else if (!strcmp(text, "Mutt"))
3750 rc_str = mutt_menurc;
3751 else if (!strcmp(text, _("Old Sylpheed")))
3752 rc_str = old_sylpheed_menurc;
3756 menu_factory_clear_rc(rc_str);
3757 gtk_item_factory_parse_rc_string(rc_str);
3759 gtk_widget_destroy(keybind.window);
3760 keybind.window = NULL;
3761 keybind.combo = NULL;
3764 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
3767 GtkWidget *menuitem;
3770 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3771 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3772 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
3773 g_free(*((gchar **)pparam->data));
3774 *((gchar **)pparam->data) = g_strdup(charset);
3777 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
3779 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3782 g_return_if_fail(optmenu != NULL);
3783 g_return_if_fail(*((gchar **)pparam->data) != NULL);
3785 index = menu_find_option_menu_index(optmenu, *((gchar **)pparam->data),
3786 (GCompareFunc)strcmp);
3788 gtk_option_menu_set_history(optmenu, index);
3790 gtk_option_menu_set_history(optmenu, 0);
3791 prefs_common_charset_set_data_from_optmenu(pparam);
3795 static void prefs_common_encoding_set_data_from_optmenu(PrefParam *pparam)
3798 GtkWidget *menuitem;
3800 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3801 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3802 *((TransferEncodingMethod *)pparam->data) = GPOINTER_TO_INT
3803 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3806 static void prefs_common_encoding_set_optmenu(PrefParam *pparam)
3808 TransferEncodingMethod method =
3809 *((TransferEncodingMethod *)pparam->data);
3810 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3813 g_return_if_fail(optmenu != NULL);
3815 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(method),
3818 gtk_option_menu_set_history(optmenu, index);
3820 gtk_option_menu_set_history(optmenu, 0);
3821 prefs_common_encoding_set_data_from_optmenu(pparam);
3825 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
3828 GtkWidget *menuitem;
3830 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3831 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3832 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
3833 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3836 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
3838 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
3839 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3841 GtkWidget *menuitem;
3844 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(mode),
3847 gtk_option_menu_set_history(optmenu, index);
3849 gtk_option_menu_set_history(optmenu, 0);
3850 prefs_common_recv_dialog_set_data_from_optmenu(pparam);
3853 menu = gtk_option_menu_get_menu(optmenu);
3854 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3855 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3858 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam)
3861 GtkWidget *menuitem;
3863 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3864 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3865 *((SendDialogMode *)pparam->data) = GPOINTER_TO_INT
3866 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3869 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam)
3871 SendDialogMode mode = *((SendDialogMode *)pparam->data);
3872 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3874 GtkWidget *menuitem;
3877 case SEND_DIALOG_ALWAYS:
3878 gtk_option_menu_set_history(optmenu, 0);
3880 case SEND_DIALOG_NEVER:
3881 gtk_option_menu_set_history(optmenu, 1);
3887 menu = gtk_option_menu_get_menu(optmenu);
3888 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3889 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3892 static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
3895 prefs_common_cancel();
3899 static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
3902 if (event && event->keyval == GDK_Escape)
3903 prefs_common_cancel();
3906 static void prefs_common_ok(void)
3908 prefs_common_apply();
3909 gtk_widget_hide(dialog.window);
3914 static void prefs_common_apply(void)
3916 gchar *entry_pixmap_theme_str;
3917 gboolean update_pixmap_theme;
3918 gchar *backup_theme_path;
3920 entry_pixmap_theme_str = gtk_entry_get_text(GTK_ENTRY(interface.entry_pixmap_theme));
3921 if (entry_pixmap_theme_str &&
3922 (strcmp(prefs_common.pixmap_theme_path, entry_pixmap_theme_str) != 0) )
3923 update_pixmap_theme = TRUE;
3925 update_pixmap_theme = FALSE;
3927 /*!< FIXME: prefs_set_data_from_dialog() clears and frees all strings,
3928 * but prefs_common.pixmap_theme_path is stored in the StockPixmapData
3929 * in stock_pixmap.c::pixmaps[].icon_path, and used when reflecting
3930 * the pixmap changes. Work around by saving the old one and freeing
3932 backup_theme_path = prefs_common.pixmap_theme_path;
3933 prefs_common.pixmap_theme_path = g_strdup(backup_theme_path);
3934 prefs_set_data_from_dialog(param);
3935 sock_set_io_timeout(prefs_common.io_timeout_secs);
3937 if (update_pixmap_theme) {
3938 main_window_reflect_prefs_all_real(TRUE);
3939 compose_reflect_prefs_pixmap_theme();
3941 main_window_reflect_prefs_all_real(FALSE);
3943 /*!< FIXME: Now it's safe to delete the backup path */
3944 g_free(backup_theme_path);
3946 prefs_common_save_config();
3948 inc_autocheck_timer_remove();
3949 inc_autocheck_timer_set();
3952 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
3955 GtkWidget *menuitem;
3957 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3958 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3959 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
3960 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3963 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
3965 NextUnreadMsgDialogShow dialog_show;
3966 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3968 GtkWidget *menuitem;
3970 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
3972 switch (dialog_show) {
3973 case NEXTUNREADMSGDIALOG_ALWAYS:
3974 gtk_option_menu_set_history(optmenu, 0);
3976 case NEXTUNREADMSGDIALOG_ASSUME_YES:
3977 gtk_option_menu_set_history(optmenu, 1);
3979 case NEXTUNREADMSGDIALOG_ASSUME_NO:
3980 gtk_option_menu_set_history(optmenu, 2);
3984 menu = gtk_option_menu_get_menu(optmenu);
3985 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3986 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3989 static void prefs_common_cancel(void)
3991 gtk_widget_hide(dialog.window);
3996 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
3999 GtkWidget *menuitem;
4001 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4002 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4003 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
4004 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4007 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
4009 RecvDialogShow dialog_show;
4010 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4012 GtkWidget *menuitem;
4014 dialog_show = *((RecvDialogShow *)pparam->data);
4016 switch (dialog_show) {
4017 case RECVDIALOG_ALWAYS:
4018 gtk_option_menu_set_history(optmenu, 0);
4020 case RECVDIALOG_WINDOW_ACTIVE:
4021 gtk_option_menu_set_history(optmenu, 1);
4023 case RECVDIALOG_NEVER:
4024 gtk_option_menu_set_history(optmenu, 2);
4029 menu = gtk_option_menu_get_menu(optmenu);
4030 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4031 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));