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 *optmenu_senddialog;
90 GtkWidget *optmenu_charset;
91 GtkWidget *optmenu_encoding_method;
94 static struct Compose {
95 GtkWidget *entry_fw_quotemark;
96 GtkWidget *text_fw_quotefmt;
98 GtkWidget *checkbtn_autoextedit;
99 GtkWidget *spinbtn_undolevel;
100 GtkObject *spinbtn_undolevel_adj;
101 GtkWidget *spinbtn_linewrap;
102 GtkObject *spinbtn_linewrap_adj;
103 GtkWidget *checkbtn_wrapquote;
104 GtkWidget *checkbtn_autowrap;
105 GtkWidget *checkbtn_wrapatsend;
107 GtkWidget *checkbtn_reply_account_autosel;
108 GtkWidget *checkbtn_forward_account_autosel;
109 GtkWidget *checkbtn_reedit_account_autosel;
110 GtkWidget *checkbtn_quote;
111 GtkWidget *checkbtn_default_reply_list;
112 GtkWidget *checkbtn_forward_as_attachment;
113 GtkWidget *checkbtn_redirect_keep_from;
114 GtkWidget *checkbtn_smart_wrapping;
115 GtkWidget *checkbtn_block_cursor;
116 GtkWidget *checkbtn_reply_with_quote;
118 GtkWidget *checkbtn_autosave;
119 GtkWidget *entry_autosave_length;
122 static struct Quote {
123 GtkWidget *entry_quotemark;
124 GtkWidget *text_quotefmt;
126 GtkWidget *entry_fw_quotemark;
127 GtkWidget *text_fw_quotefmt;
129 GtkWidget *entry_quote_chars;
132 static struct Display {
133 GtkWidget *chkbtn_folder_unread;
134 GtkWidget *entry_ng_abbrev_len;
135 GtkWidget *spinbtn_ng_abbrev_len;
136 GtkObject *spinbtn_ng_abbrev_len_adj;
138 GtkWidget *chkbtn_transhdr;
140 GtkWidget *chkbtn_swapfrom;
141 GtkWidget *chkbtn_useaddrbook;
142 GtkWidget *chkbtn_threadsubj;
143 GtkWidget *entry_datefmt;
146 static struct Message {
147 GtkWidget *chkbtn_enablecol;
148 GtkWidget *button_edit_col;
149 GtkWidget *chkbtn_mbalnum;
150 GtkWidget *chkbtn_disphdrpane;
151 GtkWidget *chkbtn_disphdr;
152 GtkWidget *spinbtn_linespc;
153 GtkObject *spinbtn_linespc_adj;
154 GtkWidget *chkbtn_headspc;
156 GtkWidget *chkbtn_smoothscroll;
157 GtkWidget *spinbtn_scrollstep;
158 GtkObject *spinbtn_scrollstep_adj;
159 GtkWidget *chkbtn_halfpage;
161 GtkWidget *chkbtn_attach_desc;
165 static struct Privacy {
166 GtkWidget *checkbtn_auto_check_signatures;
167 GtkWidget *checkbtn_store_passphrase;
168 GtkWidget *spinbtn_store_passphrase;
169 GtkObject *spinbtn_store_passphrase_adj;
170 GtkWidget *checkbtn_passphrase_grab;
171 GtkWidget *checkbtn_gpg_warning;
175 static struct Interface {
176 /* GtkWidget *checkbtn_emacs; */
177 GtkWidget *checkbtn_always_show_msg;
178 GtkWidget *checkbtn_openunread;
179 GtkWidget *checkbtn_mark_as_read_on_newwin;
180 GtkWidget *checkbtn_openinbox;
181 GtkWidget *checkbtn_immedexec;
182 GtkWidget *optmenu_nextunreadmsgdialog;
185 static struct Other {
186 GtkWidget *checkbtn_addaddrbyclick;
187 GtkWidget *checkbtn_confonexit;
188 GtkWidget *checkbtn_cleanonexit;
189 GtkWidget *checkbtn_askonclean;
190 GtkWidget *checkbtn_warnqueued;
191 GtkWidget *checkbtn_cliplog;
192 GtkWidget *loglength_entry;
195 GtkWidget *checkbtn_ssl_ask_unknown_valid;
199 GtkWidget *spinbtn_iotimeout;
200 GtkObject *spinbtn_iotimeout_adj;
203 static struct MessageColorButtons {
204 GtkWidget *quote_level1_btn;
205 GtkWidget *quote_level2_btn;
206 GtkWidget *quote_level3_btn;
208 GtkWidget *tgt_folder_btn;
209 GtkWidget *signature_btn;
212 static struct KeybindDialog {
217 static GtkWidget *quote_color_win;
218 static GtkWidget *color_dialog;
220 static void prefs_common_charset_set_data_from_optmenu (PrefParam *pparam);
221 static void prefs_common_charset_set_optmenu (PrefParam *pparam);
222 static void prefs_common_encoding_set_data_from_optmenu (PrefParam *pparam);
223 static void prefs_common_encoding_set_optmenu (PrefParam *pparam);
224 static void prefs_common_recv_dialog_set_data_from_optmenu (PrefParam *pparam);
225 static void prefs_common_recv_dialog_set_optmenu (PrefParam *pparam);
226 static void prefs_common_recv_dialog_newmail_notify_toggle_cb (GtkWidget *w,
228 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam);
229 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam);
230 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam);
231 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam);
232 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam);
233 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam);
236 parameter name, default value, pointer to the prefs variable, data type,
237 pointer to the widget pointer,
238 pointer to the function for data setting,
239 pointer to the function for widget setting
242 static PrefParam param[] = {
244 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
245 &receive.checkbtn_incext,
246 prefs_set_data_from_toggle, prefs_set_toggle},
247 {"ext_inc_path", DEFAULT_INC_PATH, &prefs_common.extinc_cmd, P_STRING,
248 &receive.entry_incext,
249 prefs_set_data_from_entry, prefs_set_entry},
251 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
252 &receive.checkbtn_autochk,
253 prefs_set_data_from_toggle, prefs_set_toggle},
254 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
255 &receive.spinbtn_autochk,
256 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
257 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
258 &receive.checkbtn_chkonstartup,
259 prefs_set_data_from_toggle, prefs_set_toggle},
260 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
261 P_BOOL, &receive.checkbtn_scan_after_inc,
262 prefs_set_data_from_toggle, prefs_set_toggle},
263 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
264 P_BOOL, &receive.checkbtn_newmail_manu,
265 prefs_set_data_from_toggle, prefs_set_toggle},
266 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
267 P_BOOL, &receive.checkbtn_newmail_auto,
268 prefs_set_data_from_toggle, prefs_set_toggle},
269 {"newmail_notify_cmd", "", &prefs_common.newmail_notify_cmd, P_STRING,
270 &receive.entry_newmail_notify_cmd,
271 prefs_set_data_from_entry, prefs_set_entry},
272 {"receive_dialog_mode", "1", &prefs_common.recv_dialog_mode, P_ENUM,
273 &receive.optmenu_recvdialog,
274 prefs_common_recv_dialog_set_data_from_optmenu,
275 prefs_common_recv_dialog_set_optmenu},
276 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
277 P_BOOL, &receive.checkbtn_no_recv_err_panel,
278 prefs_set_data_from_toggle, prefs_set_toggle},
279 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
280 P_BOOL, &receive.checkbtn_close_recv_dialog,
281 prefs_set_data_from_toggle, prefs_set_toggle},
284 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
285 &p_send.checkbtn_savemsg,
286 prefs_set_data_from_toggle, prefs_set_toggle},
287 {"send_dialog_mode", "0", &prefs_common.send_dialog_mode, P_ENUM,
288 &p_send.optmenu_senddialog,
289 prefs_common_send_dialog_set_data_from_optmenu,
290 prefs_common_send_dialog_set_optmenu},
292 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
293 &p_send.optmenu_charset,
294 prefs_common_charset_set_data_from_optmenu,
295 prefs_common_charset_set_optmenu},
296 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
297 &p_send.optmenu_encoding_method,
298 prefs_common_encoding_set_data_from_optmenu,
299 prefs_common_encoding_set_optmenu},
301 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
302 P_BOOL, NULL, NULL, NULL},
305 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
306 &compose.checkbtn_autoextedit,
307 prefs_set_data_from_toggle, prefs_set_toggle},
308 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
309 P_BOOL, &compose.checkbtn_forward_as_attachment,
310 prefs_set_data_from_toggle, prefs_set_toggle},
311 {"redirect_keep_from", "FALSE",
312 &prefs_common.redirect_keep_from, P_BOOL,
313 &compose.checkbtn_redirect_keep_from,
314 prefs_set_data_from_toggle, prefs_set_toggle},
315 {"undo_level", "50", &prefs_common.undolevels, P_INT,
316 &compose.spinbtn_undolevel,
317 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
318 {"block_cursor", "FALSE", &prefs_common.block_cursor,
319 P_BOOL, &compose.checkbtn_block_cursor,
320 prefs_set_data_from_toggle, prefs_set_toggle},
322 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
323 &compose.spinbtn_linewrap,
324 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
325 {"linewrap_quotation", "FALSE", &prefs_common.linewrap_quote, P_BOOL,
326 &compose.checkbtn_wrapquote,
327 prefs_set_data_from_toggle, prefs_set_toggle},
328 {"linewrap_auto", "FALSE", &prefs_common.autowrap, P_BOOL,
329 &compose.checkbtn_autowrap,
330 prefs_set_data_from_toggle, prefs_set_toggle},
331 {"linewrap_before_sending", "FALSE",
332 &prefs_common.linewrap_at_send, P_BOOL,
333 &compose.checkbtn_wrapatsend,
334 prefs_set_data_from_toggle, prefs_set_toggle},
335 {"smart_wrapping", "TRUE", &prefs_common.smart_wrapping,
336 P_BOOL, &compose.checkbtn_smart_wrapping,
337 prefs_set_data_from_toggle, prefs_set_toggle},
338 {"autosave", "FALSE", &prefs_common.autosave,
339 P_BOOL, &compose.checkbtn_autosave,
340 prefs_set_data_from_toggle, prefs_set_toggle},
341 {"autosave_length", "50", &prefs_common.autosave_length,
342 P_INT, &compose.entry_autosave_length,
343 prefs_set_data_from_entry, prefs_set_entry},
345 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
347 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path, P_STRING,
349 {"dictionary", "", &prefs_common.dictionary, P_STRING,
351 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode, P_INT,
353 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
355 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
357 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
360 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
361 &compose.checkbtn_reply_with_quote, prefs_set_data_from_toggle, prefs_set_toggle},
363 /* Account autoselection */
364 {"reply_account_autoselect", "TRUE",
365 &prefs_common.reply_account_autosel, P_BOOL,
366 &compose.checkbtn_reply_account_autosel,
367 prefs_set_data_from_toggle, prefs_set_toggle},
368 {"forward_account_autoselect", "TRUE",
369 &prefs_common.forward_account_autosel, P_BOOL,
370 &compose.checkbtn_forward_account_autosel,
371 prefs_set_data_from_toggle, prefs_set_toggle},
372 {"reedit_account_autoselect", "TRUE",
373 &prefs_common.reedit_account_autosel, P_BOOL,
374 &compose.checkbtn_reedit_account_autosel,
375 prefs_set_data_from_toggle, prefs_set_toggle},
377 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
378 &compose.checkbtn_default_reply_list,
379 prefs_set_data_from_toggle, prefs_set_toggle},
381 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
385 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
386 "e.entry_quotemark, prefs_set_data_from_entry, prefs_set_entry},
387 {"reply_quote_format", "On %d\\n%f wrote:\\n\\n%Q",
388 &prefs_common.quotefmt, P_STRING, "e.text_quotefmt,
389 prefs_set_data_from_text, prefs_set_text},
391 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
392 "e.entry_fw_quotemark,
393 prefs_set_data_from_entry, prefs_set_entry},
394 {"forward_quote_format",
395 "\\n\\nBegin forwarded message:\\n\\n"
396 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
397 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M",
398 &prefs_common.fw_quotefmt, P_STRING, "e.text_fw_quotefmt,
399 prefs_set_data_from_text, prefs_set_text},
400 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
401 "e.entry_quote_chars, prefs_set_data_from_entry, prefs_set_entry},
404 {"widget_font", NULL, &prefs_common.widgetfont, P_STRING,
406 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
407 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
408 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
409 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
410 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
411 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
412 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
413 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
416 {"display_folder_unread_num", "TRUE",
417 &prefs_common.display_folder_unread, P_BOOL,
418 &display.chkbtn_folder_unread,
419 prefs_set_data_from_toggle, prefs_set_toggle},
420 {"newsgroup_abbrev_len", "16",
421 &prefs_common.ng_abbrev_len, P_INT,
422 &display.spinbtn_ng_abbrev_len,
423 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
425 {"translate_header", "TRUE", &prefs_common.trans_hdr, P_BOOL,
426 &display.chkbtn_transhdr,
427 prefs_set_data_from_toggle, prefs_set_toggle},
429 /* Display: Summary View */
430 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
431 &display.chkbtn_swapfrom,
432 prefs_set_data_from_toggle, prefs_set_toggle},
433 {"use_address_book", "TRUE", &prefs_common.use_addr_book, P_BOOL,
434 &display.chkbtn_useaddrbook,
435 prefs_set_data_from_toggle, prefs_set_toggle},
436 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
437 &display.chkbtn_threadsubj,
438 prefs_set_data_from_toggle, prefs_set_toggle},
439 {"date_format", "%y/%m/%d(%a) %H:%M", &prefs_common.date_format,
440 P_STRING, &display.entry_datefmt,
441 prefs_set_data_from_entry, prefs_set_entry},
443 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
445 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
447 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
448 P_INT, NULL, NULL, NULL },
450 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
452 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
454 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
456 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
459 {"folderview_vscrollbar_policy", "0",
460 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
463 {"summary_col_show_mark", "TRUE",
464 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
465 {"summary_col_show_unread", "TRUE",
466 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
467 {"summary_col_show_mime", "TRUE",
468 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
469 {"summary_col_show_subject", "TRUE",
470 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
471 {"summary_col_show_from", "TRUE",
472 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
473 {"summary_col_show_date", "TRUE",
474 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
475 {"summary_col_show_size", "TRUE",
476 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_show_number", "FALSE",
478 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
479 {"summary_col_show_score", "FALSE",
480 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
481 {"summary_col_show_locked", "FALSE",
482 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
484 {"summary_col_pos_mark", "0",
485 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
486 {"summary_col_pos_unread", "1",
487 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
488 {"summary_col_pos_mime", "2",
489 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
490 {"summary_col_pos_subject", "3",
491 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
492 {"summary_col_pos_from", "4",
493 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
494 {"summary_col_pos_date", "5",
495 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
496 {"summary_col_pos_size", "6",
497 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
498 {"summary_col_pos_number", "7",
499 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
500 {"summary_col_pos_score", "8",
501 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
502 {"summary_col_pos_locked", "9",
503 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
505 {"summary_col_size_mark", "10",
506 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
507 {"summary_col_size_unread", "13",
508 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
509 {"summary_col_size_mime", "10",
510 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
511 {"summary_col_size_subject", "200",
512 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
513 {"summary_col_size_from", "120",
514 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
515 {"summary_col_size_date", "118",
516 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
517 {"summary_col_size_size", "45",
518 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
519 {"summary_col_size_number", "40",
520 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
521 {"summary_col_size_score", "40",
522 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
523 {"summary_col_size_locked", "13",
524 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
527 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
529 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
531 {"folderview_width", "179", &prefs_common.folderview_width, P_INT,
533 {"folderview_height", "600", &prefs_common.folderview_height, P_INT,
535 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
538 {"folder_col_folder", "150", &prefs_common.folder_col_folder, P_INT,
540 {"folder_col_new", "32", &prefs_common.folder_col_new, P_INT,
542 {"folder_col_unread", "32", &prefs_common.folder_col_unread, P_INT,
544 {"folder_col_total", "32", &prefs_common.folder_col_total, P_INT,
547 {"summaryview_width", "600", &prefs_common.summaryview_width, P_INT,
549 {"summaryview_height", "173", &prefs_common.summaryview_height, P_INT,
552 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
554 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
556 {"messageview_width", "600", &prefs_common.msgview_width, P_INT,
558 {"messageview_height", "540", &prefs_common.msgview_height, P_INT,
560 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
563 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
565 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
567 {"mainview_width", "600", &prefs_common.mainview_width, P_INT,
569 {"mainview_height", "600", &prefs_common.mainview_height, P_INT,
571 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
573 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
575 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
577 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
579 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
581 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
583 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
585 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
587 {"compose_width", "600", &prefs_common.compose_width, P_INT,
589 {"compose_height", "560", &prefs_common.compose_height, P_INT,
591 {"compose_x", "0", &prefs_common.compose_x, P_INT,
593 {"compose_y", "0", &prefs_common.compose_y, P_INT,
596 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
597 &message.chkbtn_enablecol,
598 prefs_set_data_from_toggle, prefs_set_toggle},
600 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
602 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
604 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
606 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
608 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
610 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
612 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
613 P_BOOL, NULL, NULL, NULL},
615 {"convert_mb_alnum", "FALSE", &prefs_common.conv_mb_alnum, P_BOOL,
616 &message.chkbtn_mbalnum,
617 prefs_set_data_from_toggle, prefs_set_toggle},
618 {"display_header_pane", "TRUE", &prefs_common.display_header_pane,
619 P_BOOL, &message.chkbtn_disphdrpane,
620 prefs_set_data_from_toggle, prefs_set_toggle},
621 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
622 &message.chkbtn_disphdr,
623 prefs_set_data_from_toggle, prefs_set_toggle},
624 {"line_space", "2", &prefs_common.line_space, P_INT,
625 &message.spinbtn_linespc,
626 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
627 {"enable_head_space", "FALSE", &prefs_common.head_space, P_BOOL,
628 &message.chkbtn_headspc,
629 prefs_set_data_from_toggle, prefs_set_toggle},
631 {"enable_smooth_scroll", "FALSE",
632 &prefs_common.enable_smooth_scroll, P_BOOL,
633 &message.chkbtn_smoothscroll,
634 prefs_set_data_from_toggle, prefs_set_toggle},
635 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
636 &message.spinbtn_scrollstep,
637 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
638 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
639 &message.chkbtn_halfpage,
640 prefs_set_data_from_toggle, prefs_set_toggle},
642 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
645 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
646 &message.chkbtn_attach_desc,
647 prefs_set_data_from_toggle, prefs_set_toggle},
648 {"attach_save_directory", NULL,
649 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
652 {"mime_image_viewer", "display '%s'",
653 &prefs_common.mime_image_viewer, P_STRING, NULL, NULL, NULL},
654 {"mime_audio_player", "play '%s'",
655 &prefs_common.mime_audio_player, P_STRING, NULL, NULL, NULL},
656 {"mime_open_command", "gedit '%s'",
657 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
661 {"auto_check_signatures", "TRUE",
662 &prefs_common.auto_check_signatures, P_BOOL,
663 &privacy.checkbtn_auto_check_signatures,
664 prefs_set_data_from_toggle, prefs_set_toggle},
665 {"store_passphrase", "FALSE", &prefs_common.store_passphrase, P_BOOL,
666 &privacy.checkbtn_store_passphrase,
667 prefs_set_data_from_toggle, prefs_set_toggle},
668 {"store_passphrase_timeout", "0",
669 &prefs_common.store_passphrase_timeout, P_INT,
670 &privacy.spinbtn_store_passphrase,
671 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
673 {"passphrase_grab", "FALSE", &prefs_common.passphrase_grab, P_BOOL,
674 &privacy.checkbtn_passphrase_grab,
675 prefs_set_data_from_toggle, prefs_set_toggle},
676 #endif /* __MINGW32__ */
677 {"gpg_warning", "TRUE", &prefs_common.gpg_warning, P_BOOL,
678 &privacy.checkbtn_gpg_warning,
679 prefs_set_data_from_toggle, prefs_set_toggle},
680 #endif /* USE_GPGME */
683 {"separate_folder", "FALSE", &prefs_common.sep_folder, P_BOOL,
685 {"separate_message", "FALSE", &prefs_common.sep_msg, P_BOOL,
688 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
689 NULL, NULL, NULL}, */
690 {"always_show_message_when_selected", "FALSE",
691 &prefs_common.always_show_msg,
692 P_BOOL, &interface.checkbtn_always_show_msg,
693 prefs_set_data_from_toggle, prefs_set_toggle},
694 {"open_unread_on_enter", "FALSE", &prefs_common.open_unread_on_enter,
695 P_BOOL, &interface.checkbtn_openunread,
696 prefs_set_data_from_toggle, prefs_set_toggle},
697 {"mark_as_read_on_new_window", "FALSE",
698 &prefs_common.mark_as_read_on_new_window,
699 P_BOOL, &interface.checkbtn_mark_as_read_on_newwin,
700 prefs_set_data_from_toggle, prefs_set_toggle},
701 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
702 P_BOOL, &interface.checkbtn_openinbox,
703 prefs_set_data_from_toggle, prefs_set_toggle},
704 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
705 &interface.checkbtn_immedexec,
706 prefs_set_data_from_toggle, prefs_set_toggle},
707 {"nextunreadmsg_dialog", NULL, &prefs_common.next_unread_msg_dialog, P_ENUM,
708 &interface.optmenu_nextunreadmsgdialog,
709 prefs_nextunreadmsgdialog_set_data_from_optmenu,
710 prefs_nextunreadmsgdialog_set_optmenu},
712 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
713 &prefs_common.pixmap_theme_path, P_STRING,
716 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
720 {"uri_open_command", DEFAULT_BROWSER_CMD,
721 &prefs_common.uri_cmd, P_STRING, NULL, NULL, NULL},
722 {"print_command", "lpr %s", &prefs_common.print_cmd, P_STRING,
724 {"ext_editor_command", "gedit %s",
725 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
727 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
728 P_BOOL, &other.checkbtn_addaddrbyclick,
729 prefs_set_data_from_toggle, prefs_set_toggle},
731 {"confirm_on_exit", "TRUE", &prefs_common.confirm_on_exit, P_BOOL,
732 &other.checkbtn_confonexit,
733 prefs_set_data_from_toggle, prefs_set_toggle},
734 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
735 &other.checkbtn_cleanonexit,
736 prefs_set_data_from_toggle, prefs_set_toggle},
737 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
738 &other.checkbtn_askonclean,
739 prefs_set_data_from_toggle, prefs_set_toggle},
740 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
741 P_BOOL, &other.checkbtn_warnqueued,
742 prefs_set_data_from_toggle, prefs_set_toggle},
745 {"ssl_ask_unknown_valid", "TRUE", &prefs_common.ssl_ask_unknown_valid,
746 P_BOOL, &other.checkbtn_ssl_ask_unknown_valid,
747 prefs_set_data_from_toggle, prefs_set_toggle},
750 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
752 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
755 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
756 P_INT, &other.spinbtn_iotimeout,
757 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
758 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
760 {"important_score", "1", &prefs_common.important_score, P_INT,
762 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
763 &other.checkbtn_cliplog,
764 prefs_set_data_from_toggle, prefs_set_toggle},
765 {"log_length", "500", &prefs_common.loglength, P_INT,
766 &other.loglength_entry,
767 prefs_set_data_from_entry, prefs_set_entry},
769 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
771 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
774 {"color_new", "179", &prefs_common.color_new, P_COLOR,
777 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
780 /* widget creating functions */
781 static void prefs_common_create (void);
782 static void prefs_receive_create (void);
783 static void prefs_send_create (void);
784 static void prefs_compose_create (void);
785 static void prefs_quote_create (void);
786 static void prefs_display_create (void);
787 static void prefs_message_create (void);
789 static void prefs_privacy_create (void);
791 static void prefs_interface_create (void);
792 static void prefs_other_create (void);
794 static void date_format_ok_btn_clicked (GtkButton *button,
796 static void date_format_cancel_btn_clicked (GtkButton *button,
798 static void date_format_key_pressed (GtkWidget *keywidget,
801 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
804 static void date_format_entry_on_change (GtkEditable *editable,
806 static void date_format_select_row (GtkWidget *date_format_list,
809 GdkEventButton *event,
810 GtkWidget *date_format);
811 static GtkWidget *date_format_create (GtkButton *button,
814 static void prefs_quote_colors_dialog (void);
815 static void prefs_quote_colors_dialog_create (void);
816 static void prefs_quote_colors_key_pressed (GtkWidget *widget,
819 static void quote_color_set_dialog (GtkWidget *widget,
821 static void quote_colors_set_dialog_ok (GtkWidget *widget,
823 static void quote_colors_set_dialog_cancel (GtkWidget *widget,
825 static void quote_colors_set_dialog_key_pressed (GtkWidget *widget,
828 static void set_button_bg_color (GtkWidget *widget,
830 static void prefs_enable_message_color_toggled (void);
831 static void prefs_recycle_colors_toggled (GtkWidget *widget);
833 static void prefs_keybind_select (void);
834 static gint prefs_keybind_deleted (GtkWidget *widget,
837 static void prefs_keybind_key_pressed (GtkWidget *widget,
840 static void prefs_keybind_cancel (void);
841 static void prefs_keybind_apply_clicked (GtkWidget *widget);
843 static gint prefs_common_deleted (GtkWidget *widget,
846 static void prefs_common_key_pressed (GtkWidget *widget,
849 static void prefs_common_ok (void);
850 static void prefs_common_apply (void);
851 static void prefs_common_cancel (void);
853 void prefs_common_init(void)
855 prefs_common.disphdr_list = NULL;
858 PrefsCommon *prefs_common_get(void)
860 return &prefs_common;
864 * Read history list from the specified history file
866 GList *prefs_common_read_history(const gchar *history)
870 gchar buf[PREFSBUFSIZE];
873 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
875 if ((fp = fopen(path, "rb")) == NULL) {
876 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
881 while (fgets(buf, sizeof(buf), fp) != NULL) {
883 if (buf[0] == '\0') continue;
884 tmp = add_history(tmp, buf);
888 tmp = g_list_reverse(tmp);
893 void prefs_common_read_config(void)
895 prefs_read_config(param, "Common", COMMON_RC);
897 prefs_common.mime_open_cmd_history =
898 prefs_common_read_history(COMMAND_HISTORY);
899 prefs_common.summary_quicksearch_history =
900 prefs_common_read_history(QUICKSEARCH_HISTORY);
904 * Save history list to the specified history file
906 void prefs_common_save_history(const gchar *history, GList *list)
912 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
914 if ((fp = fopen(path, "wb")) == NULL) {
915 FILE_OP_ERROR(path, "fopen");
920 for (cur = list; cur != NULL; cur = cur->next) {
921 fputs((gchar *)cur->data, fp);
929 void prefs_common_save_config(void)
931 prefs_save_config(param, "Common", COMMON_RC);
933 prefs_common_save_history(COMMAND_HISTORY,
934 prefs_common.mime_open_cmd_history);
935 prefs_common_save_history(QUICKSEARCH_HISTORY,
936 prefs_common.summary_quicksearch_history);
939 void prefs_common_open(void)
941 if (prefs_rc_is_readonly(COMMON_RC))
946 if (!dialog.window) {
947 prefs_common_create();
950 manage_window_set_transient(GTK_WINDOW(dialog.window));
951 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
952 gtk_widget_grab_focus(dialog.ok_btn);
954 prefs_set_dialog(param);
956 gtk_widget_show(dialog.window);
959 static void prefs_common_create(void)
963 debug_print("Creating common preferences window...\n");
965 prefs_dialog_create(&dialog);
966 gtk_window_set_title (GTK_WINDOW(dialog.window),
967 _("Common Preferences"));
968 gtk_signal_connect (GTK_OBJECT(dialog.window), "delete_event",
969 GTK_SIGNAL_FUNC(prefs_common_deleted), NULL);
970 gtk_signal_connect (GTK_OBJECT(dialog.window), "key_press_event",
971 GTK_SIGNAL_FUNC(prefs_common_key_pressed), NULL);
972 MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
974 gtk_signal_connect (GTK_OBJECT(dialog.ok_btn), "clicked",
975 GTK_SIGNAL_FUNC(prefs_common_ok), NULL);
976 gtk_signal_connect (GTK_OBJECT(dialog.apply_btn), "clicked",
977 GTK_SIGNAL_FUNC(prefs_common_apply), NULL);
978 gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
979 GTK_SIGNAL_FUNC(prefs_common_cancel),
980 GTK_OBJECT(dialog.window));
982 /* create all widgets on notebook */
983 prefs_receive_create();
984 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
986 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
987 prefs_compose_create();
988 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
989 prefs_quote_create();
990 SET_NOTEBOOK_LABEL(dialog.notebook, _("Quote"), page++);
991 prefs_display_create();
992 SET_NOTEBOOK_LABEL(dialog.notebook, _("Display"), page++);
993 prefs_message_create();
994 SET_NOTEBOOK_LABEL(dialog.notebook, _("Message"), page++);
996 prefs_privacy_create();
997 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
999 prefs_interface_create();
1000 SET_NOTEBOOK_LABEL(dialog.notebook, _("Interface"), page++);
1001 prefs_other_create();
1002 SET_NOTEBOOK_LABEL(dialog.notebook, _("Other"), page++);
1004 gtk_widget_show_all(dialog.window);
1007 static void prefs_receive_create(void)
1011 GtkWidget *frame_incext;
1012 GtkWidget *checkbtn_incext;
1014 GtkWidget *label_incext;
1015 GtkWidget *entry_incext;
1016 /* GtkWidget *button_incext; */
1018 GtkWidget *hbox_autochk;
1019 GtkWidget *checkbtn_autochk;
1020 GtkWidget *label_autochk1;
1021 GtkObject *spinbtn_autochk_adj;
1022 GtkWidget *spinbtn_autochk;
1023 GtkWidget *label_autochk2;
1024 GtkWidget *checkbtn_chkonstartup;
1025 GtkWidget *checkbtn_scan_after_inc;
1028 GtkWidget *frame_newmail;
1029 GtkWidget *hbox_newmail_notify;
1030 GtkWidget *checkbtn_newmail_auto;
1031 GtkWidget *checkbtn_newmail_manu;
1032 GtkWidget *entry_newmail_notify_cmd;
1033 GtkWidget *label_newmail_notify_cmd;
1035 GtkWidget *hbox_recvdialog;
1036 GtkWidget *label_recvdialog;
1038 GtkWidget *menuitem;
1039 GtkWidget *optmenu_recvdialog;
1040 GtkWidget *checkbtn_no_recv_err_panel;
1041 GtkWidget *checkbtn_close_recv_dialog;
1043 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1044 gtk_widget_show (vbox1);
1045 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1046 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1048 PACK_FRAME(vbox1, frame_incext, _("External program"));
1050 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1051 gtk_widget_show (vbox2);
1052 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
1053 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1055 /* Use of external incorporation program */
1056 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
1057 _("Use external program for incorporation"));
1059 hbox = gtk_hbox_new (FALSE, 8);
1060 gtk_widget_show (hbox);
1061 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1062 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1064 label_incext = gtk_label_new (_("Command"));
1065 gtk_widget_show (label_incext);
1066 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1068 entry_incext = gtk_entry_new ();
1069 gtk_widget_show (entry_incext);
1070 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1073 button_incext = gtk_button_new_with_label ("... ");
1074 gtk_widget_show (button_incext);
1075 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1078 vbox2 = gtk_vbox_new (FALSE, 0);
1079 gtk_widget_show (vbox2);
1080 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1083 hbox_autochk = gtk_hbox_new (FALSE, 8);
1084 gtk_widget_show (hbox_autochk);
1085 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1087 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1088 _("Auto-check new mail"));
1090 label_autochk1 = gtk_label_new (_("every"));
1091 gtk_widget_show (label_autochk1);
1092 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1094 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1095 spinbtn_autochk = gtk_spin_button_new
1096 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1097 gtk_widget_show (spinbtn_autochk);
1098 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1099 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1100 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1102 label_autochk2 = gtk_label_new (_("minute(s)"));
1103 gtk_widget_show (label_autochk2);
1104 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1106 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1107 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1108 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1110 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1111 _("Check new mail on startup"));
1112 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1113 _("Update all local folders after incorporation"));
1116 /* receive dialog */
1117 hbox_recvdialog = gtk_hbox_new (FALSE, 8);
1118 gtk_widget_show (hbox_recvdialog);
1119 gtk_box_pack_start (GTK_BOX (vbox2), hbox_recvdialog, FALSE, FALSE, 0);
1121 label_recvdialog = gtk_label_new (_("Show receive dialog"));
1122 gtk_misc_set_alignment(GTK_MISC(label_recvdialog), 0, 0.5);
1123 gtk_widget_show (label_recvdialog);
1124 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), label_recvdialog, FALSE, FALSE, 0);
1126 optmenu_recvdialog = gtk_option_menu_new ();
1127 gtk_widget_show (optmenu_recvdialog);
1128 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), optmenu_recvdialog, FALSE, FALSE, 0);
1130 menu = gtk_menu_new ();
1131 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
1132 MENUITEM_ADD (menu, menuitem, _("Only on manual receiving"),
1133 RECV_DIALOG_MANUAL);
1134 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
1136 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
1138 PACK_CHECK_BUTTON (vbox2, checkbtn_no_recv_err_panel,
1139 _("Don't popup error dialog on receive error"));
1141 PACK_CHECK_BUTTON (vbox2, checkbtn_close_recv_dialog,
1142 _("Close receive dialog when finished"));
1144 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1146 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1147 gtk_widget_show (vbox2);
1148 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1149 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1151 hbox = gtk_hbox_new (TRUE, 8);
1152 gtk_widget_show (hbox);
1153 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1154 _("after autochecking"));
1155 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1156 _("after manual checking"));
1157 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1158 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1159 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1161 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1162 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1165 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1166 gtk_widget_show (hbox);
1167 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1170 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1171 "(use %d as number of new "
1173 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1175 gtk_widget_show (label_newmail_notify_cmd);
1176 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1177 label_newmail_notify_cmd, FALSE, FALSE, 0);
1179 entry_newmail_notify_cmd = gtk_entry_new ();
1180 gtk_widget_show (entry_newmail_notify_cmd);
1181 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1182 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1184 gtk_widget_set_sensitive(hbox_newmail_notify,
1185 prefs_common.newmail_notify_auto ||
1186 prefs_common.newmail_notify_manu);
1188 receive.checkbtn_incext = checkbtn_incext;
1189 receive.entry_incext = entry_incext;
1190 /* receive.button_incext = button_incext; */
1192 receive.checkbtn_autochk = checkbtn_autochk;
1193 receive.spinbtn_autochk = spinbtn_autochk;
1194 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1196 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1197 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1200 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1201 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1202 receive.hbox_newmail_notify = hbox_newmail_notify;
1203 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1204 receive.optmenu_recvdialog = optmenu_recvdialog;
1205 receive.checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
1206 receive.checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
1209 static void prefs_send_create(void)
1214 GtkWidget *checkbtn_savemsg;
1215 GtkWidget *label_outcharset;
1216 GtkWidget *optmenu_charset;
1217 GtkWidget *optmenu_menu;
1218 GtkWidget *menuitem;
1219 GtkTooltips *charset_tooltip;
1220 GtkWidget *optmenu_encoding;
1221 GtkWidget *label_encoding;
1222 GtkTooltips *encoding_tooltip;
1223 GtkWidget *label_senddialog;
1225 GtkWidget *optmenu_senddialog;
1226 GtkWidget *hbox_senddialog;
1228 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1229 gtk_widget_show (vbox1);
1230 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1231 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1233 vbox2 = gtk_vbox_new (FALSE, 0);
1234 gtk_widget_show (vbox2);
1235 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1237 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1238 _("Save sent messages to Sent folder"));
1240 hbox_senddialog = gtk_hbox_new (FALSE, 8);
1241 gtk_box_pack_start (GTK_BOX (vbox1), hbox_senddialog, FALSE, FALSE, 0);
1243 label_senddialog = gtk_label_new (_("Show send dialog"));
1244 gtk_widget_show (label_senddialog);
1245 gtk_box_pack_start (GTK_BOX (hbox_senddialog), label_senddialog, FALSE, FALSE, 0);
1247 optmenu_senddialog = gtk_option_menu_new ();
1248 gtk_widget_show (optmenu_senddialog);
1249 gtk_box_pack_start (GTK_BOX (hbox_senddialog), optmenu_senddialog, FALSE, FALSE, 0);
1251 menu = gtk_menu_new ();
1252 MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
1253 MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
1255 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
1257 hbox1 = gtk_hbox_new (FALSE, 8);
1258 gtk_widget_show (hbox1);
1259 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1261 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1262 gtk_widget_show (label_outcharset);
1263 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1265 charset_tooltip = gtk_tooltips_new();
1267 optmenu_charset = gtk_option_menu_new ();
1268 gtk_widget_show (optmenu_charset);
1269 gtk_tooltips_set_tip(GTK_TOOLTIPS(charset_tooltip), optmenu_charset,
1270 _("If `Automatic' is selected, the optimal encoding"
1271 " for the current locale will be used"),
1273 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_charset, FALSE, FALSE, 0);
1275 optmenu_menu = gtk_menu_new ();
1277 #define SET_MENUITEM(str, data) \
1279 MENUITEM_ADD(optmenu_menu, menuitem, str, data); \
1282 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1283 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1285 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1287 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1288 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1289 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1290 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1291 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1292 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1293 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1295 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1297 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1299 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1300 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1302 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1304 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1305 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1307 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1308 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1310 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1311 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1313 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1314 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1315 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1317 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_charset),
1320 hbox1 = gtk_hbox_new (FALSE, 8);
1321 gtk_widget_show (hbox1);
1322 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1324 hbox1 = gtk_hbox_new (FALSE, 8);
1325 gtk_widget_show (hbox1);
1326 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1328 label_encoding = gtk_label_new (_("Transfer encoding"));
1329 gtk_widget_show (label_encoding);
1330 gtk_box_pack_start (GTK_BOX (hbox1), label_encoding, FALSE, FALSE, 0);
1332 encoding_tooltip = gtk_tooltips_new();
1334 optmenu_encoding = gtk_option_menu_new ();
1335 gtk_widget_show (optmenu_encoding);
1336 gtk_tooltips_set_tip(GTK_TOOLTIPS(encoding_tooltip), optmenu_encoding,
1337 _("Specify Content-Transfer-Encoding used when"
1338 " message body contains non-ASCII characters"),
1340 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_encoding, FALSE, FALSE, 0);
1342 optmenu_menu = gtk_menu_new ();
1344 SET_MENUITEM(_("Automatic"), CTE_AUTO);
1345 SET_MENUITEM("base64", CTE_BASE64);
1346 SET_MENUITEM("quoted-printable", CTE_QUOTED_PRINTABLE);
1347 SET_MENUITEM("8bit", CTE_8BIT);
1349 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_encoding),
1352 hbox1 = gtk_hbox_new (FALSE, 8);
1353 gtk_widget_show (hbox1);
1354 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1356 p_send.checkbtn_savemsg = checkbtn_savemsg;
1357 p_send.optmenu_senddialog = optmenu_senddialog;
1359 p_send.optmenu_charset = optmenu_charset;
1360 p_send.optmenu_encoding_method = optmenu_encoding;
1363 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1367 toggled = gtk_toggle_button_get_active
1368 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1369 gtk_toggle_button_get_active
1370 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1371 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1374 static void prefs_compose_create(void)
1379 GtkWidget *checkbtn_autoextedit;
1381 GtkWidget *frame_autosel;
1382 GtkWidget *hbox_autosel;
1383 GtkWidget *checkbtn_reply_account_autosel;
1384 GtkWidget *checkbtn_forward_account_autosel;
1385 GtkWidget *checkbtn_reedit_account_autosel;
1387 GtkWidget *hbox_undolevel;
1388 GtkWidget *label_undolevel;
1389 GtkObject *spinbtn_undolevel_adj;
1390 GtkWidget *spinbtn_undolevel;
1392 GtkWidget *vbox_linewrap;
1397 GtkWidget *label_linewrap;
1398 GtkObject *spinbtn_linewrap_adj;
1399 GtkWidget *spinbtn_linewrap;
1400 GtkWidget *checkbtn_wrapquote;
1401 GtkWidget *checkbtn_autowrap;
1402 GtkWidget *checkbtn_wrapatsend;
1404 GtkWidget *checkbtn_default_reply_list;
1406 GtkWidget *checkbtn_forward_as_attachment;
1407 GtkWidget *checkbtn_redirect_keep_from;
1408 GtkWidget *checkbtn_smart_wrapping;
1409 GtkWidget *checkbtn_block_cursor;
1410 GtkWidget *frame_msgwrap;
1412 GtkWidget *hbox_autosave;
1413 GtkWidget *checkbtn_autosave;
1414 GtkWidget *entry_autosave_length;
1415 GtkWidget *label_autosave_length;
1417 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1418 gtk_widget_show (vbox1);
1419 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1420 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1422 /* Account autoselection */
1423 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1425 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1426 gtk_widget_show (hbox_autosel);
1427 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1428 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1430 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1431 _("when replying"));
1432 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1433 _("when forwarding"));
1434 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1435 _("when re-editing"));
1437 vbox2 = gtk_vbox_new (FALSE, 0);
1438 gtk_widget_show (vbox2);
1439 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1441 PACK_CHECK_BUTTON (vbox2, checkbtn_default_reply_list,
1442 _("Reply button invokes mailing list reply"));
1444 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1445 _("Automatically launch the external editor"));
1447 hbox5 = gtk_hbox_new (FALSE, 8);
1448 gtk_widget_show (hbox5);
1449 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1451 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1452 _("Forward as attachment"));
1454 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1457 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1458 _("Keep the original 'From' header when redirecting"));
1461 hbox_autosave = gtk_hbox_new (FALSE, 8);
1462 gtk_widget_show (hbox_autosave);
1463 gtk_box_pack_start (GTK_BOX (vbox1), hbox_autosave, FALSE, FALSE, 0);
1465 PACK_CHECK_BUTTON (hbox_autosave, checkbtn_autosave,
1466 _("Autosave to Drafts folder every "));
1468 entry_autosave_length = gtk_entry_new();
1469 gtk_widget_set_usize (entry_autosave_length, 64, -1);
1470 gtk_widget_show (entry_autosave_length);
1471 gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
1473 label_autosave_length = gtk_label_new(_("characters"));
1474 gtk_widget_show (label_autosave_length);
1475 gtk_box_pack_start (GTK_BOX (hbox_autosave), label_autosave_length, FALSE, FALSE, 0);
1477 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1478 gtk_widget_show (hbox_undolevel);
1479 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1481 label_undolevel = gtk_label_new (_("Undo level"));
1482 gtk_widget_show (label_undolevel);
1483 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1485 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1486 spinbtn_undolevel = gtk_spin_button_new
1487 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1488 gtk_widget_show (spinbtn_undolevel);
1489 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1490 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1491 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1494 PACK_FRAME(vbox1, frame_msgwrap, _("Message wrapping"));
1496 vbox_linewrap = gtk_vbox_new (FALSE, VSPACING_NARROW);
1497 gtk_widget_show (vbox_linewrap);
1498 gtk_container_add (GTK_CONTAINER (frame_msgwrap), vbox_linewrap);
1499 gtk_container_set_border_width (GTK_CONTAINER (vbox_linewrap), 8);
1501 hbox3 = gtk_hbox_new (FALSE, 8);
1502 gtk_widget_show (hbox3);
1503 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox3, FALSE, FALSE, 0);
1506 label_linewrap = gtk_label_new (_("Wrap messages at"));
1507 gtk_widget_show (label_linewrap);
1508 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1510 spinbtn_linewrap_adj = gtk_adjustment_new (72, 20, 1024, 1, 10, 10);
1511 spinbtn_linewrap = gtk_spin_button_new
1512 (GTK_ADJUSTMENT (spinbtn_linewrap_adj), 1, 0);
1513 gtk_widget_show (spinbtn_linewrap);
1514 gtk_box_pack_start (GTK_BOX (hbox3), spinbtn_linewrap, FALSE, FALSE, 0);
1515 gtk_widget_set_usize (spinbtn_linewrap, 64, -1);
1516 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linewrap), TRUE);
1518 label_linewrap = gtk_label_new (_("characters"));
1519 gtk_widget_show (label_linewrap);
1520 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1522 hbox4 = gtk_hbox_new (FALSE, VSPACING);
1523 gtk_widget_show (hbox4);
1524 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox4, FALSE, FALSE, 0);
1526 PACK_CHECK_BUTTON (hbox4, checkbtn_wrapquote, _("Wrap quotation"));
1528 PACK_CHECK_BUTTON (hbox4, checkbtn_autowrap, _("Wrap on input"));
1531 (hbox4, checkbtn_wrapatsend, _("Wrap before sending"));
1533 PACK_CHECK_BUTTON (vbox_linewrap, checkbtn_smart_wrapping,
1534 _("Smart wrapping (EXPERIMENTAL)"));
1537 compose.checkbtn_quote = checkbtn_quote;
1538 compose.entry_quotemark = entry_quotemark;
1539 compose.text_quotefmt = text_quotefmt;
1542 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1544 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1545 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1546 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1548 compose.spinbtn_undolevel = spinbtn_undolevel;
1549 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1551 compose.spinbtn_linewrap = spinbtn_linewrap;
1552 compose.spinbtn_linewrap_adj = spinbtn_linewrap_adj;
1553 compose.checkbtn_wrapquote = checkbtn_wrapquote;
1554 compose.checkbtn_autowrap = checkbtn_autowrap;
1555 compose.checkbtn_wrapatsend = checkbtn_wrapatsend;
1557 compose.checkbtn_autosave = checkbtn_autosave;
1558 compose.entry_autosave_length = entry_autosave_length;
1560 compose.checkbtn_forward_as_attachment =
1561 checkbtn_forward_as_attachment;
1562 compose.checkbtn_redirect_keep_from =
1563 checkbtn_redirect_keep_from;
1564 compose.checkbtn_smart_wrapping =
1565 checkbtn_smart_wrapping;
1566 compose.checkbtn_block_cursor =
1567 checkbtn_block_cursor;
1568 compose.checkbtn_default_reply_list = checkbtn_default_reply_list;
1571 static void prefs_quote_create(void)
1574 GtkWidget *frame_quote;
1575 GtkWidget *vbox_quote;
1578 GtkWidget *label_quotemark;
1579 GtkWidget *entry_quotemark;
1580 GtkWidget *scrolledwin_quotefmt;
1581 GtkWidget *text_quotefmt;
1583 GtkWidget *entry_fw_quotemark;
1584 GtkWidget *text_fw_quotefmt;
1586 GtkWidget *entry_quote_chars;
1587 GtkWidget *label_quote_chars;
1589 GtkWidget *btn_quotedesc;
1591 GtkWidget *checkbtn_reply_with_quote;
1593 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1594 gtk_widget_show (vbox1);
1595 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1596 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1600 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1602 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1604 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1605 gtk_widget_show (vbox_quote);
1606 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1607 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1609 hbox1 = gtk_hbox_new (FALSE, 32);
1610 gtk_widget_show (hbox1);
1611 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1613 hbox2 = gtk_hbox_new (FALSE, 8);
1614 gtk_widget_show (hbox2);
1615 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1617 label_quotemark = gtk_label_new (_("Quotation mark"));
1618 gtk_widget_show (label_quotemark);
1619 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1621 entry_quotemark = gtk_entry_new ();
1622 gtk_widget_show (entry_quotemark);
1623 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
1624 gtk_widget_set_usize (entry_quotemark, 64, -1);
1626 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1627 gtk_widget_show (scrolledwin_quotefmt);
1628 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1629 gtk_scrolled_window_set_policy
1630 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1631 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1633 text_quotefmt = gtk_text_new (NULL, NULL);
1634 gtk_widget_show (text_quotefmt);
1635 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
1636 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
1637 gtk_widget_set_usize(text_quotefmt, -1, 60);
1641 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
1643 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1644 gtk_widget_show (vbox_quote);
1645 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1646 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1648 hbox1 = gtk_hbox_new (FALSE, 32);
1649 gtk_widget_show (hbox1);
1650 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1652 hbox2 = gtk_hbox_new (FALSE, 8);
1653 gtk_widget_show (hbox2);
1654 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1656 label_quotemark = gtk_label_new (_("Quotation mark"));
1657 gtk_widget_show (label_quotemark);
1658 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1660 entry_fw_quotemark = gtk_entry_new ();
1661 gtk_widget_show (entry_fw_quotemark);
1662 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
1664 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
1666 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1667 gtk_widget_show (scrolledwin_quotefmt);
1668 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1669 gtk_scrolled_window_set_policy
1670 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1671 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1673 text_fw_quotefmt = gtk_text_new (NULL, NULL);
1674 gtk_widget_show (text_fw_quotefmt);
1675 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
1677 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
1678 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
1680 hbox1 = gtk_hbox_new (FALSE, 32);
1681 gtk_widget_show (hbox1);
1682 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1685 gtk_button_new_with_label (_(" Description of symbols "));
1686 gtk_widget_show (btn_quotedesc);
1687 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
1688 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
1689 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
1693 PACK_FRAME (vbox1, frame_quote, _("Quotation characters"));
1695 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1696 gtk_widget_show (vbox_quote);
1697 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1698 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1700 hbox1 = gtk_hbox_new (FALSE, 32);
1701 gtk_widget_show (hbox1);
1702 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1704 hbox2 = gtk_hbox_new (FALSE, 8);
1705 gtk_widget_show (hbox2);
1706 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1708 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
1709 gtk_widget_show (label_quote_chars);
1710 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
1712 entry_quote_chars = gtk_entry_new ();
1713 gtk_widget_show (entry_quote_chars);
1714 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
1716 gtk_widget_set_usize (entry_quote_chars, 64, -1);
1719 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
1720 quote.entry_quotemark = entry_quotemark;
1721 quote.text_quotefmt = text_quotefmt;
1722 quote.entry_fw_quotemark = entry_fw_quotemark;
1723 quote.text_fw_quotefmt = text_fw_quotefmt;
1724 quote.entry_quote_chars = entry_quote_chars;
1727 static void prefs_display_create(void)
1730 GtkWidget *chkbtn_transhdr;
1731 GtkWidget *chkbtn_folder_unread;
1733 GtkWidget *label_ng_abbrev;
1734 GtkWidget *spinbtn_ng_abbrev_len;
1735 GtkObject *spinbtn_ng_abbrev_len_adj;
1736 GtkWidget *frame_summary;
1738 GtkWidget *chkbtn_swapfrom;
1739 GtkWidget *chkbtn_useaddrbook;
1740 GtkWidget *chkbtn_threadsubj;
1742 GtkWidget *label_datefmt;
1743 GtkWidget *button_datefmt;
1744 GtkWidget *entry_datefmt;
1745 GtkWidget *button_dispitem;
1747 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1748 gtk_widget_show (vbox1);
1749 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1750 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1752 vbox2 = gtk_vbox_new (FALSE, 0);
1753 gtk_widget_show (vbox2);
1754 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
1757 (vbox2, chkbtn_transhdr,
1758 _("Translate header name (such as `From:', `Subject:')"));
1760 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
1761 _("Display unread number next to folder name"));
1763 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1765 hbox1 = gtk_hbox_new (FALSE, 8);
1766 gtk_widget_show (hbox1);
1767 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1769 label_ng_abbrev = gtk_label_new
1770 (_("Abbreviate newsgroup names longer than"));
1771 gtk_widget_show (label_ng_abbrev);
1772 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1774 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
1775 spinbtn_ng_abbrev_len = gtk_spin_button_new
1776 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
1777 gtk_widget_show (spinbtn_ng_abbrev_len);
1778 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
1780 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
1781 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
1784 label_ng_abbrev = gtk_label_new
1786 gtk_widget_show (label_ng_abbrev);
1787 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1789 /* ---- Summary ---- */
1791 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
1793 vbox2 = gtk_vbox_new (FALSE, 0);
1794 gtk_widget_show (vbox2);
1795 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
1796 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1799 (vbox2, chkbtn_swapfrom,
1800 _("Display recipient in `From' column if sender is yourself"));
1802 (vbox2, chkbtn_useaddrbook,
1803 _("Display sender using address book"));
1805 (vbox2, chkbtn_threadsubj,
1806 _("Thread using subject in addition to standard headers"));
1808 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1810 hbox1 = gtk_hbox_new (FALSE, 8);
1811 gtk_widget_show (hbox1);
1812 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1814 label_datefmt = gtk_label_new (_("Date format"));
1815 gtk_widget_show (label_datefmt);
1816 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
1818 entry_datefmt = gtk_entry_new ();
1819 gtk_widget_show (entry_datefmt);
1820 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
1822 button_datefmt = gtk_button_new_with_label (" ... ");
1824 gtk_widget_show (button_datefmt);
1825 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
1826 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
1827 GTK_SIGNAL_FUNC (date_format_create), NULL);
1829 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
1831 hbox1 = gtk_hbox_new (FALSE, 8);
1832 gtk_widget_show (hbox1);
1833 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1835 button_dispitem = gtk_button_new_with_label
1836 (_(" Set displayed items in summary... "));
1837 gtk_widget_show (button_dispitem);
1838 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
1839 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
1840 GTK_SIGNAL_FUNC (prefs_summary_column_open),
1843 display.chkbtn_transhdr = chkbtn_transhdr;
1844 display.chkbtn_folder_unread = chkbtn_folder_unread;
1845 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
1846 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
1848 display.chkbtn_swapfrom = chkbtn_swapfrom;
1849 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
1850 display.chkbtn_threadsubj = chkbtn_threadsubj;
1851 display.entry_datefmt = entry_datefmt;
1854 static void prefs_message_create(void)
1860 GtkWidget *chkbtn_enablecol;
1861 GtkWidget *button_edit_col;
1862 GtkWidget *chkbtn_mbalnum;
1863 GtkWidget *chkbtn_disphdrpane;
1864 GtkWidget *chkbtn_disphdr;
1865 GtkWidget *button_edit_disphdr;
1866 GtkWidget *hbox_linespc;
1867 GtkWidget *label_linespc;
1868 GtkObject *spinbtn_linespc_adj;
1869 GtkWidget *spinbtn_linespc;
1870 GtkWidget *chkbtn_headspc;
1872 GtkWidget *frame_scr;
1873 GtkWidget *vbox_scr;
1874 GtkWidget *chkbtn_smoothscroll;
1875 GtkWidget *hbox_scr;
1876 GtkWidget *label_scr;
1877 GtkObject *spinbtn_scrollstep_adj;
1878 GtkWidget *spinbtn_scrollstep;
1879 GtkWidget *chkbtn_halfpage;
1881 GtkWidget *chkbtn_attach_desc;
1883 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1884 gtk_widget_show (vbox1);
1885 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1886 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1888 vbox2 = gtk_vbox_new (FALSE, 0);
1889 gtk_widget_show (vbox2);
1890 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1892 hbox1 = gtk_hbox_new (FALSE, 8);
1893 gtk_widget_show (hbox1);
1894 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1896 PACK_CHECK_BUTTON (hbox1, chkbtn_enablecol,
1897 _("Enable coloration of message"));
1898 gtk_signal_connect(GTK_OBJECT(chkbtn_enablecol), "toggled",
1899 GTK_SIGNAL_FUNC(prefs_enable_message_color_toggled),
1902 button_edit_col = gtk_button_new_with_label (_(" Edit... "));
1903 gtk_widget_show (button_edit_col);
1904 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_col, FALSE, TRUE, 0);
1905 gtk_signal_connect (GTK_OBJECT (button_edit_col), "clicked",
1906 GTK_SIGNAL_FUNC (prefs_quote_colors_dialog), NULL);
1908 SET_TOGGLE_SENSITIVITY(chkbtn_enablecol, button_edit_col);
1911 (vbox2, chkbtn_mbalnum,
1912 _("Display multi-byte alphanumeric as\n"
1913 "ASCII character (Japanese only)"));
1914 gtk_label_set_justify (GTK_LABEL (GTK_BIN(chkbtn_mbalnum)->child),
1917 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
1918 _("Display header pane above message view"));
1920 hbox1 = gtk_hbox_new (FALSE, 8);
1921 gtk_widget_show (hbox1);
1922 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1924 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
1925 _("Display short headers on message view"));
1927 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
1928 gtk_widget_show (button_edit_disphdr);
1929 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
1931 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
1932 GTK_SIGNAL_FUNC (prefs_display_header_open),
1935 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
1937 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1939 hbox1 = gtk_hbox_new (FALSE, 32);
1940 gtk_widget_show (hbox1);
1941 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1943 hbox_linespc = gtk_hbox_new (FALSE, 8);
1944 gtk_widget_show (hbox1);
1945 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
1947 label_linespc = gtk_label_new (_("Line space"));
1948 gtk_widget_show (label_linespc);
1949 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1952 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
1953 spinbtn_linespc = gtk_spin_button_new
1954 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
1955 gtk_widget_show (spinbtn_linespc);
1956 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
1958 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
1959 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
1961 label_linespc = gtk_label_new (_("pixel(s)"));
1962 gtk_widget_show (label_linespc);
1963 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1966 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Indent text"));
1968 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
1970 vbox_scr = gtk_vbox_new (FALSE, 0);
1971 gtk_widget_show (vbox_scr);
1972 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
1973 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
1975 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
1977 hbox1 = gtk_hbox_new (FALSE, 32);
1978 gtk_widget_show (hbox1);
1979 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
1981 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
1983 hbox_scr = gtk_hbox_new (FALSE, 8);
1984 gtk_widget_show (hbox_scr);
1985 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
1987 label_scr = gtk_label_new (_("Step"));
1988 gtk_widget_show (label_scr);
1989 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1991 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
1992 spinbtn_scrollstep = gtk_spin_button_new
1993 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
1994 gtk_widget_show (spinbtn_scrollstep);
1995 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
1997 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
1998 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
2001 label_scr = gtk_label_new (_("pixel(s)"));
2002 gtk_widget_show (label_scr);
2003 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2005 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
2007 vbox3 = gtk_vbox_new (FALSE, 0);
2008 gtk_widget_show (vbox3);
2009 gtk_box_pack_start (GTK_BOX (vbox1), vbox3, FALSE, FALSE, 0);
2011 PACK_CHECK_BUTTON(vbox3, chkbtn_attach_desc,
2012 _("Show attachment descriptions (rather than names)"));
2015 message.chkbtn_enablecol = chkbtn_enablecol;
2016 message.button_edit_col = button_edit_col;
2017 message.chkbtn_mbalnum = chkbtn_mbalnum;
2018 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
2019 message.chkbtn_disphdr = chkbtn_disphdr;
2020 message.spinbtn_linespc = spinbtn_linespc;
2021 message.chkbtn_headspc = chkbtn_headspc;
2023 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
2024 message.spinbtn_scrollstep = spinbtn_scrollstep;
2025 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
2026 message.chkbtn_halfpage = chkbtn_halfpage;
2028 message.chkbtn_attach_desc = chkbtn_attach_desc;
2032 static void prefs_privacy_create(void)
2038 GtkWidget *hbox_spc;
2040 GtkWidget *checkbtn_auto_check_signatures;
2041 GtkWidget *checkbtn_store_passphrase;
2042 GtkObject *spinbtn_store_passphrase_adj;
2043 GtkWidget *spinbtn_store_passphrase;
2044 GtkTooltips *store_tooltip;
2045 GtkWidget *checkbtn_passphrase_grab;
2046 GtkWidget *checkbtn_gpg_warning;
2048 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2049 gtk_widget_show (vbox1);
2050 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2051 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2053 vbox2 = gtk_vbox_new (FALSE, 0);
2054 gtk_widget_show (vbox2);
2055 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2057 PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
2058 _("Automatically check signatures"));
2060 PACK_CHECK_BUTTON (vbox2, checkbtn_store_passphrase,
2061 _("Store passphrase in memory temporarily"));
2063 vbox3 = gtk_vbox_new (FALSE, 0);
2064 gtk_widget_show (vbox3);
2065 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2067 hbox1 = gtk_hbox_new (FALSE, 8);
2068 gtk_widget_show (hbox1);
2069 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2071 hbox_spc = gtk_hbox_new (FALSE, 0);
2072 gtk_widget_show (hbox_spc);
2073 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2074 gtk_widget_set_usize (hbox_spc, 12, -1);
2076 label = gtk_label_new (_("Expire after"));
2077 gtk_widget_show (label);
2078 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2080 store_tooltip = gtk_tooltips_new();
2082 spinbtn_store_passphrase_adj = gtk_adjustment_new (0, 0, 1440, 1, 5, 5);
2083 spinbtn_store_passphrase = gtk_spin_button_new
2084 (GTK_ADJUSTMENT (spinbtn_store_passphrase_adj), 1, 0);
2085 gtk_widget_show (spinbtn_store_passphrase);
2086 gtk_tooltips_set_tip(GTK_TOOLTIPS(store_tooltip), spinbtn_store_passphrase,
2087 _("Setting to '0' will store the passphrase"
2088 " for the whole session"),
2090 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_store_passphrase, FALSE, FALSE, 0);
2091 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_store_passphrase),
2093 gtk_widget_set_usize (spinbtn_store_passphrase, 64, -1);
2095 label = gtk_label_new (_("minute(s) "));
2096 gtk_widget_show (label);
2097 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2099 hbox1 = gtk_hbox_new (FALSE, 8);
2100 gtk_widget_show (hbox1);
2101 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2103 hbox_spc = gtk_hbox_new (FALSE, 0);
2104 gtk_widget_show (hbox_spc);
2105 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2106 gtk_widget_set_usize (hbox_spc, 12, -1);
2108 SET_TOGGLE_SENSITIVITY (checkbtn_store_passphrase, vbox3);
2111 PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab,
2112 _("Grab input while entering a passphrase"));
2116 (vbox2, checkbtn_gpg_warning,
2117 _("Display warning on startup if GnuPG doesn't work"));
2119 hbox1 = gtk_hbox_new (FALSE, 8);
2120 gtk_widget_show (hbox1);
2121 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2123 privacy.checkbtn_auto_check_signatures
2124 = checkbtn_auto_check_signatures;
2125 privacy.checkbtn_store_passphrase = checkbtn_store_passphrase;
2126 privacy.spinbtn_store_passphrase = spinbtn_store_passphrase;
2127 privacy.spinbtn_store_passphrase_adj = spinbtn_store_passphrase_adj;
2128 privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
2129 privacy.checkbtn_gpg_warning = checkbtn_gpg_warning;
2131 #endif /* USE_GPGME */
2133 static void prefs_interface_create(void)
2138 /* GtkWidget *checkbtn_emacs; */
2139 GtkWidget *checkbtn_always_show_msg;
2140 GtkWidget *checkbtn_openunread;
2141 GtkWidget *checkbtn_mark_as_read_on_newwin;
2142 GtkWidget *checkbtn_openinbox;
2143 GtkWidget *checkbtn_immedexec;
2144 GtkTooltips *immedexec_tooltip;
2148 GtkWidget *menuitem;
2150 GtkWidget *button_keybind;
2152 GtkWidget *hbox_nextunreadmsgdialog;
2153 GtkWidget *optmenu_nextunreadmsgdialog;
2155 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2156 gtk_widget_show (vbox1);
2157 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2158 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2160 vbox2 = gtk_vbox_new (FALSE, 0);
2161 gtk_widget_show (vbox2);
2162 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2164 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
2165 _("Emulate the behavior of mouse operation of\n"
2166 "Emacs-based mailer"));
2167 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
2168 GTK_JUSTIFY_LEFT); */
2171 (vbox2, checkbtn_always_show_msg,
2172 _("Always open messages in summary when selected"));
2175 (vbox2, checkbtn_openunread,
2176 _("Open first unread message when entering a folder"));
2179 (vbox2, checkbtn_mark_as_read_on_newwin,
2180 _("Only mark message as read when opened in new window"));
2183 (vbox2, checkbtn_openinbox,
2184 _("Go to inbox after receiving new mail"));
2186 vbox3 = gtk_vbox_new (FALSE, 0);
2187 gtk_widget_show (vbox3);
2188 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2190 immedexec_tooltip = gtk_tooltips_new();
2193 (vbox3, checkbtn_immedexec,
2194 _("Execute immediately when moving or deleting messages"));
2195 gtk_tooltips_set_tip(GTK_TOOLTIPS(immedexec_tooltip), checkbtn_immedexec,
2196 _("Messages will be marked until execution"
2197 " if this is turned off"),
2200 hbox1 = gtk_hbox_new (FALSE, 0);
2201 gtk_widget_show (hbox1);
2202 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2204 /* Next Unread Message Dialog */
2205 hbox_nextunreadmsgdialog = gtk_hbox_new (FALSE, 8);
2206 gtk_widget_show (hbox1);
2207 gtk_box_pack_start (GTK_BOX (vbox1), hbox_nextunreadmsgdialog, FALSE, FALSE, 0);
2209 label = gtk_label_new (_("Show no-unread-message dialog"));
2210 gtk_widget_show (label);
2211 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), label, FALSE, FALSE, 8);
2213 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
2214 gtk_widget_show (optmenu_nextunreadmsgdialog);
2215 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), optmenu_nextunreadmsgdialog, FALSE, FALSE, 8);
2217 menu = gtk_menu_new ();
2218 MENUITEM_ADD (menu, menuitem, _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
2219 MENUITEM_ADD (menu, menuitem, _("Assume 'Yes'"),
2220 NEXTUNREADMSGDIALOG_ASSUME_YES);
2221 MENUITEM_ADD (menu, menuitem, _("Assume 'No'"),
2222 NEXTUNREADMSGDIALOG_ASSUME_NO);
2224 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog), menu);
2226 hbox1 = gtk_hbox_new (FALSE, 8);
2227 gtk_widget_show (hbox1);
2228 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2230 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
2231 gtk_widget_show (button_keybind);
2232 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
2233 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
2234 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
2236 /* interface.checkbtn_emacs = checkbtn_emacs; */
2237 interface.checkbtn_always_show_msg = checkbtn_always_show_msg;
2238 interface.checkbtn_openunread = checkbtn_openunread;
2239 interface.checkbtn_mark_as_read_on_newwin
2240 = checkbtn_mark_as_read_on_newwin;
2241 interface.checkbtn_openinbox = checkbtn_openinbox;
2242 interface.checkbtn_immedexec = checkbtn_immedexec;
2243 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
2246 static void prefs_other_create(void)
2251 GtkWidget *frame_addr;
2252 GtkWidget *vbox_addr;
2253 GtkWidget *checkbtn_addaddrbyclick;
2255 GtkWidget *frame_cliplog;
2256 GtkWidget *vbox_cliplog;
2257 GtkWidget *hbox_cliplog;
2258 GtkWidget *checkbtn_cliplog;
2259 GtkWidget *loglength_label;
2260 GtkWidget *loglength_entry;
2261 GtkTooltips *loglength_tooltip;
2263 GtkWidget *frame_exit;
2264 GtkWidget *vbox_exit;
2265 GtkWidget *checkbtn_confonexit;
2266 GtkWidget *checkbtn_cleanonexit;
2267 GtkWidget *checkbtn_askonclean;
2268 GtkWidget *checkbtn_warnqueued;
2270 GtkWidget *label_iotimeout;
2271 GtkWidget *spinbtn_iotimeout;
2272 GtkObject *spinbtn_iotimeout_adj;
2276 GtkWidget *frame_ssl;
2277 GtkWidget *vbox_ssl;
2278 GtkWidget *hbox_ssl;
2279 GtkWidget *checkbtn_ssl_ask_unknown_valid;
2282 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2283 gtk_widget_show (vbox1);
2284 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2285 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2287 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2289 vbox_addr = gtk_vbox_new (FALSE, 0);
2290 gtk_widget_show (vbox_addr);
2291 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2292 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2295 (vbox_addr, checkbtn_addaddrbyclick,
2296 _("Add address to destination when double-clicked"));
2299 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2301 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2302 gtk_widget_show (vbox_cliplog);
2303 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2304 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2305 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2306 _("Clip the log size"));
2307 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2308 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2309 gtk_widget_show (hbox_cliplog);
2311 loglength_label = gtk_label_new (_("Log window length"));
2312 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2314 gtk_widget_show (GTK_WIDGET (loglength_label));
2316 loglength_tooltip = gtk_tooltips_new();
2318 loglength_entry = gtk_entry_new ();
2319 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2320 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2322 gtk_widget_show (GTK_WIDGET (loglength_entry));
2323 gtk_tooltips_set_tip(GTK_TOOLTIPS(loglength_tooltip), loglength_entry,
2324 _("0 to stop logging in the log window"),
2326 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2328 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2333 PACK_FRAME (vbox1, frame_ssl, _("Security"));
2335 vbox_ssl = gtk_vbox_new (FALSE, 0);
2336 gtk_widget_show (vbox_ssl);
2337 gtk_container_add (GTK_CONTAINER (frame_ssl), vbox_ssl);
2338 gtk_container_set_border_width (GTK_CONTAINER (vbox_ssl), 8);
2339 PACK_CHECK_BUTTON (vbox_ssl, checkbtn_ssl_ask_unknown_valid,
2340 _("Ask before accepting SSL certificates"));
2341 hbox_ssl = gtk_hbox_new (FALSE, 3);
2342 gtk_container_add (GTK_CONTAINER (vbox_ssl), hbox_ssl);
2343 gtk_widget_show (hbox_ssl);
2348 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2350 vbox_exit = gtk_vbox_new (FALSE, 0);
2351 gtk_widget_show (vbox_exit);
2352 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2353 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
2355 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
2356 _("Confirm on exit"));
2358 hbox1 = gtk_hbox_new (FALSE, 32);
2359 gtk_widget_show (hbox1);
2360 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
2362 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
2363 _("Empty trash on exit"));
2364 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
2365 _("Ask before emptying"));
2366 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
2368 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
2369 _("Warn if there are queued messages"));
2371 hbox1 = gtk_hbox_new (FALSE, 8);
2372 gtk_widget_show (hbox1);
2373 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2375 label_iotimeout = gtk_label_new (_("Socket I/O timeout:"));
2376 gtk_widget_show (label_iotimeout);
2377 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2379 spinbtn_iotimeout_adj = gtk_adjustment_new (60, 0, 1000, 1, 10, 10);
2380 spinbtn_iotimeout = gtk_spin_button_new
2381 (GTK_ADJUSTMENT (spinbtn_iotimeout_adj), 1, 0);
2382 gtk_widget_show (spinbtn_iotimeout);
2383 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_iotimeout,
2385 gtk_widget_set_usize (spinbtn_iotimeout, 64, -1);
2386 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_iotimeout), TRUE);
2388 label_iotimeout = gtk_label_new (_("seconds"));
2389 gtk_widget_show (label_iotimeout);
2390 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2392 other.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2394 other.checkbtn_cliplog = checkbtn_cliplog;
2395 other.loglength_entry = loglength_entry;
2397 other.checkbtn_confonexit = checkbtn_confonexit;
2398 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
2399 other.checkbtn_askonclean = checkbtn_askonclean;
2400 other.checkbtn_warnqueued = checkbtn_warnqueued;
2402 other.spinbtn_iotimeout = spinbtn_iotimeout;
2403 other.spinbtn_iotimeout_adj = spinbtn_iotimeout_adj;
2407 other.checkbtn_ssl_ask_unknown_valid = checkbtn_ssl_ask_unknown_valid;
2412 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
2414 GtkWidget *datefmt_sample = NULL;
2417 g_return_if_fail(widget != NULL);
2418 g_return_if_fail(*widget != NULL);
2419 g_return_if_fail(display.entry_datefmt != NULL);
2421 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2422 (GTK_OBJECT(*widget), "datefmt_sample"));
2423 g_return_if_fail(datefmt_sample != NULL);
2425 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
2426 g_free(prefs_common.date_format);
2427 prefs_common.date_format = text;
2428 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
2430 gtk_widget_destroy(*widget);
2434 static void date_format_cancel_btn_clicked(GtkButton *button,
2437 g_return_if_fail(widget != NULL);
2438 g_return_if_fail(*widget != NULL);
2440 gtk_widget_destroy(*widget);
2444 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
2447 if (event && event->keyval == GDK_Escape)
2448 date_format_cancel_btn_clicked(NULL, widget);
2451 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
2452 GdkEventAny *event, GtkWidget **widget)
2454 g_return_val_if_fail(widget != NULL, FALSE);
2455 g_return_val_if_fail(*widget != NULL, FALSE);
2461 static void date_format_entry_on_change(GtkEditable *editable,
2465 struct tm *cal_time;
2469 cur_time = time(NULL);
2470 cal_time = localtime(&cur_time);
2472 text = gtk_editable_get_chars(editable, 0, -1);
2474 strftime(buffer, sizeof buffer, text, cal_time);
2476 gtk_label_set_text(example, buffer);
2479 static void date_format_select_row(GtkWidget *date_format_list, gint row,
2480 gint column, GdkEventButton *event,
2481 GtkWidget *date_format)
2487 GtkWidget *datefmt_sample;
2489 /* only on double click */
2490 if (!event || event->type != GDK_2BUTTON_PRESS) return;
2493 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2494 (GTK_OBJECT(date_format), "datefmt_sample"));
2496 g_return_if_fail(date_format_list != NULL);
2497 g_return_if_fail(date_format != NULL);
2498 g_return_if_fail(datefmt_sample != NULL);
2500 /* get format from clist */
2501 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
2503 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
2504 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
2506 /* insert the format into the text entry */
2507 new_format = g_malloc(strlen(old_format) + 3);
2509 strncpy(new_format, old_format, cur_pos);
2510 new_format[cur_pos] = '\0';
2511 strcat(new_format, format);
2512 strcat(new_format, &old_format[cur_pos]);
2514 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
2515 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
2520 static GtkWidget *date_format_create(GtkButton *button, void *data)
2522 static GtkWidget *datefmt_win = NULL;
2524 GtkWidget *scrolledwindow1;
2525 GtkWidget *datefmt_clist;
2530 GtkWidget *confirm_area;
2532 GtkWidget *cancel_btn;
2533 GtkWidget *datefmt_entry;
2562 const gint TIME_FORMAT_ELEMS =
2563 sizeof time_format / sizeof time_format[0];
2565 time_format[0].txt = _("the full abbreviated weekday name");
2566 time_format[1].txt = _("the full weekday name");
2567 time_format[2].txt = _("the abbreviated month name");
2568 time_format[3].txt = _("the full month name");
2569 time_format[4].txt = _("the preferred date and time for the current locale");
2570 time_format[5].txt = _("the century number (year/100)");
2571 time_format[6].txt = _("the day of the month as a decimal number");
2572 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
2573 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
2574 time_format[9].txt = _("the day of the year as a decimal number");
2575 time_format[10].txt = _("the month as a decimal number");
2576 time_format[11].txt = _("the minute as a decimal number");
2577 time_format[12].txt = _("either AM or PM");
2578 time_format[13].txt = _("the second as a decimal number");
2579 time_format[14].txt = _("the day of the week as a decimal number");
2580 time_format[15].txt = _("the preferred date for the current locale");
2581 time_format[16].txt = _("the last two digits of a year");
2582 time_format[17].txt = _("the year as a decimal number");
2583 time_format[18].txt = _("the time zone or name or abbreviation");
2585 if (datefmt_win) return datefmt_win;
2587 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
2588 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
2589 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
2590 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2591 gtk_widget_set_usize(datefmt_win, 440, 280);
2593 vbox1 = gtk_vbox_new(FALSE, 10);
2594 gtk_widget_show(vbox1);
2595 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
2597 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
2598 gtk_scrolled_window_set_policy
2599 (GTK_SCROLLED_WINDOW(scrolledwindow1),
2600 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
2601 gtk_widget_show(scrolledwindow1);
2602 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
2604 titles[0] = _("Specifier");
2605 titles[1] = _("Description");
2606 datefmt_clist = gtk_clist_new_with_titles(2, titles);
2607 gtk_widget_show(datefmt_clist);
2608 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
2609 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
2610 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
2611 GTK_SELECTION_BROWSE);
2613 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
2615 /* phoney casting necessary because of gtk... */
2616 text[0] = (gchar *)time_format[i].fmt;
2617 text[1] = (gchar *)time_format[i].txt;
2618 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
2621 table = gtk_table_new(2, 2, FALSE);
2622 gtk_widget_show(table);
2623 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
2624 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
2625 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
2627 label1 = gtk_label_new(_("Date format"));
2628 gtk_widget_show(label1);
2629 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
2631 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
2632 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
2634 datefmt_entry = gtk_entry_new_with_max_length(256);
2635 gtk_widget_show(datefmt_entry);
2636 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
2637 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2639 /* we need the "sample" entry box; add it as data so callbacks can
2640 * get the entry box */
2641 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
2644 label2 = gtk_label_new(_("Example"));
2645 gtk_widget_show(label2);
2646 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
2648 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
2649 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
2651 label3 = gtk_label_new("");
2652 gtk_widget_show(label3);
2653 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
2654 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2655 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
2656 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
2658 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
2659 &cancel_btn, _("Cancel"), NULL, NULL);
2660 gtk_widget_grab_default(ok_btn);
2661 gtk_widget_show(confirm_area);
2663 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
2665 /* set the current format */
2666 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
2667 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
2670 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2671 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
2673 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
2674 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
2676 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
2677 GTK_SIGNAL_FUNC(date_format_key_pressed),
2679 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
2680 GTK_SIGNAL_FUNC(date_format_on_delete),
2682 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
2683 GTK_SIGNAL_FUNC(date_format_entry_on_change),
2686 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
2687 GTK_SIGNAL_FUNC(date_format_select_row),
2690 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2691 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
2693 gtk_widget_show(datefmt_win);
2694 manage_window_set_transient(GTK_WINDOW(datefmt_win));
2696 gtk_widget_grab_focus(ok_btn);
2701 void prefs_quote_colors_dialog(void)
2703 if (!quote_color_win)
2704 prefs_quote_colors_dialog_create();
2705 gtk_widget_show(quote_color_win);
2706 manage_window_set_transient(GTK_WINDOW(quote_color_win));
2709 gtk_widget_hide(quote_color_win);
2711 textview_update_message_colors();
2712 main_window_reflect_prefs_all();
2715 static void prefs_quote_colors_dialog_create(void)
2720 GtkWidget *quotelevel1_label;
2721 GtkWidget *quotelevel2_label;
2722 GtkWidget *quotelevel3_label;
2723 GtkWidget *uri_label;
2724 GtkWidget *signature_label;
2725 GtkWidget *tgt_folder_label;
2728 GtkWidget *recycle_colors_btn;
2729 GtkWidget *frame_colors;
2731 window = gtk_window_new(GTK_WINDOW_DIALOG);
2732 gtk_container_set_border_width(GTK_CONTAINER(window), 2);
2733 gtk_window_set_title(GTK_WINDOW(window), _("Set message colors"));
2734 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
2735 gtk_window_set_modal(GTK_WINDOW(window), TRUE);
2736 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
2738 vbox = gtk_vbox_new (FALSE, VSPACING);
2739 gtk_container_add (GTK_CONTAINER (window), vbox);
2740 gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
2741 PACK_FRAME(vbox, frame_colors, _("Colors"));
2743 table = gtk_table_new (5, 2, FALSE);
2744 gtk_container_add (GTK_CONTAINER (frame_colors), table);
2745 gtk_container_set_border_width (GTK_CONTAINER (table), 8);
2746 gtk_table_set_row_spacings (GTK_TABLE (table), 2);
2747 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
2750 color_buttons.quote_level1_btn = gtk_button_new();
2751 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level1_btn,
2752 0, 1, 0, 1, 0, 0, 0, 0);
2753 gtk_widget_set_usize (color_buttons.quote_level1_btn, 40, 30);
2754 gtk_container_set_border_width
2755 (GTK_CONTAINER (color_buttons.quote_level1_btn), 5);
2757 color_buttons.quote_level2_btn = gtk_button_new();
2758 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level2_btn,
2759 0, 1, 1, 2, 0, 0, 0, 0);
2760 gtk_widget_set_usize (color_buttons.quote_level2_btn, 40, 30);
2761 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.quote_level2_btn), 5);
2763 color_buttons.quote_level3_btn = gtk_button_new_with_label ("");
2764 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level3_btn,
2765 0, 1, 2, 3, 0, 0, 0, 0);
2766 gtk_widget_set_usize (color_buttons.quote_level3_btn, 40, 30);
2767 gtk_container_set_border_width
2768 (GTK_CONTAINER (color_buttons.quote_level3_btn), 5);
2770 color_buttons.uri_btn = gtk_button_new_with_label ("");
2771 gtk_table_attach (GTK_TABLE (table), color_buttons.uri_btn,
2772 0, 1, 3, 4, 0, 0, 0, 0);
2773 gtk_widget_set_usize (color_buttons.uri_btn, 40, 30);
2774 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.uri_btn), 5);
2776 color_buttons.tgt_folder_btn = gtk_button_new_with_label ("");
2777 gtk_table_attach (GTK_TABLE (table), color_buttons.tgt_folder_btn,
2778 0, 1, 4, 5, 0, 0, 0, 0);
2779 gtk_widget_set_usize (color_buttons.tgt_folder_btn, 40, 30);
2780 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.tgt_folder_btn), 5);
2782 color_buttons.signature_btn = gtk_button_new_with_label ("");
2783 gtk_table_attach (GTK_TABLE (table), color_buttons.signature_btn,
2784 0, 1, 5, 6, 0, 0, 0, 0);
2785 gtk_widget_set_usize (color_buttons.signature_btn, 40, 30);
2786 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.signature_btn), 5);
2788 quotelevel1_label = gtk_label_new (_("Quoted Text - First Level"));
2789 gtk_table_attach (GTK_TABLE (table), quotelevel1_label, 1, 2, 0, 1,
2790 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2791 gtk_label_set_justify (GTK_LABEL (quotelevel1_label), GTK_JUSTIFY_LEFT);
2792 gtk_misc_set_alignment (GTK_MISC (quotelevel1_label), 0, 0.5);
2794 quotelevel2_label = gtk_label_new (_("Quoted Text - Second Level"));
2795 gtk_table_attach (GTK_TABLE (table), quotelevel2_label, 1, 2, 1, 2,
2796 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2797 gtk_label_set_justify (GTK_LABEL (quotelevel2_label), GTK_JUSTIFY_LEFT);
2798 gtk_misc_set_alignment (GTK_MISC (quotelevel2_label), 0, 0.5);
2800 quotelevel3_label = gtk_label_new (_("Quoted Text - Third Level"));
2801 gtk_table_attach (GTK_TABLE (table), quotelevel3_label, 1, 2, 2, 3,
2802 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2803 gtk_label_set_justify (GTK_LABEL (quotelevel3_label), GTK_JUSTIFY_LEFT);
2804 gtk_misc_set_alignment (GTK_MISC (quotelevel3_label), 0, 0.5);
2806 uri_label = gtk_label_new (_("URI link"));
2807 gtk_table_attach (GTK_TABLE (table), uri_label, 1, 2, 3, 4,
2808 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2809 gtk_label_set_justify (GTK_LABEL (uri_label), GTK_JUSTIFY_LEFT);
2810 gtk_misc_set_alignment (GTK_MISC (uri_label), 0, 0.5);
2812 tgt_folder_label = gtk_label_new (_("Target folder"));
2813 gtk_table_attach (GTK_TABLE (table), tgt_folder_label, 1, 2, 4, 5,
2814 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2815 gtk_label_set_justify (GTK_LABEL (tgt_folder_label), GTK_JUSTIFY_LEFT);
2816 gtk_misc_set_alignment (GTK_MISC (tgt_folder_label), 0, 0.5);
2818 signature_label = gtk_label_new (_("Signatures"));
2819 gtk_table_attach (GTK_TABLE (table), signature_label, 1, 2, 5, 6,
2820 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2821 gtk_label_set_justify (GTK_LABEL (signature_label), GTK_JUSTIFY_LEFT);
2822 gtk_misc_set_alignment (GTK_MISC (signature_label), 0, 0.5);
2824 PACK_CHECK_BUTTON (vbox, recycle_colors_btn,
2825 _("Recycle quote colors"));
2827 gtkut_button_set_create(&hbbox, &ok_btn, _("OK"),
2828 NULL, NULL, NULL, NULL);
2829 gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
2831 gtk_widget_grab_default(ok_btn);
2832 MANAGE_WINDOW_SIGNALS_CONNECT(window);
2833 gtk_signal_connect(GTK_OBJECT(window), "delete_event",
2834 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
2835 gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
2836 GTK_SIGNAL_FUNC(prefs_quote_colors_key_pressed),
2839 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level1_btn), "clicked",
2840 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL1");
2841 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level2_btn), "clicked",
2842 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL2");
2843 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level3_btn), "clicked",
2844 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL3");
2845 gtk_signal_connect(GTK_OBJECT(color_buttons.uri_btn), "clicked",
2846 GTK_SIGNAL_FUNC(quote_color_set_dialog), "URI");
2847 gtk_signal_connect(GTK_OBJECT(color_buttons.tgt_folder_btn), "clicked",
2848 GTK_SIGNAL_FUNC(quote_color_set_dialog), "TGTFLD");
2849 gtk_signal_connect(GTK_OBJECT(color_buttons.signature_btn), "clicked",
2850 GTK_SIGNAL_FUNC(quote_color_set_dialog), "SIGNATURE");
2851 gtk_signal_connect(GTK_OBJECT(recycle_colors_btn), "toggled",
2852 GTK_SIGNAL_FUNC(prefs_recycle_colors_toggled), NULL);
2853 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2854 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
2856 /* show message button colors and recycle options */
2857 set_button_bg_color(color_buttons.quote_level1_btn,
2858 prefs_common.quote_level1_col);
2859 set_button_bg_color(color_buttons.quote_level2_btn,
2860 prefs_common.quote_level2_col);
2861 set_button_bg_color(color_buttons.quote_level3_btn,
2862 prefs_common.quote_level3_col);
2863 set_button_bg_color(color_buttons.uri_btn,
2864 prefs_common.uri_col);
2865 set_button_bg_color(color_buttons.tgt_folder_btn,
2866 prefs_common.tgt_folder_col);
2867 set_button_bg_color(color_buttons.signature_btn,
2868 prefs_common.signature_col);
2869 gtk_toggle_button_set_active((GtkToggleButton *)recycle_colors_btn,
2870 prefs_common.recycle_quote_colors);
2872 gtk_widget_show_all(vbox);
2873 quote_color_win = window;
2876 static void prefs_quote_colors_key_pressed(GtkWidget *widget,
2877 GdkEventKey *event, gpointer data)
2879 if (event && event->keyval == GDK_Escape)
2883 static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
2885 gchar *type = (gchar *)data;
2886 gchar *title = NULL;
2887 gdouble color[4] = {0.0, 0.0, 0.0, 0.0};
2889 GtkColorSelectionDialog *dialog;
2891 if(g_strcasecmp(type, "LEVEL1") == 0) {
2892 title = _("Pick color for quotation level 1");
2893 rgbvalue = prefs_common.quote_level1_col;
2894 } else if(g_strcasecmp(type, "LEVEL2") == 0) {
2895 title = _("Pick color for quotation level 2");
2896 rgbvalue = prefs_common.quote_level2_col;
2897 } else if(g_strcasecmp(type, "LEVEL3") == 0) {
2898 title = _("Pick color for quotation level 3");
2899 rgbvalue = prefs_common.quote_level3_col;
2900 } else if(g_strcasecmp(type, "URI") == 0) {
2901 title = _("Pick color for URI");
2902 rgbvalue = prefs_common.uri_col;
2903 } else if(g_strcasecmp(type, "TGTFLD") == 0) {
2904 title = _("Pick color for target folder");
2905 rgbvalue = prefs_common.tgt_folder_col;
2906 } else if(g_strcasecmp(type, "SIGNATURE") == 0) {
2907 title = _("Pick color for signatures");
2908 rgbvalue = prefs_common.signature_col;
2909 } else { /* Should never be called */
2910 g_warning("Unrecognized datatype '%s' in quote_color_set_dialog\n", type);
2914 color_dialog = gtk_color_selection_dialog_new(title);
2915 gtk_window_set_position(GTK_WINDOW(color_dialog), GTK_WIN_POS_CENTER);
2916 gtk_window_set_modal(GTK_WINDOW(color_dialog), TRUE);
2917 gtk_window_set_policy(GTK_WINDOW(color_dialog), FALSE, FALSE, FALSE);
2918 manage_window_set_transient(GTK_WINDOW(color_dialog));
2920 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->ok_button),
2921 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_ok), data);
2922 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->cancel_button),
2923 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_cancel), data);
2924 gtk_signal_connect(GTK_OBJECT(color_dialog), "key_press_event",
2925 GTK_SIGNAL_FUNC(quote_colors_set_dialog_key_pressed),
2928 /* preselect the previous color in the color selection dialog */
2929 color[0] = (gdouble) ((rgbvalue & 0xff0000) >> 16) / 255.0;
2930 color[1] = (gdouble) ((rgbvalue & 0x00ff00) >> 8) / 255.0;
2931 color[2] = (gdouble) (rgbvalue & 0x0000ff) / 255.0;
2932 dialog = GTK_COLOR_SELECTION_DIALOG(color_dialog);
2933 gtk_color_selection_set_color
2934 (GTK_COLOR_SELECTION(dialog->colorsel), color);
2936 gtk_widget_show(color_dialog);
2939 static void quote_colors_set_dialog_ok(GtkWidget *widget, gpointer data)
2941 GtkColorSelection *colorsel = (GtkColorSelection *)
2942 ((GtkColorSelectionDialog *)color_dialog)->colorsel;
2944 gint red, green, blue, rgbvalue;
2945 gchar *type = (gchar *)data;
2947 gtk_color_selection_get_color(colorsel, color);
2949 red = (gint) (color[0] * 255.0);
2950 green = (gint) (color[1] * 255.0);
2951 blue = (gint) (color[2] * 255.0);
2952 rgbvalue = (gint) ((red * 0x10000) | (green * 0x100) | blue);
2955 fprintf(stderr, "redc = %f, greenc = %f, bluec = %f\n", color[0], color[1], color[2]);
2956 fprintf(stderr, "red = %d, green = %d, blue = %d\n", red, green, blue);
2957 fprintf(stderr, "Color is %x\n", rgbvalue);
2960 if (g_strcasecmp(type, "LEVEL1") == 0) {
2961 prefs_common.quote_level1_col = rgbvalue;
2962 set_button_bg_color(color_buttons.quote_level1_btn, rgbvalue);
2963 } else if (g_strcasecmp(type, "LEVEL2") == 0) {
2964 prefs_common.quote_level2_col = rgbvalue;
2965 set_button_bg_color(color_buttons.quote_level2_btn, rgbvalue);
2966 } else if (g_strcasecmp(type, "LEVEL3") == 0) {
2967 prefs_common.quote_level3_col = rgbvalue;
2968 set_button_bg_color(color_buttons.quote_level3_btn, rgbvalue);
2969 } else if (g_strcasecmp(type, "URI") == 0) {
2970 prefs_common.uri_col = rgbvalue;
2971 set_button_bg_color(color_buttons.uri_btn, rgbvalue);
2972 } else if (g_strcasecmp(type, "TGTFLD") == 0) {
2973 prefs_common.tgt_folder_col = rgbvalue;
2974 set_button_bg_color(color_buttons.tgt_folder_btn, rgbvalue);
2975 folderview_set_target_folder_color(prefs_common.tgt_folder_col);
2976 } else if (g_strcasecmp(type, "SIGNATURE") == 0) {
2977 prefs_common.signature_col = rgbvalue;
2978 set_button_bg_color(color_buttons.signature_btn, rgbvalue);
2980 fprintf( stderr, "Unrecognized datatype '%s' in quote_color_set_dialog_ok\n", type );
2982 gtk_widget_destroy(color_dialog);
2985 static void quote_colors_set_dialog_cancel(GtkWidget *widget, gpointer data)
2987 gtk_widget_destroy(color_dialog);
2990 static void quote_colors_set_dialog_key_pressed(GtkWidget *widget,
2994 gtk_widget_destroy(color_dialog);
2997 static void set_button_bg_color(GtkWidget *widget, gint rgbvalue)
3002 gtkut_convert_int_to_gdk_color(rgbvalue, &color);
3003 newstyle = gtk_style_copy(gtk_widget_get_default_style());
3004 newstyle->bg[GTK_STATE_NORMAL] = color;
3005 newstyle->bg[GTK_STATE_PRELIGHT] = color;
3006 newstyle->bg[GTK_STATE_ACTIVE] = color;
3008 gtk_widget_set_style(GTK_WIDGET(widget), newstyle);
3011 static void prefs_enable_message_color_toggled(void)
3015 is_active = gtk_toggle_button_get_active
3016 (GTK_TOGGLE_BUTTON(message.chkbtn_enablecol));
3017 gtk_widget_set_sensitive(message.button_edit_col, is_active);
3018 prefs_common.enable_color = is_active;
3021 static void prefs_recycle_colors_toggled(GtkWidget *widget)
3025 is_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
3026 prefs_common.recycle_quote_colors = is_active;
3029 static void prefs_keybind_select(void)
3036 GtkWidget *confirm_area;
3038 GtkWidget *cancel_btn;
3040 window = gtk_window_new (GTK_WINDOW_DIALOG);
3041 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
3042 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
3043 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
3044 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
3045 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
3046 manage_window_set_transient (GTK_WINDOW (window));
3048 vbox1 = gtk_vbox_new (FALSE, VSPACING);
3049 gtk_container_add (GTK_CONTAINER (window), vbox1);
3050 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
3052 hbox1 = gtk_hbox_new (FALSE, 8);
3053 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3055 label = gtk_label_new
3056 (_("Select preset:"));
3057 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3058 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3060 hbox1 = gtk_hbox_new (FALSE, 8);
3061 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3063 combo = gtk_combo_new ();
3064 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
3065 gtkut_combo_set_items (GTK_COMBO (combo),
3071 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
3073 hbox1 = gtk_hbox_new (FALSE, 8);
3074 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3076 label = gtk_label_new
3077 (_("You can also modify each menu shortcut by pressing\n"
3078 "any key(s) when placing the mouse pointer on the item."));
3079 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3080 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3082 hbox1 = gtk_hbox_new (FALSE, 8);
3083 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3085 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
3086 &cancel_btn, _("Cancel"), NULL, NULL);
3087 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
3088 gtk_widget_grab_default (ok_btn);
3090 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3091 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3092 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
3093 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
3094 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
3095 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
3096 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
3098 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
3099 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
3102 gtk_widget_show_all(window);
3104 keybind.window = window;
3105 keybind.combo = combo;
3108 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
3111 if (event && event->keyval == GDK_Escape)
3112 prefs_keybind_cancel();
3115 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
3118 prefs_keybind_cancel();
3122 static void prefs_keybind_cancel(void)
3124 gtk_widget_destroy(keybind.window);
3125 keybind.window = NULL;
3126 keybind.combo = NULL;
3129 static void prefs_keybind_apply_clicked(GtkWidget *widget)
3131 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
3135 static gchar *default_menurc =
3136 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3137 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
3138 "(menu-path \"<Main>/File/Print...\" \"\")\n"
3139 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
3141 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3142 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3143 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3144 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
3146 "(menu-path \"<Main>/View/Expand Summary View\" \"V\")\n"
3147 "(menu-path \"<Main>/View/Expand Message View\" \"<shift>V\")\n"
3148 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3149 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3150 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3151 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3152 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3153 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3154 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3155 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3156 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3157 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3159 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
3160 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
3161 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
3162 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3163 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><control>R\")\n"
3164 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3165 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3166 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
3167 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
3168 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3169 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
3170 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
3171 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3172 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3173 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3174 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3176 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3177 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3178 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3180 "(menu-path \"<Compose>/File/Close\" \"<control>W\")\n"
3181 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
3182 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
3183 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
3184 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
3185 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
3186 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
3188 static gchar *mew_wl_menurc =
3189 "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
3190 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
3191 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
3192 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
3194 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3195 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3196 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3197 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3199 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3200 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3201 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
3202 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3203 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3204 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3205 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3206 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3207 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3208 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3209 "(menu-path \"<Main>/View/Show all headers\" \"<shift>H\")\n"
3210 "(menu-path \"<Main>/View/Update\" \"<shift>S\")\n"
3212 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
3213 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
3214 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
3215 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3216 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift>A\")\n"
3217 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3218 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3219 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3220 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
3221 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
3222 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
3223 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3224 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3225 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3226 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3227 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
3229 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3230 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3231 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3233 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3234 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3235 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3236 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3237 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3238 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3239 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3241 static gchar *mutt_menurc =
3242 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3243 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
3244 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
3245 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
3247 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3248 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3249 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3250 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
3252 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
3253 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3254 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
3255 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
3256 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
3257 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
3258 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
3259 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3260 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3261 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3262 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3264 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
3265 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
3266 "(menu-path \"<Main>/Message/Compose an email message\" \"M\")\n"
3267 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
3268 "(menu-path \"<Main>/Message/Reply to/all\" \"G\")\n"
3269 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3270 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3271 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3272 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
3273 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3274 "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
3275 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3276 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
3277 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3278 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
3279 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3281 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3282 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3283 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3285 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3286 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3287 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3288 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3289 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3290 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3291 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3293 static gchar *old_sylpheed_menurc =
3294 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3295 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
3296 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
3297 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
3299 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3300 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3301 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3302 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3304 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3305 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3306 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3307 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3308 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3309 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3310 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3311 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
3312 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
3313 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3314 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3315 "(menu-path \"<Main>/View/Update\" \"<alt>U\")\n"
3317 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<alt>I\")\n"
3318 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><alt>I\")\n"
3319 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
3320 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
3321 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><alt>R\")\n"
3322 "(menu-path \"<Main>/Message/Reply to/sender\" \"<control><alt>R\")\n"
3323 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3324 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
3325 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
3326 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
3327 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
3328 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
3329 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3330 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3331 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3332 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3334 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
3335 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
3336 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
3338 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3339 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3340 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3341 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3342 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3343 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3344 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3346 text = gtk_entry_get_text(entry);
3348 if (!strcmp(text, _("Default")))
3349 rc_str = default_menurc;
3350 else if (!strcmp(text, "Mew / Wanderlust"))
3351 rc_str = mew_wl_menurc;
3352 else if (!strcmp(text, "Mutt"))
3353 rc_str = mutt_menurc;
3354 else if (!strcmp(text, _("Old Sylpheed")))
3355 rc_str = old_sylpheed_menurc;
3359 menu_factory_clear_rc(rc_str);
3360 gtk_item_factory_parse_rc_string(rc_str);
3362 gtk_widget_destroy(keybind.window);
3363 keybind.window = NULL;
3364 keybind.combo = NULL;
3367 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
3370 GtkWidget *menuitem;
3373 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3374 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3375 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
3376 g_free(*((gchar **)pparam->data));
3377 *((gchar **)pparam->data) = g_strdup(charset);
3380 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
3382 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3385 g_return_if_fail(optmenu != NULL);
3386 g_return_if_fail(*((gchar **)pparam->data) != NULL);
3388 index = menu_find_option_menu_index(optmenu, *((gchar **)pparam->data),
3389 (GCompareFunc)strcmp);
3391 gtk_option_menu_set_history(optmenu, index);
3393 gtk_option_menu_set_history(optmenu, 0);
3394 prefs_common_charset_set_data_from_optmenu(pparam);
3398 static void prefs_common_encoding_set_data_from_optmenu(PrefParam *pparam)
3401 GtkWidget *menuitem;
3403 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3404 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3405 *((TransferEncodingMethod *)pparam->data) = GPOINTER_TO_INT
3406 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3409 static void prefs_common_encoding_set_optmenu(PrefParam *pparam)
3411 TransferEncodingMethod method =
3412 *((TransferEncodingMethod *)pparam->data);
3413 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3416 g_return_if_fail(optmenu != NULL);
3418 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(method),
3421 gtk_option_menu_set_history(optmenu, index);
3423 gtk_option_menu_set_history(optmenu, 0);
3424 prefs_common_encoding_set_data_from_optmenu(pparam);
3428 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
3431 GtkWidget *menuitem;
3433 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3434 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3435 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
3436 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3439 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
3441 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
3442 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3444 GtkWidget *menuitem;
3447 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(mode),
3450 gtk_option_menu_set_history(optmenu, index);
3452 gtk_option_menu_set_history(optmenu, 0);
3453 prefs_common_recv_dialog_set_data_from_optmenu(pparam);
3456 menu = gtk_option_menu_get_menu(optmenu);
3457 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3458 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3461 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam)
3464 GtkWidget *menuitem;
3466 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3467 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3468 *((SendDialogMode *)pparam->data) = GPOINTER_TO_INT
3469 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3472 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam)
3474 SendDialogMode mode = *((SendDialogMode *)pparam->data);
3475 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3477 GtkWidget *menuitem;
3480 case SEND_DIALOG_ALWAYS:
3481 gtk_option_menu_set_history(optmenu, 0);
3483 case SEND_DIALOG_NEVER:
3484 gtk_option_menu_set_history(optmenu, 1);
3490 menu = gtk_option_menu_get_menu(optmenu);
3491 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3492 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3495 static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
3498 prefs_common_cancel();
3502 static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
3505 if (event && event->keyval == GDK_Escape)
3506 prefs_common_cancel();
3509 static void prefs_common_ok(void)
3511 prefs_common_apply();
3512 gtk_widget_hide(dialog.window);
3517 static void prefs_common_apply(void)
3519 MainWindow *mainwindow;
3521 prefs_set_data_from_dialog(param);
3522 sock_set_io_timeout(prefs_common.io_timeout_secs);
3523 main_window_reflect_prefs_all_real(FALSE);
3524 prefs_common_save_config();
3526 mainwindow = mainwindow_get_mainwindow();
3527 log_window_set_clipping(mainwindow->logwin, prefs_common.cliplog,
3528 prefs_common.loglength);
3530 inc_autocheck_timer_remove();
3531 inc_autocheck_timer_set();
3534 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
3537 GtkWidget *menuitem;
3539 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3540 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3541 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
3542 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3545 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
3547 NextUnreadMsgDialogShow dialog_show;
3548 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3550 GtkWidget *menuitem;
3552 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
3554 switch (dialog_show) {
3555 case NEXTUNREADMSGDIALOG_ALWAYS:
3556 gtk_option_menu_set_history(optmenu, 0);
3558 case NEXTUNREADMSGDIALOG_ASSUME_YES:
3559 gtk_option_menu_set_history(optmenu, 1);
3561 case NEXTUNREADMSGDIALOG_ASSUME_NO:
3562 gtk_option_menu_set_history(optmenu, 2);
3566 menu = gtk_option_menu_get_menu(optmenu);
3567 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3568 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3571 static void prefs_common_cancel(void)
3573 gtk_widget_hide(dialog.window);
3578 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
3581 GtkWidget *menuitem;
3583 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3584 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3585 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
3586 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3589 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
3591 RecvDialogShow dialog_show;
3592 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3594 GtkWidget *menuitem;
3596 dialog_show = *((RecvDialogShow *)pparam->data);
3598 switch (dialog_show) {
3599 case RECVDIALOG_ALWAYS:
3600 gtk_option_menu_set_history(optmenu, 0);
3602 case RECVDIALOG_WINDOW_ACTIVE:
3603 gtk_option_menu_set_history(optmenu, 1);
3605 case RECVDIALOG_NEVER:
3606 gtk_option_menu_set_history(optmenu, 2);
3611 menu = gtk_option_menu_get_menu(optmenu);
3612 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3613 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));