2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2004 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_autochk;
70 GtkWidget *spinbtn_autochk;
71 GtkObject *spinbtn_autochk_adj;
73 GtkWidget *checkbtn_chkonstartup;
74 GtkWidget *checkbtn_scan_after_inc;
77 GtkWidget *checkbtn_newmail_auto;
78 GtkWidget *checkbtn_newmail_manu;
79 GtkWidget *entry_newmail_notify_cmd;
80 GtkWidget *hbox_newmail_notify;
81 GtkWidget *optmenu_recvdialog;
82 GtkWidget *checkbtn_no_recv_err_panel;
83 GtkWidget *checkbtn_close_recv_dialog;
87 GtkWidget *checkbtn_savemsg;
88 GtkWidget *checkbtn_queuemsg;
89 GtkWidget *optmenu_senddialog;
91 GtkWidget *optmenu_charset;
92 GtkWidget *optmenu_encoding_method;
95 static struct Compose {
96 GtkWidget *entry_fw_quotemark;
97 GtkWidget *text_fw_quotefmt;
99 GtkWidget *checkbtn_autoextedit;
100 GtkWidget *spinbtn_undolevel;
101 GtkObject *spinbtn_undolevel_adj;
102 GtkWidget *spinbtn_linewrap;
103 GtkObject *spinbtn_linewrap_adj;
104 GtkWidget *checkbtn_wrapquote;
105 GtkWidget *checkbtn_autowrap;
106 GtkWidget *checkbtn_wrapatsend;
108 GtkWidget *checkbtn_reply_account_autosel;
109 GtkWidget *checkbtn_forward_account_autosel;
110 GtkWidget *checkbtn_reedit_account_autosel;
111 GtkWidget *checkbtn_quote;
112 GtkWidget *checkbtn_default_reply_list;
113 GtkWidget *checkbtn_forward_as_attachment;
114 GtkWidget *checkbtn_redirect_keep_from;
115 GtkWidget *checkbtn_smart_wrapping;
116 GtkWidget *checkbtn_block_cursor;
117 GtkWidget *checkbtn_reply_with_quote;
119 GtkWidget *checkbtn_autosave;
120 GtkWidget *entry_autosave_length;
123 static struct Quote {
124 GtkWidget *entry_quotemark;
125 GtkWidget *text_quotefmt;
127 GtkWidget *entry_fw_quotemark;
128 GtkWidget *text_fw_quotefmt;
130 GtkWidget *entry_quote_chars;
133 static struct Display {
134 GtkWidget *chkbtn_folder_unread;
135 GtkWidget *entry_ng_abbrev_len;
136 GtkWidget *spinbtn_ng_abbrev_len;
137 GtkObject *spinbtn_ng_abbrev_len_adj;
139 GtkWidget *chkbtn_transhdr;
141 GtkWidget *chkbtn_swapfrom;
142 GtkWidget *chkbtn_useaddrbook;
143 GtkWidget *chkbtn_threadsubj;
144 GtkWidget *entry_datefmt;
147 static struct Message {
148 GtkWidget *chkbtn_enablecol;
149 GtkWidget *button_edit_col;
150 GtkWidget *chkbtn_mbalnum;
151 GtkWidget *chkbtn_disphdrpane;
152 GtkWidget *chkbtn_disphdr;
153 GtkWidget *spinbtn_linespc;
154 GtkObject *spinbtn_linespc_adj;
155 GtkWidget *chkbtn_headspc;
157 GtkWidget *chkbtn_smoothscroll;
158 GtkWidget *spinbtn_scrollstep;
159 GtkObject *spinbtn_scrollstep_adj;
160 GtkWidget *chkbtn_halfpage;
162 GtkWidget *chkbtn_attach_desc;
166 static struct Privacy {
167 GtkWidget *checkbtn_auto_check_signatures;
168 GtkWidget *checkbtn_store_passphrase;
169 GtkWidget *spinbtn_store_passphrase;
170 GtkObject *spinbtn_store_passphrase_adj;
171 GtkWidget *checkbtn_passphrase_grab;
172 GtkWidget *checkbtn_gpg_warning;
176 static struct Interface {
177 /* GtkWidget *checkbtn_emacs; */
178 GtkWidget *checkbtn_always_show_msg;
179 GtkWidget *checkbtn_openunread;
180 GtkWidget *checkbtn_mark_as_read_on_newwin;
181 GtkWidget *checkbtn_openinbox;
182 GtkWidget *checkbtn_immedexec;
183 GtkWidget *optmenu_nextunreadmsgdialog;
186 static struct Other {
187 GtkWidget *checkbtn_addaddrbyclick;
188 GtkWidget *checkbtn_confonexit;
189 GtkWidget *checkbtn_cleanonexit;
190 GtkWidget *checkbtn_askonclean;
191 GtkWidget *checkbtn_warnqueued;
192 GtkWidget *checkbtn_cliplog;
193 GtkWidget *loglength_entry;
196 GtkWidget *checkbtn_ssl_ask_unknown_valid;
200 GtkWidget *spinbtn_iotimeout;
201 GtkObject *spinbtn_iotimeout_adj;
204 static struct MessageColorButtons {
205 GtkWidget *quote_level1_btn;
206 GtkWidget *quote_level2_btn;
207 GtkWidget *quote_level3_btn;
209 GtkWidget *tgt_folder_btn;
210 GtkWidget *signature_btn;
213 static struct KeybindDialog {
218 static GtkWidget *quote_color_win;
219 static GtkWidget *color_dialog;
221 static void prefs_common_charset_set_data_from_optmenu (PrefParam *pparam);
222 static void prefs_common_charset_set_optmenu (PrefParam *pparam);
223 static void prefs_common_encoding_set_data_from_optmenu (PrefParam *pparam);
224 static void prefs_common_encoding_set_optmenu (PrefParam *pparam);
225 static void prefs_common_recv_dialog_set_data_from_optmenu (PrefParam *pparam);
226 static void prefs_common_recv_dialog_set_optmenu (PrefParam *pparam);
227 static void prefs_common_recv_dialog_newmail_notify_toggle_cb (GtkWidget *w,
229 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam);
230 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam);
231 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam);
232 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam);
233 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam);
234 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam);
237 parameter name, default value, pointer to the prefs variable, data type,
238 pointer to the widget pointer,
239 pointer to the function for data setting,
240 pointer to the function for widget setting
243 static PrefParam param[] = {
245 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
246 &receive.checkbtn_incext,
247 prefs_set_data_from_toggle, prefs_set_toggle},
248 {"ext_inc_path", DEFAULT_INC_PATH, &prefs_common.extinc_cmd, P_STRING,
249 &receive.entry_incext,
250 prefs_set_data_from_entry, prefs_set_entry},
252 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
253 &receive.checkbtn_autochk,
254 prefs_set_data_from_toggle, prefs_set_toggle},
255 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
256 &receive.spinbtn_autochk,
257 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
258 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
259 &receive.checkbtn_chkonstartup,
260 prefs_set_data_from_toggle, prefs_set_toggle},
261 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
262 P_BOOL, &receive.checkbtn_scan_after_inc,
263 prefs_set_data_from_toggle, prefs_set_toggle},
264 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
265 P_BOOL, &receive.checkbtn_newmail_manu,
266 prefs_set_data_from_toggle, prefs_set_toggle},
267 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
268 P_BOOL, &receive.checkbtn_newmail_auto,
269 prefs_set_data_from_toggle, prefs_set_toggle},
270 {"newmail_notify_cmd", "", &prefs_common.newmail_notify_cmd, P_STRING,
271 &receive.entry_newmail_notify_cmd,
272 prefs_set_data_from_entry, prefs_set_entry},
273 {"receive_dialog_mode", "1", &prefs_common.recv_dialog_mode, P_ENUM,
274 &receive.optmenu_recvdialog,
275 prefs_common_recv_dialog_set_data_from_optmenu,
276 prefs_common_recv_dialog_set_optmenu},
277 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
278 P_BOOL, &receive.checkbtn_no_recv_err_panel,
279 prefs_set_data_from_toggle, prefs_set_toggle},
280 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
281 P_BOOL, &receive.checkbtn_close_recv_dialog,
282 prefs_set_data_from_toggle, prefs_set_toggle},
285 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
286 &p_send.checkbtn_savemsg,
287 prefs_set_data_from_toggle, prefs_set_toggle},
288 {"queue_message", "FALSE", &prefs_common.queue_msg, P_BOOL,
289 &p_send.checkbtn_queuemsg,
290 prefs_set_data_from_toggle, prefs_set_toggle},
291 {"send_dialog_mode", "0", &prefs_common.send_dialog_mode, P_ENUM,
292 &p_send.optmenu_senddialog,
293 prefs_common_send_dialog_set_data_from_optmenu,
294 prefs_common_send_dialog_set_optmenu},
296 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
297 &p_send.optmenu_charset,
298 prefs_common_charset_set_data_from_optmenu,
299 prefs_common_charset_set_optmenu},
300 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
301 &p_send.optmenu_encoding_method,
302 prefs_common_encoding_set_data_from_optmenu,
303 prefs_common_encoding_set_optmenu},
305 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
306 P_BOOL, NULL, NULL, NULL},
309 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
310 &compose.checkbtn_autoextedit,
311 prefs_set_data_from_toggle, prefs_set_toggle},
312 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
313 P_BOOL, &compose.checkbtn_forward_as_attachment,
314 prefs_set_data_from_toggle, prefs_set_toggle},
315 {"redirect_keep_from", "FALSE",
316 &prefs_common.redirect_keep_from, P_BOOL,
317 &compose.checkbtn_redirect_keep_from,
318 prefs_set_data_from_toggle, prefs_set_toggle},
319 {"undo_level", "50", &prefs_common.undolevels, P_INT,
320 &compose.spinbtn_undolevel,
321 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
322 {"block_cursor", "FALSE", &prefs_common.block_cursor,
323 P_BOOL, &compose.checkbtn_block_cursor,
324 prefs_set_data_from_toggle, prefs_set_toggle},
326 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
327 &compose.spinbtn_linewrap,
328 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
329 {"linewrap_quotation", "FALSE", &prefs_common.linewrap_quote, P_BOOL,
330 &compose.checkbtn_wrapquote,
331 prefs_set_data_from_toggle, prefs_set_toggle},
332 {"linewrap_auto", "FALSE", &prefs_common.autowrap, P_BOOL,
333 &compose.checkbtn_autowrap,
334 prefs_set_data_from_toggle, prefs_set_toggle},
335 {"linewrap_before_sending", "FALSE",
336 &prefs_common.linewrap_at_send, P_BOOL,
337 &compose.checkbtn_wrapatsend,
338 prefs_set_data_from_toggle, prefs_set_toggle},
339 {"smart_wrapping", "TRUE", &prefs_common.smart_wrapping,
340 P_BOOL, &compose.checkbtn_smart_wrapping,
341 prefs_set_data_from_toggle, prefs_set_toggle},
342 {"autosave", "FALSE", &prefs_common.autosave,
343 P_BOOL, &compose.checkbtn_autosave,
344 prefs_set_data_from_toggle, prefs_set_toggle},
345 {"autosave_length", "50", &prefs_common.autosave_length,
346 P_INT, &compose.entry_autosave_length,
347 prefs_set_data_from_entry, prefs_set_entry},
349 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
351 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path, P_STRING,
353 {"dictionary", "", &prefs_common.dictionary, P_STRING,
355 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode, P_INT,
357 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
359 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
361 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
364 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
365 &compose.checkbtn_reply_with_quote, prefs_set_data_from_toggle, prefs_set_toggle},
367 /* Account autoselection */
368 {"reply_account_autoselect", "TRUE",
369 &prefs_common.reply_account_autosel, P_BOOL,
370 &compose.checkbtn_reply_account_autosel,
371 prefs_set_data_from_toggle, prefs_set_toggle},
372 {"forward_account_autoselect", "TRUE",
373 &prefs_common.forward_account_autosel, P_BOOL,
374 &compose.checkbtn_forward_account_autosel,
375 prefs_set_data_from_toggle, prefs_set_toggle},
376 {"reedit_account_autoselect", "TRUE",
377 &prefs_common.reedit_account_autosel, P_BOOL,
378 &compose.checkbtn_reedit_account_autosel,
379 prefs_set_data_from_toggle, prefs_set_toggle},
381 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
382 &compose.checkbtn_default_reply_list,
383 prefs_set_data_from_toggle, prefs_set_toggle},
385 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
389 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
390 "e.entry_quotemark, prefs_set_data_from_entry, prefs_set_entry},
391 {"reply_quote_format", "On %d\\n%f wrote:\\n\\n%Q",
392 &prefs_common.quotefmt, P_STRING, "e.text_quotefmt,
393 prefs_set_data_from_text, prefs_set_text},
395 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
396 "e.entry_fw_quotemark,
397 prefs_set_data_from_entry, prefs_set_entry},
398 {"forward_quote_format",
399 "\\n\\nBegin forwarded message:\\n\\n"
400 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
401 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M",
402 &prefs_common.fw_quotefmt, P_STRING, "e.text_fw_quotefmt,
403 prefs_set_data_from_text, prefs_set_text},
404 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
405 "e.entry_quote_chars, prefs_set_data_from_entry, prefs_set_entry},
408 {"widget_font", NULL, &prefs_common.widgetfont, P_STRING,
410 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
411 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
412 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
413 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
414 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
415 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
416 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
417 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
420 {"display_folder_unread_num", "TRUE",
421 &prefs_common.display_folder_unread, P_BOOL,
422 &display.chkbtn_folder_unread,
423 prefs_set_data_from_toggle, prefs_set_toggle},
424 {"newsgroup_abbrev_len", "16",
425 &prefs_common.ng_abbrev_len, P_INT,
426 &display.spinbtn_ng_abbrev_len,
427 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
429 {"translate_header", "TRUE", &prefs_common.trans_hdr, P_BOOL,
430 &display.chkbtn_transhdr,
431 prefs_set_data_from_toggle, prefs_set_toggle},
433 /* Display: Summary View */
434 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
435 &display.chkbtn_swapfrom,
436 prefs_set_data_from_toggle, prefs_set_toggle},
437 {"use_address_book", "TRUE", &prefs_common.use_addr_book, P_BOOL,
438 &display.chkbtn_useaddrbook,
439 prefs_set_data_from_toggle, prefs_set_toggle},
440 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
441 &display.chkbtn_threadsubj,
442 prefs_set_data_from_toggle, prefs_set_toggle},
443 {"date_format", "%y/%m/%d(%a) %H:%M", &prefs_common.date_format,
444 P_STRING, &display.entry_datefmt,
445 prefs_set_data_from_entry, prefs_set_entry},
447 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
449 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
451 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
452 P_INT, NULL, NULL, NULL },
454 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
456 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
458 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
460 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
463 {"folderview_vscrollbar_policy", "0",
464 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
467 {"summary_col_show_mark", "TRUE",
468 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
469 {"summary_col_show_unread", "TRUE",
470 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
471 {"summary_col_show_mime", "TRUE",
472 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
473 {"summary_col_show_subject", "TRUE",
474 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
475 {"summary_col_show_from", "TRUE",
476 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_show_date", "TRUE",
478 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
479 {"summary_col_show_size", "TRUE",
480 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
481 {"summary_col_show_number", "FALSE",
482 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
483 {"summary_col_show_score", "FALSE",
484 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_locked", "FALSE",
486 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
488 {"summary_col_pos_mark", "0",
489 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
490 {"summary_col_pos_unread", "1",
491 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
492 {"summary_col_pos_mime", "2",
493 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
494 {"summary_col_pos_subject", "3",
495 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
496 {"summary_col_pos_from", "4",
497 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
498 {"summary_col_pos_date", "5",
499 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
500 {"summary_col_pos_size", "6",
501 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
502 {"summary_col_pos_number", "7",
503 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
504 {"summary_col_pos_score", "8",
505 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
506 {"summary_col_pos_locked", "9",
507 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
509 {"summary_col_size_mark", "10",
510 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
511 {"summary_col_size_unread", "13",
512 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
513 {"summary_col_size_mime", "10",
514 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
515 {"summary_col_size_subject", "200",
516 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
517 {"summary_col_size_from", "120",
518 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
519 {"summary_col_size_date", "118",
520 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
521 {"summary_col_size_size", "45",
522 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
523 {"summary_col_size_number", "40",
524 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
525 {"summary_col_size_score", "40",
526 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
527 {"summary_col_size_locked", "13",
528 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
531 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
533 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
535 {"folderview_width", "179", &prefs_common.folderview_width, P_INT,
537 {"folderview_height", "600", &prefs_common.folderview_height, P_INT,
539 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
542 {"folder_col_folder", "150", &prefs_common.folder_col_folder, P_INT,
544 {"folder_col_new", "32", &prefs_common.folder_col_new, P_INT,
546 {"folder_col_unread", "32", &prefs_common.folder_col_unread, P_INT,
548 {"folder_col_total", "32", &prefs_common.folder_col_total, P_INT,
551 {"summaryview_width", "600", &prefs_common.summaryview_width, P_INT,
553 {"summaryview_height", "173", &prefs_common.summaryview_height, P_INT,
556 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
558 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
560 {"messageview_width", "600", &prefs_common.msgview_width, P_INT,
562 {"messageview_height", "540", &prefs_common.msgview_height, P_INT,
564 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
567 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
569 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
571 {"mainview_width", "600", &prefs_common.mainview_width, P_INT,
573 {"mainview_height", "600", &prefs_common.mainview_height, P_INT,
575 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
577 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
579 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
581 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
583 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
585 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
587 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
589 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
591 {"compose_width", "600", &prefs_common.compose_width, P_INT,
593 {"compose_height", "560", &prefs_common.compose_height, P_INT,
595 {"compose_x", "0", &prefs_common.compose_x, P_INT,
597 {"compose_y", "0", &prefs_common.compose_y, P_INT,
600 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
601 &message.chkbtn_enablecol,
602 prefs_set_data_from_toggle, prefs_set_toggle},
604 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
606 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
608 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
610 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
612 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
614 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
616 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
617 P_BOOL, NULL, NULL, NULL},
619 {"convert_mb_alnum", "FALSE", &prefs_common.conv_mb_alnum, P_BOOL,
620 &message.chkbtn_mbalnum,
621 prefs_set_data_from_toggle, prefs_set_toggle},
622 {"display_header_pane", "TRUE", &prefs_common.display_header_pane,
623 P_BOOL, &message.chkbtn_disphdrpane,
624 prefs_set_data_from_toggle, prefs_set_toggle},
625 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
626 &message.chkbtn_disphdr,
627 prefs_set_data_from_toggle, prefs_set_toggle},
628 {"line_space", "2", &prefs_common.line_space, P_INT,
629 &message.spinbtn_linespc,
630 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
631 {"enable_head_space", "FALSE", &prefs_common.head_space, P_BOOL,
632 &message.chkbtn_headspc,
633 prefs_set_data_from_toggle, prefs_set_toggle},
635 {"enable_smooth_scroll", "FALSE",
636 &prefs_common.enable_smooth_scroll, P_BOOL,
637 &message.chkbtn_smoothscroll,
638 prefs_set_data_from_toggle, prefs_set_toggle},
639 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
640 &message.spinbtn_scrollstep,
641 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
642 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
643 &message.chkbtn_halfpage,
644 prefs_set_data_from_toggle, prefs_set_toggle},
646 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
649 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
650 &message.chkbtn_attach_desc,
651 prefs_set_data_from_toggle, prefs_set_toggle},
652 {"attach_save_directory", NULL,
653 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
656 {"mime_image_viewer", "display '%s'",
657 &prefs_common.mime_image_viewer, P_STRING, NULL, NULL, NULL},
658 {"mime_audio_player", "play '%s'",
659 &prefs_common.mime_audio_player, P_STRING, NULL, NULL, NULL},
660 {"mime_open_command", "gedit '%s'",
661 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
665 {"auto_check_signatures", "TRUE",
666 &prefs_common.auto_check_signatures, P_BOOL,
667 &privacy.checkbtn_auto_check_signatures,
668 prefs_set_data_from_toggle, prefs_set_toggle},
669 {"store_passphrase", "FALSE", &prefs_common.store_passphrase, P_BOOL,
670 &privacy.checkbtn_store_passphrase,
671 prefs_set_data_from_toggle, prefs_set_toggle},
672 {"store_passphrase_timeout", "0",
673 &prefs_common.store_passphrase_timeout, P_INT,
674 &privacy.spinbtn_store_passphrase,
675 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
677 {"passphrase_grab", "FALSE", &prefs_common.passphrase_grab, P_BOOL,
678 &privacy.checkbtn_passphrase_grab,
679 prefs_set_data_from_toggle, prefs_set_toggle},
680 #endif /* __MINGW32__ */
681 {"gpg_warning", "TRUE", &prefs_common.gpg_warning, P_BOOL,
682 &privacy.checkbtn_gpg_warning,
683 prefs_set_data_from_toggle, prefs_set_toggle},
684 #endif /* USE_GPGME */
687 {"separate_folder", "FALSE", &prefs_common.sep_folder, P_BOOL,
689 {"separate_message", "FALSE", &prefs_common.sep_msg, P_BOOL,
692 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
693 NULL, NULL, NULL}, */
694 {"always_show_message_when_selected", "FALSE",
695 &prefs_common.always_show_msg,
696 P_BOOL, &interface.checkbtn_always_show_msg,
697 prefs_set_data_from_toggle, prefs_set_toggle},
698 {"open_unread_on_enter", "FALSE", &prefs_common.open_unread_on_enter,
699 P_BOOL, &interface.checkbtn_openunread,
700 prefs_set_data_from_toggle, prefs_set_toggle},
701 {"mark_as_read_on_new_window", "FALSE",
702 &prefs_common.mark_as_read_on_new_window,
703 P_BOOL, &interface.checkbtn_mark_as_read_on_newwin,
704 prefs_set_data_from_toggle, prefs_set_toggle},
705 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
706 P_BOOL, &interface.checkbtn_openinbox,
707 prefs_set_data_from_toggle, prefs_set_toggle},
708 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
709 &interface.checkbtn_immedexec,
710 prefs_set_data_from_toggle, prefs_set_toggle},
711 {"nextunreadmsg_dialog", NULL, &prefs_common.next_unread_msg_dialog, P_ENUM,
712 &interface.optmenu_nextunreadmsgdialog,
713 prefs_nextunreadmsgdialog_set_data_from_optmenu,
714 prefs_nextunreadmsgdialog_set_optmenu},
716 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
717 &prefs_common.pixmap_theme_path, P_STRING,
720 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
724 {"uri_open_command", DEFAULT_BROWSER_CMD,
725 &prefs_common.uri_cmd, P_STRING, NULL, NULL, NULL},
726 {"print_command", "lpr %s", &prefs_common.print_cmd, P_STRING,
728 {"ext_editor_command", "gedit %s",
729 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
731 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
732 P_BOOL, &other.checkbtn_addaddrbyclick,
733 prefs_set_data_from_toggle, prefs_set_toggle},
735 {"confirm_on_exit", "TRUE", &prefs_common.confirm_on_exit, P_BOOL,
736 &other.checkbtn_confonexit,
737 prefs_set_data_from_toggle, prefs_set_toggle},
738 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
739 &other.checkbtn_cleanonexit,
740 prefs_set_data_from_toggle, prefs_set_toggle},
741 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
742 &other.checkbtn_askonclean,
743 prefs_set_data_from_toggle, prefs_set_toggle},
744 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
745 P_BOOL, &other.checkbtn_warnqueued,
746 prefs_set_data_from_toggle, prefs_set_toggle},
749 {"ssl_ask_unknown_valid", "TRUE", &prefs_common.ssl_ask_unknown_valid,
750 P_BOOL, &other.checkbtn_ssl_ask_unknown_valid,
751 prefs_set_data_from_toggle, prefs_set_toggle},
754 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
756 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
759 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
760 P_INT, &other.spinbtn_iotimeout,
761 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
762 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
764 {"important_score", "1", &prefs_common.important_score, P_INT,
766 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
767 &other.checkbtn_cliplog,
768 prefs_set_data_from_toggle, prefs_set_toggle},
769 {"log_length", "500", &prefs_common.loglength, P_INT,
770 &other.loglength_entry,
771 prefs_set_data_from_entry, prefs_set_entry},
773 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
775 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
778 {"color_new", "179", &prefs_common.color_new, P_COLOR,
781 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
784 /* widget creating functions */
785 static void prefs_common_create (void);
786 static void prefs_receive_create (void);
787 static void prefs_send_create (void);
788 static void prefs_compose_create (void);
789 static void prefs_quote_create (void);
790 static void prefs_display_create (void);
791 static void prefs_message_create (void);
793 static void prefs_privacy_create (void);
795 static void prefs_interface_create (void);
796 static void prefs_other_create (void);
798 static void date_format_ok_btn_clicked (GtkButton *button,
800 static void date_format_cancel_btn_clicked (GtkButton *button,
802 static void date_format_key_pressed (GtkWidget *keywidget,
805 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
808 static void date_format_entry_on_change (GtkEditable *editable,
810 static void date_format_select_row (GtkWidget *date_format_list,
813 GdkEventButton *event,
814 GtkWidget *date_format);
815 static GtkWidget *date_format_create (GtkButton *button,
818 static void prefs_quote_colors_dialog (void);
819 static void prefs_quote_colors_dialog_create (void);
820 static void prefs_quote_colors_key_pressed (GtkWidget *widget,
823 static void quote_color_set_dialog (GtkWidget *widget,
825 static void quote_colors_set_dialog_ok (GtkWidget *widget,
827 static void quote_colors_set_dialog_cancel (GtkWidget *widget,
829 static void quote_colors_set_dialog_key_pressed (GtkWidget *widget,
832 static void set_button_bg_color (GtkWidget *widget,
834 static void prefs_enable_message_color_toggled (void);
835 static void prefs_recycle_colors_toggled (GtkWidget *widget);
837 static void prefs_keybind_select (void);
838 static gint prefs_keybind_deleted (GtkWidget *widget,
841 static void prefs_keybind_key_pressed (GtkWidget *widget,
844 static void prefs_keybind_cancel (void);
845 static void prefs_keybind_apply_clicked (GtkWidget *widget);
847 static gint prefs_common_deleted (GtkWidget *widget,
850 static void prefs_common_key_pressed (GtkWidget *widget,
853 static void prefs_common_ok (void);
854 static void prefs_common_apply (void);
855 static void prefs_common_cancel (void);
857 void prefs_common_init(void)
859 prefs_common.disphdr_list = NULL;
862 PrefsCommon *prefs_common_get(void)
864 return &prefs_common;
868 * Read history list from the specified history file
870 GList *prefs_common_read_history(const gchar *history)
874 gchar buf[PREFSBUFSIZE];
877 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
879 if ((fp = fopen(path, "rb")) == NULL) {
880 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
885 while (fgets(buf, sizeof(buf), fp) != NULL) {
887 if (buf[0] == '\0') continue;
888 tmp = add_history(tmp, buf);
892 tmp = g_list_reverse(tmp);
897 void prefs_common_read_config(void)
899 prefs_read_config(param, "Common", COMMON_RC);
901 prefs_common.mime_open_cmd_history =
902 prefs_common_read_history(COMMAND_HISTORY);
903 prefs_common.summary_quicksearch_history =
904 prefs_common_read_history(QUICKSEARCH_HISTORY);
908 * Save history list to the specified history file
910 void prefs_common_save_history(const gchar *history, GList *list)
916 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
918 if ((fp = fopen(path, "wb")) == NULL) {
919 FILE_OP_ERROR(path, "fopen");
924 for (cur = list; cur != NULL; cur = cur->next) {
925 fputs((gchar *)cur->data, fp);
933 void prefs_common_save_config(void)
935 prefs_save_config(param, "Common", COMMON_RC);
937 prefs_common_save_history(COMMAND_HISTORY,
938 prefs_common.mime_open_cmd_history);
939 prefs_common_save_history(QUICKSEARCH_HISTORY,
940 prefs_common.summary_quicksearch_history);
943 void prefs_common_open(void)
945 if (prefs_rc_is_readonly(COMMON_RC))
950 if (!dialog.window) {
951 prefs_common_create();
954 manage_window_set_transient(GTK_WINDOW(dialog.window));
955 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
956 gtk_widget_grab_focus(dialog.ok_btn);
958 prefs_set_dialog(param);
960 gtk_widget_show(dialog.window);
963 static void prefs_common_create(void)
967 debug_print("Creating common preferences window...\n");
969 prefs_dialog_create(&dialog);
970 gtk_window_set_title (GTK_WINDOW(dialog.window),
971 _("Common Preferences"));
972 gtk_signal_connect (GTK_OBJECT(dialog.window), "delete_event",
973 GTK_SIGNAL_FUNC(prefs_common_deleted), NULL);
974 gtk_signal_connect (GTK_OBJECT(dialog.window), "key_press_event",
975 GTK_SIGNAL_FUNC(prefs_common_key_pressed), NULL);
976 MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
978 gtk_signal_connect (GTK_OBJECT(dialog.ok_btn), "clicked",
979 GTK_SIGNAL_FUNC(prefs_common_ok), NULL);
980 gtk_signal_connect (GTK_OBJECT(dialog.apply_btn), "clicked",
981 GTK_SIGNAL_FUNC(prefs_common_apply), NULL);
982 gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
983 GTK_SIGNAL_FUNC(prefs_common_cancel),
984 GTK_OBJECT(dialog.window));
986 /* create all widgets on notebook */
987 prefs_receive_create();
988 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
990 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
991 prefs_compose_create();
992 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
993 prefs_quote_create();
994 SET_NOTEBOOK_LABEL(dialog.notebook, _("Quote"), page++);
995 prefs_display_create();
996 SET_NOTEBOOK_LABEL(dialog.notebook, _("Display"), page++);
997 prefs_message_create();
998 SET_NOTEBOOK_LABEL(dialog.notebook, _("Message"), page++);
1000 prefs_privacy_create();
1001 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
1003 prefs_interface_create();
1004 SET_NOTEBOOK_LABEL(dialog.notebook, _("Interface"), page++);
1005 prefs_other_create();
1006 SET_NOTEBOOK_LABEL(dialog.notebook, _("Other"), page++);
1008 gtk_widget_show_all(dialog.window);
1011 static void prefs_receive_create(void)
1015 GtkWidget *frame_incext;
1016 GtkWidget *checkbtn_incext;
1018 GtkWidget *label_incext;
1019 GtkWidget *entry_incext;
1020 /* GtkWidget *button_incext; */
1022 GtkWidget *hbox_autochk;
1023 GtkWidget *checkbtn_autochk;
1024 GtkWidget *label_autochk1;
1025 GtkObject *spinbtn_autochk_adj;
1026 GtkWidget *spinbtn_autochk;
1027 GtkWidget *label_autochk2;
1028 GtkWidget *checkbtn_chkonstartup;
1029 GtkWidget *checkbtn_scan_after_inc;
1032 GtkWidget *frame_newmail;
1033 GtkWidget *hbox_newmail_notify;
1034 GtkWidget *checkbtn_newmail_auto;
1035 GtkWidget *checkbtn_newmail_manu;
1036 GtkWidget *entry_newmail_notify_cmd;
1037 GtkWidget *label_newmail_notify_cmd;
1039 GtkWidget *hbox_recvdialog;
1040 GtkWidget *label_recvdialog;
1042 GtkWidget *menuitem;
1043 GtkWidget *optmenu_recvdialog;
1044 GtkWidget *checkbtn_no_recv_err_panel;
1045 GtkWidget *checkbtn_close_recv_dialog;
1047 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1048 gtk_widget_show (vbox1);
1049 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1050 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1052 PACK_FRAME(vbox1, frame_incext, _("External program"));
1054 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1055 gtk_widget_show (vbox2);
1056 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
1057 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1059 /* Use of external incorporation program */
1060 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
1061 _("Use external program for incorporation"));
1063 hbox = gtk_hbox_new (FALSE, 8);
1064 gtk_widget_show (hbox);
1065 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1066 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1068 label_incext = gtk_label_new (_("Command"));
1069 gtk_widget_show (label_incext);
1070 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1072 entry_incext = gtk_entry_new ();
1073 gtk_widget_show (entry_incext);
1074 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1077 button_incext = gtk_button_new_with_label ("... ");
1078 gtk_widget_show (button_incext);
1079 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1082 vbox2 = gtk_vbox_new (FALSE, 0);
1083 gtk_widget_show (vbox2);
1084 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1087 hbox_autochk = gtk_hbox_new (FALSE, 8);
1088 gtk_widget_show (hbox_autochk);
1089 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1091 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1092 _("Auto-check new mail"));
1094 label_autochk1 = gtk_label_new (_("every"));
1095 gtk_widget_show (label_autochk1);
1096 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1098 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1099 spinbtn_autochk = gtk_spin_button_new
1100 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1101 gtk_widget_show (spinbtn_autochk);
1102 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1103 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1104 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1106 label_autochk2 = gtk_label_new (_("minute(s)"));
1107 gtk_widget_show (label_autochk2);
1108 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1110 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1111 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1112 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1114 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1115 _("Check new mail on startup"));
1116 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1117 _("Update all local folders after incorporation"));
1120 /* receive dialog */
1121 hbox_recvdialog = gtk_hbox_new (FALSE, 8);
1122 gtk_widget_show (hbox_recvdialog);
1123 gtk_box_pack_start (GTK_BOX (vbox2), hbox_recvdialog, FALSE, FALSE, 0);
1125 label_recvdialog = gtk_label_new (_("Show receive dialog"));
1126 gtk_misc_set_alignment(GTK_MISC(label_recvdialog), 0, 0.5);
1127 gtk_widget_show (label_recvdialog);
1128 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), label_recvdialog, FALSE, FALSE, 0);
1130 optmenu_recvdialog = gtk_option_menu_new ();
1131 gtk_widget_show (optmenu_recvdialog);
1132 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), optmenu_recvdialog, FALSE, FALSE, 0);
1134 menu = gtk_menu_new ();
1135 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
1136 MENUITEM_ADD (menu, menuitem, _("Only on manual receiving"),
1137 RECV_DIALOG_MANUAL);
1138 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
1140 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
1142 PACK_CHECK_BUTTON (vbox2, checkbtn_no_recv_err_panel,
1143 _("Don't popup error dialog on receive error"));
1145 PACK_CHECK_BUTTON (vbox2, checkbtn_close_recv_dialog,
1146 _("Close receive dialog when finished"));
1148 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1150 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1151 gtk_widget_show (vbox2);
1152 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1153 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1155 hbox = gtk_hbox_new (TRUE, 8);
1156 gtk_widget_show (hbox);
1157 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1158 _("after autochecking"));
1159 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1160 _("after manual checking"));
1161 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1162 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1163 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1165 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1166 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1169 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1170 gtk_widget_show (hbox);
1171 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1174 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1175 "(use %d as number of new "
1177 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1179 gtk_widget_show (label_newmail_notify_cmd);
1180 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1181 label_newmail_notify_cmd, FALSE, FALSE, 0);
1183 entry_newmail_notify_cmd = gtk_entry_new ();
1184 gtk_widget_show (entry_newmail_notify_cmd);
1185 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1186 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1188 gtk_widget_set_sensitive(hbox_newmail_notify,
1189 prefs_common.newmail_notify_auto ||
1190 prefs_common.newmail_notify_manu);
1192 receive.checkbtn_incext = checkbtn_incext;
1193 receive.entry_incext = entry_incext;
1194 /* receive.button_incext = button_incext; */
1196 receive.checkbtn_autochk = checkbtn_autochk;
1197 receive.spinbtn_autochk = spinbtn_autochk;
1198 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1200 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1201 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1204 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1205 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1206 receive.hbox_newmail_notify = hbox_newmail_notify;
1207 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1208 receive.optmenu_recvdialog = optmenu_recvdialog;
1209 receive.checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
1210 receive.checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
1213 static void prefs_send_create(void)
1218 GtkWidget *checkbtn_savemsg;
1219 GtkWidget *checkbtn_queuemsg;
1220 GtkWidget *label_outcharset;
1221 GtkWidget *optmenu_charset;
1222 GtkWidget *optmenu_menu;
1223 GtkWidget *menuitem;
1224 GtkTooltips *charset_tooltip;
1225 GtkWidget *optmenu_encoding;
1226 GtkWidget *label_encoding;
1227 GtkTooltips *encoding_tooltip;
1228 GtkWidget *label_senddialog;
1230 GtkWidget *optmenu_senddialog;
1231 GtkWidget *hbox_senddialog;
1233 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1234 gtk_widget_show (vbox1);
1235 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1236 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1238 vbox2 = gtk_vbox_new (FALSE, 0);
1239 gtk_widget_show (vbox2);
1240 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1242 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1243 _("Save sent messages to Sent folder"));
1244 PACK_CHECK_BUTTON (vbox2, checkbtn_queuemsg,
1245 _("Queue messages that fail to send"));
1247 hbox_senddialog = gtk_hbox_new (FALSE, 8);
1248 gtk_box_pack_start (GTK_BOX (vbox1), hbox_senddialog, FALSE, FALSE, 0);
1250 label_senddialog = gtk_label_new (_("Show send dialog"));
1251 gtk_widget_show (label_senddialog);
1252 gtk_box_pack_start (GTK_BOX (hbox_senddialog), label_senddialog, FALSE, FALSE, 0);
1254 optmenu_senddialog = gtk_option_menu_new ();
1255 gtk_widget_show (optmenu_senddialog);
1256 gtk_box_pack_start (GTK_BOX (hbox_senddialog), optmenu_senddialog, FALSE, FALSE, 0);
1258 menu = gtk_menu_new ();
1259 MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
1260 MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
1262 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
1264 hbox1 = gtk_hbox_new (FALSE, 8);
1265 gtk_widget_show (hbox1);
1266 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1268 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1269 gtk_widget_show (label_outcharset);
1270 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1272 charset_tooltip = gtk_tooltips_new();
1274 optmenu_charset = gtk_option_menu_new ();
1275 gtk_widget_show (optmenu_charset);
1276 gtk_tooltips_set_tip(GTK_TOOLTIPS(charset_tooltip), optmenu_charset,
1277 _("If `Automatic' is selected, the optimal encoding"
1278 " for the current locale will be used"),
1280 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_charset, FALSE, FALSE, 0);
1282 optmenu_menu = gtk_menu_new ();
1284 #define SET_MENUITEM(str, data) \
1286 MENUITEM_ADD(optmenu_menu, menuitem, str, data); \
1289 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1290 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1292 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1294 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1295 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1296 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1297 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1298 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1299 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1300 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1302 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1304 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1306 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1307 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1309 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1311 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1312 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1314 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1315 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1317 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1318 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1320 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1321 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1322 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1324 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_charset),
1327 hbox1 = gtk_hbox_new (FALSE, 8);
1328 gtk_widget_show (hbox1);
1329 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1331 hbox1 = gtk_hbox_new (FALSE, 8);
1332 gtk_widget_show (hbox1);
1333 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1335 label_encoding = gtk_label_new (_("Transfer encoding"));
1336 gtk_widget_show (label_encoding);
1337 gtk_box_pack_start (GTK_BOX (hbox1), label_encoding, FALSE, FALSE, 0);
1339 encoding_tooltip = gtk_tooltips_new();
1341 optmenu_encoding = gtk_option_menu_new ();
1342 gtk_widget_show (optmenu_encoding);
1343 gtk_tooltips_set_tip(GTK_TOOLTIPS(encoding_tooltip), optmenu_encoding,
1344 _("Specify Content-Transfer-Encoding used when"
1345 " message body contains non-ASCII characters"),
1347 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_encoding, FALSE, FALSE, 0);
1349 optmenu_menu = gtk_menu_new ();
1351 SET_MENUITEM(_("Automatic"), CTE_AUTO);
1352 SET_MENUITEM("base64", CTE_BASE64);
1353 SET_MENUITEM("quoted-printable", CTE_QUOTED_PRINTABLE);
1354 SET_MENUITEM("8bit", CTE_8BIT);
1356 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_encoding),
1359 hbox1 = gtk_hbox_new (FALSE, 8);
1360 gtk_widget_show (hbox1);
1361 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1363 p_send.checkbtn_savemsg = checkbtn_savemsg;
1364 p_send.checkbtn_queuemsg = checkbtn_queuemsg;
1365 p_send.optmenu_senddialog = optmenu_senddialog;
1367 p_send.optmenu_charset = optmenu_charset;
1368 p_send.optmenu_encoding_method = optmenu_encoding;
1371 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1375 toggled = gtk_toggle_button_get_active
1376 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1377 gtk_toggle_button_get_active
1378 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1379 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1382 static void prefs_compose_create(void)
1387 GtkWidget *checkbtn_autoextedit;
1389 GtkWidget *frame_autosel;
1390 GtkWidget *hbox_autosel;
1391 GtkWidget *checkbtn_reply_account_autosel;
1392 GtkWidget *checkbtn_forward_account_autosel;
1393 GtkWidget *checkbtn_reedit_account_autosel;
1395 GtkWidget *hbox_undolevel;
1396 GtkWidget *label_undolevel;
1397 GtkObject *spinbtn_undolevel_adj;
1398 GtkWidget *spinbtn_undolevel;
1400 GtkWidget *vbox_linewrap;
1405 GtkWidget *label_linewrap;
1406 GtkObject *spinbtn_linewrap_adj;
1407 GtkWidget *spinbtn_linewrap;
1408 GtkWidget *checkbtn_wrapquote;
1409 GtkWidget *checkbtn_autowrap;
1410 GtkWidget *checkbtn_wrapatsend;
1412 GtkWidget *checkbtn_default_reply_list;
1414 GtkWidget *checkbtn_forward_as_attachment;
1415 GtkWidget *checkbtn_redirect_keep_from;
1416 GtkWidget *checkbtn_smart_wrapping;
1417 GtkWidget *checkbtn_block_cursor;
1418 GtkWidget *frame_msgwrap;
1420 GtkWidget *hbox_autosave;
1421 GtkWidget *checkbtn_autosave;
1422 GtkWidget *entry_autosave_length;
1423 GtkWidget *label_autosave_length;
1425 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1426 gtk_widget_show (vbox1);
1427 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1428 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1430 /* Account autoselection */
1431 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1433 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1434 gtk_widget_show (hbox_autosel);
1435 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1436 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1438 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1439 _("when replying"));
1440 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1441 _("when forwarding"));
1442 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1443 _("when re-editing"));
1445 vbox2 = gtk_vbox_new (FALSE, 0);
1446 gtk_widget_show (vbox2);
1447 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1449 PACK_CHECK_BUTTON (vbox2, checkbtn_default_reply_list,
1450 _("Reply button invokes mailing list reply"));
1452 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1453 _("Automatically launch the external editor"));
1455 hbox5 = gtk_hbox_new (FALSE, 8);
1456 gtk_widget_show (hbox5);
1457 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1459 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1460 _("Forward as attachment"));
1462 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1465 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1466 _("Keep the original 'From' header when redirecting"));
1469 hbox_autosave = gtk_hbox_new (FALSE, 8);
1470 gtk_widget_show (hbox_autosave);
1471 gtk_box_pack_start (GTK_BOX (vbox1), hbox_autosave, FALSE, FALSE, 0);
1473 PACK_CHECK_BUTTON (hbox_autosave, checkbtn_autosave,
1474 _("Autosave to Drafts folder every "));
1476 entry_autosave_length = gtk_entry_new();
1477 gtk_widget_set_usize (entry_autosave_length, 64, -1);
1478 gtk_widget_show (entry_autosave_length);
1479 gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
1481 label_autosave_length = gtk_label_new(_("characters"));
1482 gtk_widget_show (label_autosave_length);
1483 gtk_box_pack_start (GTK_BOX (hbox_autosave), label_autosave_length, FALSE, FALSE, 0);
1485 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1486 gtk_widget_show (hbox_undolevel);
1487 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1489 label_undolevel = gtk_label_new (_("Undo level"));
1490 gtk_widget_show (label_undolevel);
1491 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1493 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1494 spinbtn_undolevel = gtk_spin_button_new
1495 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1496 gtk_widget_show (spinbtn_undolevel);
1497 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1498 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1499 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1502 PACK_FRAME(vbox1, frame_msgwrap, _("Message wrapping"));
1504 vbox_linewrap = gtk_vbox_new (FALSE, VSPACING_NARROW);
1505 gtk_widget_show (vbox_linewrap);
1506 gtk_container_add (GTK_CONTAINER (frame_msgwrap), vbox_linewrap);
1507 gtk_container_set_border_width (GTK_CONTAINER (vbox_linewrap), 8);
1509 hbox3 = gtk_hbox_new (FALSE, 8);
1510 gtk_widget_show (hbox3);
1511 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox3, FALSE, FALSE, 0);
1514 label_linewrap = gtk_label_new (_("Wrap messages at"));
1515 gtk_widget_show (label_linewrap);
1516 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1518 spinbtn_linewrap_adj = gtk_adjustment_new (72, 20, 1024, 1, 10, 10);
1519 spinbtn_linewrap = gtk_spin_button_new
1520 (GTK_ADJUSTMENT (spinbtn_linewrap_adj), 1, 0);
1521 gtk_widget_show (spinbtn_linewrap);
1522 gtk_box_pack_start (GTK_BOX (hbox3), spinbtn_linewrap, FALSE, FALSE, 0);
1523 gtk_widget_set_usize (spinbtn_linewrap, 64, -1);
1524 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linewrap), TRUE);
1526 label_linewrap = gtk_label_new (_("characters"));
1527 gtk_widget_show (label_linewrap);
1528 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1530 hbox4 = gtk_hbox_new (FALSE, VSPACING);
1531 gtk_widget_show (hbox4);
1532 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox4, FALSE, FALSE, 0);
1534 PACK_CHECK_BUTTON (hbox4, checkbtn_wrapquote, _("Wrap quotation"));
1536 PACK_CHECK_BUTTON (hbox4, checkbtn_autowrap, _("Wrap on input"));
1539 (hbox4, checkbtn_wrapatsend, _("Wrap before sending"));
1541 PACK_CHECK_BUTTON (vbox_linewrap, checkbtn_smart_wrapping,
1542 _("Smart wrapping (EXPERIMENTAL)"));
1545 compose.checkbtn_quote = checkbtn_quote;
1546 compose.entry_quotemark = entry_quotemark;
1547 compose.text_quotefmt = text_quotefmt;
1550 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1552 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1553 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1554 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1556 compose.spinbtn_undolevel = spinbtn_undolevel;
1557 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1559 compose.spinbtn_linewrap = spinbtn_linewrap;
1560 compose.spinbtn_linewrap_adj = spinbtn_linewrap_adj;
1561 compose.checkbtn_wrapquote = checkbtn_wrapquote;
1562 compose.checkbtn_autowrap = checkbtn_autowrap;
1563 compose.checkbtn_wrapatsend = checkbtn_wrapatsend;
1565 compose.checkbtn_autosave = checkbtn_autosave;
1566 compose.entry_autosave_length = entry_autosave_length;
1568 compose.checkbtn_forward_as_attachment =
1569 checkbtn_forward_as_attachment;
1570 compose.checkbtn_redirect_keep_from =
1571 checkbtn_redirect_keep_from;
1572 compose.checkbtn_smart_wrapping =
1573 checkbtn_smart_wrapping;
1574 compose.checkbtn_block_cursor =
1575 checkbtn_block_cursor;
1576 compose.checkbtn_default_reply_list = checkbtn_default_reply_list;
1579 static void prefs_quote_create(void)
1582 GtkWidget *frame_quote;
1583 GtkWidget *vbox_quote;
1586 GtkWidget *label_quotemark;
1587 GtkWidget *entry_quotemark;
1588 GtkWidget *scrolledwin_quotefmt;
1589 GtkWidget *text_quotefmt;
1591 GtkWidget *entry_fw_quotemark;
1592 GtkWidget *text_fw_quotefmt;
1594 GtkWidget *entry_quote_chars;
1595 GtkWidget *label_quote_chars;
1597 GtkWidget *btn_quotedesc;
1599 GtkWidget *checkbtn_reply_with_quote;
1601 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1602 gtk_widget_show (vbox1);
1603 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1604 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1608 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1610 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1612 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1613 gtk_widget_show (vbox_quote);
1614 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1615 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1617 hbox1 = gtk_hbox_new (FALSE, 32);
1618 gtk_widget_show (hbox1);
1619 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1621 hbox2 = gtk_hbox_new (FALSE, 8);
1622 gtk_widget_show (hbox2);
1623 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1625 label_quotemark = gtk_label_new (_("Quotation mark"));
1626 gtk_widget_show (label_quotemark);
1627 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1629 entry_quotemark = gtk_entry_new ();
1630 gtk_widget_show (entry_quotemark);
1631 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
1632 gtk_widget_set_usize (entry_quotemark, 64, -1);
1634 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1635 gtk_widget_show (scrolledwin_quotefmt);
1636 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1637 gtk_scrolled_window_set_policy
1638 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1639 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1641 text_quotefmt = gtk_text_new (NULL, NULL);
1642 gtk_widget_show (text_quotefmt);
1643 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
1644 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
1645 gtk_widget_set_usize(text_quotefmt, -1, 60);
1649 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
1651 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1652 gtk_widget_show (vbox_quote);
1653 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1654 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1656 hbox1 = gtk_hbox_new (FALSE, 32);
1657 gtk_widget_show (hbox1);
1658 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1660 hbox2 = gtk_hbox_new (FALSE, 8);
1661 gtk_widget_show (hbox2);
1662 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1664 label_quotemark = gtk_label_new (_("Quotation mark"));
1665 gtk_widget_show (label_quotemark);
1666 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1668 entry_fw_quotemark = gtk_entry_new ();
1669 gtk_widget_show (entry_fw_quotemark);
1670 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
1672 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
1674 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1675 gtk_widget_show (scrolledwin_quotefmt);
1676 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1677 gtk_scrolled_window_set_policy
1678 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1679 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1681 text_fw_quotefmt = gtk_text_new (NULL, NULL);
1682 gtk_widget_show (text_fw_quotefmt);
1683 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
1685 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
1686 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
1688 hbox1 = gtk_hbox_new (FALSE, 32);
1689 gtk_widget_show (hbox1);
1690 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1693 gtk_button_new_with_label (_(" Description of symbols "));
1694 gtk_widget_show (btn_quotedesc);
1695 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
1696 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
1697 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
1701 PACK_FRAME (vbox1, frame_quote, _("Quotation characters"));
1703 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1704 gtk_widget_show (vbox_quote);
1705 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1706 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1708 hbox1 = gtk_hbox_new (FALSE, 32);
1709 gtk_widget_show (hbox1);
1710 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1712 hbox2 = gtk_hbox_new (FALSE, 8);
1713 gtk_widget_show (hbox2);
1714 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1716 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
1717 gtk_widget_show (label_quote_chars);
1718 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
1720 entry_quote_chars = gtk_entry_new ();
1721 gtk_widget_show (entry_quote_chars);
1722 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
1724 gtk_widget_set_usize (entry_quote_chars, 64, -1);
1727 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
1728 quote.entry_quotemark = entry_quotemark;
1729 quote.text_quotefmt = text_quotefmt;
1730 quote.entry_fw_quotemark = entry_fw_quotemark;
1731 quote.text_fw_quotefmt = text_fw_quotefmt;
1732 quote.entry_quote_chars = entry_quote_chars;
1735 static void prefs_display_create(void)
1738 GtkWidget *chkbtn_transhdr;
1739 GtkWidget *chkbtn_folder_unread;
1741 GtkWidget *label_ng_abbrev;
1742 GtkWidget *spinbtn_ng_abbrev_len;
1743 GtkObject *spinbtn_ng_abbrev_len_adj;
1744 GtkWidget *frame_summary;
1746 GtkWidget *chkbtn_swapfrom;
1747 GtkWidget *chkbtn_useaddrbook;
1748 GtkWidget *chkbtn_threadsubj;
1750 GtkWidget *label_datefmt;
1751 GtkWidget *button_datefmt;
1752 GtkWidget *entry_datefmt;
1753 GtkWidget *button_dispitem;
1755 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1756 gtk_widget_show (vbox1);
1757 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1758 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1760 vbox2 = gtk_vbox_new (FALSE, 0);
1761 gtk_widget_show (vbox2);
1762 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
1765 (vbox2, chkbtn_transhdr,
1766 _("Translate header name (such as `From:', `Subject:')"));
1768 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
1769 _("Display unread number next to folder name"));
1771 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1773 hbox1 = gtk_hbox_new (FALSE, 8);
1774 gtk_widget_show (hbox1);
1775 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1777 label_ng_abbrev = gtk_label_new
1778 (_("Abbreviate newsgroup names longer than"));
1779 gtk_widget_show (label_ng_abbrev);
1780 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1782 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
1783 spinbtn_ng_abbrev_len = gtk_spin_button_new
1784 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
1785 gtk_widget_show (spinbtn_ng_abbrev_len);
1786 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
1788 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
1789 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
1792 label_ng_abbrev = gtk_label_new
1794 gtk_widget_show (label_ng_abbrev);
1795 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1797 /* ---- Summary ---- */
1799 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
1801 vbox2 = gtk_vbox_new (FALSE, 0);
1802 gtk_widget_show (vbox2);
1803 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
1804 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1807 (vbox2, chkbtn_swapfrom,
1808 _("Display recipient in `From' column if sender is yourself"));
1810 (vbox2, chkbtn_useaddrbook,
1811 _("Display sender using address book"));
1813 (vbox2, chkbtn_threadsubj,
1814 _("Thread using subject in addition to standard headers"));
1816 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1818 hbox1 = gtk_hbox_new (FALSE, 8);
1819 gtk_widget_show (hbox1);
1820 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1822 label_datefmt = gtk_label_new (_("Date format"));
1823 gtk_widget_show (label_datefmt);
1824 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
1826 entry_datefmt = gtk_entry_new ();
1827 gtk_widget_show (entry_datefmt);
1828 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
1830 button_datefmt = gtk_button_new_with_label (" ... ");
1832 gtk_widget_show (button_datefmt);
1833 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
1834 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
1835 GTK_SIGNAL_FUNC (date_format_create), NULL);
1837 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
1839 hbox1 = gtk_hbox_new (FALSE, 8);
1840 gtk_widget_show (hbox1);
1841 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1843 button_dispitem = gtk_button_new_with_label
1844 (_(" Set displayed items in summary... "));
1845 gtk_widget_show (button_dispitem);
1846 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
1847 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
1848 GTK_SIGNAL_FUNC (prefs_summary_column_open),
1851 display.chkbtn_transhdr = chkbtn_transhdr;
1852 display.chkbtn_folder_unread = chkbtn_folder_unread;
1853 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
1854 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
1856 display.chkbtn_swapfrom = chkbtn_swapfrom;
1857 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
1858 display.chkbtn_threadsubj = chkbtn_threadsubj;
1859 display.entry_datefmt = entry_datefmt;
1862 static void prefs_message_create(void)
1868 GtkWidget *chkbtn_enablecol;
1869 GtkWidget *button_edit_col;
1870 GtkWidget *chkbtn_mbalnum;
1871 GtkWidget *chkbtn_disphdrpane;
1872 GtkWidget *chkbtn_disphdr;
1873 GtkWidget *button_edit_disphdr;
1874 GtkWidget *hbox_linespc;
1875 GtkWidget *label_linespc;
1876 GtkObject *spinbtn_linespc_adj;
1877 GtkWidget *spinbtn_linespc;
1878 GtkWidget *chkbtn_headspc;
1880 GtkWidget *frame_scr;
1881 GtkWidget *vbox_scr;
1882 GtkWidget *chkbtn_smoothscroll;
1883 GtkWidget *hbox_scr;
1884 GtkWidget *label_scr;
1885 GtkObject *spinbtn_scrollstep_adj;
1886 GtkWidget *spinbtn_scrollstep;
1887 GtkWidget *chkbtn_halfpage;
1889 GtkWidget *chkbtn_attach_desc;
1891 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1892 gtk_widget_show (vbox1);
1893 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1894 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1896 vbox2 = gtk_vbox_new (FALSE, 0);
1897 gtk_widget_show (vbox2);
1898 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1900 hbox1 = gtk_hbox_new (FALSE, 8);
1901 gtk_widget_show (hbox1);
1902 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1904 PACK_CHECK_BUTTON (hbox1, chkbtn_enablecol,
1905 _("Enable coloration of message"));
1906 gtk_signal_connect(GTK_OBJECT(chkbtn_enablecol), "toggled",
1907 GTK_SIGNAL_FUNC(prefs_enable_message_color_toggled),
1910 button_edit_col = gtk_button_new_with_label (_(" Edit... "));
1911 gtk_widget_show (button_edit_col);
1912 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_col, FALSE, TRUE, 0);
1913 gtk_signal_connect (GTK_OBJECT (button_edit_col), "clicked",
1914 GTK_SIGNAL_FUNC (prefs_quote_colors_dialog), NULL);
1916 SET_TOGGLE_SENSITIVITY(chkbtn_enablecol, button_edit_col);
1919 (vbox2, chkbtn_mbalnum,
1920 _("Display multi-byte alphanumeric as\n"
1921 "ASCII character (Japanese only)"));
1922 gtk_label_set_justify (GTK_LABEL (GTK_BIN(chkbtn_mbalnum)->child),
1925 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
1926 _("Display header pane above message view"));
1928 hbox1 = gtk_hbox_new (FALSE, 8);
1929 gtk_widget_show (hbox1);
1930 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1932 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
1933 _("Display short headers on message view"));
1935 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
1936 gtk_widget_show (button_edit_disphdr);
1937 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
1939 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
1940 GTK_SIGNAL_FUNC (prefs_display_header_open),
1943 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
1945 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1947 hbox1 = gtk_hbox_new (FALSE, 32);
1948 gtk_widget_show (hbox1);
1949 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1951 hbox_linespc = gtk_hbox_new (FALSE, 8);
1952 gtk_widget_show (hbox1);
1953 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
1955 label_linespc = gtk_label_new (_("Line space"));
1956 gtk_widget_show (label_linespc);
1957 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1960 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
1961 spinbtn_linespc = gtk_spin_button_new
1962 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
1963 gtk_widget_show (spinbtn_linespc);
1964 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
1966 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
1967 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
1969 label_linespc = gtk_label_new (_("pixel(s)"));
1970 gtk_widget_show (label_linespc);
1971 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1974 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Indent text"));
1976 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
1978 vbox_scr = gtk_vbox_new (FALSE, 0);
1979 gtk_widget_show (vbox_scr);
1980 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
1981 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
1983 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
1985 hbox1 = gtk_hbox_new (FALSE, 32);
1986 gtk_widget_show (hbox1);
1987 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
1989 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
1991 hbox_scr = gtk_hbox_new (FALSE, 8);
1992 gtk_widget_show (hbox_scr);
1993 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
1995 label_scr = gtk_label_new (_("Step"));
1996 gtk_widget_show (label_scr);
1997 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1999 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
2000 spinbtn_scrollstep = gtk_spin_button_new
2001 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
2002 gtk_widget_show (spinbtn_scrollstep);
2003 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
2005 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
2006 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
2009 label_scr = gtk_label_new (_("pixel(s)"));
2010 gtk_widget_show (label_scr);
2011 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2013 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
2015 vbox3 = gtk_vbox_new (FALSE, 0);
2016 gtk_widget_show (vbox3);
2017 gtk_box_pack_start (GTK_BOX (vbox1), vbox3, FALSE, FALSE, 0);
2019 PACK_CHECK_BUTTON(vbox3, chkbtn_attach_desc,
2020 _("Show attachment descriptions (rather than names)"));
2023 message.chkbtn_enablecol = chkbtn_enablecol;
2024 message.button_edit_col = button_edit_col;
2025 message.chkbtn_mbalnum = chkbtn_mbalnum;
2026 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
2027 message.chkbtn_disphdr = chkbtn_disphdr;
2028 message.spinbtn_linespc = spinbtn_linespc;
2029 message.chkbtn_headspc = chkbtn_headspc;
2031 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
2032 message.spinbtn_scrollstep = spinbtn_scrollstep;
2033 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
2034 message.chkbtn_halfpage = chkbtn_halfpage;
2036 message.chkbtn_attach_desc = chkbtn_attach_desc;
2040 static void prefs_privacy_create(void)
2046 GtkWidget *hbox_spc;
2048 GtkWidget *checkbtn_auto_check_signatures;
2049 GtkWidget *checkbtn_store_passphrase;
2050 GtkObject *spinbtn_store_passphrase_adj;
2051 GtkWidget *spinbtn_store_passphrase;
2052 GtkTooltips *store_tooltip;
2053 GtkWidget *checkbtn_passphrase_grab;
2054 GtkWidget *checkbtn_gpg_warning;
2056 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2057 gtk_widget_show (vbox1);
2058 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2059 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2061 vbox2 = gtk_vbox_new (FALSE, 0);
2062 gtk_widget_show (vbox2);
2063 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2065 PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
2066 _("Automatically check signatures"));
2068 PACK_CHECK_BUTTON (vbox2, checkbtn_store_passphrase,
2069 _("Store passphrase in memory temporarily"));
2071 vbox3 = gtk_vbox_new (FALSE, 0);
2072 gtk_widget_show (vbox3);
2073 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2075 hbox1 = gtk_hbox_new (FALSE, 8);
2076 gtk_widget_show (hbox1);
2077 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2079 hbox_spc = gtk_hbox_new (FALSE, 0);
2080 gtk_widget_show (hbox_spc);
2081 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2082 gtk_widget_set_usize (hbox_spc, 12, -1);
2084 label = gtk_label_new (_("Expire after"));
2085 gtk_widget_show (label);
2086 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2088 store_tooltip = gtk_tooltips_new();
2090 spinbtn_store_passphrase_adj = gtk_adjustment_new (0, 0, 1440, 1, 5, 5);
2091 spinbtn_store_passphrase = gtk_spin_button_new
2092 (GTK_ADJUSTMENT (spinbtn_store_passphrase_adj), 1, 0);
2093 gtk_widget_show (spinbtn_store_passphrase);
2094 gtk_tooltips_set_tip(GTK_TOOLTIPS(store_tooltip), spinbtn_store_passphrase,
2095 _("Setting to '0' will store the passphrase"
2096 " for the whole session"),
2098 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_store_passphrase, FALSE, FALSE, 0);
2099 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_store_passphrase),
2101 gtk_widget_set_usize (spinbtn_store_passphrase, 64, -1);
2103 label = gtk_label_new (_("minute(s) "));
2104 gtk_widget_show (label);
2105 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2107 hbox1 = gtk_hbox_new (FALSE, 8);
2108 gtk_widget_show (hbox1);
2109 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2111 hbox_spc = gtk_hbox_new (FALSE, 0);
2112 gtk_widget_show (hbox_spc);
2113 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2114 gtk_widget_set_usize (hbox_spc, 12, -1);
2116 SET_TOGGLE_SENSITIVITY (checkbtn_store_passphrase, vbox3);
2119 PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab,
2120 _("Grab input while entering a passphrase"));
2124 (vbox2, checkbtn_gpg_warning,
2125 _("Display warning on startup if GnuPG doesn't work"));
2127 hbox1 = gtk_hbox_new (FALSE, 8);
2128 gtk_widget_show (hbox1);
2129 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2131 privacy.checkbtn_auto_check_signatures
2132 = checkbtn_auto_check_signatures;
2133 privacy.checkbtn_store_passphrase = checkbtn_store_passphrase;
2134 privacy.spinbtn_store_passphrase = spinbtn_store_passphrase;
2135 privacy.spinbtn_store_passphrase_adj = spinbtn_store_passphrase_adj;
2136 privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
2137 privacy.checkbtn_gpg_warning = checkbtn_gpg_warning;
2139 #endif /* USE_GPGME */
2141 static void prefs_interface_create(void)
2146 /* GtkWidget *checkbtn_emacs; */
2147 GtkWidget *checkbtn_always_show_msg;
2148 GtkWidget *checkbtn_openunread;
2149 GtkWidget *checkbtn_mark_as_read_on_newwin;
2150 GtkWidget *checkbtn_openinbox;
2151 GtkWidget *checkbtn_immedexec;
2152 GtkTooltips *immedexec_tooltip;
2156 GtkWidget *menuitem;
2158 GtkWidget *button_keybind;
2160 GtkWidget *hbox_nextunreadmsgdialog;
2161 GtkWidget *optmenu_nextunreadmsgdialog;
2163 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2164 gtk_widget_show (vbox1);
2165 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2166 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2168 vbox2 = gtk_vbox_new (FALSE, 0);
2169 gtk_widget_show (vbox2);
2170 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2172 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
2173 _("Emulate the behavior of mouse operation of\n"
2174 "Emacs-based mailer"));
2175 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
2176 GTK_JUSTIFY_LEFT); */
2179 (vbox2, checkbtn_always_show_msg,
2180 _("Always open messages in summary when selected"));
2183 (vbox2, checkbtn_openunread,
2184 _("Open first unread message when entering a folder"));
2187 (vbox2, checkbtn_mark_as_read_on_newwin,
2188 _("Only mark message as read when opened in new window"));
2191 (vbox2, checkbtn_openinbox,
2192 _("Go to inbox after receiving new mail"));
2194 vbox3 = gtk_vbox_new (FALSE, 0);
2195 gtk_widget_show (vbox3);
2196 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2198 immedexec_tooltip = gtk_tooltips_new();
2201 (vbox3, checkbtn_immedexec,
2202 _("Execute immediately when moving or deleting messages"));
2203 gtk_tooltips_set_tip(GTK_TOOLTIPS(immedexec_tooltip), checkbtn_immedexec,
2204 _("Messages will be marked until execution"
2205 " if this is turned off"),
2208 hbox1 = gtk_hbox_new (FALSE, 0);
2209 gtk_widget_show (hbox1);
2210 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2212 /* Next Unread Message Dialog */
2213 hbox_nextunreadmsgdialog = gtk_hbox_new (FALSE, 8);
2214 gtk_widget_show (hbox1);
2215 gtk_box_pack_start (GTK_BOX (vbox1), hbox_nextunreadmsgdialog, FALSE, FALSE, 0);
2217 label = gtk_label_new (_("Show no-unread-message dialog"));
2218 gtk_widget_show (label);
2219 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), label, FALSE, FALSE, 8);
2221 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
2222 gtk_widget_show (optmenu_nextunreadmsgdialog);
2223 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), optmenu_nextunreadmsgdialog, FALSE, FALSE, 8);
2225 menu = gtk_menu_new ();
2226 MENUITEM_ADD (menu, menuitem, _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
2227 MENUITEM_ADD (menu, menuitem, _("Assume 'Yes'"),
2228 NEXTUNREADMSGDIALOG_ASSUME_YES);
2229 MENUITEM_ADD (menu, menuitem, _("Assume 'No'"),
2230 NEXTUNREADMSGDIALOG_ASSUME_NO);
2232 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog), menu);
2234 hbox1 = gtk_hbox_new (FALSE, 8);
2235 gtk_widget_show (hbox1);
2236 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2238 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
2239 gtk_widget_show (button_keybind);
2240 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
2241 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
2242 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
2244 /* interface.checkbtn_emacs = checkbtn_emacs; */
2245 interface.checkbtn_always_show_msg = checkbtn_always_show_msg;
2246 interface.checkbtn_openunread = checkbtn_openunread;
2247 interface.checkbtn_mark_as_read_on_newwin
2248 = checkbtn_mark_as_read_on_newwin;
2249 interface.checkbtn_openinbox = checkbtn_openinbox;
2250 interface.checkbtn_immedexec = checkbtn_immedexec;
2251 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
2254 static void prefs_other_create(void)
2259 GtkWidget *frame_addr;
2260 GtkWidget *vbox_addr;
2261 GtkWidget *checkbtn_addaddrbyclick;
2263 GtkWidget *frame_cliplog;
2264 GtkWidget *vbox_cliplog;
2265 GtkWidget *hbox_cliplog;
2266 GtkWidget *checkbtn_cliplog;
2267 GtkWidget *loglength_label;
2268 GtkWidget *loglength_entry;
2269 GtkTooltips *loglength_tooltip;
2271 GtkWidget *frame_exit;
2272 GtkWidget *vbox_exit;
2273 GtkWidget *checkbtn_confonexit;
2274 GtkWidget *checkbtn_cleanonexit;
2275 GtkWidget *checkbtn_askonclean;
2276 GtkWidget *checkbtn_warnqueued;
2278 GtkWidget *label_iotimeout;
2279 GtkWidget *spinbtn_iotimeout;
2280 GtkObject *spinbtn_iotimeout_adj;
2284 GtkWidget *frame_ssl;
2285 GtkWidget *vbox_ssl;
2286 GtkWidget *hbox_ssl;
2287 GtkWidget *checkbtn_ssl_ask_unknown_valid;
2290 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2291 gtk_widget_show (vbox1);
2292 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2293 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2295 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2297 vbox_addr = gtk_vbox_new (FALSE, 0);
2298 gtk_widget_show (vbox_addr);
2299 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2300 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2303 (vbox_addr, checkbtn_addaddrbyclick,
2304 _("Add address to destination when double-clicked"));
2307 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2309 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2310 gtk_widget_show (vbox_cliplog);
2311 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2312 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2313 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2314 _("Clip the log size"));
2315 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2316 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2317 gtk_widget_show (hbox_cliplog);
2319 loglength_label = gtk_label_new (_("Log window length"));
2320 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2322 gtk_widget_show (GTK_WIDGET (loglength_label));
2324 loglength_tooltip = gtk_tooltips_new();
2326 loglength_entry = gtk_entry_new ();
2327 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2328 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2330 gtk_widget_show (GTK_WIDGET (loglength_entry));
2331 gtk_tooltips_set_tip(GTK_TOOLTIPS(loglength_tooltip), loglength_entry,
2332 _("0 to stop logging in the log window"),
2334 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2336 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2341 PACK_FRAME (vbox1, frame_ssl, _("Security"));
2343 vbox_ssl = gtk_vbox_new (FALSE, 0);
2344 gtk_widget_show (vbox_ssl);
2345 gtk_container_add (GTK_CONTAINER (frame_ssl), vbox_ssl);
2346 gtk_container_set_border_width (GTK_CONTAINER (vbox_ssl), 8);
2347 PACK_CHECK_BUTTON (vbox_ssl, checkbtn_ssl_ask_unknown_valid,
2348 _("Ask before accepting SSL certificates"));
2349 hbox_ssl = gtk_hbox_new (FALSE, 3);
2350 gtk_container_add (GTK_CONTAINER (vbox_ssl), hbox_ssl);
2351 gtk_widget_show (hbox_ssl);
2356 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2358 vbox_exit = gtk_vbox_new (FALSE, 0);
2359 gtk_widget_show (vbox_exit);
2360 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2361 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
2363 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
2364 _("Confirm on exit"));
2366 hbox1 = gtk_hbox_new (FALSE, 32);
2367 gtk_widget_show (hbox1);
2368 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
2370 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
2371 _("Empty trash on exit"));
2372 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
2373 _("Ask before emptying"));
2374 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
2376 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
2377 _("Warn if there are queued messages"));
2379 hbox1 = gtk_hbox_new (FALSE, 8);
2380 gtk_widget_show (hbox1);
2381 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2383 label_iotimeout = gtk_label_new (_("Socket I/O timeout:"));
2384 gtk_widget_show (label_iotimeout);
2385 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2387 spinbtn_iotimeout_adj = gtk_adjustment_new (60, 0, 1000, 1, 10, 10);
2388 spinbtn_iotimeout = gtk_spin_button_new
2389 (GTK_ADJUSTMENT (spinbtn_iotimeout_adj), 1, 0);
2390 gtk_widget_show (spinbtn_iotimeout);
2391 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_iotimeout,
2393 gtk_widget_set_usize (spinbtn_iotimeout, 64, -1);
2394 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_iotimeout), TRUE);
2396 label_iotimeout = gtk_label_new (_("seconds"));
2397 gtk_widget_show (label_iotimeout);
2398 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2400 other.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2402 other.checkbtn_cliplog = checkbtn_cliplog;
2403 other.loglength_entry = loglength_entry;
2405 other.checkbtn_confonexit = checkbtn_confonexit;
2406 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
2407 other.checkbtn_askonclean = checkbtn_askonclean;
2408 other.checkbtn_warnqueued = checkbtn_warnqueued;
2410 other.spinbtn_iotimeout = spinbtn_iotimeout;
2411 other.spinbtn_iotimeout_adj = spinbtn_iotimeout_adj;
2415 other.checkbtn_ssl_ask_unknown_valid = checkbtn_ssl_ask_unknown_valid;
2420 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
2422 GtkWidget *datefmt_sample = NULL;
2425 g_return_if_fail(widget != NULL);
2426 g_return_if_fail(*widget != NULL);
2427 g_return_if_fail(display.entry_datefmt != NULL);
2429 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2430 (GTK_OBJECT(*widget), "datefmt_sample"));
2431 g_return_if_fail(datefmt_sample != NULL);
2433 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
2434 g_free(prefs_common.date_format);
2435 prefs_common.date_format = text;
2436 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
2438 gtk_widget_destroy(*widget);
2442 static void date_format_cancel_btn_clicked(GtkButton *button,
2445 g_return_if_fail(widget != NULL);
2446 g_return_if_fail(*widget != NULL);
2448 gtk_widget_destroy(*widget);
2452 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
2455 if (event && event->keyval == GDK_Escape)
2456 date_format_cancel_btn_clicked(NULL, widget);
2459 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
2460 GdkEventAny *event, GtkWidget **widget)
2462 g_return_val_if_fail(widget != NULL, FALSE);
2463 g_return_val_if_fail(*widget != NULL, FALSE);
2469 static void date_format_entry_on_change(GtkEditable *editable,
2473 struct tm *cal_time;
2477 cur_time = time(NULL);
2478 cal_time = localtime(&cur_time);
2480 text = gtk_editable_get_chars(editable, 0, -1);
2482 strftime(buffer, sizeof buffer, text, cal_time);
2484 gtk_label_set_text(example, buffer);
2487 static void date_format_select_row(GtkWidget *date_format_list, gint row,
2488 gint column, GdkEventButton *event,
2489 GtkWidget *date_format)
2495 GtkWidget *datefmt_sample;
2497 /* only on double click */
2498 if (!event || event->type != GDK_2BUTTON_PRESS) return;
2501 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2502 (GTK_OBJECT(date_format), "datefmt_sample"));
2504 g_return_if_fail(date_format_list != NULL);
2505 g_return_if_fail(date_format != NULL);
2506 g_return_if_fail(datefmt_sample != NULL);
2508 /* get format from clist */
2509 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
2511 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
2512 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
2514 /* insert the format into the text entry */
2515 new_format = g_malloc(strlen(old_format) + 3);
2517 strncpy(new_format, old_format, cur_pos);
2518 new_format[cur_pos] = '\0';
2519 strcat(new_format, format);
2520 strcat(new_format, &old_format[cur_pos]);
2522 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
2523 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
2528 static GtkWidget *date_format_create(GtkButton *button, void *data)
2530 static GtkWidget *datefmt_win = NULL;
2532 GtkWidget *scrolledwindow1;
2533 GtkWidget *datefmt_clist;
2538 GtkWidget *confirm_area;
2540 GtkWidget *cancel_btn;
2541 GtkWidget *datefmt_entry;
2570 const gint TIME_FORMAT_ELEMS =
2571 sizeof time_format / sizeof time_format[0];
2573 time_format[0].txt = _("the full abbreviated weekday name");
2574 time_format[1].txt = _("the full weekday name");
2575 time_format[2].txt = _("the abbreviated month name");
2576 time_format[3].txt = _("the full month name");
2577 time_format[4].txt = _("the preferred date and time for the current locale");
2578 time_format[5].txt = _("the century number (year/100)");
2579 time_format[6].txt = _("the day of the month as a decimal number");
2580 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
2581 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
2582 time_format[9].txt = _("the day of the year as a decimal number");
2583 time_format[10].txt = _("the month as a decimal number");
2584 time_format[11].txt = _("the minute as a decimal number");
2585 time_format[12].txt = _("either AM or PM");
2586 time_format[13].txt = _("the second as a decimal number");
2587 time_format[14].txt = _("the day of the week as a decimal number");
2588 time_format[15].txt = _("the preferred date for the current locale");
2589 time_format[16].txt = _("the last two digits of a year");
2590 time_format[17].txt = _("the year as a decimal number");
2591 time_format[18].txt = _("the time zone or name or abbreviation");
2593 if (datefmt_win) return datefmt_win;
2595 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
2596 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
2597 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
2598 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2599 gtk_widget_set_usize(datefmt_win, 440, 280);
2601 vbox1 = gtk_vbox_new(FALSE, 10);
2602 gtk_widget_show(vbox1);
2603 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
2605 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
2606 gtk_scrolled_window_set_policy
2607 (GTK_SCROLLED_WINDOW(scrolledwindow1),
2608 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
2609 gtk_widget_show(scrolledwindow1);
2610 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
2612 titles[0] = _("Specifier");
2613 titles[1] = _("Description");
2614 datefmt_clist = gtk_clist_new_with_titles(2, titles);
2615 gtk_widget_show(datefmt_clist);
2616 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
2617 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
2618 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
2619 GTK_SELECTION_BROWSE);
2621 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
2623 /* phoney casting necessary because of gtk... */
2624 text[0] = (gchar *)time_format[i].fmt;
2625 text[1] = (gchar *)time_format[i].txt;
2626 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
2629 table = gtk_table_new(2, 2, FALSE);
2630 gtk_widget_show(table);
2631 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
2632 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
2633 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
2635 label1 = gtk_label_new(_("Date format"));
2636 gtk_widget_show(label1);
2637 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
2639 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
2640 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
2642 datefmt_entry = gtk_entry_new_with_max_length(256);
2643 gtk_widget_show(datefmt_entry);
2644 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
2645 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2647 /* we need the "sample" entry box; add it as data so callbacks can
2648 * get the entry box */
2649 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
2652 label2 = gtk_label_new(_("Example"));
2653 gtk_widget_show(label2);
2654 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
2656 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
2657 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
2659 label3 = gtk_label_new("");
2660 gtk_widget_show(label3);
2661 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
2662 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2663 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
2664 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
2666 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
2667 &cancel_btn, _("Cancel"), NULL, NULL);
2668 gtk_widget_grab_default(ok_btn);
2669 gtk_widget_show(confirm_area);
2671 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
2673 /* set the current format */
2674 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
2675 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
2678 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2679 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
2681 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
2682 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
2684 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
2685 GTK_SIGNAL_FUNC(date_format_key_pressed),
2687 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
2688 GTK_SIGNAL_FUNC(date_format_on_delete),
2690 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
2691 GTK_SIGNAL_FUNC(date_format_entry_on_change),
2694 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
2695 GTK_SIGNAL_FUNC(date_format_select_row),
2698 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2699 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
2701 gtk_widget_show(datefmt_win);
2702 manage_window_set_transient(GTK_WINDOW(datefmt_win));
2704 gtk_widget_grab_focus(ok_btn);
2709 void prefs_quote_colors_dialog(void)
2711 if (!quote_color_win)
2712 prefs_quote_colors_dialog_create();
2713 gtk_widget_show(quote_color_win);
2714 manage_window_set_transient(GTK_WINDOW(quote_color_win));
2717 gtk_widget_hide(quote_color_win);
2719 textview_update_message_colors();
2720 main_window_reflect_prefs_all();
2723 static void prefs_quote_colors_dialog_create(void)
2728 GtkWidget *quotelevel1_label;
2729 GtkWidget *quotelevel2_label;
2730 GtkWidget *quotelevel3_label;
2731 GtkWidget *uri_label;
2732 GtkWidget *signature_label;
2733 GtkWidget *tgt_folder_label;
2736 GtkWidget *recycle_colors_btn;
2737 GtkWidget *frame_colors;
2739 window = gtk_window_new(GTK_WINDOW_DIALOG);
2740 gtk_container_set_border_width(GTK_CONTAINER(window), 2);
2741 gtk_window_set_title(GTK_WINDOW(window), _("Set message colors"));
2742 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
2743 gtk_window_set_modal(GTK_WINDOW(window), TRUE);
2744 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
2746 vbox = gtk_vbox_new (FALSE, VSPACING);
2747 gtk_container_add (GTK_CONTAINER (window), vbox);
2748 gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
2749 PACK_FRAME(vbox, frame_colors, _("Colors"));
2751 table = gtk_table_new (5, 2, FALSE);
2752 gtk_container_add (GTK_CONTAINER (frame_colors), table);
2753 gtk_container_set_border_width (GTK_CONTAINER (table), 8);
2754 gtk_table_set_row_spacings (GTK_TABLE (table), 2);
2755 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
2758 color_buttons.quote_level1_btn = gtk_button_new();
2759 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level1_btn,
2760 0, 1, 0, 1, 0, 0, 0, 0);
2761 gtk_widget_set_usize (color_buttons.quote_level1_btn, 40, 30);
2762 gtk_container_set_border_width
2763 (GTK_CONTAINER (color_buttons.quote_level1_btn), 5);
2765 color_buttons.quote_level2_btn = gtk_button_new();
2766 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level2_btn,
2767 0, 1, 1, 2, 0, 0, 0, 0);
2768 gtk_widget_set_usize (color_buttons.quote_level2_btn, 40, 30);
2769 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.quote_level2_btn), 5);
2771 color_buttons.quote_level3_btn = gtk_button_new_with_label ("");
2772 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level3_btn,
2773 0, 1, 2, 3, 0, 0, 0, 0);
2774 gtk_widget_set_usize (color_buttons.quote_level3_btn, 40, 30);
2775 gtk_container_set_border_width
2776 (GTK_CONTAINER (color_buttons.quote_level3_btn), 5);
2778 color_buttons.uri_btn = gtk_button_new_with_label ("");
2779 gtk_table_attach (GTK_TABLE (table), color_buttons.uri_btn,
2780 0, 1, 3, 4, 0, 0, 0, 0);
2781 gtk_widget_set_usize (color_buttons.uri_btn, 40, 30);
2782 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.uri_btn), 5);
2784 color_buttons.tgt_folder_btn = gtk_button_new_with_label ("");
2785 gtk_table_attach (GTK_TABLE (table), color_buttons.tgt_folder_btn,
2786 0, 1, 4, 5, 0, 0, 0, 0);
2787 gtk_widget_set_usize (color_buttons.tgt_folder_btn, 40, 30);
2788 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.tgt_folder_btn), 5);
2790 color_buttons.signature_btn = gtk_button_new_with_label ("");
2791 gtk_table_attach (GTK_TABLE (table), color_buttons.signature_btn,
2792 0, 1, 5, 6, 0, 0, 0, 0);
2793 gtk_widget_set_usize (color_buttons.signature_btn, 40, 30);
2794 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.signature_btn), 5);
2796 quotelevel1_label = gtk_label_new (_("Quoted Text - First Level"));
2797 gtk_table_attach (GTK_TABLE (table), quotelevel1_label, 1, 2, 0, 1,
2798 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2799 gtk_label_set_justify (GTK_LABEL (quotelevel1_label), GTK_JUSTIFY_LEFT);
2800 gtk_misc_set_alignment (GTK_MISC (quotelevel1_label), 0, 0.5);
2802 quotelevel2_label = gtk_label_new (_("Quoted Text - Second Level"));
2803 gtk_table_attach (GTK_TABLE (table), quotelevel2_label, 1, 2, 1, 2,
2804 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2805 gtk_label_set_justify (GTK_LABEL (quotelevel2_label), GTK_JUSTIFY_LEFT);
2806 gtk_misc_set_alignment (GTK_MISC (quotelevel2_label), 0, 0.5);
2808 quotelevel3_label = gtk_label_new (_("Quoted Text - Third Level"));
2809 gtk_table_attach (GTK_TABLE (table), quotelevel3_label, 1, 2, 2, 3,
2810 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2811 gtk_label_set_justify (GTK_LABEL (quotelevel3_label), GTK_JUSTIFY_LEFT);
2812 gtk_misc_set_alignment (GTK_MISC (quotelevel3_label), 0, 0.5);
2814 uri_label = gtk_label_new (_("URI link"));
2815 gtk_table_attach (GTK_TABLE (table), uri_label, 1, 2, 3, 4,
2816 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2817 gtk_label_set_justify (GTK_LABEL (uri_label), GTK_JUSTIFY_LEFT);
2818 gtk_misc_set_alignment (GTK_MISC (uri_label), 0, 0.5);
2820 tgt_folder_label = gtk_label_new (_("Target folder"));
2821 gtk_table_attach (GTK_TABLE (table), tgt_folder_label, 1, 2, 4, 5,
2822 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2823 gtk_label_set_justify (GTK_LABEL (tgt_folder_label), GTK_JUSTIFY_LEFT);
2824 gtk_misc_set_alignment (GTK_MISC (tgt_folder_label), 0, 0.5);
2826 signature_label = gtk_label_new (_("Signatures"));
2827 gtk_table_attach (GTK_TABLE (table), signature_label, 1, 2, 5, 6,
2828 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2829 gtk_label_set_justify (GTK_LABEL (signature_label), GTK_JUSTIFY_LEFT);
2830 gtk_misc_set_alignment (GTK_MISC (signature_label), 0, 0.5);
2832 PACK_CHECK_BUTTON (vbox, recycle_colors_btn,
2833 _("Recycle quote colors"));
2835 gtkut_button_set_create(&hbbox, &ok_btn, _("OK"),
2836 NULL, NULL, NULL, NULL);
2837 gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
2839 gtk_widget_grab_default(ok_btn);
2840 MANAGE_WINDOW_SIGNALS_CONNECT(window);
2841 gtk_signal_connect(GTK_OBJECT(window), "delete_event",
2842 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
2843 gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
2844 GTK_SIGNAL_FUNC(prefs_quote_colors_key_pressed),
2847 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level1_btn), "clicked",
2848 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL1");
2849 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level2_btn), "clicked",
2850 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL2");
2851 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level3_btn), "clicked",
2852 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL3");
2853 gtk_signal_connect(GTK_OBJECT(color_buttons.uri_btn), "clicked",
2854 GTK_SIGNAL_FUNC(quote_color_set_dialog), "URI");
2855 gtk_signal_connect(GTK_OBJECT(color_buttons.tgt_folder_btn), "clicked",
2856 GTK_SIGNAL_FUNC(quote_color_set_dialog), "TGTFLD");
2857 gtk_signal_connect(GTK_OBJECT(color_buttons.signature_btn), "clicked",
2858 GTK_SIGNAL_FUNC(quote_color_set_dialog), "SIGNATURE");
2859 gtk_signal_connect(GTK_OBJECT(recycle_colors_btn), "toggled",
2860 GTK_SIGNAL_FUNC(prefs_recycle_colors_toggled), NULL);
2861 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2862 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
2864 /* show message button colors and recycle options */
2865 set_button_bg_color(color_buttons.quote_level1_btn,
2866 prefs_common.quote_level1_col);
2867 set_button_bg_color(color_buttons.quote_level2_btn,
2868 prefs_common.quote_level2_col);
2869 set_button_bg_color(color_buttons.quote_level3_btn,
2870 prefs_common.quote_level3_col);
2871 set_button_bg_color(color_buttons.uri_btn,
2872 prefs_common.uri_col);
2873 set_button_bg_color(color_buttons.tgt_folder_btn,
2874 prefs_common.tgt_folder_col);
2875 set_button_bg_color(color_buttons.signature_btn,
2876 prefs_common.signature_col);
2877 gtk_toggle_button_set_active((GtkToggleButton *)recycle_colors_btn,
2878 prefs_common.recycle_quote_colors);
2880 gtk_widget_show_all(vbox);
2881 quote_color_win = window;
2884 static void prefs_quote_colors_key_pressed(GtkWidget *widget,
2885 GdkEventKey *event, gpointer data)
2887 if (event && event->keyval == GDK_Escape)
2891 static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
2893 gchar *type = (gchar *)data;
2894 gchar *title = NULL;
2895 gdouble color[4] = {0.0, 0.0, 0.0, 0.0};
2897 GtkColorSelectionDialog *dialog;
2899 if(g_strcasecmp(type, "LEVEL1") == 0) {
2900 title = _("Pick color for quotation level 1");
2901 rgbvalue = prefs_common.quote_level1_col;
2902 } else if(g_strcasecmp(type, "LEVEL2") == 0) {
2903 title = _("Pick color for quotation level 2");
2904 rgbvalue = prefs_common.quote_level2_col;
2905 } else if(g_strcasecmp(type, "LEVEL3") == 0) {
2906 title = _("Pick color for quotation level 3");
2907 rgbvalue = prefs_common.quote_level3_col;
2908 } else if(g_strcasecmp(type, "URI") == 0) {
2909 title = _("Pick color for URI");
2910 rgbvalue = prefs_common.uri_col;
2911 } else if(g_strcasecmp(type, "TGTFLD") == 0) {
2912 title = _("Pick color for target folder");
2913 rgbvalue = prefs_common.tgt_folder_col;
2914 } else if(g_strcasecmp(type, "SIGNATURE") == 0) {
2915 title = _("Pick color for signatures");
2916 rgbvalue = prefs_common.signature_col;
2917 } else { /* Should never be called */
2918 g_warning("Unrecognized datatype '%s' in quote_color_set_dialog\n", type);
2922 color_dialog = gtk_color_selection_dialog_new(title);
2923 gtk_window_set_position(GTK_WINDOW(color_dialog), GTK_WIN_POS_CENTER);
2924 gtk_window_set_modal(GTK_WINDOW(color_dialog), TRUE);
2925 gtk_window_set_policy(GTK_WINDOW(color_dialog), FALSE, FALSE, FALSE);
2926 manage_window_set_transient(GTK_WINDOW(color_dialog));
2928 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->ok_button),
2929 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_ok), data);
2930 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->cancel_button),
2931 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_cancel), data);
2932 gtk_signal_connect(GTK_OBJECT(color_dialog), "key_press_event",
2933 GTK_SIGNAL_FUNC(quote_colors_set_dialog_key_pressed),
2936 /* preselect the previous color in the color selection dialog */
2937 color[0] = (gdouble) ((rgbvalue & 0xff0000) >> 16) / 255.0;
2938 color[1] = (gdouble) ((rgbvalue & 0x00ff00) >> 8) / 255.0;
2939 color[2] = (gdouble) (rgbvalue & 0x0000ff) / 255.0;
2940 dialog = GTK_COLOR_SELECTION_DIALOG(color_dialog);
2941 gtk_color_selection_set_color
2942 (GTK_COLOR_SELECTION(dialog->colorsel), color);
2944 gtk_widget_show(color_dialog);
2947 static void quote_colors_set_dialog_ok(GtkWidget *widget, gpointer data)
2949 GtkColorSelection *colorsel = (GtkColorSelection *)
2950 ((GtkColorSelectionDialog *)color_dialog)->colorsel;
2952 gint red, green, blue, rgbvalue;
2953 gchar *type = (gchar *)data;
2955 gtk_color_selection_get_color(colorsel, color);
2957 red = (gint) (color[0] * 255.0);
2958 green = (gint) (color[1] * 255.0);
2959 blue = (gint) (color[2] * 255.0);
2960 rgbvalue = (gint) ((red * 0x10000) | (green * 0x100) | blue);
2963 fprintf(stderr, "redc = %f, greenc = %f, bluec = %f\n", color[0], color[1], color[2]);
2964 fprintf(stderr, "red = %d, green = %d, blue = %d\n", red, green, blue);
2965 fprintf(stderr, "Color is %x\n", rgbvalue);
2968 if (g_strcasecmp(type, "LEVEL1") == 0) {
2969 prefs_common.quote_level1_col = rgbvalue;
2970 set_button_bg_color(color_buttons.quote_level1_btn, rgbvalue);
2971 } else if (g_strcasecmp(type, "LEVEL2") == 0) {
2972 prefs_common.quote_level2_col = rgbvalue;
2973 set_button_bg_color(color_buttons.quote_level2_btn, rgbvalue);
2974 } else if (g_strcasecmp(type, "LEVEL3") == 0) {
2975 prefs_common.quote_level3_col = rgbvalue;
2976 set_button_bg_color(color_buttons.quote_level3_btn, rgbvalue);
2977 } else if (g_strcasecmp(type, "URI") == 0) {
2978 prefs_common.uri_col = rgbvalue;
2979 set_button_bg_color(color_buttons.uri_btn, rgbvalue);
2980 } else if (g_strcasecmp(type, "TGTFLD") == 0) {
2981 prefs_common.tgt_folder_col = rgbvalue;
2982 set_button_bg_color(color_buttons.tgt_folder_btn, rgbvalue);
2983 folderview_set_target_folder_color(prefs_common.tgt_folder_col);
2984 } else if (g_strcasecmp(type, "SIGNATURE") == 0) {
2985 prefs_common.signature_col = rgbvalue;
2986 set_button_bg_color(color_buttons.signature_btn, rgbvalue);
2988 fprintf( stderr, "Unrecognized datatype '%s' in quote_color_set_dialog_ok\n", type );
2990 gtk_widget_destroy(color_dialog);
2993 static void quote_colors_set_dialog_cancel(GtkWidget *widget, gpointer data)
2995 gtk_widget_destroy(color_dialog);
2998 static void quote_colors_set_dialog_key_pressed(GtkWidget *widget,
3002 gtk_widget_destroy(color_dialog);
3005 static void set_button_bg_color(GtkWidget *widget, gint rgbvalue)
3010 gtkut_convert_int_to_gdk_color(rgbvalue, &color);
3011 newstyle = gtk_style_copy(gtk_widget_get_default_style());
3012 newstyle->bg[GTK_STATE_NORMAL] = color;
3013 newstyle->bg[GTK_STATE_PRELIGHT] = color;
3014 newstyle->bg[GTK_STATE_ACTIVE] = color;
3016 gtk_widget_set_style(GTK_WIDGET(widget), newstyle);
3019 static void prefs_enable_message_color_toggled(void)
3023 is_active = gtk_toggle_button_get_active
3024 (GTK_TOGGLE_BUTTON(message.chkbtn_enablecol));
3025 gtk_widget_set_sensitive(message.button_edit_col, is_active);
3026 prefs_common.enable_color = is_active;
3029 static void prefs_recycle_colors_toggled(GtkWidget *widget)
3033 is_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
3034 prefs_common.recycle_quote_colors = is_active;
3037 static void prefs_keybind_select(void)
3044 GtkWidget *confirm_area;
3046 GtkWidget *cancel_btn;
3048 window = gtk_window_new (GTK_WINDOW_DIALOG);
3049 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
3050 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
3051 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
3052 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
3053 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
3054 manage_window_set_transient (GTK_WINDOW (window));
3056 vbox1 = gtk_vbox_new (FALSE, VSPACING);
3057 gtk_container_add (GTK_CONTAINER (window), vbox1);
3058 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
3060 hbox1 = gtk_hbox_new (FALSE, 8);
3061 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3063 label = gtk_label_new
3064 (_("Select preset:"));
3065 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3066 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3068 hbox1 = gtk_hbox_new (FALSE, 8);
3069 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3071 combo = gtk_combo_new ();
3072 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
3073 gtkut_combo_set_items (GTK_COMBO (combo),
3079 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
3081 hbox1 = gtk_hbox_new (FALSE, 8);
3082 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3084 label = gtk_label_new
3085 (_("You can also modify each menu shortcut by pressing\n"
3086 "any key(s) when placing the mouse pointer on the item."));
3087 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3088 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3090 hbox1 = gtk_hbox_new (FALSE, 8);
3091 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3093 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
3094 &cancel_btn, _("Cancel"), NULL, NULL);
3095 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
3096 gtk_widget_grab_default (ok_btn);
3098 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3099 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3100 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
3101 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
3102 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
3103 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
3104 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
3106 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
3107 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
3110 gtk_widget_show_all(window);
3112 keybind.window = window;
3113 keybind.combo = combo;
3116 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
3119 if (event && event->keyval == GDK_Escape)
3120 prefs_keybind_cancel();
3123 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
3126 prefs_keybind_cancel();
3130 static void prefs_keybind_cancel(void)
3132 gtk_widget_destroy(keybind.window);
3133 keybind.window = NULL;
3134 keybind.combo = NULL;
3137 static void prefs_keybind_apply_clicked(GtkWidget *widget)
3139 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
3143 static gchar *default_menurc =
3144 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3145 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
3146 "(menu-path \"<Main>/File/Print...\" \"\")\n"
3147 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
3149 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3150 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3151 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3152 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
3154 "(menu-path \"<Main>/View/Expand Summary View\" \"V\")\n"
3155 "(menu-path \"<Main>/View/Expand Message View\" \"<shift>V\")\n"
3156 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3157 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3158 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3159 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3160 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3161 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3162 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3163 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3164 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3165 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3167 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
3168 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
3169 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
3170 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3171 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><control>R\")\n"
3172 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3173 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3174 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
3175 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
3176 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3177 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
3178 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
3179 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3180 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3181 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3182 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3184 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3185 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3186 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3188 "(menu-path \"<Compose>/File/Close\" \"<control>W\")\n"
3189 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
3190 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
3191 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
3192 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
3193 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
3194 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
3196 static gchar *mew_wl_menurc =
3197 "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
3198 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
3199 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
3200 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
3202 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3203 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3204 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3205 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3207 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3208 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3209 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
3210 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3211 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3212 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3213 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3214 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3215 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3216 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3217 "(menu-path \"<Main>/View/Show all headers\" \"<shift>H\")\n"
3218 "(menu-path \"<Main>/View/Update\" \"<shift>S\")\n"
3220 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
3221 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
3222 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
3223 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3224 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift>A\")\n"
3225 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3226 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3227 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3228 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
3229 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
3230 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
3231 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3232 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3233 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3234 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3235 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
3237 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3238 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3239 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3241 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3242 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3243 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3244 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3245 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3246 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3247 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3249 static gchar *mutt_menurc =
3250 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3251 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
3252 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
3253 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
3255 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3256 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3257 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3258 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
3260 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
3261 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3262 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
3263 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
3264 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
3265 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
3266 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
3267 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3268 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3269 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3270 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3272 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
3273 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
3274 "(menu-path \"<Main>/Message/Compose an email message\" \"M\")\n"
3275 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
3276 "(menu-path \"<Main>/Message/Reply to/all\" \"G\")\n"
3277 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3278 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3279 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3280 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
3281 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3282 "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
3283 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3284 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
3285 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3286 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
3287 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3289 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3290 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3291 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3293 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3294 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3295 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3296 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3297 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3298 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3299 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3301 static gchar *old_sylpheed_menurc =
3302 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3303 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
3304 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
3305 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
3307 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3308 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3309 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3310 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3312 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3313 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3314 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3315 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3316 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3317 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3318 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3319 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
3320 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
3321 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3322 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3323 "(menu-path \"<Main>/View/Update\" \"<alt>U\")\n"
3325 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<alt>I\")\n"
3326 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><alt>I\")\n"
3327 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
3328 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
3329 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><alt>R\")\n"
3330 "(menu-path \"<Main>/Message/Reply to/sender\" \"<control><alt>R\")\n"
3331 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3332 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
3333 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
3334 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
3335 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
3336 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
3337 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3338 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3339 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3340 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3342 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
3343 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
3344 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
3346 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3347 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3348 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3349 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3350 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3351 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3352 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3354 text = gtk_entry_get_text(entry);
3356 if (!strcmp(text, _("Default")))
3357 rc_str = default_menurc;
3358 else if (!strcmp(text, "Mew / Wanderlust"))
3359 rc_str = mew_wl_menurc;
3360 else if (!strcmp(text, "Mutt"))
3361 rc_str = mutt_menurc;
3362 else if (!strcmp(text, _("Old Sylpheed")))
3363 rc_str = old_sylpheed_menurc;
3367 menu_factory_clear_rc(rc_str);
3368 gtk_item_factory_parse_rc_string(rc_str);
3370 gtk_widget_destroy(keybind.window);
3371 keybind.window = NULL;
3372 keybind.combo = NULL;
3375 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
3378 GtkWidget *menuitem;
3381 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3382 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3383 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
3384 g_free(*((gchar **)pparam->data));
3385 *((gchar **)pparam->data) = g_strdup(charset);
3388 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
3390 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3393 g_return_if_fail(optmenu != NULL);
3394 g_return_if_fail(*((gchar **)pparam->data) != NULL);
3396 index = menu_find_option_menu_index(optmenu, *((gchar **)pparam->data),
3397 (GCompareFunc)strcmp);
3399 gtk_option_menu_set_history(optmenu, index);
3401 gtk_option_menu_set_history(optmenu, 0);
3402 prefs_common_charset_set_data_from_optmenu(pparam);
3406 static void prefs_common_encoding_set_data_from_optmenu(PrefParam *pparam)
3409 GtkWidget *menuitem;
3411 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3412 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3413 *((TransferEncodingMethod *)pparam->data) = GPOINTER_TO_INT
3414 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3417 static void prefs_common_encoding_set_optmenu(PrefParam *pparam)
3419 TransferEncodingMethod method =
3420 *((TransferEncodingMethod *)pparam->data);
3421 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3424 g_return_if_fail(optmenu != NULL);
3426 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(method),
3429 gtk_option_menu_set_history(optmenu, index);
3431 gtk_option_menu_set_history(optmenu, 0);
3432 prefs_common_encoding_set_data_from_optmenu(pparam);
3436 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
3439 GtkWidget *menuitem;
3441 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3442 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3443 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
3444 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3447 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
3449 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
3450 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3452 GtkWidget *menuitem;
3455 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(mode),
3458 gtk_option_menu_set_history(optmenu, index);
3460 gtk_option_menu_set_history(optmenu, 0);
3461 prefs_common_recv_dialog_set_data_from_optmenu(pparam);
3464 menu = gtk_option_menu_get_menu(optmenu);
3465 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3466 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3469 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam)
3472 GtkWidget *menuitem;
3474 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3475 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3476 *((SendDialogMode *)pparam->data) = GPOINTER_TO_INT
3477 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3480 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam)
3482 SendDialogMode mode = *((SendDialogMode *)pparam->data);
3483 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3485 GtkWidget *menuitem;
3488 case SEND_DIALOG_ALWAYS:
3489 gtk_option_menu_set_history(optmenu, 0);
3491 case SEND_DIALOG_NEVER:
3492 gtk_option_menu_set_history(optmenu, 1);
3498 menu = gtk_option_menu_get_menu(optmenu);
3499 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3500 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3503 static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
3506 prefs_common_cancel();
3510 static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
3513 if (event && event->keyval == GDK_Escape)
3514 prefs_common_cancel();
3517 static void prefs_common_ok(void)
3519 prefs_common_apply();
3520 gtk_widget_hide(dialog.window);
3525 static void prefs_common_apply(void)
3527 MainWindow *mainwindow;
3529 prefs_set_data_from_dialog(param);
3530 sock_set_io_timeout(prefs_common.io_timeout_secs);
3531 main_window_reflect_prefs_all_real(FALSE);
3532 prefs_common_save_config();
3534 mainwindow = mainwindow_get_mainwindow();
3535 log_window_set_clipping(mainwindow->logwin, prefs_common.cliplog,
3536 prefs_common.loglength);
3538 inc_autocheck_timer_remove();
3539 inc_autocheck_timer_set();
3542 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
3545 GtkWidget *menuitem;
3547 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3548 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3549 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
3550 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3553 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
3555 NextUnreadMsgDialogShow dialog_show;
3556 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3558 GtkWidget *menuitem;
3560 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
3562 switch (dialog_show) {
3563 case NEXTUNREADMSGDIALOG_ALWAYS:
3564 gtk_option_menu_set_history(optmenu, 0);
3566 case NEXTUNREADMSGDIALOG_ASSUME_YES:
3567 gtk_option_menu_set_history(optmenu, 1);
3569 case NEXTUNREADMSGDIALOG_ASSUME_NO:
3570 gtk_option_menu_set_history(optmenu, 2);
3574 menu = gtk_option_menu_get_menu(optmenu);
3575 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3576 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3579 static void prefs_common_cancel(void)
3581 gtk_widget_hide(dialog.window);
3586 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
3589 GtkWidget *menuitem;
3591 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3592 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3593 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
3594 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3597 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
3599 RecvDialogShow dialog_show;
3600 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3602 GtkWidget *menuitem;
3604 dialog_show = *((RecvDialogShow *)pparam->data);
3606 switch (dialog_show) {
3607 case RECVDIALOG_ALWAYS:
3608 gtk_option_menu_set_history(optmenu, 0);
3610 case RECVDIALOG_WINDOW_ACTIVE:
3611 gtk_option_menu_set_history(optmenu, 1);
3613 case RECVDIALOG_NEVER:
3614 gtk_option_menu_set_history(optmenu, 2);
3619 menu = gtk_option_menu_get_menu(optmenu);
3620 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3621 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));