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;
867 void prefs_common_read_config(void)
871 gchar buf[PREFSBUFSIZE];
873 prefs_read_config(param, "Common", COMMON_RC);
875 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
877 if ((fp = fopen(path, "rb")) == NULL) {
878 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
883 while (fgets(buf, sizeof(buf), fp) != NULL) {
885 if (buf[0] == '\0') continue;
886 prefs_common.mime_open_cmd_history =
887 add_history(prefs_common.mime_open_cmd_history, buf);
891 prefs_common.mime_open_cmd_history =
892 g_list_reverse(prefs_common.mime_open_cmd_history);
895 void prefs_common_save_config(void)
901 prefs_save_config(param, "Common", COMMON_RC);
903 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
905 if ((fp = fopen(path, "wb")) == NULL) {
906 FILE_OP_ERROR(path, "fopen");
911 for (cur = prefs_common.mime_open_cmd_history;
912 cur != NULL; cur = cur->next) {
913 fputs((gchar *)cur->data, fp);
921 void prefs_common_open(void)
923 if (prefs_rc_is_readonly(COMMON_RC))
928 if (!dialog.window) {
929 prefs_common_create();
932 manage_window_set_transient(GTK_WINDOW(dialog.window));
933 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
934 gtk_widget_grab_focus(dialog.ok_btn);
936 prefs_set_dialog(param);
938 gtk_widget_show(dialog.window);
941 static void prefs_common_create(void)
945 debug_print("Creating common preferences window...\n");
947 prefs_dialog_create(&dialog);
948 gtk_window_set_title (GTK_WINDOW(dialog.window),
949 _("Common Preferences"));
950 gtk_signal_connect (GTK_OBJECT(dialog.window), "delete_event",
951 GTK_SIGNAL_FUNC(prefs_common_deleted), NULL);
952 gtk_signal_connect (GTK_OBJECT(dialog.window), "key_press_event",
953 GTK_SIGNAL_FUNC(prefs_common_key_pressed), NULL);
954 MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
956 gtk_signal_connect (GTK_OBJECT(dialog.ok_btn), "clicked",
957 GTK_SIGNAL_FUNC(prefs_common_ok), NULL);
958 gtk_signal_connect (GTK_OBJECT(dialog.apply_btn), "clicked",
959 GTK_SIGNAL_FUNC(prefs_common_apply), NULL);
960 gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
961 GTK_SIGNAL_FUNC(prefs_common_cancel),
962 GTK_OBJECT(dialog.window));
964 /* create all widgets on notebook */
965 prefs_receive_create();
966 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
968 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
969 prefs_compose_create();
970 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
971 prefs_quote_create();
972 SET_NOTEBOOK_LABEL(dialog.notebook, _("Quote"), page++);
973 prefs_display_create();
974 SET_NOTEBOOK_LABEL(dialog.notebook, _("Display"), page++);
975 prefs_message_create();
976 SET_NOTEBOOK_LABEL(dialog.notebook, _("Message"), page++);
978 prefs_privacy_create();
979 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
981 prefs_interface_create();
982 SET_NOTEBOOK_LABEL(dialog.notebook, _("Interface"), page++);
983 prefs_other_create();
984 SET_NOTEBOOK_LABEL(dialog.notebook, _("Other"), page++);
986 gtk_widget_show_all(dialog.window);
989 static void prefs_receive_create(void)
993 GtkWidget *frame_incext;
994 GtkWidget *checkbtn_incext;
996 GtkWidget *label_incext;
997 GtkWidget *entry_incext;
998 /* GtkWidget *button_incext; */
1000 GtkWidget *hbox_autochk;
1001 GtkWidget *checkbtn_autochk;
1002 GtkWidget *label_autochk1;
1003 GtkObject *spinbtn_autochk_adj;
1004 GtkWidget *spinbtn_autochk;
1005 GtkWidget *label_autochk2;
1006 GtkWidget *checkbtn_chkonstartup;
1007 GtkWidget *checkbtn_scan_after_inc;
1010 GtkWidget *frame_newmail;
1011 GtkWidget *hbox_newmail_notify;
1012 GtkWidget *checkbtn_newmail_auto;
1013 GtkWidget *checkbtn_newmail_manu;
1014 GtkWidget *entry_newmail_notify_cmd;
1015 GtkWidget *label_newmail_notify_cmd;
1017 GtkWidget *hbox_recvdialog;
1018 GtkWidget *label_recvdialog;
1020 GtkWidget *menuitem;
1021 GtkWidget *optmenu_recvdialog;
1022 GtkWidget *checkbtn_no_recv_err_panel;
1023 GtkWidget *checkbtn_close_recv_dialog;
1025 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1026 gtk_widget_show (vbox1);
1027 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1028 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1030 PACK_FRAME(vbox1, frame_incext, _("External program"));
1032 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1033 gtk_widget_show (vbox2);
1034 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
1035 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1037 /* Use of external incorporation program */
1038 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
1039 _("Use external program for incorporation"));
1041 hbox = gtk_hbox_new (FALSE, 8);
1042 gtk_widget_show (hbox);
1043 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1044 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1046 label_incext = gtk_label_new (_("Command"));
1047 gtk_widget_show (label_incext);
1048 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1050 entry_incext = gtk_entry_new ();
1051 gtk_widget_show (entry_incext);
1052 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1055 button_incext = gtk_button_new_with_label ("... ");
1056 gtk_widget_show (button_incext);
1057 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1060 vbox2 = gtk_vbox_new (FALSE, 0);
1061 gtk_widget_show (vbox2);
1062 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1065 hbox_autochk = gtk_hbox_new (FALSE, 8);
1066 gtk_widget_show (hbox_autochk);
1067 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1069 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1070 _("Auto-check new mail"));
1072 label_autochk1 = gtk_label_new (_("every"));
1073 gtk_widget_show (label_autochk1);
1074 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1076 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1077 spinbtn_autochk = gtk_spin_button_new
1078 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1079 gtk_widget_show (spinbtn_autochk);
1080 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1081 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1082 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1084 label_autochk2 = gtk_label_new (_("minute(s)"));
1085 gtk_widget_show (label_autochk2);
1086 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1088 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1089 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1090 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1092 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1093 _("Check new mail on startup"));
1094 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1095 _("Update all local folders after incorporation"));
1098 /* receive dialog */
1099 hbox_recvdialog = gtk_hbox_new (FALSE, 8);
1100 gtk_widget_show (hbox_recvdialog);
1101 gtk_box_pack_start (GTK_BOX (vbox2), hbox_recvdialog, FALSE, FALSE, 0);
1103 label_recvdialog = gtk_label_new (_("Show receive dialog"));
1104 gtk_misc_set_alignment(GTK_MISC(label_recvdialog), 0, 0.5);
1105 gtk_widget_show (label_recvdialog);
1106 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), label_recvdialog, FALSE, FALSE, 0);
1108 optmenu_recvdialog = gtk_option_menu_new ();
1109 gtk_widget_show (optmenu_recvdialog);
1110 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), optmenu_recvdialog, FALSE, FALSE, 0);
1112 menu = gtk_menu_new ();
1113 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
1114 MENUITEM_ADD (menu, menuitem, _("Only on manual receiving"),
1115 RECV_DIALOG_MANUAL);
1116 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
1118 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
1120 PACK_CHECK_BUTTON (vbox2, checkbtn_no_recv_err_panel,
1121 _("Don't popup error dialog on receive error"));
1123 PACK_CHECK_BUTTON (vbox2, checkbtn_close_recv_dialog,
1124 _("Close receive dialog when finished"));
1126 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1128 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1129 gtk_widget_show (vbox2);
1130 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1131 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1133 hbox = gtk_hbox_new (TRUE, 8);
1134 gtk_widget_show (hbox);
1135 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1136 _("after autochecking"));
1137 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1138 _("after manual checking"));
1139 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1140 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1141 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1143 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1144 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1147 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1148 gtk_widget_show (hbox);
1149 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1152 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1153 "(use %d as number of new "
1155 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1157 gtk_widget_show (label_newmail_notify_cmd);
1158 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1159 label_newmail_notify_cmd, FALSE, FALSE, 0);
1161 entry_newmail_notify_cmd = gtk_entry_new ();
1162 gtk_widget_show (entry_newmail_notify_cmd);
1163 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1164 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1166 gtk_widget_set_sensitive(hbox_newmail_notify,
1167 prefs_common.newmail_notify_auto ||
1168 prefs_common.newmail_notify_manu);
1170 receive.checkbtn_incext = checkbtn_incext;
1171 receive.entry_incext = entry_incext;
1172 /* receive.button_incext = button_incext; */
1174 receive.checkbtn_autochk = checkbtn_autochk;
1175 receive.spinbtn_autochk = spinbtn_autochk;
1176 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1178 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1179 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1182 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1183 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1184 receive.hbox_newmail_notify = hbox_newmail_notify;
1185 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1186 receive.optmenu_recvdialog = optmenu_recvdialog;
1187 receive.checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
1188 receive.checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
1191 static void prefs_send_create(void)
1196 GtkWidget *checkbtn_savemsg;
1197 GtkWidget *checkbtn_queuemsg;
1198 GtkWidget *label_outcharset;
1199 GtkWidget *optmenu_charset;
1200 GtkWidget *optmenu_menu;
1201 GtkWidget *menuitem;
1202 GtkTooltips *charset_tooltip;
1203 GtkWidget *optmenu_encoding;
1204 GtkWidget *label_encoding;
1205 GtkTooltips *encoding_tooltip;
1206 GtkWidget *label_senddialog;
1208 GtkWidget *optmenu_senddialog;
1209 GtkWidget *hbox_senddialog;
1211 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1212 gtk_widget_show (vbox1);
1213 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1214 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1216 vbox2 = gtk_vbox_new (FALSE, 0);
1217 gtk_widget_show (vbox2);
1218 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1220 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1221 _("Save sent messages to Sent folder"));
1222 PACK_CHECK_BUTTON (vbox2, checkbtn_queuemsg,
1223 _("Queue messages that fail to send"));
1225 hbox_senddialog = gtk_hbox_new (FALSE, 8);
1226 gtk_box_pack_start (GTK_BOX (vbox1), hbox_senddialog, FALSE, FALSE, 0);
1228 label_senddialog = gtk_label_new (_("Show send dialog"));
1229 gtk_widget_show (label_senddialog);
1230 gtk_box_pack_start (GTK_BOX (hbox_senddialog), label_senddialog, FALSE, FALSE, 0);
1232 optmenu_senddialog = gtk_option_menu_new ();
1233 gtk_widget_show (optmenu_senddialog);
1234 gtk_box_pack_start (GTK_BOX (hbox_senddialog), optmenu_senddialog, FALSE, FALSE, 0);
1236 menu = gtk_menu_new ();
1237 MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
1238 MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
1240 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
1242 hbox1 = gtk_hbox_new (FALSE, 8);
1243 gtk_widget_show (hbox1);
1244 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1246 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1247 gtk_widget_show (label_outcharset);
1248 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1250 charset_tooltip = gtk_tooltips_new();
1252 optmenu_charset = gtk_option_menu_new ();
1253 gtk_widget_show (optmenu_charset);
1254 gtk_tooltips_set_tip(GTK_TOOLTIPS(charset_tooltip), optmenu_charset,
1255 _("If `Automatic' is selected, the optimal encoding"
1256 " for the current locale will be used"),
1258 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_charset, FALSE, FALSE, 0);
1260 optmenu_menu = gtk_menu_new ();
1262 #define SET_MENUITEM(str, data) \
1264 MENUITEM_ADD(optmenu_menu, menuitem, str, data); \
1267 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1268 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1270 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1272 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1273 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1274 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1275 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1276 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1277 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1278 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1280 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1282 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1284 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1285 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1287 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1289 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1290 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1292 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1293 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1295 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1296 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1298 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1299 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1300 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1302 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_charset),
1305 hbox1 = gtk_hbox_new (FALSE, 8);
1306 gtk_widget_show (hbox1);
1307 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1309 hbox1 = gtk_hbox_new (FALSE, 8);
1310 gtk_widget_show (hbox1);
1311 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1313 label_encoding = gtk_label_new (_("Transfer encoding"));
1314 gtk_widget_show (label_encoding);
1315 gtk_box_pack_start (GTK_BOX (hbox1), label_encoding, FALSE, FALSE, 0);
1317 encoding_tooltip = gtk_tooltips_new();
1319 optmenu_encoding = gtk_option_menu_new ();
1320 gtk_widget_show (optmenu_encoding);
1321 gtk_tooltips_set_tip(GTK_TOOLTIPS(encoding_tooltip), optmenu_encoding,
1322 _("Specify Content-Transfer-Encoding used when"
1323 " message body contains non-ASCII characters"),
1325 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_encoding, FALSE, FALSE, 0);
1327 optmenu_menu = gtk_menu_new ();
1329 SET_MENUITEM(_("Automatic"), CTE_AUTO);
1330 SET_MENUITEM("base64", CTE_BASE64);
1331 SET_MENUITEM("quoted-printable", CTE_QUOTED_PRINTABLE);
1332 SET_MENUITEM("8bit", CTE_8BIT);
1334 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_encoding),
1337 hbox1 = gtk_hbox_new (FALSE, 8);
1338 gtk_widget_show (hbox1);
1339 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1341 p_send.checkbtn_savemsg = checkbtn_savemsg;
1342 p_send.checkbtn_queuemsg = checkbtn_queuemsg;
1343 p_send.optmenu_senddialog = optmenu_senddialog;
1345 p_send.optmenu_charset = optmenu_charset;
1346 p_send.optmenu_encoding_method = optmenu_encoding;
1349 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1353 toggled = gtk_toggle_button_get_active
1354 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1355 gtk_toggle_button_get_active
1356 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1357 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1360 static void prefs_compose_create(void)
1365 GtkWidget *checkbtn_autoextedit;
1367 GtkWidget *frame_autosel;
1368 GtkWidget *hbox_autosel;
1369 GtkWidget *checkbtn_reply_account_autosel;
1370 GtkWidget *checkbtn_forward_account_autosel;
1371 GtkWidget *checkbtn_reedit_account_autosel;
1373 GtkWidget *hbox_undolevel;
1374 GtkWidget *label_undolevel;
1375 GtkObject *spinbtn_undolevel_adj;
1376 GtkWidget *spinbtn_undolevel;
1378 GtkWidget *vbox_linewrap;
1383 GtkWidget *label_linewrap;
1384 GtkObject *spinbtn_linewrap_adj;
1385 GtkWidget *spinbtn_linewrap;
1386 GtkWidget *checkbtn_wrapquote;
1387 GtkWidget *checkbtn_autowrap;
1388 GtkWidget *checkbtn_wrapatsend;
1390 GtkWidget *checkbtn_default_reply_list;
1392 GtkWidget *checkbtn_forward_as_attachment;
1393 GtkWidget *checkbtn_redirect_keep_from;
1394 GtkWidget *checkbtn_smart_wrapping;
1395 GtkWidget *checkbtn_block_cursor;
1396 GtkWidget *frame_msgwrap;
1398 GtkWidget *hbox_autosave;
1399 GtkWidget *checkbtn_autosave;
1400 GtkWidget *entry_autosave_length;
1401 GtkWidget *label_autosave_length;
1403 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1404 gtk_widget_show (vbox1);
1405 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1406 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1408 /* Account autoselection */
1409 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1411 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1412 gtk_widget_show (hbox_autosel);
1413 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1414 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1416 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1417 _("when replying"));
1418 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1419 _("when forwarding"));
1420 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1421 _("when re-editing"));
1423 vbox2 = gtk_vbox_new (FALSE, 0);
1424 gtk_widget_show (vbox2);
1425 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1427 PACK_CHECK_BUTTON (vbox2, checkbtn_default_reply_list,
1428 _("Reply button invokes mailing list reply"));
1430 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1431 _("Automatically launch the external editor"));
1433 hbox5 = gtk_hbox_new (FALSE, 8);
1434 gtk_widget_show (hbox5);
1435 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1437 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1438 _("Forward as attachment"));
1440 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1443 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1444 _("Keep the original 'From' header when redirecting"));
1447 hbox_autosave = gtk_hbox_new (FALSE, 8);
1448 gtk_widget_show (hbox_autosave);
1449 gtk_box_pack_start (GTK_BOX (vbox1), hbox_autosave, FALSE, FALSE, 0);
1451 PACK_CHECK_BUTTON (hbox_autosave, checkbtn_autosave,
1452 _("Autosave to Drafts folder every "));
1454 entry_autosave_length = gtk_entry_new();
1455 gtk_widget_set_usize (entry_autosave_length, 64, -1);
1456 gtk_widget_show (entry_autosave_length);
1457 gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
1459 label_autosave_length = gtk_label_new(_("characters"));
1460 gtk_widget_show (label_autosave_length);
1461 gtk_box_pack_start (GTK_BOX (hbox_autosave), label_autosave_length, FALSE, FALSE, 0);
1463 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1464 gtk_widget_show (hbox_undolevel);
1465 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1467 label_undolevel = gtk_label_new (_("Undo level"));
1468 gtk_widget_show (label_undolevel);
1469 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1471 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1472 spinbtn_undolevel = gtk_spin_button_new
1473 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1474 gtk_widget_show (spinbtn_undolevel);
1475 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1476 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1477 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1480 PACK_FRAME(vbox1, frame_msgwrap, _("Message wrapping"));
1482 vbox_linewrap = gtk_vbox_new (FALSE, VSPACING_NARROW);
1483 gtk_widget_show (vbox_linewrap);
1484 gtk_container_add (GTK_CONTAINER (frame_msgwrap), vbox_linewrap);
1485 gtk_container_set_border_width (GTK_CONTAINER (vbox_linewrap), 8);
1487 hbox3 = gtk_hbox_new (FALSE, 8);
1488 gtk_widget_show (hbox3);
1489 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox3, FALSE, FALSE, 0);
1492 label_linewrap = gtk_label_new (_("Wrap messages at"));
1493 gtk_widget_show (label_linewrap);
1494 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1496 spinbtn_linewrap_adj = gtk_adjustment_new (72, 20, 1024, 1, 10, 10);
1497 spinbtn_linewrap = gtk_spin_button_new
1498 (GTK_ADJUSTMENT (spinbtn_linewrap_adj), 1, 0);
1499 gtk_widget_show (spinbtn_linewrap);
1500 gtk_box_pack_start (GTK_BOX (hbox3), spinbtn_linewrap, FALSE, FALSE, 0);
1501 gtk_widget_set_usize (spinbtn_linewrap, 64, -1);
1502 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linewrap), TRUE);
1504 label_linewrap = gtk_label_new (_("characters"));
1505 gtk_widget_show (label_linewrap);
1506 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1508 hbox4 = gtk_hbox_new (FALSE, VSPACING);
1509 gtk_widget_show (hbox4);
1510 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox4, FALSE, FALSE, 0);
1512 PACK_CHECK_BUTTON (hbox4, checkbtn_wrapquote, _("Wrap quotation"));
1514 PACK_CHECK_BUTTON (hbox4, checkbtn_autowrap, _("Wrap on input"));
1517 (hbox4, checkbtn_wrapatsend, _("Wrap before sending"));
1519 PACK_CHECK_BUTTON (vbox_linewrap, checkbtn_smart_wrapping,
1520 _("Smart wrapping (EXPERIMENTAL)"));
1523 compose.checkbtn_quote = checkbtn_quote;
1524 compose.entry_quotemark = entry_quotemark;
1525 compose.text_quotefmt = text_quotefmt;
1528 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1530 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1531 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1532 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1534 compose.spinbtn_undolevel = spinbtn_undolevel;
1535 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1537 compose.spinbtn_linewrap = spinbtn_linewrap;
1538 compose.spinbtn_linewrap_adj = spinbtn_linewrap_adj;
1539 compose.checkbtn_wrapquote = checkbtn_wrapquote;
1540 compose.checkbtn_autowrap = checkbtn_autowrap;
1541 compose.checkbtn_wrapatsend = checkbtn_wrapatsend;
1543 compose.checkbtn_autosave = checkbtn_autosave;
1544 compose.entry_autosave_length = entry_autosave_length;
1546 compose.checkbtn_forward_as_attachment =
1547 checkbtn_forward_as_attachment;
1548 compose.checkbtn_redirect_keep_from =
1549 checkbtn_redirect_keep_from;
1550 compose.checkbtn_smart_wrapping =
1551 checkbtn_smart_wrapping;
1552 compose.checkbtn_block_cursor =
1553 checkbtn_block_cursor;
1554 compose.checkbtn_default_reply_list = checkbtn_default_reply_list;
1557 static void prefs_quote_create(void)
1560 GtkWidget *frame_quote;
1561 GtkWidget *vbox_quote;
1564 GtkWidget *label_quotemark;
1565 GtkWidget *entry_quotemark;
1566 GtkWidget *scrolledwin_quotefmt;
1567 GtkWidget *text_quotefmt;
1569 GtkWidget *entry_fw_quotemark;
1570 GtkWidget *text_fw_quotefmt;
1572 GtkWidget *entry_quote_chars;
1573 GtkWidget *label_quote_chars;
1575 GtkWidget *btn_quotedesc;
1577 GtkWidget *checkbtn_reply_with_quote;
1579 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1580 gtk_widget_show (vbox1);
1581 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1582 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1586 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1588 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1590 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1591 gtk_widget_show (vbox_quote);
1592 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1593 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1595 hbox1 = gtk_hbox_new (FALSE, 32);
1596 gtk_widget_show (hbox1);
1597 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1599 hbox2 = gtk_hbox_new (FALSE, 8);
1600 gtk_widget_show (hbox2);
1601 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1603 label_quotemark = gtk_label_new (_("Quotation mark"));
1604 gtk_widget_show (label_quotemark);
1605 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1607 entry_quotemark = gtk_entry_new ();
1608 gtk_widget_show (entry_quotemark);
1609 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
1610 gtk_widget_set_usize (entry_quotemark, 64, -1);
1612 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1613 gtk_widget_show (scrolledwin_quotefmt);
1614 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1615 gtk_scrolled_window_set_policy
1616 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1617 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1619 text_quotefmt = gtk_text_new (NULL, NULL);
1620 gtk_widget_show (text_quotefmt);
1621 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
1622 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
1623 gtk_widget_set_usize(text_quotefmt, -1, 60);
1627 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
1629 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1630 gtk_widget_show (vbox_quote);
1631 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1632 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1634 hbox1 = gtk_hbox_new (FALSE, 32);
1635 gtk_widget_show (hbox1);
1636 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1638 hbox2 = gtk_hbox_new (FALSE, 8);
1639 gtk_widget_show (hbox2);
1640 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1642 label_quotemark = gtk_label_new (_("Quotation mark"));
1643 gtk_widget_show (label_quotemark);
1644 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1646 entry_fw_quotemark = gtk_entry_new ();
1647 gtk_widget_show (entry_fw_quotemark);
1648 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
1650 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
1652 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1653 gtk_widget_show (scrolledwin_quotefmt);
1654 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1655 gtk_scrolled_window_set_policy
1656 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1657 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1659 text_fw_quotefmt = gtk_text_new (NULL, NULL);
1660 gtk_widget_show (text_fw_quotefmt);
1661 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
1663 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
1664 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
1666 hbox1 = gtk_hbox_new (FALSE, 32);
1667 gtk_widget_show (hbox1);
1668 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1671 gtk_button_new_with_label (_(" Description of symbols "));
1672 gtk_widget_show (btn_quotedesc);
1673 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
1674 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
1675 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
1679 PACK_FRAME (vbox1, frame_quote, _("Quotation characters"));
1681 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1682 gtk_widget_show (vbox_quote);
1683 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1684 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1686 hbox1 = gtk_hbox_new (FALSE, 32);
1687 gtk_widget_show (hbox1);
1688 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1690 hbox2 = gtk_hbox_new (FALSE, 8);
1691 gtk_widget_show (hbox2);
1692 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1694 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
1695 gtk_widget_show (label_quote_chars);
1696 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
1698 entry_quote_chars = gtk_entry_new ();
1699 gtk_widget_show (entry_quote_chars);
1700 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
1702 gtk_widget_set_usize (entry_quote_chars, 64, -1);
1705 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
1706 quote.entry_quotemark = entry_quotemark;
1707 quote.text_quotefmt = text_quotefmt;
1708 quote.entry_fw_quotemark = entry_fw_quotemark;
1709 quote.text_fw_quotefmt = text_fw_quotefmt;
1710 quote.entry_quote_chars = entry_quote_chars;
1713 static void prefs_display_create(void)
1716 GtkWidget *chkbtn_transhdr;
1717 GtkWidget *chkbtn_folder_unread;
1719 GtkWidget *label_ng_abbrev;
1720 GtkWidget *spinbtn_ng_abbrev_len;
1721 GtkObject *spinbtn_ng_abbrev_len_adj;
1722 GtkWidget *frame_summary;
1724 GtkWidget *chkbtn_swapfrom;
1725 GtkWidget *chkbtn_useaddrbook;
1726 GtkWidget *chkbtn_threadsubj;
1728 GtkWidget *label_datefmt;
1729 GtkWidget *button_datefmt;
1730 GtkWidget *entry_datefmt;
1731 GtkWidget *button_dispitem;
1733 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1734 gtk_widget_show (vbox1);
1735 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1736 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1738 vbox2 = gtk_vbox_new (FALSE, 0);
1739 gtk_widget_show (vbox2);
1740 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
1743 (vbox2, chkbtn_transhdr,
1744 _("Translate header name (such as `From:', `Subject:')"));
1746 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
1747 _("Display unread number next to folder name"));
1749 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1751 hbox1 = gtk_hbox_new (FALSE, 8);
1752 gtk_widget_show (hbox1);
1753 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1755 label_ng_abbrev = gtk_label_new
1756 (_("Abbreviate newsgroup names longer than"));
1757 gtk_widget_show (label_ng_abbrev);
1758 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1760 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
1761 spinbtn_ng_abbrev_len = gtk_spin_button_new
1762 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
1763 gtk_widget_show (spinbtn_ng_abbrev_len);
1764 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
1766 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
1767 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
1770 label_ng_abbrev = gtk_label_new
1772 gtk_widget_show (label_ng_abbrev);
1773 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1775 /* ---- Summary ---- */
1777 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
1779 vbox2 = gtk_vbox_new (FALSE, 0);
1780 gtk_widget_show (vbox2);
1781 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
1782 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1785 (vbox2, chkbtn_swapfrom,
1786 _("Display recipient in `From' column if sender is yourself"));
1788 (vbox2, chkbtn_useaddrbook,
1789 _("Display sender using address book"));
1791 (vbox2, chkbtn_threadsubj,
1792 _("Thread using subject in addition to standard headers"));
1794 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1796 hbox1 = gtk_hbox_new (FALSE, 8);
1797 gtk_widget_show (hbox1);
1798 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1800 label_datefmt = gtk_label_new (_("Date format"));
1801 gtk_widget_show (label_datefmt);
1802 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
1804 entry_datefmt = gtk_entry_new ();
1805 gtk_widget_show (entry_datefmt);
1806 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
1808 button_datefmt = gtk_button_new_with_label (" ... ");
1810 gtk_widget_show (button_datefmt);
1811 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
1812 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
1813 GTK_SIGNAL_FUNC (date_format_create), NULL);
1815 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
1817 hbox1 = gtk_hbox_new (FALSE, 8);
1818 gtk_widget_show (hbox1);
1819 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1821 button_dispitem = gtk_button_new_with_label
1822 (_(" Set displayed items in summary... "));
1823 gtk_widget_show (button_dispitem);
1824 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
1825 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
1826 GTK_SIGNAL_FUNC (prefs_summary_column_open),
1829 display.chkbtn_transhdr = chkbtn_transhdr;
1830 display.chkbtn_folder_unread = chkbtn_folder_unread;
1831 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
1832 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
1834 display.chkbtn_swapfrom = chkbtn_swapfrom;
1835 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
1836 display.chkbtn_threadsubj = chkbtn_threadsubj;
1837 display.entry_datefmt = entry_datefmt;
1840 static void prefs_message_create(void)
1846 GtkWidget *chkbtn_enablecol;
1847 GtkWidget *button_edit_col;
1848 GtkWidget *chkbtn_mbalnum;
1849 GtkWidget *chkbtn_disphdrpane;
1850 GtkWidget *chkbtn_disphdr;
1851 GtkWidget *button_edit_disphdr;
1852 GtkWidget *hbox_linespc;
1853 GtkWidget *label_linespc;
1854 GtkObject *spinbtn_linespc_adj;
1855 GtkWidget *spinbtn_linespc;
1856 GtkWidget *chkbtn_headspc;
1858 GtkWidget *frame_scr;
1859 GtkWidget *vbox_scr;
1860 GtkWidget *chkbtn_smoothscroll;
1861 GtkWidget *hbox_scr;
1862 GtkWidget *label_scr;
1863 GtkObject *spinbtn_scrollstep_adj;
1864 GtkWidget *spinbtn_scrollstep;
1865 GtkWidget *chkbtn_halfpage;
1867 GtkWidget *chkbtn_attach_desc;
1869 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1870 gtk_widget_show (vbox1);
1871 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1872 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1874 vbox2 = gtk_vbox_new (FALSE, 0);
1875 gtk_widget_show (vbox2);
1876 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1878 hbox1 = gtk_hbox_new (FALSE, 8);
1879 gtk_widget_show (hbox1);
1880 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1882 PACK_CHECK_BUTTON (hbox1, chkbtn_enablecol,
1883 _("Enable coloration of message"));
1884 gtk_signal_connect(GTK_OBJECT(chkbtn_enablecol), "toggled",
1885 GTK_SIGNAL_FUNC(prefs_enable_message_color_toggled),
1888 button_edit_col = gtk_button_new_with_label (_(" Edit... "));
1889 gtk_widget_show (button_edit_col);
1890 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_col, FALSE, TRUE, 0);
1891 gtk_signal_connect (GTK_OBJECT (button_edit_col), "clicked",
1892 GTK_SIGNAL_FUNC (prefs_quote_colors_dialog), NULL);
1894 SET_TOGGLE_SENSITIVITY(chkbtn_enablecol, button_edit_col);
1897 (vbox2, chkbtn_mbalnum,
1898 _("Display multi-byte alphanumeric as\n"
1899 "ASCII character (Japanese only)"));
1900 gtk_label_set_justify (GTK_LABEL (GTK_BIN(chkbtn_mbalnum)->child),
1903 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
1904 _("Display header pane above message view"));
1906 hbox1 = gtk_hbox_new (FALSE, 8);
1907 gtk_widget_show (hbox1);
1908 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1910 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
1911 _("Display short headers on message view"));
1913 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
1914 gtk_widget_show (button_edit_disphdr);
1915 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
1917 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
1918 GTK_SIGNAL_FUNC (prefs_display_header_open),
1921 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
1923 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1925 hbox1 = gtk_hbox_new (FALSE, 32);
1926 gtk_widget_show (hbox1);
1927 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1929 hbox_linespc = gtk_hbox_new (FALSE, 8);
1930 gtk_widget_show (hbox1);
1931 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
1933 label_linespc = gtk_label_new (_("Line space"));
1934 gtk_widget_show (label_linespc);
1935 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1938 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
1939 spinbtn_linespc = gtk_spin_button_new
1940 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
1941 gtk_widget_show (spinbtn_linespc);
1942 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
1944 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
1945 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
1947 label_linespc = gtk_label_new (_("pixel(s)"));
1948 gtk_widget_show (label_linespc);
1949 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1952 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Leave space on head"));
1954 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
1956 vbox_scr = gtk_vbox_new (FALSE, 0);
1957 gtk_widget_show (vbox_scr);
1958 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
1959 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
1961 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
1963 hbox1 = gtk_hbox_new (FALSE, 32);
1964 gtk_widget_show (hbox1);
1965 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
1967 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
1969 hbox_scr = gtk_hbox_new (FALSE, 8);
1970 gtk_widget_show (hbox_scr);
1971 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
1973 label_scr = gtk_label_new (_("Step"));
1974 gtk_widget_show (label_scr);
1975 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1977 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
1978 spinbtn_scrollstep = gtk_spin_button_new
1979 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
1980 gtk_widget_show (spinbtn_scrollstep);
1981 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
1983 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
1984 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
1987 label_scr = gtk_label_new (_("pixel(s)"));
1988 gtk_widget_show (label_scr);
1989 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1991 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
1993 vbox3 = gtk_vbox_new (FALSE, 0);
1994 gtk_widget_show (vbox3);
1995 gtk_box_pack_start (GTK_BOX (vbox1), vbox3, FALSE, FALSE, 0);
1997 PACK_CHECK_BUTTON(vbox3, chkbtn_attach_desc,
1998 _("Show attachment descriptions (rather than names)"));
2001 message.chkbtn_enablecol = chkbtn_enablecol;
2002 message.button_edit_col = button_edit_col;
2003 message.chkbtn_mbalnum = chkbtn_mbalnum;
2004 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
2005 message.chkbtn_disphdr = chkbtn_disphdr;
2006 message.spinbtn_linespc = spinbtn_linespc;
2007 message.chkbtn_headspc = chkbtn_headspc;
2009 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
2010 message.spinbtn_scrollstep = spinbtn_scrollstep;
2011 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
2012 message.chkbtn_halfpage = chkbtn_halfpage;
2014 message.chkbtn_attach_desc = chkbtn_attach_desc;
2018 static void prefs_privacy_create(void)
2024 GtkWidget *hbox_spc;
2026 GtkWidget *checkbtn_auto_check_signatures;
2027 GtkWidget *checkbtn_store_passphrase;
2028 GtkObject *spinbtn_store_passphrase_adj;
2029 GtkWidget *spinbtn_store_passphrase;
2030 GtkTooltips *store_tooltip;
2031 GtkWidget *checkbtn_passphrase_grab;
2032 GtkWidget *checkbtn_gpg_warning;
2034 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2035 gtk_widget_show (vbox1);
2036 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2037 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2039 vbox2 = gtk_vbox_new (FALSE, 0);
2040 gtk_widget_show (vbox2);
2041 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2043 PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
2044 _("Automatically check signatures"));
2046 PACK_CHECK_BUTTON (vbox2, checkbtn_store_passphrase,
2047 _("Store passphrase in memory temporarily"));
2049 vbox3 = gtk_vbox_new (FALSE, 0);
2050 gtk_widget_show (vbox3);
2051 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2053 hbox1 = gtk_hbox_new (FALSE, 8);
2054 gtk_widget_show (hbox1);
2055 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2057 hbox_spc = gtk_hbox_new (FALSE, 0);
2058 gtk_widget_show (hbox_spc);
2059 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2060 gtk_widget_set_usize (hbox_spc, 12, -1);
2062 label = gtk_label_new (_("Expire after"));
2063 gtk_widget_show (label);
2064 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2066 store_tooltip = gtk_tooltips_new();
2068 spinbtn_store_passphrase_adj = gtk_adjustment_new (0, 0, 1440, 1, 5, 5);
2069 spinbtn_store_passphrase = gtk_spin_button_new
2070 (GTK_ADJUSTMENT (spinbtn_store_passphrase_adj), 1, 0);
2071 gtk_widget_show (spinbtn_store_passphrase);
2072 gtk_tooltips_set_tip(GTK_TOOLTIPS(store_tooltip), spinbtn_store_passphrase,
2073 _("Setting to '0' will store the passphrase"
2074 " for the whole session"),
2076 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_store_passphrase, FALSE, FALSE, 0);
2077 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_store_passphrase),
2079 gtk_widget_set_usize (spinbtn_store_passphrase, 64, -1);
2081 label = gtk_label_new (_("minute(s) "));
2082 gtk_widget_show (label);
2083 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2085 hbox1 = gtk_hbox_new (FALSE, 8);
2086 gtk_widget_show (hbox1);
2087 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2089 hbox_spc = gtk_hbox_new (FALSE, 0);
2090 gtk_widget_show (hbox_spc);
2091 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2092 gtk_widget_set_usize (hbox_spc, 12, -1);
2094 SET_TOGGLE_SENSITIVITY (checkbtn_store_passphrase, vbox3);
2097 PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab,
2098 _("Grab input while entering a passphrase"));
2102 (vbox2, checkbtn_gpg_warning,
2103 _("Display warning on startup if GnuPG doesn't work"));
2105 hbox1 = gtk_hbox_new (FALSE, 8);
2106 gtk_widget_show (hbox1);
2107 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2109 privacy.checkbtn_auto_check_signatures
2110 = checkbtn_auto_check_signatures;
2111 privacy.checkbtn_store_passphrase = checkbtn_store_passphrase;
2112 privacy.spinbtn_store_passphrase = spinbtn_store_passphrase;
2113 privacy.spinbtn_store_passphrase_adj = spinbtn_store_passphrase_adj;
2114 privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
2115 privacy.checkbtn_gpg_warning = checkbtn_gpg_warning;
2117 #endif /* USE_GPGME */
2119 static void prefs_interface_create(void)
2124 /* GtkWidget *checkbtn_emacs; */
2125 GtkWidget *checkbtn_always_show_msg;
2126 GtkWidget *checkbtn_openunread;
2127 GtkWidget *checkbtn_mark_as_read_on_newwin;
2128 GtkWidget *checkbtn_openinbox;
2129 GtkWidget *checkbtn_immedexec;
2130 GtkTooltips *immedexec_tooltip;
2134 GtkWidget *menuitem;
2136 GtkWidget *button_keybind;
2138 GtkWidget *hbox_nextunreadmsgdialog;
2139 GtkWidget *optmenu_nextunreadmsgdialog;
2141 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2142 gtk_widget_show (vbox1);
2143 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2144 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2146 vbox2 = gtk_vbox_new (FALSE, 0);
2147 gtk_widget_show (vbox2);
2148 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2150 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
2151 _("Emulate the behavior of mouse operation of\n"
2152 "Emacs-based mailer"));
2153 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
2154 GTK_JUSTIFY_LEFT); */
2157 (vbox2, checkbtn_always_show_msg,
2158 _("Always open messages in summary when selected"));
2161 (vbox2, checkbtn_openunread,
2162 _("Open first unread message when entering a folder"));
2165 (vbox2, checkbtn_mark_as_read_on_newwin,
2166 _("Only mark message as read when opened in new window"));
2169 (vbox2, checkbtn_openinbox,
2170 _("Go to inbox after receiving new mail"));
2172 vbox3 = gtk_vbox_new (FALSE, 0);
2173 gtk_widget_show (vbox3);
2174 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2176 immedexec_tooltip = gtk_tooltips_new();
2179 (vbox3, checkbtn_immedexec,
2180 _("Execute immediately when moving or deleting messages"));
2181 gtk_tooltips_set_tip(GTK_TOOLTIPS(immedexec_tooltip), checkbtn_immedexec,
2182 _("Messages will be marked until execution"
2183 " if this is turned off"),
2186 hbox1 = gtk_hbox_new (FALSE, 0);
2187 gtk_widget_show (hbox1);
2188 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2190 /* Next Unread Message Dialog */
2191 hbox_nextunreadmsgdialog = gtk_hbox_new (FALSE, 8);
2192 gtk_widget_show (hbox1);
2193 gtk_box_pack_start (GTK_BOX (vbox1), hbox_nextunreadmsgdialog, FALSE, FALSE, 0);
2195 label = gtk_label_new (_("Show no-unread-message dialog"));
2196 gtk_widget_show (label);
2197 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), label, FALSE, FALSE, 8);
2199 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
2200 gtk_widget_show (optmenu_nextunreadmsgdialog);
2201 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), optmenu_nextunreadmsgdialog, FALSE, FALSE, 8);
2203 menu = gtk_menu_new ();
2204 MENUITEM_ADD (menu, menuitem, _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
2205 MENUITEM_ADD (menu, menuitem, _("Assume 'Yes'"),
2206 NEXTUNREADMSGDIALOG_ASSUME_YES);
2207 MENUITEM_ADD (menu, menuitem, _("Assume 'No'"),
2208 NEXTUNREADMSGDIALOG_ASSUME_NO);
2210 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog), menu);
2212 hbox1 = gtk_hbox_new (FALSE, 8);
2213 gtk_widget_show (hbox1);
2214 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2216 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
2217 gtk_widget_show (button_keybind);
2218 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
2219 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
2220 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
2222 /* interface.checkbtn_emacs = checkbtn_emacs; */
2223 interface.checkbtn_always_show_msg = checkbtn_always_show_msg;
2224 interface.checkbtn_openunread = checkbtn_openunread;
2225 interface.checkbtn_mark_as_read_on_newwin
2226 = checkbtn_mark_as_read_on_newwin;
2227 interface.checkbtn_openinbox = checkbtn_openinbox;
2228 interface.checkbtn_immedexec = checkbtn_immedexec;
2229 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
2232 static void prefs_other_create(void)
2237 GtkWidget *frame_addr;
2238 GtkWidget *vbox_addr;
2239 GtkWidget *checkbtn_addaddrbyclick;
2241 GtkWidget *frame_cliplog;
2242 GtkWidget *vbox_cliplog;
2243 GtkWidget *hbox_cliplog;
2244 GtkWidget *checkbtn_cliplog;
2245 GtkWidget *loglength_label;
2246 GtkWidget *loglength_entry;
2247 GtkTooltips *loglength_tooltip;
2249 GtkWidget *frame_exit;
2250 GtkWidget *vbox_exit;
2251 GtkWidget *checkbtn_confonexit;
2252 GtkWidget *checkbtn_cleanonexit;
2253 GtkWidget *checkbtn_askonclean;
2254 GtkWidget *checkbtn_warnqueued;
2256 GtkWidget *label_iotimeout;
2257 GtkWidget *spinbtn_iotimeout;
2258 GtkObject *spinbtn_iotimeout_adj;
2262 GtkWidget *frame_ssl;
2263 GtkWidget *vbox_ssl;
2264 GtkWidget *hbox_ssl;
2265 GtkWidget *checkbtn_ssl_ask_unknown_valid;
2268 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2269 gtk_widget_show (vbox1);
2270 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2271 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2273 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2275 vbox_addr = gtk_vbox_new (FALSE, 0);
2276 gtk_widget_show (vbox_addr);
2277 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2278 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2281 (vbox_addr, checkbtn_addaddrbyclick,
2282 _("Add address to destination when double-clicked"));
2285 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2287 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2288 gtk_widget_show (vbox_cliplog);
2289 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2290 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2291 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2292 _("Clip the log size"));
2293 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2294 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2295 gtk_widget_show (hbox_cliplog);
2297 loglength_label = gtk_label_new (_("Log window length"));
2298 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2300 gtk_widget_show (GTK_WIDGET (loglength_label));
2302 loglength_tooltip = gtk_tooltips_new();
2304 loglength_entry = gtk_entry_new ();
2305 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2306 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2308 gtk_widget_show (GTK_WIDGET (loglength_entry));
2309 gtk_tooltips_set_tip(GTK_TOOLTIPS(loglength_tooltip), loglength_entry,
2310 _("0 to stop logging in the log window"),
2312 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2314 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2319 PACK_FRAME (vbox1, frame_ssl, _("Security"));
2321 vbox_ssl = gtk_vbox_new (FALSE, 0);
2322 gtk_widget_show (vbox_ssl);
2323 gtk_container_add (GTK_CONTAINER (frame_ssl), vbox_ssl);
2324 gtk_container_set_border_width (GTK_CONTAINER (vbox_ssl), 8);
2325 PACK_CHECK_BUTTON (vbox_ssl, checkbtn_ssl_ask_unknown_valid,
2326 _("Ask before accepting SSL certificates"));
2327 hbox_ssl = gtk_hbox_new (FALSE, 3);
2328 gtk_container_add (GTK_CONTAINER (vbox_ssl), hbox_ssl);
2329 gtk_widget_show (hbox_ssl);
2334 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2336 vbox_exit = gtk_vbox_new (FALSE, 0);
2337 gtk_widget_show (vbox_exit);
2338 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2339 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
2341 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
2342 _("Confirm on exit"));
2344 hbox1 = gtk_hbox_new (FALSE, 32);
2345 gtk_widget_show (hbox1);
2346 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
2348 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
2349 _("Empty trash on exit"));
2350 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
2351 _("Ask before emptying"));
2352 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
2354 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
2355 _("Warn if there are queued messages"));
2357 hbox1 = gtk_hbox_new (FALSE, 8);
2358 gtk_widget_show (hbox1);
2359 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2361 label_iotimeout = gtk_label_new (_("Socket I/O timeout:"));
2362 gtk_widget_show (label_iotimeout);
2363 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2365 spinbtn_iotimeout_adj = gtk_adjustment_new (60, 0, 1000, 1, 10, 10);
2366 spinbtn_iotimeout = gtk_spin_button_new
2367 (GTK_ADJUSTMENT (spinbtn_iotimeout_adj), 1, 0);
2368 gtk_widget_show (spinbtn_iotimeout);
2369 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_iotimeout,
2371 gtk_widget_set_usize (spinbtn_iotimeout, 64, -1);
2372 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_iotimeout), TRUE);
2374 label_iotimeout = gtk_label_new (_("seconds"));
2375 gtk_widget_show (label_iotimeout);
2376 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2378 other.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2380 other.checkbtn_cliplog = checkbtn_cliplog;
2381 other.loglength_entry = loglength_entry;
2383 other.checkbtn_confonexit = checkbtn_confonexit;
2384 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
2385 other.checkbtn_askonclean = checkbtn_askonclean;
2386 other.checkbtn_warnqueued = checkbtn_warnqueued;
2388 other.spinbtn_iotimeout = spinbtn_iotimeout;
2389 other.spinbtn_iotimeout_adj = spinbtn_iotimeout_adj;
2393 other.checkbtn_ssl_ask_unknown_valid = checkbtn_ssl_ask_unknown_valid;
2398 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
2400 GtkWidget *datefmt_sample = NULL;
2403 g_return_if_fail(widget != NULL);
2404 g_return_if_fail(*widget != NULL);
2405 g_return_if_fail(display.entry_datefmt != NULL);
2407 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2408 (GTK_OBJECT(*widget), "datefmt_sample"));
2409 g_return_if_fail(datefmt_sample != NULL);
2411 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
2412 g_free(prefs_common.date_format);
2413 prefs_common.date_format = text;
2414 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
2416 gtk_widget_destroy(*widget);
2420 static void date_format_cancel_btn_clicked(GtkButton *button,
2423 g_return_if_fail(widget != NULL);
2424 g_return_if_fail(*widget != NULL);
2426 gtk_widget_destroy(*widget);
2430 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
2433 if (event && event->keyval == GDK_Escape)
2434 date_format_cancel_btn_clicked(NULL, widget);
2437 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
2438 GdkEventAny *event, GtkWidget **widget)
2440 g_return_val_if_fail(widget != NULL, FALSE);
2441 g_return_val_if_fail(*widget != NULL, FALSE);
2447 static void date_format_entry_on_change(GtkEditable *editable,
2451 struct tm *cal_time;
2455 cur_time = time(NULL);
2456 cal_time = localtime(&cur_time);
2458 text = gtk_editable_get_chars(editable, 0, -1);
2460 strftime(buffer, sizeof buffer, text, cal_time);
2462 gtk_label_set_text(example, buffer);
2465 static void date_format_select_row(GtkWidget *date_format_list, gint row,
2466 gint column, GdkEventButton *event,
2467 GtkWidget *date_format)
2473 GtkWidget *datefmt_sample;
2475 /* only on double click */
2476 if (!event || event->type != GDK_2BUTTON_PRESS) return;
2479 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2480 (GTK_OBJECT(date_format), "datefmt_sample"));
2482 g_return_if_fail(date_format_list != NULL);
2483 g_return_if_fail(date_format != NULL);
2484 g_return_if_fail(datefmt_sample != NULL);
2486 /* get format from clist */
2487 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
2489 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
2490 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
2492 /* insert the format into the text entry */
2493 new_format = g_malloc(strlen(old_format) + 3);
2495 strncpy(new_format, old_format, cur_pos);
2496 new_format[cur_pos] = '\0';
2497 strcat(new_format, format);
2498 strcat(new_format, &old_format[cur_pos]);
2500 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
2501 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
2506 static GtkWidget *date_format_create(GtkButton *button, void *data)
2508 static GtkWidget *datefmt_win = NULL;
2510 GtkWidget *scrolledwindow1;
2511 GtkWidget *datefmt_clist;
2516 GtkWidget *confirm_area;
2518 GtkWidget *cancel_btn;
2519 GtkWidget *datefmt_entry;
2548 const gint TIME_FORMAT_ELEMS =
2549 sizeof time_format / sizeof time_format[0];
2551 time_format[0].txt = _("the full abbreviated weekday name");
2552 time_format[1].txt = _("the full weekday name");
2553 time_format[2].txt = _("the abbreviated month name");
2554 time_format[3].txt = _("the full month name");
2555 time_format[4].txt = _("the preferred date and time for the current locale");
2556 time_format[5].txt = _("the century number (year/100)");
2557 time_format[6].txt = _("the day of the month as a decimal number");
2558 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
2559 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
2560 time_format[9].txt = _("the day of the year as a decimal number");
2561 time_format[10].txt = _("the month as a decimal number");
2562 time_format[11].txt = _("the minute as a decimal number");
2563 time_format[12].txt = _("either AM or PM");
2564 time_format[13].txt = _("the second as a decimal number");
2565 time_format[14].txt = _("the day of the week as a decimal number");
2566 time_format[15].txt = _("the preferred date for the current locale");
2567 time_format[16].txt = _("the last two digits of a year");
2568 time_format[17].txt = _("the year as a decimal number");
2569 time_format[18].txt = _("the time zone or name or abbreviation");
2571 if (datefmt_win) return datefmt_win;
2573 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
2574 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
2575 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
2576 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2577 gtk_widget_set_usize(datefmt_win, 440, 280);
2579 vbox1 = gtk_vbox_new(FALSE, 10);
2580 gtk_widget_show(vbox1);
2581 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
2583 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
2584 gtk_scrolled_window_set_policy
2585 (GTK_SCROLLED_WINDOW(scrolledwindow1),
2586 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
2587 gtk_widget_show(scrolledwindow1);
2588 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
2590 titles[0] = _("Specifier");
2591 titles[1] = _("Description");
2592 datefmt_clist = gtk_clist_new_with_titles(2, titles);
2593 gtk_widget_show(datefmt_clist);
2594 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
2595 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
2596 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
2597 GTK_SELECTION_BROWSE);
2599 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
2601 /* phoney casting necessary because of gtk... */
2602 text[0] = (gchar *)time_format[i].fmt;
2603 text[1] = (gchar *)time_format[i].txt;
2604 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
2607 table = gtk_table_new(2, 2, FALSE);
2608 gtk_widget_show(table);
2609 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
2610 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
2611 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
2613 label1 = gtk_label_new(_("Date format"));
2614 gtk_widget_show(label1);
2615 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
2617 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
2618 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
2620 datefmt_entry = gtk_entry_new_with_max_length(256);
2621 gtk_widget_show(datefmt_entry);
2622 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
2623 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2625 /* we need the "sample" entry box; add it as data so callbacks can
2626 * get the entry box */
2627 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
2630 label2 = gtk_label_new(_("Example"));
2631 gtk_widget_show(label2);
2632 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
2634 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
2635 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
2637 label3 = gtk_label_new("");
2638 gtk_widget_show(label3);
2639 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
2640 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2641 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
2642 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
2644 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
2645 &cancel_btn, _("Cancel"), NULL, NULL);
2646 gtk_widget_grab_default(ok_btn);
2647 gtk_widget_show(confirm_area);
2649 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
2651 /* set the current format */
2652 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
2653 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
2656 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2657 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
2659 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
2660 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
2662 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
2663 GTK_SIGNAL_FUNC(date_format_key_pressed),
2665 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
2666 GTK_SIGNAL_FUNC(date_format_on_delete),
2668 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
2669 GTK_SIGNAL_FUNC(date_format_entry_on_change),
2672 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
2673 GTK_SIGNAL_FUNC(date_format_select_row),
2676 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2677 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
2679 gtk_widget_show(datefmt_win);
2680 manage_window_set_transient(GTK_WINDOW(datefmt_win));
2682 gtk_widget_grab_focus(ok_btn);
2687 void prefs_quote_colors_dialog(void)
2689 if (!quote_color_win)
2690 prefs_quote_colors_dialog_create();
2691 gtk_widget_show(quote_color_win);
2692 manage_window_set_transient(GTK_WINDOW(quote_color_win));
2695 gtk_widget_hide(quote_color_win);
2697 textview_update_message_colors();
2698 main_window_reflect_prefs_all();
2701 static void prefs_quote_colors_dialog_create(void)
2706 GtkWidget *quotelevel1_label;
2707 GtkWidget *quotelevel2_label;
2708 GtkWidget *quotelevel3_label;
2709 GtkWidget *uri_label;
2710 GtkWidget *signature_label;
2711 GtkWidget *tgt_folder_label;
2714 GtkWidget *recycle_colors_btn;
2715 GtkWidget *frame_colors;
2717 window = gtk_window_new(GTK_WINDOW_DIALOG);
2718 gtk_container_set_border_width(GTK_CONTAINER(window), 2);
2719 gtk_window_set_title(GTK_WINDOW(window), _("Set message colors"));
2720 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
2721 gtk_window_set_modal(GTK_WINDOW(window), TRUE);
2722 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
2724 vbox = gtk_vbox_new (FALSE, VSPACING);
2725 gtk_container_add (GTK_CONTAINER (window), vbox);
2726 gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
2727 PACK_FRAME(vbox, frame_colors, _("Colors"));
2729 table = gtk_table_new (5, 2, FALSE);
2730 gtk_container_add (GTK_CONTAINER (frame_colors), table);
2731 gtk_container_set_border_width (GTK_CONTAINER (table), 8);
2732 gtk_table_set_row_spacings (GTK_TABLE (table), 2);
2733 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
2736 color_buttons.quote_level1_btn = gtk_button_new();
2737 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level1_btn,
2738 0, 1, 0, 1, 0, 0, 0, 0);
2739 gtk_widget_set_usize (color_buttons.quote_level1_btn, 40, 30);
2740 gtk_container_set_border_width
2741 (GTK_CONTAINER (color_buttons.quote_level1_btn), 5);
2743 color_buttons.quote_level2_btn = gtk_button_new();
2744 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level2_btn,
2745 0, 1, 1, 2, 0, 0, 0, 0);
2746 gtk_widget_set_usize (color_buttons.quote_level2_btn, 40, 30);
2747 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.quote_level2_btn), 5);
2749 color_buttons.quote_level3_btn = gtk_button_new_with_label ("");
2750 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level3_btn,
2751 0, 1, 2, 3, 0, 0, 0, 0);
2752 gtk_widget_set_usize (color_buttons.quote_level3_btn, 40, 30);
2753 gtk_container_set_border_width
2754 (GTK_CONTAINER (color_buttons.quote_level3_btn), 5);
2756 color_buttons.uri_btn = gtk_button_new_with_label ("");
2757 gtk_table_attach (GTK_TABLE (table), color_buttons.uri_btn,
2758 0, 1, 3, 4, 0, 0, 0, 0);
2759 gtk_widget_set_usize (color_buttons.uri_btn, 40, 30);
2760 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.uri_btn), 5);
2762 color_buttons.tgt_folder_btn = gtk_button_new_with_label ("");
2763 gtk_table_attach (GTK_TABLE (table), color_buttons.tgt_folder_btn,
2764 0, 1, 4, 5, 0, 0, 0, 0);
2765 gtk_widget_set_usize (color_buttons.tgt_folder_btn, 40, 30);
2766 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.tgt_folder_btn), 5);
2768 color_buttons.signature_btn = gtk_button_new_with_label ("");
2769 gtk_table_attach (GTK_TABLE (table), color_buttons.signature_btn,
2770 0, 1, 5, 6, 0, 0, 0, 0);
2771 gtk_widget_set_usize (color_buttons.signature_btn, 40, 30);
2772 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.signature_btn), 5);
2774 quotelevel1_label = gtk_label_new (_("Quoted Text - First Level"));
2775 gtk_table_attach (GTK_TABLE (table), quotelevel1_label, 1, 2, 0, 1,
2776 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2777 gtk_label_set_justify (GTK_LABEL (quotelevel1_label), GTK_JUSTIFY_LEFT);
2778 gtk_misc_set_alignment (GTK_MISC (quotelevel1_label), 0, 0.5);
2780 quotelevel2_label = gtk_label_new (_("Quoted Text - Second Level"));
2781 gtk_table_attach (GTK_TABLE (table), quotelevel2_label, 1, 2, 1, 2,
2782 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2783 gtk_label_set_justify (GTK_LABEL (quotelevel2_label), GTK_JUSTIFY_LEFT);
2784 gtk_misc_set_alignment (GTK_MISC (quotelevel2_label), 0, 0.5);
2786 quotelevel3_label = gtk_label_new (_("Quoted Text - Third Level"));
2787 gtk_table_attach (GTK_TABLE (table), quotelevel3_label, 1, 2, 2, 3,
2788 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2789 gtk_label_set_justify (GTK_LABEL (quotelevel3_label), GTK_JUSTIFY_LEFT);
2790 gtk_misc_set_alignment (GTK_MISC (quotelevel3_label), 0, 0.5);
2792 uri_label = gtk_label_new (_("URI link"));
2793 gtk_table_attach (GTK_TABLE (table), uri_label, 1, 2, 3, 4,
2794 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2795 gtk_label_set_justify (GTK_LABEL (uri_label), GTK_JUSTIFY_LEFT);
2796 gtk_misc_set_alignment (GTK_MISC (uri_label), 0, 0.5);
2798 tgt_folder_label = gtk_label_new (_("Target folder"));
2799 gtk_table_attach (GTK_TABLE (table), tgt_folder_label, 1, 2, 4, 5,
2800 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2801 gtk_label_set_justify (GTK_LABEL (tgt_folder_label), GTK_JUSTIFY_LEFT);
2802 gtk_misc_set_alignment (GTK_MISC (tgt_folder_label), 0, 0.5);
2804 signature_label = gtk_label_new (_("Signatures"));
2805 gtk_table_attach (GTK_TABLE (table), signature_label, 1, 2, 5, 6,
2806 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2807 gtk_label_set_justify (GTK_LABEL (signature_label), GTK_JUSTIFY_LEFT);
2808 gtk_misc_set_alignment (GTK_MISC (signature_label), 0, 0.5);
2810 PACK_CHECK_BUTTON (vbox, recycle_colors_btn,
2811 _("Recycle quote colors"));
2813 gtkut_button_set_create(&hbbox, &ok_btn, _("OK"),
2814 NULL, NULL, NULL, NULL);
2815 gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
2817 gtk_widget_grab_default(ok_btn);
2818 MANAGE_WINDOW_SIGNALS_CONNECT(window);
2819 gtk_signal_connect(GTK_OBJECT(window), "delete_event",
2820 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
2821 gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
2822 GTK_SIGNAL_FUNC(prefs_quote_colors_key_pressed),
2825 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level1_btn), "clicked",
2826 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL1");
2827 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level2_btn), "clicked",
2828 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL2");
2829 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level3_btn), "clicked",
2830 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL3");
2831 gtk_signal_connect(GTK_OBJECT(color_buttons.uri_btn), "clicked",
2832 GTK_SIGNAL_FUNC(quote_color_set_dialog), "URI");
2833 gtk_signal_connect(GTK_OBJECT(color_buttons.tgt_folder_btn), "clicked",
2834 GTK_SIGNAL_FUNC(quote_color_set_dialog), "TGTFLD");
2835 gtk_signal_connect(GTK_OBJECT(color_buttons.signature_btn), "clicked",
2836 GTK_SIGNAL_FUNC(quote_color_set_dialog), "SIGNATURE");
2837 gtk_signal_connect(GTK_OBJECT(recycle_colors_btn), "toggled",
2838 GTK_SIGNAL_FUNC(prefs_recycle_colors_toggled), NULL);
2839 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2840 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
2842 /* show message button colors and recycle options */
2843 set_button_bg_color(color_buttons.quote_level1_btn,
2844 prefs_common.quote_level1_col);
2845 set_button_bg_color(color_buttons.quote_level2_btn,
2846 prefs_common.quote_level2_col);
2847 set_button_bg_color(color_buttons.quote_level3_btn,
2848 prefs_common.quote_level3_col);
2849 set_button_bg_color(color_buttons.uri_btn,
2850 prefs_common.uri_col);
2851 set_button_bg_color(color_buttons.tgt_folder_btn,
2852 prefs_common.tgt_folder_col);
2853 set_button_bg_color(color_buttons.signature_btn,
2854 prefs_common.signature_col);
2855 gtk_toggle_button_set_active((GtkToggleButton *)recycle_colors_btn,
2856 prefs_common.recycle_quote_colors);
2858 gtk_widget_show_all(vbox);
2859 quote_color_win = window;
2862 static void prefs_quote_colors_key_pressed(GtkWidget *widget,
2863 GdkEventKey *event, gpointer data)
2865 if (event && event->keyval == GDK_Escape)
2869 static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
2871 gchar *type = (gchar *)data;
2872 gchar *title = NULL;
2873 gdouble color[4] = {0.0, 0.0, 0.0, 0.0};
2875 GtkColorSelectionDialog *dialog;
2877 if(g_strcasecmp(type, "LEVEL1") == 0) {
2878 title = _("Pick color for quotation level 1");
2879 rgbvalue = prefs_common.quote_level1_col;
2880 } else if(g_strcasecmp(type, "LEVEL2") == 0) {
2881 title = _("Pick color for quotation level 2");
2882 rgbvalue = prefs_common.quote_level2_col;
2883 } else if(g_strcasecmp(type, "LEVEL3") == 0) {
2884 title = _("Pick color for quotation level 3");
2885 rgbvalue = prefs_common.quote_level3_col;
2886 } else if(g_strcasecmp(type, "URI") == 0) {
2887 title = _("Pick color for URI");
2888 rgbvalue = prefs_common.uri_col;
2889 } else if(g_strcasecmp(type, "TGTFLD") == 0) {
2890 title = _("Pick color for target folder");
2891 rgbvalue = prefs_common.tgt_folder_col;
2892 } else if(g_strcasecmp(type, "SIGNATURE") == 0) {
2893 title = _("Pick color for signatures");
2894 rgbvalue = prefs_common.signature_col;
2895 } else { /* Should never be called */
2896 g_warning("Unrecognized datatype '%s' in quote_color_set_dialog\n", type);
2900 color_dialog = gtk_color_selection_dialog_new(title);
2901 gtk_window_set_position(GTK_WINDOW(color_dialog), GTK_WIN_POS_CENTER);
2902 gtk_window_set_modal(GTK_WINDOW(color_dialog), TRUE);
2903 gtk_window_set_policy(GTK_WINDOW(color_dialog), FALSE, FALSE, FALSE);
2904 manage_window_set_transient(GTK_WINDOW(color_dialog));
2906 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->ok_button),
2907 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_ok), data);
2908 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->cancel_button),
2909 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_cancel), data);
2910 gtk_signal_connect(GTK_OBJECT(color_dialog), "key_press_event",
2911 GTK_SIGNAL_FUNC(quote_colors_set_dialog_key_pressed),
2914 /* preselect the previous color in the color selection dialog */
2915 color[0] = (gdouble) ((rgbvalue & 0xff0000) >> 16) / 255.0;
2916 color[1] = (gdouble) ((rgbvalue & 0x00ff00) >> 8) / 255.0;
2917 color[2] = (gdouble) (rgbvalue & 0x0000ff) / 255.0;
2918 dialog = GTK_COLOR_SELECTION_DIALOG(color_dialog);
2919 gtk_color_selection_set_color
2920 (GTK_COLOR_SELECTION(dialog->colorsel), color);
2922 gtk_widget_show(color_dialog);
2925 static void quote_colors_set_dialog_ok(GtkWidget *widget, gpointer data)
2927 GtkColorSelection *colorsel = (GtkColorSelection *)
2928 ((GtkColorSelectionDialog *)color_dialog)->colorsel;
2930 gint red, green, blue, rgbvalue;
2931 gchar *type = (gchar *)data;
2933 gtk_color_selection_get_color(colorsel, color);
2935 red = (gint) (color[0] * 255.0);
2936 green = (gint) (color[1] * 255.0);
2937 blue = (gint) (color[2] * 255.0);
2938 rgbvalue = (gint) ((red * 0x10000) | (green * 0x100) | blue);
2941 fprintf(stderr, "redc = %f, greenc = %f, bluec = %f\n", color[0], color[1], color[2]);
2942 fprintf(stderr, "red = %d, green = %d, blue = %d\n", red, green, blue);
2943 fprintf(stderr, "Color is %x\n", rgbvalue);
2946 if (g_strcasecmp(type, "LEVEL1") == 0) {
2947 prefs_common.quote_level1_col = rgbvalue;
2948 set_button_bg_color(color_buttons.quote_level1_btn, rgbvalue);
2949 } else if (g_strcasecmp(type, "LEVEL2") == 0) {
2950 prefs_common.quote_level2_col = rgbvalue;
2951 set_button_bg_color(color_buttons.quote_level2_btn, rgbvalue);
2952 } else if (g_strcasecmp(type, "LEVEL3") == 0) {
2953 prefs_common.quote_level3_col = rgbvalue;
2954 set_button_bg_color(color_buttons.quote_level3_btn, rgbvalue);
2955 } else if (g_strcasecmp(type, "URI") == 0) {
2956 prefs_common.uri_col = rgbvalue;
2957 set_button_bg_color(color_buttons.uri_btn, rgbvalue);
2958 } else if (g_strcasecmp(type, "TGTFLD") == 0) {
2959 prefs_common.tgt_folder_col = rgbvalue;
2960 set_button_bg_color(color_buttons.tgt_folder_btn, rgbvalue);
2961 folderview_set_target_folder_color(prefs_common.tgt_folder_col);
2962 } else if (g_strcasecmp(type, "SIGNATURE") == 0) {
2963 prefs_common.signature_col = rgbvalue;
2964 set_button_bg_color(color_buttons.signature_btn, rgbvalue);
2966 fprintf( stderr, "Unrecognized datatype '%s' in quote_color_set_dialog_ok\n", type );
2968 gtk_widget_destroy(color_dialog);
2971 static void quote_colors_set_dialog_cancel(GtkWidget *widget, gpointer data)
2973 gtk_widget_destroy(color_dialog);
2976 static void quote_colors_set_dialog_key_pressed(GtkWidget *widget,
2980 gtk_widget_destroy(color_dialog);
2983 static void set_button_bg_color(GtkWidget *widget, gint rgbvalue)
2988 gtkut_convert_int_to_gdk_color(rgbvalue, &color);
2989 newstyle = gtk_style_copy(gtk_widget_get_default_style());
2990 newstyle->bg[GTK_STATE_NORMAL] = color;
2991 newstyle->bg[GTK_STATE_PRELIGHT] = color;
2992 newstyle->bg[GTK_STATE_ACTIVE] = color;
2994 gtk_widget_set_style(GTK_WIDGET(widget), newstyle);
2997 static void prefs_enable_message_color_toggled(void)
3001 is_active = gtk_toggle_button_get_active
3002 (GTK_TOGGLE_BUTTON(message.chkbtn_enablecol));
3003 gtk_widget_set_sensitive(message.button_edit_col, is_active);
3004 prefs_common.enable_color = is_active;
3007 static void prefs_recycle_colors_toggled(GtkWidget *widget)
3011 is_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
3012 prefs_common.recycle_quote_colors = is_active;
3015 static void prefs_keybind_select(void)
3022 GtkWidget *confirm_area;
3024 GtkWidget *cancel_btn;
3026 window = gtk_window_new (GTK_WINDOW_DIALOG);
3027 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
3028 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
3029 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
3030 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
3031 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
3032 manage_window_set_transient (GTK_WINDOW (window));
3034 vbox1 = gtk_vbox_new (FALSE, VSPACING);
3035 gtk_container_add (GTK_CONTAINER (window), vbox1);
3036 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
3038 hbox1 = gtk_hbox_new (FALSE, 8);
3039 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3041 label = gtk_label_new
3042 (_("Select preset:"));
3043 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3044 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3046 hbox1 = gtk_hbox_new (FALSE, 8);
3047 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3049 combo = gtk_combo_new ();
3050 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
3051 gtkut_combo_set_items (GTK_COMBO (combo),
3057 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
3059 hbox1 = gtk_hbox_new (FALSE, 8);
3060 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3062 label = gtk_label_new
3063 (_("You can also modify each menu shortcut by pressing\n"
3064 "any key(s) when placing the mouse pointer on the item."));
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 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
3072 &cancel_btn, _("Cancel"), NULL, NULL);
3073 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
3074 gtk_widget_grab_default (ok_btn);
3076 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3077 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3078 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
3079 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
3080 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
3081 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
3082 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
3084 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
3085 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
3088 gtk_widget_show_all(window);
3090 keybind.window = window;
3091 keybind.combo = combo;
3094 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
3097 if (event && event->keyval == GDK_Escape)
3098 prefs_keybind_cancel();
3101 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
3104 prefs_keybind_cancel();
3108 static void prefs_keybind_cancel(void)
3110 gtk_widget_destroy(keybind.window);
3111 keybind.window = NULL;
3112 keybind.combo = NULL;
3115 static void prefs_keybind_apply_clicked(GtkWidget *widget)
3117 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
3121 static gchar *default_menurc =
3122 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3123 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
3124 "(menu-path \"<Main>/File/Print...\" \"\")\n"
3125 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
3127 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3128 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3129 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3130 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
3132 "(menu-path \"<Main>/View/Expand Summary View\" \"V\")\n"
3133 "(menu-path \"<Main>/View/Expand Message View\" \"<shift>V\")\n"
3134 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3135 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3136 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3137 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3138 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3139 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3140 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3141 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3142 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3143 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3145 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
3146 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
3147 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
3148 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3149 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><control>R\")\n"
3150 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3151 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3152 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
3153 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
3154 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3155 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
3156 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
3157 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3158 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3159 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3160 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3162 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3163 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3164 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3166 "(menu-path \"<Compose>/File/Close\" \"<control>W\")\n"
3167 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
3168 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
3169 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
3170 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
3171 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
3172 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
3174 static gchar *mew_wl_menurc =
3175 "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
3176 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
3177 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
3178 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
3180 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3181 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3182 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3183 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3185 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3186 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3187 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
3188 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3189 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3190 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3191 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3192 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3193 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3194 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3195 "(menu-path \"<Main>/View/Show all headers\" \"<shift>H\")\n"
3196 "(menu-path \"<Main>/View/Update\" \"<shift>S\")\n"
3198 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
3199 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
3200 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
3201 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3202 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift>A\")\n"
3203 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3204 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3205 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3206 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
3207 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
3208 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
3209 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3210 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3211 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3212 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3213 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
3215 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3216 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3217 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3219 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3220 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3221 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3222 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3223 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3224 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3225 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3227 static gchar *mutt_menurc =
3228 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3229 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
3230 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
3231 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
3233 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3234 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3235 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3236 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
3238 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
3239 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3240 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
3241 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
3242 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
3243 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
3244 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
3245 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3246 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3247 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3248 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3250 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
3251 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
3252 "(menu-path \"<Main>/Message/Compose an email message\" \"M\")\n"
3253 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
3254 "(menu-path \"<Main>/Message/Reply to/all\" \"G\")\n"
3255 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3256 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3257 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3258 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
3259 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3260 "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
3261 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3262 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
3263 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3264 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
3265 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3267 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3268 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3269 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3271 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3272 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3273 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3274 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3275 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3276 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3277 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3279 static gchar *old_sylpheed_menurc =
3280 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3281 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
3282 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
3283 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
3285 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3286 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3287 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3288 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3290 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3291 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3292 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3293 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3294 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3295 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3296 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3297 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
3298 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
3299 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3300 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3301 "(menu-path \"<Main>/View/Update\" \"<alt>U\")\n"
3303 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<alt>I\")\n"
3304 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><alt>I\")\n"
3305 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
3306 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
3307 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><alt>R\")\n"
3308 "(menu-path \"<Main>/Message/Reply to/sender\" \"<control><alt>R\")\n"
3309 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3310 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
3311 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
3312 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
3313 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
3314 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
3315 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3316 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3317 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3318 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3320 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
3321 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
3322 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
3324 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3325 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3326 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3327 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3328 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3329 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3330 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3332 text = gtk_entry_get_text(entry);
3334 if (!strcmp(text, _("Default")))
3335 rc_str = default_menurc;
3336 else if (!strcmp(text, "Mew / Wanderlust"))
3337 rc_str = mew_wl_menurc;
3338 else if (!strcmp(text, "Mutt"))
3339 rc_str = mutt_menurc;
3340 else if (!strcmp(text, _("Old Sylpheed")))
3341 rc_str = old_sylpheed_menurc;
3345 menu_factory_clear_rc(rc_str);
3346 gtk_item_factory_parse_rc_string(rc_str);
3348 gtk_widget_destroy(keybind.window);
3349 keybind.window = NULL;
3350 keybind.combo = NULL;
3353 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
3356 GtkWidget *menuitem;
3359 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3360 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3361 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
3362 g_free(*((gchar **)pparam->data));
3363 *((gchar **)pparam->data) = g_strdup(charset);
3366 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
3368 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3371 g_return_if_fail(optmenu != NULL);
3372 g_return_if_fail(*((gchar **)pparam->data) != NULL);
3374 index = menu_find_option_menu_index(optmenu, *((gchar **)pparam->data),
3375 (GCompareFunc)strcmp);
3377 gtk_option_menu_set_history(optmenu, index);
3379 gtk_option_menu_set_history(optmenu, 0);
3380 prefs_common_charset_set_data_from_optmenu(pparam);
3384 static void prefs_common_encoding_set_data_from_optmenu(PrefParam *pparam)
3387 GtkWidget *menuitem;
3389 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3390 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3391 *((TransferEncodingMethod *)pparam->data) = GPOINTER_TO_INT
3392 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3395 static void prefs_common_encoding_set_optmenu(PrefParam *pparam)
3397 TransferEncodingMethod method =
3398 *((TransferEncodingMethod *)pparam->data);
3399 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3402 g_return_if_fail(optmenu != NULL);
3404 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(method),
3407 gtk_option_menu_set_history(optmenu, index);
3409 gtk_option_menu_set_history(optmenu, 0);
3410 prefs_common_encoding_set_data_from_optmenu(pparam);
3414 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
3417 GtkWidget *menuitem;
3419 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3420 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3421 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
3422 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3425 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
3427 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
3428 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3430 GtkWidget *menuitem;
3433 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(mode),
3436 gtk_option_menu_set_history(optmenu, index);
3438 gtk_option_menu_set_history(optmenu, 0);
3439 prefs_common_recv_dialog_set_data_from_optmenu(pparam);
3442 menu = gtk_option_menu_get_menu(optmenu);
3443 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3444 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3447 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam)
3450 GtkWidget *menuitem;
3452 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3453 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3454 *((SendDialogMode *)pparam->data) = GPOINTER_TO_INT
3455 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3458 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam)
3460 SendDialogMode mode = *((SendDialogMode *)pparam->data);
3461 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3463 GtkWidget *menuitem;
3466 case SEND_DIALOG_ALWAYS:
3467 gtk_option_menu_set_history(optmenu, 0);
3469 case SEND_DIALOG_NEVER:
3470 gtk_option_menu_set_history(optmenu, 1);
3476 menu = gtk_option_menu_get_menu(optmenu);
3477 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3478 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3481 static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
3484 prefs_common_cancel();
3488 static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
3491 if (event && event->keyval == GDK_Escape)
3492 prefs_common_cancel();
3495 static void prefs_common_ok(void)
3497 prefs_common_apply();
3498 gtk_widget_hide(dialog.window);
3503 static void prefs_common_apply(void)
3505 MainWindow *mainwindow;
3507 prefs_set_data_from_dialog(param);
3508 sock_set_io_timeout(prefs_common.io_timeout_secs);
3509 main_window_reflect_prefs_all_real(FALSE);
3510 prefs_common_save_config();
3512 mainwindow = mainwindow_get_mainwindow();
3513 log_window_set_clipping(mainwindow->logwin, prefs_common.cliplog,
3514 prefs_common.loglength);
3516 inc_autocheck_timer_remove();
3517 inc_autocheck_timer_set();
3520 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
3523 GtkWidget *menuitem;
3525 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3526 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3527 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
3528 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3531 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
3533 NextUnreadMsgDialogShow dialog_show;
3534 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3536 GtkWidget *menuitem;
3538 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
3540 switch (dialog_show) {
3541 case NEXTUNREADMSGDIALOG_ALWAYS:
3542 gtk_option_menu_set_history(optmenu, 0);
3544 case NEXTUNREADMSGDIALOG_ASSUME_YES:
3545 gtk_option_menu_set_history(optmenu, 1);
3547 case NEXTUNREADMSGDIALOG_ASSUME_NO:
3548 gtk_option_menu_set_history(optmenu, 2);
3552 menu = gtk_option_menu_get_menu(optmenu);
3553 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3554 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3557 static void prefs_common_cancel(void)
3559 gtk_widget_hide(dialog.window);
3564 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
3567 GtkWidget *menuitem;
3569 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3570 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3571 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
3572 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3575 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
3577 RecvDialogShow dialog_show;
3578 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3580 GtkWidget *menuitem;
3582 dialog_show = *((RecvDialogShow *)pparam->data);
3584 switch (dialog_show) {
3585 case RECVDIALOG_ALWAYS:
3586 gtk_option_menu_set_history(optmenu, 0);
3588 case RECVDIALOG_WINDOW_ACTIVE:
3589 gtk_option_menu_set_history(optmenu, 1);
3591 case RECVDIALOG_NEVER:
3592 gtk_option_menu_set_history(optmenu, 2);
3597 menu = gtk_option_menu_get_menu(optmenu);
3598 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3599 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));