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 {"folderview_width", "179", &prefs_common.folderview_width, P_INT,
580 {"folderview_height", "600", &prefs_common.folderview_height, P_INT,
582 {"folder_col_folder", "150", &prefs_common.folder_col_folder, P_INT,
584 {"folder_col_new", "32", &prefs_common.folder_col_new, P_INT,
586 {"folder_col_unread", "32", &prefs_common.folder_col_unread, P_INT,
588 {"folder_col_total", "32", &prefs_common.folder_col_total, P_INT,
591 {"summaryview_width", "600", &prefs_common.summaryview_width, P_INT,
593 {"summaryview_height", "173", &prefs_common.summaryview_height, P_INT,
596 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
598 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
600 {"mainview_width", "600", &prefs_common.mainview_width, P_INT,
602 {"mainview_height", "600", &prefs_common.mainview_height, P_INT,
604 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
606 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
608 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
610 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
612 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
614 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
616 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
618 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
620 {"compose_width", "600", &prefs_common.compose_width, P_INT,
622 {"compose_height", "560", &prefs_common.compose_height, P_INT,
626 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
627 &message.chkbtn_enablecol,
628 prefs_set_data_from_toggle, prefs_set_toggle},
630 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
632 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
634 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
636 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
638 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
640 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
642 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
643 P_BOOL, NULL, NULL, NULL},
645 {"convert_mb_alnum", "FALSE", &prefs_common.conv_mb_alnum, P_BOOL,
646 &message.chkbtn_mbalnum,
647 prefs_set_data_from_toggle, prefs_set_toggle},
648 {"display_header_pane", "TRUE", &prefs_common.display_header_pane,
649 P_BOOL, &message.chkbtn_disphdrpane,
650 prefs_set_data_from_toggle, prefs_set_toggle},
651 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
652 &message.chkbtn_disphdr,
653 prefs_set_data_from_toggle, prefs_set_toggle},
654 {"line_space", "2", &prefs_common.line_space, P_INT,
655 &message.spinbtn_linespc,
656 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
657 {"enable_head_space", "FALSE", &prefs_common.head_space, P_BOOL,
658 &message.chkbtn_headspc,
659 prefs_set_data_from_toggle, prefs_set_toggle},
661 {"enable_smooth_scroll", "FALSE",
662 &prefs_common.enable_smooth_scroll, P_BOOL,
663 &message.chkbtn_smoothscroll,
664 prefs_set_data_from_toggle, prefs_set_toggle},
665 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
666 &message.spinbtn_scrollstep,
667 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
668 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
669 &message.chkbtn_halfpage,
670 prefs_set_data_from_toggle, prefs_set_toggle},
672 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
675 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
676 &message.chkbtn_attach_desc,
677 prefs_set_data_from_toggle, prefs_set_toggle},
680 {"mime_image_viewer", "display '%s'",
681 &prefs_common.mime_image_viewer, P_STRING, NULL, NULL, NULL},
682 {"mime_audio_player", "play '%s'",
683 &prefs_common.mime_audio_player, P_STRING, NULL, NULL, NULL},
684 {"mime_open_command", "gedit '%s'",
685 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
689 {"auto_check_signatures", "TRUE",
690 &prefs_common.auto_check_signatures, P_BOOL,
691 &privacy.checkbtn_auto_check_signatures,
692 prefs_set_data_from_toggle, prefs_set_toggle},
693 {"gpg_signature_popup", "FALSE",
694 &prefs_common.gpg_signature_popup, P_BOOL,
695 &privacy.checkbtn_gpg_signature_popup,
696 prefs_set_data_from_toggle, prefs_set_toggle},
697 {"store_passphrase", "FALSE", &prefs_common.store_passphrase, P_BOOL,
698 &privacy.checkbtn_store_passphrase,
699 prefs_set_data_from_toggle, prefs_set_toggle},
700 {"store_passphrase_timeout", "0",
701 &prefs_common.store_passphrase_timeout, P_INT,
702 &privacy.spinbtn_store_passphrase,
703 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
705 {"passphrase_grab", "FALSE", &prefs_common.passphrase_grab, P_BOOL,
706 &privacy.checkbtn_passphrase_grab,
707 prefs_set_data_from_toggle, prefs_set_toggle},
708 #endif /* __MINGW32__ */
709 {"gpg_warning", "TRUE", &prefs_common.gpg_warning, P_BOOL,
710 &privacy.checkbtn_gpg_warning,
711 prefs_set_data_from_toggle, prefs_set_toggle},
712 #endif /* USE_GPGME */
715 {"separate_folder", "FALSE", &prefs_common.sep_folder, P_BOOL,
717 {"separate_message", "FALSE", &prefs_common.sep_msg, P_BOOL,
720 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
721 NULL, NULL, NULL}, */
722 {"always_show_message_when_selected", "FALSE",
723 &prefs_common.always_show_msg,
724 P_BOOL, &interface.checkbtn_always_show_msg,
725 prefs_set_data_from_toggle, prefs_set_toggle},
726 {"open_unread_on_enter", "FALSE", &prefs_common.open_unread_on_enter,
727 P_BOOL, &interface.checkbtn_openunread,
728 prefs_set_data_from_toggle, prefs_set_toggle},
729 {"mark_as_read_on_new_window", "FALSE",
730 &prefs_common.mark_as_read_on_new_window,
731 P_BOOL, &interface.checkbtn_mark_as_read_on_newwin,
732 prefs_set_data_from_toggle, prefs_set_toggle},
733 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
734 P_BOOL, &interface.checkbtn_openinbox,
735 prefs_set_data_from_toggle, prefs_set_toggle},
736 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
737 &interface.checkbtn_immedexec,
738 prefs_set_data_from_toggle, prefs_set_toggle},
739 {"nextunreadmsg_dialog", NULL, &prefs_common.next_unread_msg_dialog, P_ENUM,
740 &interface.optmenu_nextunreadmsgdialog,
741 prefs_nextunreadmsgdialog_set_data_from_optmenu,
742 prefs_nextunreadmsgdialog_set_optmenu},
744 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
745 &prefs_common.pixmap_theme_path, P_STRING,
746 &interface.entry_pixmap_theme, prefs_set_data_from_entry, prefs_set_entry},
748 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
752 {"uri_open_command", DEFAULT_BROWSER_CMD,
753 &prefs_common.uri_cmd, P_STRING,
754 &other.uri_entry, prefs_set_data_from_entry, prefs_set_entry},
755 {"print_command", "lpr %s", &prefs_common.print_cmd, P_STRING,
756 &other.printcmd_entry, prefs_set_data_from_entry, prefs_set_entry},
757 {"ext_editor_command", "gedit %s",
758 &prefs_common.ext_editor_cmd, P_STRING,
759 &other.exteditor_entry, prefs_set_data_from_entry, prefs_set_entry},
761 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
762 P_BOOL, &other.checkbtn_addaddrbyclick,
763 prefs_set_data_from_toggle, prefs_set_toggle},
765 {"confirm_on_exit", "TRUE", &prefs_common.confirm_on_exit, P_BOOL,
766 &other.checkbtn_confonexit,
767 prefs_set_data_from_toggle, prefs_set_toggle},
768 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
769 &other.checkbtn_cleanonexit,
770 prefs_set_data_from_toggle, prefs_set_toggle},
771 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
772 &other.checkbtn_askonclean,
773 prefs_set_data_from_toggle, prefs_set_toggle},
774 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
775 P_BOOL, &other.checkbtn_warnqueued,
776 prefs_set_data_from_toggle, prefs_set_toggle},
779 {"ssl_ask_unknown_valid", "TRUE", &prefs_common.ssl_ask_unknown_valid,
780 P_BOOL, &other.checkbtn_ssl_ask_unknown_valid,
781 prefs_set_data_from_toggle, prefs_set_toggle},
784 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
786 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
789 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
790 P_INT, &other.spinbtn_iotimeout,
791 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
792 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
794 {"important_score", "1", &prefs_common.important_score, P_INT,
796 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
797 &other.checkbtn_cliplog,
798 prefs_set_data_from_toggle, prefs_set_toggle},
799 {"log_length", "500", &prefs_common.loglength, P_INT,
800 &other.loglength_entry,
801 prefs_set_data_from_entry, prefs_set_entry},
803 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
805 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
808 {"color_new", "179", &prefs_common.color_new, P_COLOR,
811 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
814 /* widget creating functions */
815 static void prefs_common_create (void);
816 static void prefs_receive_create (void);
817 static void prefs_send_create (void);
818 static void prefs_compose_create (void);
819 static void prefs_quote_create (void);
820 static void prefs_display_create (void);
821 static void prefs_message_create (void);
823 static void prefs_privacy_create (void);
825 static void prefs_interface_create (void);
826 static void prefs_other_create (void);
828 static void date_format_ok_btn_clicked (GtkButton *button,
830 static void date_format_cancel_btn_clicked (GtkButton *button,
832 static void date_format_key_pressed (GtkWidget *keywidget,
835 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
838 static void date_format_entry_on_change (GtkEditable *editable,
840 static void date_format_select_row (GtkWidget *date_format_list,
843 GdkEventButton *event,
844 GtkWidget *date_format);
845 static GtkWidget *date_format_create (GtkButton *button,
848 static void prefs_quote_colors_dialog (void);
849 static void prefs_quote_colors_dialog_create (void);
850 static void prefs_quote_colors_key_pressed (GtkWidget *widget,
853 static void quote_color_set_dialog (GtkWidget *widget,
855 static void quote_colors_set_dialog_ok (GtkWidget *widget,
857 static void quote_colors_set_dialog_cancel (GtkWidget *widget,
859 static void quote_colors_set_dialog_key_pressed (GtkWidget *widget,
862 static void set_button_bg_color (GtkWidget *widget,
864 static void prefs_enable_message_color_toggled (void);
865 static void prefs_recycle_colors_toggled (GtkWidget *widget);
867 static void prefs_font_select (GtkButton *button, GtkEntry *entry);
869 static void prefs_font_selection_key_pressed (GtkWidget *widget,
872 static void prefs_font_selection_ok (GtkButton *button, GtkEntry *entry);
874 static void prefs_keybind_select (void);
875 static gint prefs_keybind_deleted (GtkWidget *widget,
878 static void prefs_keybind_key_pressed (GtkWidget *widget,
881 static void prefs_keybind_cancel (void);
882 static void prefs_keybind_apply_clicked (GtkWidget *widget);
884 static gint prefs_common_deleted (GtkWidget *widget,
887 static void prefs_common_key_pressed (GtkWidget *widget,
890 static void prefs_common_ok (void);
891 static void prefs_common_apply (void);
892 static void prefs_common_cancel (void);
894 void prefs_common_init(void)
896 prefs_common.disphdr_list = NULL;
899 PrefsCommon *prefs_common_get(void)
901 return &prefs_common;
904 void prefs_common_read_config(void)
908 gchar buf[PREFSBUFSIZE];
910 prefs_read_config(param, "Common", COMMON_RC);
912 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
914 if ((fp = fopen(path, "rb")) == NULL) {
915 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
920 while (fgets(buf, sizeof(buf), fp) != NULL) {
922 if (buf[0] == '\0') continue;
923 prefs_common.mime_open_cmd_history =
924 add_history(prefs_common.mime_open_cmd_history, buf);
928 prefs_common.mime_open_cmd_history =
929 g_list_reverse(prefs_common.mime_open_cmd_history);
932 void prefs_common_save_config(void)
938 prefs_save_config(param, "Common", COMMON_RC);
940 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
942 if ((fp = fopen(path, "wb")) == NULL) {
943 FILE_OP_ERROR(path, "fopen");
948 for (cur = prefs_common.mime_open_cmd_history;
949 cur != NULL; cur = cur->next) {
950 fputs((gchar *)cur->data, fp);
958 void prefs_common_open(void)
960 if (prefs_rc_is_readonly(COMMON_RC))
965 if (!dialog.window) {
966 prefs_common_create();
969 manage_window_set_transient(GTK_WINDOW(dialog.window));
970 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
971 gtk_widget_grab_focus(dialog.ok_btn);
973 prefs_set_dialog(param);
975 gtk_widget_show(dialog.window);
978 static void prefs_common_create(void)
982 debug_print("Creating common preferences window...\n");
984 prefs_dialog_create(&dialog);
985 gtk_window_set_title (GTK_WINDOW(dialog.window),
986 _("Common Preferences"));
987 gtk_signal_connect (GTK_OBJECT(dialog.window), "delete_event",
988 GTK_SIGNAL_FUNC(prefs_common_deleted), NULL);
989 gtk_signal_connect (GTK_OBJECT(dialog.window), "key_press_event",
990 GTK_SIGNAL_FUNC(prefs_common_key_pressed), NULL);
991 MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
993 gtk_signal_connect (GTK_OBJECT(dialog.ok_btn), "clicked",
994 GTK_SIGNAL_FUNC(prefs_common_ok), NULL);
995 gtk_signal_connect (GTK_OBJECT(dialog.apply_btn), "clicked",
996 GTK_SIGNAL_FUNC(prefs_common_apply), NULL);
997 gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
998 GTK_SIGNAL_FUNC(prefs_common_cancel),
999 GTK_OBJECT(dialog.window));
1001 /* create all widgets on notebook */
1002 prefs_receive_create();
1003 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
1004 prefs_send_create();
1005 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
1006 prefs_compose_create();
1007 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
1008 prefs_quote_create();
1009 SET_NOTEBOOK_LABEL(dialog.notebook, _("Quote"), page++);
1010 prefs_display_create();
1011 SET_NOTEBOOK_LABEL(dialog.notebook, _("Display"), page++);
1012 prefs_message_create();
1013 SET_NOTEBOOK_LABEL(dialog.notebook, _("Message"), page++);
1015 prefs_privacy_create();
1016 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
1018 prefs_interface_create();
1019 SET_NOTEBOOK_LABEL(dialog.notebook, _("Interface"), page++);
1020 prefs_other_create();
1021 SET_NOTEBOOK_LABEL(dialog.notebook, _("Other"), page++);
1023 gtk_widget_show_all(dialog.window);
1026 static void prefs_receive_create(void)
1030 GtkWidget *frame_incext;
1031 GtkWidget *checkbtn_incext;
1033 GtkWidget *label_incext;
1034 GtkWidget *entry_incext;
1035 /* GtkWidget *button_incext; */
1037 GtkWidget *frame_spool;
1038 GtkWidget *checkbtn_local;
1039 GtkWidget *checkbtn_filter_on_inc;
1040 GtkWidget *label_spool;
1041 GtkWidget *entry_spool;
1043 GtkWidget *hbox_autochk;
1044 GtkWidget *checkbtn_autochk;
1045 GtkWidget *label_autochk1;
1046 GtkObject *spinbtn_autochk_adj;
1047 GtkWidget *spinbtn_autochk;
1048 GtkWidget *label_autochk2;
1049 GtkWidget *checkbtn_chkonstartup;
1050 GtkWidget *checkbtn_scan_after_inc;
1053 GtkWidget *frame_newmail;
1054 GtkWidget *hbox_newmail_notify;
1055 GtkWidget *checkbtn_newmail_auto;
1056 GtkWidget *checkbtn_newmail_manu;
1057 GtkWidget *entry_newmail_notify_cmd;
1058 GtkWidget *label_newmail_notify_cmd;
1060 GtkWidget *hbox_recvdialog;
1061 GtkWidget *label_recvdialog;
1063 GtkWidget *menuitem;
1064 GtkWidget *optmenu_recvdialog;
1065 GtkWidget *checkbtn_no_recv_err_panel;
1066 GtkWidget *checkbtn_close_recv_dialog;
1068 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1069 gtk_widget_show (vbox1);
1070 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1071 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1073 PACK_FRAME(vbox1, frame_incext, _("External program"));
1075 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1076 gtk_widget_show (vbox2);
1077 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
1078 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1080 /* Use of external incorporation program */
1081 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
1082 _("Use external program for incorporation"));
1084 hbox = gtk_hbox_new (FALSE, 8);
1085 gtk_widget_show (hbox);
1086 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1087 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1089 label_incext = gtk_label_new (_("Command"));
1090 gtk_widget_show (label_incext);
1091 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1093 entry_incext = gtk_entry_new ();
1094 gtk_widget_show (entry_incext);
1095 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1098 button_incext = gtk_button_new_with_label ("... ");
1099 gtk_widget_show (button_incext);
1100 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1103 PACK_FRAME(vbox1, frame_spool, _("Local spool"));
1105 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1106 gtk_widget_show (vbox2);
1107 gtk_container_add (GTK_CONTAINER (frame_spool), vbox2);
1108 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1110 hbox = gtk_hbox_new (FALSE, 32);
1111 gtk_widget_show (hbox);
1112 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1114 PACK_CHECK_BUTTON (hbox, checkbtn_local, _("Incorporate from spool"));
1115 PACK_CHECK_BUTTON (hbox, checkbtn_filter_on_inc,
1116 _("Filter on incorporation"));
1117 SET_TOGGLE_SENSITIVITY (checkbtn_local, checkbtn_filter_on_inc);
1119 hbox = gtk_hbox_new (FALSE, 8);
1120 gtk_widget_show (hbox);
1121 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1122 SET_TOGGLE_SENSITIVITY (checkbtn_local, hbox);
1124 label_spool = gtk_label_new (_("Spool directory"));
1125 gtk_widget_show (label_spool);
1126 gtk_box_pack_start (GTK_BOX (hbox), label_spool, FALSE, FALSE, 0);
1128 entry_spool = gtk_entry_new ();
1129 gtk_widget_show (entry_spool);
1130 gtk_box_pack_start (GTK_BOX (hbox), entry_spool, TRUE, TRUE, 0);
1132 vbox2 = gtk_vbox_new (FALSE, 0);
1133 gtk_widget_show (vbox2);
1134 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1137 hbox_autochk = gtk_hbox_new (FALSE, 8);
1138 gtk_widget_show (hbox_autochk);
1139 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1141 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1142 _("Auto-check new mail"));
1144 label_autochk1 = gtk_label_new (_("every"));
1145 gtk_widget_show (label_autochk1);
1146 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1148 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1149 spinbtn_autochk = gtk_spin_button_new
1150 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1151 gtk_widget_show (spinbtn_autochk);
1152 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1153 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1154 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1156 label_autochk2 = gtk_label_new (_("minute(s)"));
1157 gtk_widget_show (label_autochk2);
1158 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1160 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1161 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1162 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1164 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1165 _("Check new mail on startup"));
1166 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1167 _("Update all local folders after incorporation"));
1170 /* receive dialog */
1171 hbox_recvdialog = gtk_hbox_new (FALSE, 8);
1172 gtk_widget_show (hbox_recvdialog);
1173 gtk_box_pack_start (GTK_BOX (vbox2), hbox_recvdialog, FALSE, FALSE, 0);
1175 label_recvdialog = gtk_label_new (_("Show receive dialog"));
1176 gtk_misc_set_alignment(GTK_MISC(label_recvdialog), 0, 0.5);
1177 gtk_widget_show (label_recvdialog);
1178 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), label_recvdialog, FALSE, FALSE, 0);
1180 optmenu_recvdialog = gtk_option_menu_new ();
1181 gtk_widget_show (optmenu_recvdialog);
1182 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), optmenu_recvdialog, FALSE, FALSE, 0);
1184 menu = gtk_menu_new ();
1185 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
1186 MENUITEM_ADD (menu, menuitem, _("Only if a window is active"),
1187 RECV_DIALOG_ACTIVE);
1188 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
1190 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
1192 PACK_CHECK_BUTTON (vbox2, checkbtn_no_recv_err_panel,
1193 _("Don't popup error dialog on receive error"));
1195 PACK_CHECK_BUTTON (vbox2, checkbtn_close_recv_dialog,
1196 _("Close receive dialog when finished"));
1198 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1200 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1201 gtk_widget_show (vbox2);
1202 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1203 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1205 hbox = gtk_hbox_new (TRUE, 8);
1206 gtk_widget_show (hbox);
1207 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1208 _("after autochecking"));
1209 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1210 _("after manual checking"));
1211 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1212 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1213 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1215 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1216 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1219 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1220 gtk_widget_show (hbox);
1221 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1224 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1225 "(use %d as number of new "
1227 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1229 gtk_widget_show (label_newmail_notify_cmd);
1230 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1231 label_newmail_notify_cmd, FALSE, FALSE, 0);
1233 entry_newmail_notify_cmd = gtk_entry_new ();
1234 gtk_widget_show (entry_newmail_notify_cmd);
1235 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1236 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1238 gtk_widget_set_sensitive(hbox_newmail_notify,
1239 prefs_common.newmail_notify_auto ||
1240 prefs_common.newmail_notify_manu);
1242 receive.checkbtn_incext = checkbtn_incext;
1243 receive.entry_incext = entry_incext;
1244 /* receive.button_incext = button_incext; */
1246 receive.checkbtn_local = checkbtn_local;
1247 receive.checkbtn_filter_on_inc = checkbtn_filter_on_inc;
1248 receive.entry_spool = entry_spool;
1250 receive.checkbtn_autochk = checkbtn_autochk;
1251 receive.spinbtn_autochk = spinbtn_autochk;
1252 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1254 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1255 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1258 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1259 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1260 receive.hbox_newmail_notify = hbox_newmail_notify;
1261 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1262 receive.optmenu_recvdialog = optmenu_recvdialog;
1263 receive.checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
1264 receive.checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
1267 static void prefs_send_create(void)
1271 GtkWidget *frame_extsend;
1272 GtkWidget *vbox_extsend;
1273 GtkWidget *checkbtn_extsend;
1275 GtkWidget *label_extsend;
1276 GtkWidget *entry_extsend;
1277 /* GtkWidget *button_extsend; */
1278 GtkWidget *checkbtn_savemsg;
1279 GtkWidget *checkbtn_queuemsg;
1280 GtkWidget *label_outcharset;
1281 GtkWidget *optmenu_charset;
1282 GtkWidget *optmenu_menu;
1283 GtkWidget *menuitem;
1284 GtkWidget *label_charset_desc;
1285 GtkWidget *optmenu_encoding;
1286 GtkWidget *label_encoding;
1287 GtkWidget *label_encoding_desc;
1288 GtkWidget *label_senddialog;
1290 GtkWidget *optmenu_senddialog;
1291 GtkWidget *hbox_senddialog;
1293 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1294 gtk_widget_show (vbox1);
1295 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1296 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1298 PACK_FRAME(vbox1, frame_extsend, _("External program"));
1300 vbox_extsend = gtk_vbox_new (FALSE, VSPACING_NARROW);
1301 gtk_widget_show (vbox_extsend);
1302 gtk_container_add (GTK_CONTAINER (frame_extsend), vbox_extsend);
1303 gtk_container_set_border_width (GTK_CONTAINER (vbox_extsend), 8);
1305 PACK_CHECK_BUTTON (vbox_extsend, checkbtn_extsend,
1306 _("Use external program for sending"));
1308 hbox1 = gtk_hbox_new (FALSE, 8);
1309 gtk_widget_show (hbox1);
1310 gtk_box_pack_start (GTK_BOX (vbox_extsend), hbox1, FALSE, FALSE, 0);
1311 SET_TOGGLE_SENSITIVITY(checkbtn_extsend, hbox1);
1313 label_extsend = gtk_label_new (_("Command"));
1314 gtk_widget_show (label_extsend);
1315 gtk_box_pack_start (GTK_BOX (hbox1), label_extsend, FALSE, FALSE, 0);
1317 entry_extsend = gtk_entry_new ();
1318 gtk_widget_show (entry_extsend);
1319 gtk_box_pack_start (GTK_BOX (hbox1), entry_extsend, TRUE, TRUE, 0);
1322 button_extsend = gtk_button_new_with_label ("... ");
1323 gtk_widget_show (button_extsend);
1324 gtk_box_pack_start (GTK_BOX (hbox1), button_extsend, FALSE, FALSE, 0);
1327 vbox2 = gtk_vbox_new (FALSE, 0);
1328 gtk_widget_show (vbox2);
1329 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1331 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1332 _("Save sent messages to Sent folder"));
1333 PACK_CHECK_BUTTON (vbox2, checkbtn_queuemsg,
1334 _("Queue messages that fail to send"));
1336 hbox_senddialog = gtk_hbox_new (FALSE, 8);
1337 gtk_widget_show (hbox1);
1338 gtk_box_pack_start (GTK_BOX (vbox1), hbox_senddialog, FALSE, FALSE, 0);
1340 label_senddialog = gtk_label_new (_("Show send dialog"));
1341 gtk_widget_show (label_senddialog);
1342 gtk_box_pack_start (GTK_BOX (hbox_senddialog), label_senddialog, FALSE, FALSE, 0);
1344 optmenu_senddialog = gtk_option_menu_new ();
1345 gtk_widget_show (optmenu_senddialog);
1346 gtk_box_pack_start (GTK_BOX (hbox_senddialog), optmenu_senddialog, FALSE, FALSE, 0);
1348 menu = gtk_menu_new ();
1349 MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
1350 MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
1352 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
1354 hbox1 = gtk_hbox_new (FALSE, 8);
1355 gtk_widget_show (hbox1);
1356 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1358 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1359 gtk_widget_show (label_outcharset);
1360 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1362 optmenu_charset = gtk_option_menu_new ();
1363 gtk_widget_show (optmenu_charset);
1364 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_charset, FALSE, FALSE, 0);
1366 optmenu_menu = gtk_menu_new ();
1368 #define SET_MENUITEM(str, data) \
1370 MENUITEM_ADD(optmenu_menu, menuitem, str, data); \
1373 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1374 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1376 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1378 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1379 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1380 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1381 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1382 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1383 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1384 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1386 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1388 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1390 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1391 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1393 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1395 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1396 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1398 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1399 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1401 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1402 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1404 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1405 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1406 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1408 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_charset),
1411 hbox1 = gtk_hbox_new (FALSE, 8);
1412 gtk_widget_show (hbox1);
1413 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1415 label_charset_desc = gtk_label_new
1416 (_("If `Automatic' is selected, the optimal encoding\n"
1417 "for the current locale will be used."));
1418 gtk_widget_show (label_charset_desc);
1419 gtk_box_pack_start (GTK_BOX (hbox1), label_charset_desc,
1421 gtk_label_set_justify (GTK_LABEL (label_charset_desc),
1424 hbox1 = gtk_hbox_new (FALSE, 8);
1425 gtk_widget_show (hbox1);
1426 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1428 label_encoding = gtk_label_new (_("Transfer encoding"));
1429 gtk_widget_show (label_encoding);
1430 gtk_box_pack_start (GTK_BOX (hbox1), label_encoding, FALSE, FALSE, 0);
1432 optmenu_encoding = gtk_option_menu_new ();
1433 gtk_widget_show (optmenu_encoding);
1434 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_encoding, FALSE, FALSE, 0);
1436 optmenu_menu = gtk_menu_new ();
1438 SET_MENUITEM(_("Automatic"), CTE_AUTO);
1439 SET_MENUITEM("base64", CTE_BASE64);
1440 SET_MENUITEM("quoted-printable", CTE_QUOTED_PRINTABLE);
1441 SET_MENUITEM("8bit", CTE_8BIT);
1443 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_encoding),
1446 hbox1 = gtk_hbox_new (FALSE, 8);
1447 gtk_widget_show (hbox1);
1448 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1450 label_encoding_desc = gtk_label_new
1451 (_("Specify Content-Transfer-Encoding used when\n"
1452 "message body contains non-ASCII characters."));
1453 gtk_widget_show (label_encoding_desc);
1454 gtk_box_pack_start (GTK_BOX (hbox1), label_encoding_desc,
1456 gtk_label_set_justify (GTK_LABEL (label_encoding_desc),
1459 p_send.checkbtn_extsend = checkbtn_extsend;
1460 p_send.entry_extsend = entry_extsend;
1461 /* p_send.button_extsend = button_extsend; */
1463 p_send.checkbtn_savemsg = checkbtn_savemsg;
1464 p_send.checkbtn_queuemsg = checkbtn_queuemsg;
1465 p_send.optmenu_senddialog = optmenu_senddialog;
1467 p_send.optmenu_charset = optmenu_charset;
1468 p_send.optmenu_encoding_method = optmenu_encoding;
1471 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1475 toggled = gtk_toggle_button_get_active
1476 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1477 gtk_toggle_button_get_active
1478 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1479 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1482 static void prefs_compose_create(void)
1487 GtkWidget *checkbtn_autoextedit;
1489 GtkWidget *frame_autosel;
1490 GtkWidget *hbox_autosel;
1491 GtkWidget *checkbtn_reply_account_autosel;
1492 GtkWidget *checkbtn_forward_account_autosel;
1493 GtkWidget *checkbtn_reedit_account_autosel;
1495 GtkWidget *hbox_undolevel;
1496 GtkWidget *label_undolevel;
1497 GtkObject *spinbtn_undolevel_adj;
1498 GtkWidget *spinbtn_undolevel;
1500 GtkWidget *vbox_linewrap;
1505 GtkWidget *label_linewrap;
1506 GtkObject *spinbtn_linewrap_adj;
1507 GtkWidget *spinbtn_linewrap;
1508 GtkWidget *checkbtn_wrapquote;
1509 GtkWidget *checkbtn_autowrap;
1510 GtkWidget *checkbtn_wrapatsend;
1512 GtkWidget *checkbtn_default_reply_list;
1514 GtkWidget *checkbtn_forward_as_attachment;
1515 GtkWidget *checkbtn_redirect_keep_from;
1516 GtkWidget *checkbtn_smart_wrapping;
1517 GtkWidget *checkbtn_block_cursor;
1518 GtkWidget *frame_msgwrap;
1520 GtkWidget *hbox_autosave;
1521 GtkWidget *checkbtn_autosave;
1522 GtkWidget *entry_autosave_length;
1523 GtkWidget *label_autosave_length;
1525 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1526 gtk_widget_show (vbox1);
1527 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1528 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1530 /* Account autoselection */
1531 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1533 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1534 gtk_widget_show (hbox_autosel);
1535 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1536 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1538 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1539 _("when replying"));
1540 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1541 _("when forwarding"));
1542 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1543 _("when re-editing"));
1545 vbox2 = gtk_vbox_new (FALSE, 0);
1546 gtk_widget_show (vbox2);
1547 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1549 PACK_CHECK_BUTTON (vbox2, checkbtn_default_reply_list,
1550 _("Reply button invokes mailing list reply"));
1552 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1553 _("Automatically launch the external editor"));
1555 hbox5 = gtk_hbox_new (FALSE, 8);
1556 gtk_widget_show (hbox5);
1557 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1559 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1560 _("Forward as attachment"));
1562 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1565 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1566 _("Keep the original 'From' header when redirecting"));
1569 hbox_autosave = gtk_hbox_new (FALSE, 8);
1570 gtk_widget_show (hbox_autosave);
1571 gtk_box_pack_start (GTK_BOX (vbox1), hbox_autosave, FALSE, FALSE, 0);
1573 PACK_CHECK_BUTTON (hbox_autosave, checkbtn_autosave,
1574 _("Autosave to Drafts folder every "));
1576 entry_autosave_length = gtk_entry_new();
1577 gtk_widget_set_usize (entry_autosave_length, 64, -1);
1578 gtk_widget_show (entry_autosave_length);
1579 gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
1581 label_autosave_length = gtk_label_new(_("characters"));
1582 gtk_widget_show (label_autosave_length);
1583 gtk_box_pack_start (GTK_BOX (hbox_autosave), label_autosave_length, FALSE, FALSE, 0);
1585 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1586 gtk_widget_show (hbox_undolevel);
1587 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1589 label_undolevel = gtk_label_new (_("Undo level"));
1590 gtk_widget_show (label_undolevel);
1591 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1593 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1594 spinbtn_undolevel = gtk_spin_button_new
1595 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1596 gtk_widget_show (spinbtn_undolevel);
1597 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1598 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1599 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1602 PACK_FRAME(vbox1, frame_msgwrap, _("Message wrapping"));
1604 vbox_linewrap = gtk_vbox_new (FALSE, VSPACING_NARROW);
1605 gtk_widget_show (vbox_linewrap);
1606 gtk_container_add (GTK_CONTAINER (frame_msgwrap), vbox_linewrap);
1607 gtk_container_set_border_width (GTK_CONTAINER (vbox_linewrap), 8);
1609 hbox3 = gtk_hbox_new (FALSE, 8);
1610 gtk_widget_show (hbox3);
1611 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox3, FALSE, FALSE, 0);
1614 label_linewrap = gtk_label_new (_("Wrap messages at"));
1615 gtk_widget_show (label_linewrap);
1616 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1618 spinbtn_linewrap_adj = gtk_adjustment_new (72, 20, 1024, 1, 10, 10);
1619 spinbtn_linewrap = gtk_spin_button_new
1620 (GTK_ADJUSTMENT (spinbtn_linewrap_adj), 1, 0);
1621 gtk_widget_show (spinbtn_linewrap);
1622 gtk_box_pack_start (GTK_BOX (hbox3), spinbtn_linewrap, FALSE, FALSE, 0);
1623 gtk_widget_set_usize (spinbtn_linewrap, 64, -1);
1624 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linewrap), TRUE);
1626 label_linewrap = gtk_label_new (_("characters"));
1627 gtk_widget_show (label_linewrap);
1628 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1630 hbox4 = gtk_hbox_new (FALSE, VSPACING);
1631 gtk_widget_show (hbox4);
1632 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox4, FALSE, FALSE, 0);
1634 PACK_CHECK_BUTTON (hbox4, checkbtn_wrapquote, _("Wrap quotation"));
1636 PACK_CHECK_BUTTON (hbox4, checkbtn_autowrap, _("Wrap on input"));
1639 (hbox4, checkbtn_wrapatsend, _("Wrap before sending"));
1641 PACK_CHECK_BUTTON (vbox_linewrap, checkbtn_smart_wrapping,
1642 _("Smart wrapping (EXPERIMENTAL)"));
1645 compose.checkbtn_quote = checkbtn_quote;
1646 compose.entry_quotemark = entry_quotemark;
1647 compose.text_quotefmt = text_quotefmt;
1650 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1652 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1653 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1654 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1656 compose.spinbtn_undolevel = spinbtn_undolevel;
1657 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1659 compose.spinbtn_linewrap = spinbtn_linewrap;
1660 compose.spinbtn_linewrap_adj = spinbtn_linewrap_adj;
1661 compose.checkbtn_wrapquote = checkbtn_wrapquote;
1662 compose.checkbtn_autowrap = checkbtn_autowrap;
1663 compose.checkbtn_wrapatsend = checkbtn_wrapatsend;
1665 compose.checkbtn_autosave = checkbtn_autosave;
1666 compose.entry_autosave_length = entry_autosave_length;
1668 compose.checkbtn_forward_as_attachment =
1669 checkbtn_forward_as_attachment;
1670 compose.checkbtn_redirect_keep_from =
1671 checkbtn_redirect_keep_from;
1672 compose.checkbtn_smart_wrapping =
1673 checkbtn_smart_wrapping;
1674 compose.checkbtn_block_cursor =
1675 checkbtn_block_cursor;
1676 compose.checkbtn_default_reply_list = checkbtn_default_reply_list;
1679 static void prefs_quote_create(void)
1682 GtkWidget *frame_quote;
1683 GtkWidget *vbox_quote;
1686 GtkWidget *label_quotemark;
1687 GtkWidget *entry_quotemark;
1688 GtkWidget *scrolledwin_quotefmt;
1689 GtkWidget *text_quotefmt;
1691 GtkWidget *entry_fw_quotemark;
1692 GtkWidget *text_fw_quotefmt;
1694 GtkWidget *entry_quote_chars;
1695 GtkWidget *label_quote_chars;
1697 GtkWidget *btn_quotedesc;
1699 GtkWidget *checkbtn_reply_with_quote;
1701 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1702 gtk_widget_show (vbox1);
1703 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1704 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1708 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1710 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1712 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1713 gtk_widget_show (vbox_quote);
1714 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1715 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1717 hbox1 = gtk_hbox_new (FALSE, 32);
1718 gtk_widget_show (hbox1);
1719 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1721 hbox2 = gtk_hbox_new (FALSE, 8);
1722 gtk_widget_show (hbox2);
1723 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1725 label_quotemark = gtk_label_new (_("Quotation mark"));
1726 gtk_widget_show (label_quotemark);
1727 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1729 entry_quotemark = gtk_entry_new ();
1730 gtk_widget_show (entry_quotemark);
1731 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
1732 gtk_widget_set_usize (entry_quotemark, 64, -1);
1734 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1735 gtk_widget_show (scrolledwin_quotefmt);
1736 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1737 gtk_scrolled_window_set_policy
1738 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1739 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1741 text_quotefmt = gtk_text_new (NULL, NULL);
1742 gtk_widget_show (text_quotefmt);
1743 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
1744 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
1745 gtk_widget_set_usize(text_quotefmt, -1, 60);
1749 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
1751 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1752 gtk_widget_show (vbox_quote);
1753 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1754 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1756 hbox1 = gtk_hbox_new (FALSE, 32);
1757 gtk_widget_show (hbox1);
1758 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1760 hbox2 = gtk_hbox_new (FALSE, 8);
1761 gtk_widget_show (hbox2);
1762 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1764 label_quotemark = gtk_label_new (_("Quotation mark"));
1765 gtk_widget_show (label_quotemark);
1766 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1768 entry_fw_quotemark = gtk_entry_new ();
1769 gtk_widget_show (entry_fw_quotemark);
1770 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
1772 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
1774 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1775 gtk_widget_show (scrolledwin_quotefmt);
1776 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1777 gtk_scrolled_window_set_policy
1778 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1779 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1781 text_fw_quotefmt = gtk_text_new (NULL, NULL);
1782 gtk_widget_show (text_fw_quotefmt);
1783 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
1785 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
1786 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
1788 hbox1 = gtk_hbox_new (FALSE, 32);
1789 gtk_widget_show (hbox1);
1790 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1793 gtk_button_new_with_label (_(" Description of symbols "));
1794 gtk_widget_show (btn_quotedesc);
1795 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
1796 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
1797 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
1801 PACK_FRAME (vbox1, frame_quote, _("Quotation characters"));
1803 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1804 gtk_widget_show (vbox_quote);
1805 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1806 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1808 hbox1 = gtk_hbox_new (FALSE, 32);
1809 gtk_widget_show (hbox1);
1810 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1812 hbox2 = gtk_hbox_new (FALSE, 8);
1813 gtk_widget_show (hbox2);
1814 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1816 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
1817 gtk_widget_show (label_quote_chars);
1818 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
1820 entry_quote_chars = gtk_entry_new ();
1821 gtk_widget_show (entry_quote_chars);
1822 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
1824 gtk_widget_set_usize (entry_quote_chars, 64, -1);
1827 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
1828 quote.entry_quotemark = entry_quotemark;
1829 quote.text_quotefmt = text_quotefmt;
1830 quote.entry_fw_quotemark = entry_fw_quotemark;
1831 quote.text_fw_quotefmt = text_fw_quotefmt;
1832 quote.entry_quote_chars = entry_quote_chars;
1835 static void prefs_display_create(void)
1838 GtkWidget *frame_font;
1840 GtkWidget *label_textfont;
1841 GtkWidget *entry_textfont;
1842 GtkWidget *button_textfont;
1843 GtkWidget *chkbtn_transhdr;
1844 GtkWidget *chkbtn_folder_unread;
1846 GtkWidget *label_ng_abbrev;
1847 GtkWidget *spinbtn_ng_abbrev_len;
1848 GtkObject *spinbtn_ng_abbrev_len_adj;
1849 GtkWidget *frame_summary;
1851 GtkWidget *chkbtn_swapfrom;
1852 GtkWidget *chkbtn_useaddrbook;
1853 GtkWidget *chkbtn_threadsubj;
1855 GtkWidget *label_datefmt;
1856 GtkWidget *button_datefmt;
1857 GtkWidget *entry_datefmt;
1858 GtkWidget *button_dispitem;
1859 GtkWidget *tmplabel, *tmpbutton, *tmpentry;
1861 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1862 gtk_widget_show (vbox1);
1863 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1864 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1866 PACK_FRAME(vbox1, frame_font, _("Font"));
1868 table1 = gtk_table_new (4, 3, FALSE);
1870 gtk_widget_show (table1);
1871 gtk_container_add (GTK_CONTAINER (frame_font), table1);
1872 gtk_container_set_border_width (GTK_CONTAINER (table1), 8);
1873 gtk_table_set_row_spacings (GTK_TABLE (table1), 8);
1874 gtk_table_set_col_spacings (GTK_TABLE (table1), 8);
1876 label_textfont = gtk_label_new (_("Text"));
1877 gtk_misc_set_alignment(GTK_MISC(label_textfont), 0, 0.5);
1878 gtk_widget_show (label_textfont);
1879 gtk_table_attach (GTK_TABLE (table1), label_textfont, 0, 1, 0, 1,
1880 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1882 entry_textfont = gtk_entry_new ();
1883 gtk_widget_show (entry_textfont);
1884 gtk_table_attach (GTK_TABLE (table1), entry_textfont, 1, 2, 0, 1,
1885 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
1887 button_textfont = gtk_button_new_with_label (" ... ");
1889 gtk_widget_show (button_textfont);
1890 gtk_table_attach (GTK_TABLE (table1), button_textfont, 2, 3, 0, 1,
1892 gtk_signal_connect (GTK_OBJECT (button_textfont), "clicked",
1893 GTK_SIGNAL_FUNC (prefs_font_select), entry_textfont);
1895 tmplabel = gtk_label_new (_("Small"));
1896 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
1897 gtk_widget_show (tmplabel);
1898 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 1, 2,
1899 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1901 tmpentry = gtk_entry_new ();
1902 gtk_widget_show (tmpentry);
1903 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 1, 2,
1904 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
1906 tmpbutton = gtk_button_new_with_label (" ... ");
1907 gtk_widget_show (tmpbutton);
1908 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 1, 2,
1910 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
1911 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
1912 display.entry_smallfont = tmpentry;
1914 tmplabel = gtk_label_new (_("Normal"));
1915 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
1916 gtk_widget_show (tmplabel);
1917 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 2, 3,
1918 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1920 tmpentry = gtk_entry_new ();
1921 gtk_widget_show (tmpentry);
1922 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 2, 3,
1923 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
1925 tmpbutton = gtk_button_new_with_label (" ... ");
1926 gtk_widget_show (tmpbutton);
1927 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 2, 3,
1929 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
1930 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
1931 display.entry_normalfont = tmpentry;
1933 tmplabel = gtk_label_new (_("Bold"));
1934 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
1935 gtk_widget_show (tmplabel);
1936 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 3, 4,
1937 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1939 tmpentry = gtk_entry_new ();
1940 gtk_widget_show (tmpentry);
1941 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 3, 4,
1942 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
1944 tmpbutton = gtk_button_new_with_label (" ... ");
1945 gtk_widget_show (tmpbutton);
1946 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 3, 4,
1948 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
1949 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
1950 display.entry_boldfont = tmpentry;
1952 vbox2 = gtk_vbox_new (FALSE, 0);
1953 gtk_widget_show (vbox2);
1954 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
1957 (vbox2, chkbtn_transhdr,
1958 _("Translate header name (such as `From:', `Subject:')"));
1960 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
1961 _("Display unread number next to folder name"));
1963 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1965 hbox1 = gtk_hbox_new (FALSE, 8);
1966 gtk_widget_show (hbox1);
1967 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1969 label_ng_abbrev = gtk_label_new
1970 (_("Abbreviate newsgroup names longer than"));
1971 gtk_widget_show (label_ng_abbrev);
1972 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1974 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
1975 spinbtn_ng_abbrev_len = gtk_spin_button_new
1976 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
1977 gtk_widget_show (spinbtn_ng_abbrev_len);
1978 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
1980 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
1981 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
1984 label_ng_abbrev = gtk_label_new
1986 gtk_widget_show (label_ng_abbrev);
1987 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1989 /* ---- Summary ---- */
1991 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
1993 vbox2 = gtk_vbox_new (FALSE, 0);
1994 gtk_widget_show (vbox2);
1995 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
1996 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1999 (vbox2, chkbtn_swapfrom,
2000 _("Display recipient in `From' column if sender is yourself"));
2002 (vbox2, chkbtn_useaddrbook,
2003 _("Display sender using address book"));
2005 (vbox2, chkbtn_threadsubj,
2006 _("Thread using subject in addition to standard headers"));
2008 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2010 hbox1 = gtk_hbox_new (FALSE, 8);
2011 gtk_widget_show (hbox1);
2012 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2014 label_datefmt = gtk_label_new (_("Date format"));
2015 gtk_widget_show (label_datefmt);
2016 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
2018 entry_datefmt = gtk_entry_new ();
2019 gtk_widget_show (entry_datefmt);
2020 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
2022 button_datefmt = gtk_button_new_with_label (" ... ");
2024 gtk_widget_show (button_datefmt);
2025 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
2026 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
2027 GTK_SIGNAL_FUNC (date_format_create), NULL);
2029 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
2031 hbox1 = gtk_hbox_new (FALSE, 8);
2032 gtk_widget_show (hbox1);
2033 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2035 button_dispitem = gtk_button_new_with_label
2036 (_(" Set displayed items in summary... "));
2037 gtk_widget_show (button_dispitem);
2038 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
2039 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
2040 GTK_SIGNAL_FUNC (prefs_summary_column_open),
2043 display.entry_textfont = entry_textfont;
2044 display.button_textfont = button_textfont;
2046 display.chkbtn_transhdr = chkbtn_transhdr;
2047 display.chkbtn_folder_unread = chkbtn_folder_unread;
2048 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
2049 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
2051 display.chkbtn_swapfrom = chkbtn_swapfrom;
2052 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
2053 display.chkbtn_threadsubj = chkbtn_threadsubj;
2054 display.entry_datefmt = entry_datefmt;
2057 static void prefs_message_create(void)
2063 GtkWidget *chkbtn_enablecol;
2064 GtkWidget *button_edit_col;
2065 GtkWidget *chkbtn_mbalnum;
2066 GtkWidget *chkbtn_disphdrpane;
2067 GtkWidget *chkbtn_disphdr;
2068 GtkWidget *button_edit_disphdr;
2069 GtkWidget *hbox_linespc;
2070 GtkWidget *label_linespc;
2071 GtkObject *spinbtn_linespc_adj;
2072 GtkWidget *spinbtn_linespc;
2073 GtkWidget *chkbtn_headspc;
2075 GtkWidget *frame_scr;
2076 GtkWidget *vbox_scr;
2077 GtkWidget *chkbtn_smoothscroll;
2078 GtkWidget *hbox_scr;
2079 GtkWidget *label_scr;
2080 GtkObject *spinbtn_scrollstep_adj;
2081 GtkWidget *spinbtn_scrollstep;
2082 GtkWidget *chkbtn_halfpage;
2084 GtkWidget *chkbtn_attach_desc;
2086 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2087 gtk_widget_show (vbox1);
2088 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2089 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2091 vbox2 = gtk_vbox_new (FALSE, 0);
2092 gtk_widget_show (vbox2);
2093 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2095 hbox1 = gtk_hbox_new (FALSE, 8);
2096 gtk_widget_show (hbox1);
2097 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2099 PACK_CHECK_BUTTON (hbox1, chkbtn_enablecol,
2100 _("Enable coloration of message"));
2101 gtk_signal_connect (GTK_OBJECT (chkbtn_enablecol), "toggled",
2102 GTK_SIGNAL_FUNC (prefs_enable_message_color_toggled),
2105 button_edit_col = gtk_button_new_with_label (_(" Edit... "));
2106 gtk_widget_show (button_edit_col);
2107 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_col, FALSE, TRUE, 0);
2108 gtk_signal_connect (GTK_OBJECT (button_edit_col), "clicked",
2109 GTK_SIGNAL_FUNC (prefs_quote_colors_dialog), NULL);
2111 SET_TOGGLE_SENSITIVITY(chkbtn_enablecol, button_edit_col);
2114 (vbox2, chkbtn_mbalnum,
2115 _("Display multi-byte alphanumeric as\n"
2116 "ASCII character (Japanese only)"));
2117 gtk_label_set_justify (GTK_LABEL (GTK_BIN(chkbtn_mbalnum)->child),
2120 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
2121 _("Display header pane above message view"));
2123 hbox1 = gtk_hbox_new (FALSE, 8);
2124 gtk_widget_show (hbox1);
2125 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2127 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
2128 _("Display short headers on message view"));
2130 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
2131 gtk_widget_show (button_edit_disphdr);
2132 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
2134 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
2135 GTK_SIGNAL_FUNC (prefs_display_header_open),
2138 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
2140 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2142 hbox1 = gtk_hbox_new (FALSE, 32);
2143 gtk_widget_show (hbox1);
2144 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2146 hbox_linespc = gtk_hbox_new (FALSE, 8);
2147 gtk_widget_show (hbox1);
2148 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
2150 label_linespc = gtk_label_new (_("Line space"));
2151 gtk_widget_show (label_linespc);
2152 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2155 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
2156 spinbtn_linespc = gtk_spin_button_new
2157 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
2158 gtk_widget_show (spinbtn_linespc);
2159 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
2161 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
2162 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
2164 label_linespc = gtk_label_new (_("pixel(s)"));
2165 gtk_widget_show (label_linespc);
2166 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2169 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Leave space on head"));
2171 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
2173 vbox_scr = gtk_vbox_new (FALSE, 0);
2174 gtk_widget_show (vbox_scr);
2175 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
2176 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
2178 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
2180 hbox1 = gtk_hbox_new (FALSE, 32);
2181 gtk_widget_show (hbox1);
2182 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
2184 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
2186 hbox_scr = gtk_hbox_new (FALSE, 8);
2187 gtk_widget_show (hbox_scr);
2188 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
2190 label_scr = gtk_label_new (_("Step"));
2191 gtk_widget_show (label_scr);
2192 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2194 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
2195 spinbtn_scrollstep = gtk_spin_button_new
2196 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
2197 gtk_widget_show (spinbtn_scrollstep);
2198 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
2200 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
2201 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
2204 label_scr = gtk_label_new (_("pixel(s)"));
2205 gtk_widget_show (label_scr);
2206 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2208 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
2210 vbox3 = gtk_vbox_new (FALSE, 0);
2211 gtk_widget_show (vbox3);
2212 gtk_box_pack_start (GTK_BOX (vbox1), vbox3, FALSE, FALSE, 0);
2214 PACK_CHECK_BUTTON(vbox3, chkbtn_attach_desc,
2215 _("Show attachment descriptions (rather than names)"));
2218 message.chkbtn_enablecol = chkbtn_enablecol;
2219 message.button_edit_col = button_edit_col;
2220 message.chkbtn_mbalnum = chkbtn_mbalnum;
2221 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
2222 message.chkbtn_disphdr = chkbtn_disphdr;
2223 message.spinbtn_linespc = spinbtn_linespc;
2224 message.chkbtn_headspc = chkbtn_headspc;
2226 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
2227 message.spinbtn_scrollstep = spinbtn_scrollstep;
2228 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
2229 message.chkbtn_halfpage = chkbtn_halfpage;
2231 message.chkbtn_attach_desc = chkbtn_attach_desc;
2235 static void prefs_privacy_create(void)
2241 GtkWidget *hbox_spc;
2243 GtkWidget *checkbtn_auto_check_signatures;
2244 GtkWidget *checkbtn_gpg_signature_popup;
2245 GtkWidget *checkbtn_store_passphrase;
2246 GtkObject *spinbtn_store_passphrase_adj;
2247 GtkWidget *spinbtn_store_passphrase;
2248 GtkWidget *checkbtn_passphrase_grab;
2249 GtkWidget *checkbtn_gpg_warning;
2251 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2252 gtk_widget_show (vbox1);
2253 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2254 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2256 vbox2 = gtk_vbox_new (FALSE, 0);
2257 gtk_widget_show (vbox2);
2258 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2260 PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
2261 _("Automatically check signatures"));
2263 PACK_CHECK_BUTTON (vbox2, checkbtn_gpg_signature_popup,
2264 _("Show signature check result in a popup window"));
2266 PACK_CHECK_BUTTON (vbox2, checkbtn_store_passphrase,
2267 _("Store passphrase in memory temporarily"));
2269 vbox3 = gtk_vbox_new (FALSE, 0);
2270 gtk_widget_show (vbox3);
2271 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2273 hbox1 = gtk_hbox_new (FALSE, 8);
2274 gtk_widget_show (hbox1);
2275 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2277 hbox_spc = gtk_hbox_new (FALSE, 0);
2278 gtk_widget_show (hbox_spc);
2279 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2280 gtk_widget_set_usize (hbox_spc, 12, -1);
2282 label = gtk_label_new (_("Expire after"));
2283 gtk_widget_show (label);
2284 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2286 spinbtn_store_passphrase_adj = gtk_adjustment_new (0, 0, 1440, 1, 5, 5);
2287 spinbtn_store_passphrase = gtk_spin_button_new
2288 (GTK_ADJUSTMENT (spinbtn_store_passphrase_adj), 1, 0);
2289 gtk_widget_show (spinbtn_store_passphrase);
2290 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_store_passphrase, FALSE, FALSE, 0);
2291 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_store_passphrase),
2293 gtk_widget_set_usize (spinbtn_store_passphrase, 64, -1);
2295 label = gtk_label_new (_("minute(s) "));
2296 gtk_widget_show (label);
2297 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2299 hbox1 = gtk_hbox_new (FALSE, 8);
2300 gtk_widget_show (hbox1);
2301 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2303 hbox_spc = gtk_hbox_new (FALSE, 0);
2304 gtk_widget_show (hbox_spc);
2305 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2306 gtk_widget_set_usize (hbox_spc, 12, -1);
2308 label = gtk_label_new (_("(Setting to '0' will store the passphrase\n"
2309 " for the whole session)"));
2310 gtk_widget_show (label);
2311 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2312 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2314 SET_TOGGLE_SENSITIVITY (checkbtn_store_passphrase, vbox3);
2317 PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab,
2318 _("Grab input while entering a passphrase"));
2322 (vbox2, checkbtn_gpg_warning,
2323 _("Display warning on startup if GnuPG doesn't work"));
2325 hbox1 = gtk_hbox_new (FALSE, 8);
2326 gtk_widget_show (hbox1);
2327 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2329 privacy.checkbtn_auto_check_signatures
2330 = checkbtn_auto_check_signatures;
2331 privacy.checkbtn_gpg_signature_popup
2332 = checkbtn_gpg_signature_popup;
2333 privacy.checkbtn_store_passphrase = checkbtn_store_passphrase;
2334 privacy.spinbtn_store_passphrase = spinbtn_store_passphrase;
2335 privacy.spinbtn_store_passphrase_adj = spinbtn_store_passphrase_adj;
2336 privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
2337 privacy.checkbtn_gpg_warning = checkbtn_gpg_warning;
2339 #endif /* USE_GPGME */
2341 static void prefs_interface_create(void)
2346 /* GtkWidget *checkbtn_emacs; */
2347 GtkWidget *checkbtn_always_show_msg;
2348 GtkWidget *checkbtn_openunread;
2349 GtkWidget *checkbtn_mark_as_read_on_newwin;
2350 GtkWidget *checkbtn_openinbox;
2351 GtkWidget *checkbtn_immedexec;
2355 GtkWidget *menuitem;
2357 GtkWidget *button_keybind;
2359 GtkWidget *hbox_nextunreadmsgdialog;
2360 GtkWidget *optmenu_nextunreadmsgdialog;
2362 GtkWidget *frame_pixmap_theme;
2363 GtkWidget *vbox_pixmap_theme;
2364 GtkWidget *entry_pixmap_theme;
2365 GtkWidget *combo_pixmap_theme;
2366 GList *avail_pixmap_themes = NULL;
2368 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2369 gtk_widget_show (vbox1);
2370 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2371 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2373 vbox2 = gtk_vbox_new (FALSE, 0);
2374 gtk_widget_show (vbox2);
2375 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2377 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
2378 _("Emulate the behavior of mouse operation of\n"
2379 "Emacs-based mailer"));
2380 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
2381 GTK_JUSTIFY_LEFT); */
2384 (vbox2, checkbtn_always_show_msg,
2385 _("Always open messages in summary when selected"));
2388 (vbox2, checkbtn_openunread,
2389 _("Open first unread message when entering a folder"));
2392 (vbox2, checkbtn_mark_as_read_on_newwin,
2393 _("Only mark message as read when opened in new window"));
2396 (vbox2, checkbtn_openinbox,
2397 _("Go to inbox after receiving new mail"));
2399 vbox3 = gtk_vbox_new (FALSE, 0);
2400 gtk_widget_show (vbox3);
2401 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2404 (vbox3, checkbtn_immedexec,
2405 _("Execute immediately when moving or deleting messages"));
2407 hbox1 = gtk_hbox_new (FALSE, 0);
2408 gtk_widget_show (hbox1);
2409 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2411 label = gtk_label_new
2412 (_("(Messages will be marked until execution\n"
2413 " if this is turned off)"));
2414 gtk_widget_show (label);
2415 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 8);
2416 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2418 /* Next Unread Message Dialog */
2419 hbox_nextunreadmsgdialog = gtk_hbox_new (FALSE, 8);
2420 gtk_widget_show (hbox1);
2421 gtk_box_pack_start (GTK_BOX (vbox1), hbox_nextunreadmsgdialog, FALSE, FALSE, 0);
2423 label = gtk_label_new (_("Show no-unread-message dialog"));
2424 gtk_widget_show (label);
2425 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), label, FALSE, FALSE, 8);
2427 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
2428 gtk_widget_show (optmenu_nextunreadmsgdialog);
2429 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), optmenu_nextunreadmsgdialog, FALSE, FALSE, 8);
2431 menu = gtk_menu_new ();
2432 MENUITEM_ADD (menu, menuitem, _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
2433 MENUITEM_ADD (menu, menuitem, _("Assume 'Yes'"),
2434 NEXTUNREADMSGDIALOG_ASSUME_YES);
2435 MENUITEM_ADD (menu, menuitem, _("Assume 'No'"),
2436 NEXTUNREADMSGDIALOG_ASSUME_NO);
2438 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog), menu);
2440 hbox1 = gtk_hbox_new (FALSE, 8);
2441 gtk_widget_show (hbox1);
2442 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2444 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
2445 gtk_widget_show (button_keybind);
2446 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
2447 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
2448 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
2450 PACK_FRAME(vbox1, frame_pixmap_theme, _("Icon theme"));
2452 vbox_pixmap_theme = gtk_vbox_new(FALSE, 0);
2453 gtk_widget_show(vbox_pixmap_theme);
2454 gtk_container_add(GTK_CONTAINER(frame_pixmap_theme), vbox_pixmap_theme);
2455 gtk_container_set_border_width(GTK_CONTAINER(vbox_pixmap_theme), 8);
2457 avail_pixmap_themes = stock_pixmap_themes_list_new();
2459 combo_pixmap_theme = gtk_combo_new ();
2460 gtk_widget_show (combo_pixmap_theme);
2461 gtk_box_pack_start (GTK_BOX (vbox_pixmap_theme), combo_pixmap_theme, TRUE, TRUE, 0);
2462 gtk_combo_set_popdown_strings(GTK_COMBO(combo_pixmap_theme), avail_pixmap_themes);
2463 entry_pixmap_theme = GTK_COMBO (combo_pixmap_theme)->entry;
2465 stock_pixmap_themes_list_free(avail_pixmap_themes);
2467 /* interface.checkbtn_emacs = checkbtn_emacs; */
2468 interface.checkbtn_always_show_msg = checkbtn_always_show_msg;
2469 interface.checkbtn_openunread = checkbtn_openunread;
2470 interface.checkbtn_mark_as_read_on_newwin
2471 = checkbtn_mark_as_read_on_newwin;
2472 interface.checkbtn_openinbox = checkbtn_openinbox;
2473 interface.checkbtn_immedexec = checkbtn_immedexec;
2474 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
2475 interface.combo_pixmap_theme = combo_pixmap_theme;
2476 interface.entry_pixmap_theme = entry_pixmap_theme;
2479 static void prefs_other_create(void)
2482 GtkWidget *ext_frame;
2483 GtkWidget *ext_table;
2486 GtkWidget *uri_label;
2487 GtkWidget *uri_combo;
2488 GtkWidget *uri_entry;
2490 GtkWidget *printcmd_label;
2491 GtkWidget *printcmd_entry;
2493 GtkWidget *exteditor_label;
2494 GtkWidget *exteditor_combo;
2495 GtkWidget *exteditor_entry;
2497 GtkWidget *frame_addr;
2498 GtkWidget *vbox_addr;
2499 GtkWidget *checkbtn_addaddrbyclick;
2501 GtkWidget *frame_cliplog;
2502 GtkWidget *vbox_cliplog;
2503 GtkWidget *hbox_cliplog;
2504 GtkWidget *checkbtn_cliplog;
2505 GtkWidget *loglength_label;
2506 GtkWidget *loglength_entry;
2508 GtkWidget *frame_exit;
2509 GtkWidget *vbox_exit;
2510 GtkWidget *checkbtn_confonexit;
2511 GtkWidget *checkbtn_cleanonexit;
2512 GtkWidget *checkbtn_askonclean;
2513 GtkWidget *checkbtn_warnqueued;
2515 GtkWidget *label_iotimeout;
2516 GtkWidget *spinbtn_iotimeout;
2517 GtkObject *spinbtn_iotimeout_adj;
2521 GtkWidget *frame_ssl;
2522 GtkWidget *vbox_ssl;
2523 GtkWidget *hbox_ssl;
2524 GtkWidget *checkbtn_ssl_ask_unknown_valid;
2527 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2528 gtk_widget_show (vbox1);
2529 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2530 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2532 PACK_FRAME(vbox1, ext_frame,
2533 _("External commands (%s will be replaced with file name / URI)"));
2535 ext_table = gtk_table_new (3, 2, FALSE);
2536 gtk_widget_show (ext_table);
2537 gtk_container_add (GTK_CONTAINER (ext_frame), ext_table);
2538 gtk_container_set_border_width (GTK_CONTAINER (ext_table), 8);
2539 gtk_table_set_row_spacings (GTK_TABLE (ext_table), VSPACING_NARROW);
2540 gtk_table_set_col_spacings (GTK_TABLE (ext_table), 8);
2542 uri_label = gtk_label_new (_("Web browser"));
2543 gtk_widget_show(uri_label);
2544 gtk_table_attach (GTK_TABLE (ext_table), uri_label, 0, 1, 0, 1,
2545 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2546 gtk_misc_set_alignment (GTK_MISC (uri_label), 1, 0.5);
2548 uri_combo = gtk_combo_new ();
2549 gtk_widget_show (uri_combo);
2550 gtk_table_attach (GTK_TABLE (ext_table), uri_combo, 1, 2, 0, 1,
2551 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2552 gtkut_combo_set_items (GTK_COMBO (uri_combo),
2553 DEFAULT_BROWSER_CMD,
2554 "galeon --new-tab '%s'",
2556 "mozilla -remote 'openurl(%s,new-window)'",
2557 "netscape -remote 'openURL(%s, new-window)'",
2559 "gnome-moz-remote --newwin '%s'",
2560 "kfmclient openURL '%s'",
2561 "opera -newwindow '%s'",
2562 "kterm -e w3m '%s'",
2563 "kterm -e lynx '%s'",
2565 uri_entry = GTK_COMBO (uri_combo)->entry;
2567 printcmd_label = gtk_label_new (_("Print"));
2568 gtk_widget_show (printcmd_label);
2569 gtk_table_attach (GTK_TABLE (ext_table), printcmd_label, 0, 1, 1, 2,
2570 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2571 gtk_misc_set_alignment (GTK_MISC (printcmd_label), 1, 0.5);
2573 printcmd_entry = gtk_entry_new ();
2574 gtk_widget_show (printcmd_entry);
2575 gtk_table_attach (GTK_TABLE (ext_table), printcmd_entry, 1, 2, 1, 2,
2576 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2578 exteditor_label = gtk_label_new (_("Editor"));
2579 gtk_widget_show (exteditor_label);
2580 gtk_table_attach (GTK_TABLE (ext_table), exteditor_label, 0, 1, 2, 3,
2581 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2582 gtk_misc_set_alignment (GTK_MISC (exteditor_label), 1, 0.5);
2584 exteditor_combo = gtk_combo_new ();
2585 gtk_widget_show (exteditor_combo);
2586 gtk_table_attach (GTK_TABLE (ext_table), exteditor_combo, 1, 2, 2, 3,
2587 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2588 gtkut_combo_set_items (GTK_COMBO (exteditor_combo),
2591 "mgedit --no-fork %s",
2597 exteditor_entry = GTK_COMBO (exteditor_combo)->entry;
2599 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2601 vbox_addr = gtk_vbox_new (FALSE, 0);
2602 gtk_widget_show (vbox_addr);
2603 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2604 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2607 (vbox_addr, checkbtn_addaddrbyclick,
2608 _("Add address to destination when double-clicked"));
2611 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2613 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2614 gtk_widget_show (vbox_cliplog);
2615 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2616 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2617 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2618 _("Clip the log size"));
2619 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2620 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2621 gtk_widget_show (hbox_cliplog);
2623 loglength_label = gtk_label_new (_("Log window length"));
2624 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2626 gtk_widget_show (GTK_WIDGET (loglength_label));
2627 loglength_entry = gtk_entry_new ();
2628 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2629 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2631 gtk_widget_show (GTK_WIDGET (loglength_entry));
2632 loglength_label = gtk_label_new (_("(0 to stop logging in the log window)"));
2633 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2635 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2640 PACK_FRAME (vbox1, frame_ssl, _("Security"));
2642 vbox_ssl = gtk_vbox_new (FALSE, 0);
2643 gtk_widget_show (vbox_ssl);
2644 gtk_container_add (GTK_CONTAINER (frame_ssl), vbox_ssl);
2645 gtk_container_set_border_width (GTK_CONTAINER (vbox_ssl), 8);
2646 PACK_CHECK_BUTTON (vbox_ssl, checkbtn_ssl_ask_unknown_valid,
2647 _("Ask before accepting SSL certificates"));
2648 hbox_ssl = gtk_hbox_new (FALSE, 3);
2649 gtk_container_add (GTK_CONTAINER (vbox_ssl), hbox_ssl);
2650 gtk_widget_show (hbox_ssl);
2655 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2657 vbox_exit = gtk_vbox_new (FALSE, 0);
2658 gtk_widget_show (vbox_exit);
2659 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2660 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
2662 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
2663 _("Confirm on exit"));
2665 hbox1 = gtk_hbox_new (FALSE, 32);
2666 gtk_widget_show (hbox1);
2667 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
2669 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
2670 _("Empty trash on exit"));
2671 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
2672 _("Ask before emptying"));
2673 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
2675 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
2676 _("Warn if there are queued messages"));
2678 hbox1 = gtk_hbox_new (FALSE, 8);
2679 gtk_widget_show (hbox1);
2680 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2682 label_iotimeout = gtk_label_new (_("Socket I/O timeout:"));
2683 gtk_widget_show (label_iotimeout);
2684 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2686 spinbtn_iotimeout_adj = gtk_adjustment_new (60, 0, 1000, 1, 10, 10);
2687 spinbtn_iotimeout = gtk_spin_button_new
2688 (GTK_ADJUSTMENT (spinbtn_iotimeout_adj), 1, 0);
2689 gtk_widget_show (spinbtn_iotimeout);
2690 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_iotimeout,
2692 gtk_widget_set_usize (spinbtn_iotimeout, 64, -1);
2693 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_iotimeout), TRUE);
2695 label_iotimeout = gtk_label_new (_("second(s)"));
2696 gtk_widget_show (label_iotimeout);
2697 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2699 other.uri_combo = uri_combo;
2700 other.uri_entry = uri_entry;
2701 other.printcmd_entry = printcmd_entry;
2703 other.exteditor_combo = exteditor_combo;
2704 other.exteditor_entry = exteditor_entry;
2706 other.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2708 other.checkbtn_cliplog = checkbtn_cliplog;
2709 other.loglength_entry = loglength_entry;
2711 other.checkbtn_confonexit = checkbtn_confonexit;
2712 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
2713 other.checkbtn_askonclean = checkbtn_askonclean;
2714 other.checkbtn_warnqueued = checkbtn_warnqueued;
2716 other.spinbtn_iotimeout = spinbtn_iotimeout;
2717 other.spinbtn_iotimeout_adj = spinbtn_iotimeout_adj;
2721 other.checkbtn_ssl_ask_unknown_valid = checkbtn_ssl_ask_unknown_valid;
2726 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
2728 GtkWidget *datefmt_sample = NULL;
2731 g_return_if_fail(widget != NULL);
2732 g_return_if_fail(*widget != NULL);
2733 g_return_if_fail(display.entry_datefmt != NULL);
2735 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2736 (GTK_OBJECT(*widget), "datefmt_sample"));
2737 g_return_if_fail(datefmt_sample != NULL);
2739 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
2740 g_free(prefs_common.date_format);
2741 prefs_common.date_format = text;
2742 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
2744 gtk_widget_destroy(*widget);
2748 static void date_format_cancel_btn_clicked(GtkButton *button,
2751 g_return_if_fail(widget != NULL);
2752 g_return_if_fail(*widget != NULL);
2754 gtk_widget_destroy(*widget);
2758 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
2761 if (event && event->keyval == GDK_Escape)
2762 date_format_cancel_btn_clicked(NULL, widget);
2765 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
2766 GdkEventAny *event, GtkWidget **widget)
2768 g_return_val_if_fail(widget != NULL, FALSE);
2769 g_return_val_if_fail(*widget != NULL, FALSE);
2775 static void date_format_entry_on_change(GtkEditable *editable,
2779 struct tm *cal_time;
2783 cur_time = time(NULL);
2784 cal_time = localtime(&cur_time);
2786 text = gtk_editable_get_chars(editable, 0, -1);
2788 strftime(buffer, sizeof buffer, text, cal_time);
2790 gtk_label_set_text(example, buffer);
2793 static void date_format_select_row(GtkWidget *date_format_list, gint row,
2794 gint column, GdkEventButton *event,
2795 GtkWidget *date_format)
2801 GtkWidget *datefmt_sample;
2803 /* only on double click */
2804 if (!event || event->type != GDK_2BUTTON_PRESS) return;
2807 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2808 (GTK_OBJECT(date_format), "datefmt_sample"));
2810 g_return_if_fail(date_format_list != NULL);
2811 g_return_if_fail(date_format != NULL);
2812 g_return_if_fail(datefmt_sample != NULL);
2814 /* get format from clist */
2815 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
2817 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
2818 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
2820 /* insert the format into the text entry */
2821 new_format = g_malloc(strlen(old_format) + 3);
2823 strncpy(new_format, old_format, cur_pos);
2824 new_format[cur_pos] = '\0';
2825 strcat(new_format, format);
2826 strcat(new_format, &old_format[cur_pos]);
2828 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
2829 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
2834 static GtkWidget *date_format_create(GtkButton *button, void *data)
2836 static GtkWidget *datefmt_win = NULL;
2838 GtkWidget *scrolledwindow1;
2839 GtkWidget *datefmt_clist;
2844 GtkWidget *confirm_area;
2846 GtkWidget *cancel_btn;
2847 GtkWidget *datefmt_entry;
2876 const gint TIME_FORMAT_ELEMS =
2877 sizeof time_format / sizeof time_format[0];
2879 time_format[0].txt = _("the full abbreviated weekday name");
2880 time_format[1].txt = _("the full weekday name");
2881 time_format[2].txt = _("the abbreviated month name");
2882 time_format[3].txt = _("the full month name");
2883 time_format[4].txt = _("the preferred date and time for the current locale");
2884 time_format[5].txt = _("the century number (year/100)");
2885 time_format[6].txt = _("the day of the month as a decimal number");
2886 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
2887 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
2888 time_format[9].txt = _("the day of the year as a decimal number");
2889 time_format[10].txt = _("the month as a decimal number");
2890 time_format[11].txt = _("the minute as a decimal number");
2891 time_format[12].txt = _("either AM or PM");
2892 time_format[13].txt = _("the second as a decimal number");
2893 time_format[14].txt = _("the day of the week as a decimal number");
2894 time_format[15].txt = _("the preferred date for the current locale");
2895 time_format[16].txt = _("the last two digits of a year");
2896 time_format[17].txt = _("the year as a decimal number");
2897 time_format[18].txt = _("the time zone or name or abbreviation");
2899 if (datefmt_win) return datefmt_win;
2901 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
2902 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
2903 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
2904 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2905 gtk_widget_set_usize(datefmt_win, 440, 280);
2907 vbox1 = gtk_vbox_new(FALSE, 10);
2908 gtk_widget_show(vbox1);
2909 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
2911 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
2912 gtk_scrolled_window_set_policy
2913 (GTK_SCROLLED_WINDOW(scrolledwindow1),
2914 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
2915 gtk_widget_show(scrolledwindow1);
2916 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
2918 titles[0] = _("Specifier");
2919 titles[1] = _("Description");
2920 datefmt_clist = gtk_clist_new_with_titles(2, titles);
2921 gtk_widget_show(datefmt_clist);
2922 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
2923 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
2924 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
2925 GTK_SELECTION_BROWSE);
2927 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
2929 /* phoney casting necessary because of gtk... */
2930 text[0] = (gchar *)time_format[i].fmt;
2931 text[1] = (gchar *)time_format[i].txt;
2932 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
2935 table = gtk_table_new(2, 2, FALSE);
2936 gtk_widget_show(table);
2937 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
2938 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
2939 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
2941 label1 = gtk_label_new(_("Date format"));
2942 gtk_widget_show(label1);
2943 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
2945 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
2946 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
2948 datefmt_entry = gtk_entry_new_with_max_length(256);
2949 gtk_widget_show(datefmt_entry);
2950 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
2951 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2953 /* we need the "sample" entry box; add it as data so callbacks can
2954 * get the entry box */
2955 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
2958 label2 = gtk_label_new(_("Example"));
2959 gtk_widget_show(label2);
2960 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
2962 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
2963 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
2965 label3 = gtk_label_new("");
2966 gtk_widget_show(label3);
2967 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
2968 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2969 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
2970 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
2972 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
2973 &cancel_btn, _("Cancel"), NULL, NULL);
2974 gtk_widget_grab_default(ok_btn);
2975 gtk_widget_show(confirm_area);
2977 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
2979 /* set the current format */
2980 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
2981 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
2984 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2985 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
2987 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
2988 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
2990 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
2991 GTK_SIGNAL_FUNC(date_format_key_pressed),
2993 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
2994 GTK_SIGNAL_FUNC(date_format_on_delete),
2996 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
2997 GTK_SIGNAL_FUNC(date_format_entry_on_change),
3000 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
3001 GTK_SIGNAL_FUNC(date_format_select_row),
3004 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
3005 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
3007 gtk_widget_show(datefmt_win);
3008 manage_window_set_transient(GTK_WINDOW(datefmt_win));
3010 gtk_widget_grab_focus(ok_btn);
3015 void prefs_quote_colors_dialog(void)
3017 if (!quote_color_win)
3018 prefs_quote_colors_dialog_create();
3019 gtk_widget_show(quote_color_win);
3020 manage_window_set_transient(GTK_WINDOW(quote_color_win));
3023 gtk_widget_hide(quote_color_win);
3025 textview_update_message_colors();
3026 main_window_reflect_prefs_all();
3029 static void prefs_quote_colors_dialog_create(void)
3034 GtkWidget *quotelevel1_label;
3035 GtkWidget *quotelevel2_label;
3036 GtkWidget *quotelevel3_label;
3037 GtkWidget *uri_label;
3038 GtkWidget *signature_label;
3039 GtkWidget *tgt_folder_label;
3042 GtkWidget *recycle_colors_btn;
3043 GtkWidget *frame_colors;
3045 window = gtk_window_new(GTK_WINDOW_DIALOG);
3046 gtk_container_set_border_width(GTK_CONTAINER(window), 2);
3047 gtk_window_set_title(GTK_WINDOW(window), _("Set message colors"));
3048 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
3049 gtk_window_set_modal(GTK_WINDOW(window), TRUE);
3050 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
3052 vbox = gtk_vbox_new (FALSE, VSPACING);
3053 gtk_container_add (GTK_CONTAINER (window), vbox);
3054 gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
3055 PACK_FRAME(vbox, frame_colors, _("Colors"));
3057 table = gtk_table_new (5, 2, FALSE);
3058 gtk_container_add (GTK_CONTAINER (frame_colors), table);
3059 gtk_container_set_border_width (GTK_CONTAINER (table), 8);
3060 gtk_table_set_row_spacings (GTK_TABLE (table), 2);
3061 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
3064 color_buttons.quote_level1_btn = gtk_button_new();
3065 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level1_btn,
3066 0, 1, 0, 1, 0, 0, 0, 0);
3067 gtk_widget_set_usize (color_buttons.quote_level1_btn, 40, 30);
3068 gtk_container_set_border_width
3069 (GTK_CONTAINER (color_buttons.quote_level1_btn), 5);
3071 color_buttons.quote_level2_btn = gtk_button_new();
3072 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level2_btn,
3073 0, 1, 1, 2, 0, 0, 0, 0);
3074 gtk_widget_set_usize (color_buttons.quote_level2_btn, 40, 30);
3075 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.quote_level2_btn), 5);
3077 color_buttons.quote_level3_btn = gtk_button_new_with_label ("");
3078 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level3_btn,
3079 0, 1, 2, 3, 0, 0, 0, 0);
3080 gtk_widget_set_usize (color_buttons.quote_level3_btn, 40, 30);
3081 gtk_container_set_border_width
3082 (GTK_CONTAINER (color_buttons.quote_level3_btn), 5);
3084 color_buttons.uri_btn = gtk_button_new_with_label ("");
3085 gtk_table_attach (GTK_TABLE (table), color_buttons.uri_btn,
3086 0, 1, 3, 4, 0, 0, 0, 0);
3087 gtk_widget_set_usize (color_buttons.uri_btn, 40, 30);
3088 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.uri_btn), 5);
3090 color_buttons.tgt_folder_btn = gtk_button_new_with_label ("");
3091 gtk_table_attach (GTK_TABLE (table), color_buttons.tgt_folder_btn,
3092 0, 1, 4, 5, 0, 0, 0, 0);
3093 gtk_widget_set_usize (color_buttons.tgt_folder_btn, 40, 30);
3094 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.tgt_folder_btn), 5);
3096 color_buttons.signature_btn = gtk_button_new_with_label ("");
3097 gtk_table_attach (GTK_TABLE (table), color_buttons.signature_btn,
3098 0, 1, 5, 6, 0, 0, 0, 0);
3099 gtk_widget_set_usize (color_buttons.signature_btn, 40, 30);
3100 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.signature_btn), 5);
3102 quotelevel1_label = gtk_label_new (_("Quoted Text - First Level"));
3103 gtk_table_attach (GTK_TABLE (table), quotelevel1_label, 1, 2, 0, 1,
3104 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3105 gtk_label_set_justify (GTK_LABEL (quotelevel1_label), GTK_JUSTIFY_LEFT);
3106 gtk_misc_set_alignment (GTK_MISC (quotelevel1_label), 0, 0.5);
3108 quotelevel2_label = gtk_label_new (_("Quoted Text - Second Level"));
3109 gtk_table_attach (GTK_TABLE (table), quotelevel2_label, 1, 2, 1, 2,
3110 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3111 gtk_label_set_justify (GTK_LABEL (quotelevel2_label), GTK_JUSTIFY_LEFT);
3112 gtk_misc_set_alignment (GTK_MISC (quotelevel2_label), 0, 0.5);
3114 quotelevel3_label = gtk_label_new (_("Quoted Text - Third Level"));
3115 gtk_table_attach (GTK_TABLE (table), quotelevel3_label, 1, 2, 2, 3,
3116 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3117 gtk_label_set_justify (GTK_LABEL (quotelevel3_label), GTK_JUSTIFY_LEFT);
3118 gtk_misc_set_alignment (GTK_MISC (quotelevel3_label), 0, 0.5);
3120 uri_label = gtk_label_new (_("URI link"));
3121 gtk_table_attach (GTK_TABLE (table), uri_label, 1, 2, 3, 4,
3122 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3123 gtk_label_set_justify (GTK_LABEL (uri_label), GTK_JUSTIFY_LEFT);
3124 gtk_misc_set_alignment (GTK_MISC (uri_label), 0, 0.5);
3126 tgt_folder_label = gtk_label_new (_("Target folder"));
3127 gtk_table_attach (GTK_TABLE (table), tgt_folder_label, 1, 2, 4, 5,
3128 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3129 gtk_label_set_justify (GTK_LABEL (tgt_folder_label), GTK_JUSTIFY_LEFT);
3130 gtk_misc_set_alignment (GTK_MISC (tgt_folder_label), 0, 0.5);
3132 signature_label = gtk_label_new (_("Signatures"));
3133 gtk_table_attach (GTK_TABLE (table), signature_label, 1, 2, 5, 6,
3134 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3135 gtk_label_set_justify (GTK_LABEL (signature_label), GTK_JUSTIFY_LEFT);
3136 gtk_misc_set_alignment (GTK_MISC (signature_label), 0, 0.5);
3138 PACK_CHECK_BUTTON (vbox, recycle_colors_btn,
3139 _("Recycle quote colors"));
3141 gtkut_button_set_create(&hbbox, &ok_btn, _("OK"),
3142 NULL, NULL, NULL, NULL);
3143 gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
3145 gtk_widget_grab_default(ok_btn);
3146 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3147 gtk_signal_connect(GTK_OBJECT(window), "delete_event",
3148 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3149 gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
3150 GTK_SIGNAL_FUNC(prefs_quote_colors_key_pressed),
3153 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level1_btn), "clicked",
3154 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL1");
3155 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level2_btn), "clicked",
3156 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL2");
3157 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level3_btn), "clicked",
3158 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL3");
3159 gtk_signal_connect(GTK_OBJECT(color_buttons.uri_btn), "clicked",
3160 GTK_SIGNAL_FUNC(quote_color_set_dialog), "URI");
3161 gtk_signal_connect(GTK_OBJECT(color_buttons.tgt_folder_btn), "clicked",
3162 GTK_SIGNAL_FUNC(quote_color_set_dialog), "TGTFLD");
3163 gtk_signal_connect(GTK_OBJECT(color_buttons.signature_btn), "clicked",
3164 GTK_SIGNAL_FUNC(quote_color_set_dialog), "SIGNATURE");
3165 gtk_signal_connect(GTK_OBJECT(recycle_colors_btn), "toggled",
3166 GTK_SIGNAL_FUNC(prefs_recycle_colors_toggled), NULL);
3167 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
3168 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3170 /* show message button colors and recycle options */
3171 set_button_bg_color(color_buttons.quote_level1_btn,
3172 prefs_common.quote_level1_col);
3173 set_button_bg_color(color_buttons.quote_level2_btn,
3174 prefs_common.quote_level2_col);
3175 set_button_bg_color(color_buttons.quote_level3_btn,
3176 prefs_common.quote_level3_col);
3177 set_button_bg_color(color_buttons.uri_btn,
3178 prefs_common.uri_col);
3179 set_button_bg_color(color_buttons.tgt_folder_btn,
3180 prefs_common.tgt_folder_col);
3181 set_button_bg_color(color_buttons.signature_btn,
3182 prefs_common.signature_col);
3183 gtk_toggle_button_set_active((GtkToggleButton *)recycle_colors_btn,
3184 prefs_common.recycle_quote_colors);
3186 gtk_widget_show_all(vbox);
3187 quote_color_win = window;
3190 static void prefs_quote_colors_key_pressed(GtkWidget *widget,
3191 GdkEventKey *event, gpointer data)
3193 if (event && event->keyval == GDK_Escape)
3197 static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
3199 gchar *type = (gchar *)data;
3200 gchar *title = NULL;
3201 gdouble color[4] = {0.0, 0.0, 0.0, 0.0};
3203 GtkColorSelectionDialog *dialog;
3205 if(g_strcasecmp(type, "LEVEL1") == 0) {
3206 title = _("Pick color for quotation level 1");
3207 rgbvalue = prefs_common.quote_level1_col;
3208 } else if(g_strcasecmp(type, "LEVEL2") == 0) {
3209 title = _("Pick color for quotation level 2");
3210 rgbvalue = prefs_common.quote_level2_col;
3211 } else if(g_strcasecmp(type, "LEVEL3") == 0) {
3212 title = _("Pick color for quotation level 3");
3213 rgbvalue = prefs_common.quote_level3_col;
3214 } else if(g_strcasecmp(type, "URI") == 0) {
3215 title = _("Pick color for URI");
3216 rgbvalue = prefs_common.uri_col;
3217 } else if(g_strcasecmp(type, "TGTFLD") == 0) {
3218 title = _("Pick color for target folder");
3219 rgbvalue = prefs_common.tgt_folder_col;
3220 } else if(g_strcasecmp(type, "SIGNATURE") == 0) {
3221 title = _("Pick color for signatures");
3222 rgbvalue = prefs_common.signature_col;
3223 } else { /* Should never be called */
3224 g_warning("Unrecognized datatype '%s' in quote_color_set_dialog\n", type);
3228 color_dialog = gtk_color_selection_dialog_new(title);
3229 gtk_window_set_position(GTK_WINDOW(color_dialog), GTK_WIN_POS_CENTER);
3230 gtk_window_set_modal(GTK_WINDOW(color_dialog), TRUE);
3231 gtk_window_set_policy(GTK_WINDOW(color_dialog), FALSE, FALSE, FALSE);
3232 manage_window_set_transient(GTK_WINDOW(color_dialog));
3234 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->ok_button),
3235 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_ok), data);
3236 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->cancel_button),
3237 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_cancel), data);
3238 gtk_signal_connect(GTK_OBJECT(color_dialog), "key_press_event",
3239 GTK_SIGNAL_FUNC(quote_colors_set_dialog_key_pressed),
3242 /* preselect the previous color in the color selection dialog */
3243 color[0] = (gdouble) ((rgbvalue & 0xff0000) >> 16) / 255.0;
3244 color[1] = (gdouble) ((rgbvalue & 0x00ff00) >> 8) / 255.0;
3245 color[2] = (gdouble) (rgbvalue & 0x0000ff) / 255.0;
3246 dialog = GTK_COLOR_SELECTION_DIALOG(color_dialog);
3247 gtk_color_selection_set_color
3248 (GTK_COLOR_SELECTION(dialog->colorsel), color);
3250 gtk_widget_show(color_dialog);
3253 static void quote_colors_set_dialog_ok(GtkWidget *widget, gpointer data)
3255 GtkColorSelection *colorsel = (GtkColorSelection *)
3256 ((GtkColorSelectionDialog *)color_dialog)->colorsel;
3258 gint red, green, blue, rgbvalue;
3259 gchar *type = (gchar *)data;
3261 gtk_color_selection_get_color(colorsel, color);
3263 red = (gint) (color[0] * 255.0);
3264 green = (gint) (color[1] * 255.0);
3265 blue = (gint) (color[2] * 255.0);
3266 rgbvalue = (gint) ((red * 0x10000) | (green * 0x100) | blue);
3269 fprintf(stderr, "redc = %f, greenc = %f, bluec = %f\n", color[0], color[1], color[2]);
3270 fprintf(stderr, "red = %d, green = %d, blue = %d\n", red, green, blue);
3271 fprintf(stderr, "Color is %x\n", rgbvalue);
3274 if (g_strcasecmp(type, "LEVEL1") == 0) {
3275 prefs_common.quote_level1_col = rgbvalue;
3276 set_button_bg_color(color_buttons.quote_level1_btn, rgbvalue);
3277 } else if (g_strcasecmp(type, "LEVEL2") == 0) {
3278 prefs_common.quote_level2_col = rgbvalue;
3279 set_button_bg_color(color_buttons.quote_level2_btn, rgbvalue);
3280 } else if (g_strcasecmp(type, "LEVEL3") == 0) {
3281 prefs_common.quote_level3_col = rgbvalue;
3282 set_button_bg_color(color_buttons.quote_level3_btn, rgbvalue);
3283 } else if (g_strcasecmp(type, "URI") == 0) {
3284 prefs_common.uri_col = rgbvalue;
3285 set_button_bg_color(color_buttons.uri_btn, rgbvalue);
3286 } else if (g_strcasecmp(type, "TGTFLD") == 0) {
3287 prefs_common.tgt_folder_col = rgbvalue;
3288 set_button_bg_color(color_buttons.tgt_folder_btn, rgbvalue);
3289 folderview_set_target_folder_color(prefs_common.tgt_folder_col);
3290 } else if (g_strcasecmp(type, "SIGNATURE") == 0) {
3291 prefs_common.signature_col = rgbvalue;
3292 set_button_bg_color(color_buttons.signature_btn, rgbvalue);
3294 fprintf( stderr, "Unrecognized datatype '%s' in quote_color_set_dialog_ok\n", type );
3296 gtk_widget_destroy(color_dialog);
3299 static void quote_colors_set_dialog_cancel(GtkWidget *widget, gpointer data)
3301 gtk_widget_destroy(color_dialog);
3304 static void quote_colors_set_dialog_key_pressed(GtkWidget *widget,
3308 gtk_widget_destroy(color_dialog);
3311 static void set_button_bg_color(GtkWidget *widget, gint rgbvalue)
3316 gtkut_convert_int_to_gdk_color(rgbvalue, &color);
3317 newstyle = gtk_style_copy(gtk_widget_get_default_style());
3318 newstyle->bg[GTK_STATE_NORMAL] = color;
3319 newstyle->bg[GTK_STATE_PRELIGHT] = color;
3320 newstyle->bg[GTK_STATE_ACTIVE] = color;
3322 gtk_widget_set_style(GTK_WIDGET(widget), newstyle);
3325 static void prefs_enable_message_color_toggled(void)
3329 is_active = gtk_toggle_button_get_active
3330 (GTK_TOGGLE_BUTTON(message.chkbtn_enablecol));
3331 gtk_widget_set_sensitive(message.button_edit_col, is_active);
3332 prefs_common.enable_color = is_active;
3335 static void prefs_recycle_colors_toggled(GtkWidget *widget)
3339 is_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
3340 prefs_common.recycle_quote_colors = is_active;
3343 static void prefs_font_select(GtkButton *button, GtkEntry *entry)
3347 g_return_if_fail(entry != NULL);
3349 if (!font_sel_win) {
3350 font_sel_win = gtk_font_selection_dialog_new
3351 (_("Font selection"));
3352 gtk_window_position(GTK_WINDOW(font_sel_win),
3353 GTK_WIN_POS_CENTER);
3354 gtk_signal_connect(GTK_OBJECT(font_sel_win), "delete_event",
3355 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3358 (GTK_OBJECT(font_sel_win), "key_press_event",
3359 GTK_SIGNAL_FUNC(prefs_font_selection_key_pressed),
3361 gtk_signal_connect_object
3362 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->cancel_button),
3364 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3365 GTK_OBJECT(font_sel_win));
3368 if(font_sel_conn_id) {
3369 gtk_signal_disconnect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button), font_sel_conn_id);
3371 font_sel_conn_id = gtk_signal_connect
3372 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button),
3374 GTK_SIGNAL_FUNC(prefs_font_selection_ok),
3376 printf("%i\n", font_sel_conn_id);
3378 font_name = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
3379 gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(font_sel_win), font_name);
3381 manage_window_set_transient(GTK_WINDOW(font_sel_win));
3382 gtk_window_set_modal(GTK_WINDOW(font_sel_win), TRUE);
3383 gtk_widget_grab_focus
3384 (GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button);
3385 gtk_widget_show(font_sel_win);
3388 static void prefs_font_selection_key_pressed(GtkWidget *widget,
3392 if (event && event->keyval == GDK_Escape)
3393 gtk_widget_hide(font_sel_win);
3396 static void prefs_font_selection_ok(GtkButton *button, GtkEntry *entry)
3400 fontname = gtk_font_selection_dialog_get_font_name
3401 (GTK_FONT_SELECTION_DIALOG(font_sel_win));
3404 gtk_entry_set_text(entry, fontname);
3409 gtk_widget_hide(font_sel_win);
3412 static void prefs_keybind_select(void)
3419 GtkWidget *confirm_area;
3421 GtkWidget *cancel_btn;
3423 window = gtk_window_new (GTK_WINDOW_DIALOG);
3424 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
3425 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
3426 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
3427 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
3428 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
3429 manage_window_set_transient (GTK_WINDOW (window));
3431 vbox1 = gtk_vbox_new (FALSE, VSPACING);
3432 gtk_container_add (GTK_CONTAINER (window), vbox1);
3433 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
3435 hbox1 = gtk_hbox_new (FALSE, 8);
3436 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3438 label = gtk_label_new
3439 (_("Select preset:"));
3440 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3441 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3443 hbox1 = gtk_hbox_new (FALSE, 8);
3444 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3446 combo = gtk_combo_new ();
3447 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
3448 gtkut_combo_set_items (GTK_COMBO (combo),
3454 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
3456 hbox1 = gtk_hbox_new (FALSE, 8);
3457 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3459 label = gtk_label_new
3460 (_("You can also modify each menu shortcut by pressing\n"
3461 "any key(s) when placing the mouse pointer on the item."));
3462 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3463 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3465 hbox1 = gtk_hbox_new (FALSE, 8);
3466 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3468 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
3469 &cancel_btn, _("Cancel"), NULL, NULL);
3470 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
3471 gtk_widget_grab_default (ok_btn);
3473 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3474 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3475 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
3476 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
3477 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
3478 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
3479 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
3481 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
3482 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
3485 gtk_widget_show_all(window);
3487 keybind.window = window;
3488 keybind.combo = combo;
3491 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
3494 if (event && event->keyval == GDK_Escape)
3495 prefs_keybind_cancel();
3498 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
3501 prefs_keybind_cancel();
3505 static void prefs_keybind_cancel(void)
3507 gtk_widget_destroy(keybind.window);
3508 keybind.window = NULL;
3509 keybind.combo = NULL;
3512 static void prefs_keybind_apply_clicked(GtkWidget *widget)
3514 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
3518 static gchar *default_menurc =
3519 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3520 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
3521 "(menu-path \"<Main>/File/Print...\" \"\")\n"
3522 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
3524 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3525 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3526 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3527 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
3529 "(menu-path \"<Main>/View/Expand Summary View\" \"V\")\n"
3530 "(menu-path \"<Main>/View/Expand Message View\" \"<shift>V\")\n"
3531 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3532 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3533 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3534 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3535 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3536 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3537 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3538 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3539 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3540 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3542 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3543 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3544 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
3545 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3546 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><control>R\")\n"
3547 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3548 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3549 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
3550 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
3551 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3552 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
3553 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
3554 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3555 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3556 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3557 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3559 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3560 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3561 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3563 "(menu-path \"<Compose>/File/Close\" \"<control>W\")\n"
3564 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
3565 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
3566 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
3567 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
3568 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
3569 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
3571 static gchar *mew_wl_menurc =
3572 "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
3573 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
3574 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
3575 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
3577 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3578 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3579 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3580 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3582 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3583 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3584 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
3585 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3586 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3587 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3588 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3589 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3590 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3591 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3592 "(menu-path \"<Main>/View/Show all headers\" \"<shift>H\")\n"
3593 "(menu-path \"<Main>/View/Update\" \"<shift>S\")\n"
3595 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3596 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3597 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
3598 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3599 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift>A\")\n"
3600 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3601 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3602 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3603 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
3604 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
3605 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
3606 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3607 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3608 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3609 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3610 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
3612 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3613 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3614 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3616 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3617 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3618 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3619 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3620 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3621 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3622 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3624 static gchar *mutt_menurc =
3625 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3626 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
3627 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
3628 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
3630 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3631 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3632 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3633 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
3635 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
3636 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3637 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
3638 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
3639 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
3640 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
3641 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
3642 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3643 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3644 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3645 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3647 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3648 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3649 "(menu-path \"<Main>/Message/Compose new message\" \"M\")\n"
3650 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
3651 "(menu-path \"<Main>/Message/Reply to/all\" \"G\")\n"
3652 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3653 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3654 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3655 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
3656 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3657 "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
3658 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3659 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
3660 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3661 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
3662 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3664 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3665 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3666 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3668 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3669 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3670 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3671 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3672 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3673 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3674 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3676 static gchar *old_sylpheed_menurc =
3677 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3678 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
3679 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
3680 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
3682 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3683 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3684 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3685 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3687 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3688 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3689 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3690 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3691 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3692 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3693 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3694 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
3695 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
3696 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3697 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3698 "(menu-path \"<Main>/View/Update\" \"<alt>U\")\n"
3700 "(menu-path \"<Main>/Message/Get new mail\" \"<alt>I\")\n"
3701 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><alt>I\")\n"
3702 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
3703 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
3704 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><alt>R\")\n"
3705 "(menu-path \"<Main>/Message/Reply to/sender\" \"<control><alt>R\")\n"
3706 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3707 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
3708 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
3709 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
3710 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
3711 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
3712 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3713 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3714 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3715 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3717 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
3718 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
3719 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
3721 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3722 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3723 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3724 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3725 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3726 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3727 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3729 text = gtk_entry_get_text(entry);
3731 if (!strcmp(text, _("Default")))
3732 rc_str = default_menurc;
3733 else if (!strcmp(text, "Mew / Wanderlust"))
3734 rc_str = mew_wl_menurc;
3735 else if (!strcmp(text, "Mutt"))
3736 rc_str = mutt_menurc;
3737 else if (!strcmp(text, _("Old Sylpheed")))
3738 rc_str = old_sylpheed_menurc;
3742 menu_factory_clear_rc(rc_str);
3743 gtk_item_factory_parse_rc_string(rc_str);
3745 gtk_widget_destroy(keybind.window);
3746 keybind.window = NULL;
3747 keybind.combo = NULL;
3750 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
3753 GtkWidget *menuitem;
3756 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3757 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3758 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
3759 g_free(*((gchar **)pparam->data));
3760 *((gchar **)pparam->data) = g_strdup(charset);
3763 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
3765 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3768 g_return_if_fail(optmenu != NULL);
3769 g_return_if_fail(*((gchar **)pparam->data) != NULL);
3771 index = menu_find_option_menu_index(optmenu, *((gchar **)pparam->data),
3772 (GCompareFunc)strcmp);
3774 gtk_option_menu_set_history(optmenu, index);
3776 gtk_option_menu_set_history(optmenu, 0);
3777 prefs_common_charset_set_data_from_optmenu(pparam);
3781 static void prefs_common_encoding_set_data_from_optmenu(PrefParam *pparam)
3784 GtkWidget *menuitem;
3786 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3787 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3788 *((TransferEncodingMethod *)pparam->data) = GPOINTER_TO_INT
3789 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3792 static void prefs_common_encoding_set_optmenu(PrefParam *pparam)
3794 TransferEncodingMethod method =
3795 *((TransferEncodingMethod *)pparam->data);
3796 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3799 g_return_if_fail(optmenu != NULL);
3801 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(method),
3804 gtk_option_menu_set_history(optmenu, index);
3806 gtk_option_menu_set_history(optmenu, 0);
3807 prefs_common_encoding_set_data_from_optmenu(pparam);
3811 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
3814 GtkWidget *menuitem;
3816 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3817 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3818 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
3819 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3822 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
3824 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
3825 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3827 GtkWidget *menuitem;
3830 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(mode),
3833 gtk_option_menu_set_history(optmenu, index);
3835 gtk_option_menu_set_history(optmenu, 0);
3836 prefs_common_recv_dialog_set_data_from_optmenu(pparam);
3839 menu = gtk_option_menu_get_menu(optmenu);
3840 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3841 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3844 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam)
3847 GtkWidget *menuitem;
3849 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3850 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3851 *((SendDialogMode *)pparam->data) = GPOINTER_TO_INT
3852 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3855 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam)
3857 SendDialogMode mode = *((SendDialogMode *)pparam->data);
3858 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3860 GtkWidget *menuitem;
3863 case SEND_DIALOG_ALWAYS:
3864 gtk_option_menu_set_history(optmenu, 0);
3866 case SEND_DIALOG_NEVER:
3867 gtk_option_menu_set_history(optmenu, 1);
3873 menu = gtk_option_menu_get_menu(optmenu);
3874 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3875 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3878 static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
3881 prefs_common_cancel();
3885 static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
3888 if (event && event->keyval == GDK_Escape)
3889 prefs_common_cancel();
3892 static void prefs_common_ok(void)
3894 prefs_common_apply();
3895 gtk_widget_hide(dialog.window);
3900 static void prefs_common_apply(void)
3902 gchar *entry_pixmap_theme_str;
3903 gboolean update_pixmap_theme;
3904 gchar *backup_theme_path;
3906 entry_pixmap_theme_str = gtk_entry_get_text(GTK_ENTRY(interface.entry_pixmap_theme));
3907 if (entry_pixmap_theme_str &&
3908 (strcmp(prefs_common.pixmap_theme_path, entry_pixmap_theme_str) != 0) )
3909 update_pixmap_theme = TRUE;
3911 update_pixmap_theme = FALSE;
3913 /*!< FIXME: prefs_set_data_from_dialog() clears and frees all strings,
3914 * but prefs_common.pixmap_theme_path is stored in the StockPixmapData
3915 * in stock_pixmap.c::pixmaps[].icon_path, and used when reflecting
3916 * the pixmap changes. Work around by saving the old one and freeing
3918 backup_theme_path = prefs_common.pixmap_theme_path;
3919 prefs_common.pixmap_theme_path = g_strdup(backup_theme_path);
3920 prefs_set_data_from_dialog(param);
3921 sock_set_io_timeout(prefs_common.io_timeout_secs);
3923 if (update_pixmap_theme) {
3924 main_window_reflect_prefs_all_real(TRUE);
3925 compose_reflect_prefs_pixmap_theme();
3927 main_window_reflect_prefs_all_real(FALSE);
3929 /*!< FIXME: Now it's safe to delete the backup path */
3930 g_free(backup_theme_path);
3932 prefs_common_save_config();
3934 inc_autocheck_timer_remove();
3935 inc_autocheck_timer_set();
3938 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
3941 GtkWidget *menuitem;
3943 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3944 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3945 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
3946 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3949 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
3951 NextUnreadMsgDialogShow dialog_show;
3952 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3954 GtkWidget *menuitem;
3956 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
3958 switch (dialog_show) {
3959 case NEXTUNREADMSGDIALOG_ALWAYS:
3960 gtk_option_menu_set_history(optmenu, 0);
3962 case NEXTUNREADMSGDIALOG_ASSUME_YES:
3963 gtk_option_menu_set_history(optmenu, 1);
3965 case NEXTUNREADMSGDIALOG_ASSUME_NO:
3966 gtk_option_menu_set_history(optmenu, 2);
3970 menu = gtk_option_menu_get_menu(optmenu);
3971 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3972 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3975 static void prefs_common_cancel(void)
3977 gtk_widget_hide(dialog.window);
3982 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
3985 GtkWidget *menuitem;
3987 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3988 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3989 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
3990 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3993 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
3995 RecvDialogShow dialog_show;
3996 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3998 GtkWidget *menuitem;
4000 dialog_show = *((RecvDialogShow *)pparam->data);
4002 switch (dialog_show) {
4003 case RECVDIALOG_ALWAYS:
4004 gtk_option_menu_set_history(optmenu, 0);
4006 case RECVDIALOG_WINDOW_ACTIVE:
4007 gtk_option_menu_set_history(optmenu, 1);
4009 case RECVDIALOG_NEVER:
4010 gtk_option_menu_set_history(optmenu, 2);
4015 menu = gtk_option_menu_get_menu(optmenu);
4016 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4017 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));