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;
102 GtkWidget *checkbtn_reply_account_autosel;
103 GtkWidget *checkbtn_forward_account_autosel;
104 GtkWidget *checkbtn_reedit_account_autosel;
105 GtkWidget *checkbtn_quote;
106 GtkWidget *checkbtn_default_reply_list;
107 GtkWidget *checkbtn_forward_as_attachment;
108 GtkWidget *checkbtn_redirect_keep_from;
109 GtkWidget *checkbtn_block_cursor;
110 GtkWidget *checkbtn_reply_with_quote;
112 GtkWidget *checkbtn_autosave;
113 GtkWidget *entry_autosave_length;
116 static struct Quote {
117 GtkWidget *entry_quotemark;
118 GtkWidget *text_quotefmt;
120 GtkWidget *entry_fw_quotemark;
121 GtkWidget *text_fw_quotefmt;
123 GtkWidget *entry_quote_chars;
126 static struct Display {
127 GtkWidget *chkbtn_folder_unread;
128 GtkWidget *entry_ng_abbrev_len;
129 GtkWidget *spinbtn_ng_abbrev_len;
130 GtkObject *spinbtn_ng_abbrev_len_adj;
132 GtkWidget *chkbtn_transhdr;
134 GtkWidget *chkbtn_swapfrom;
135 GtkWidget *chkbtn_useaddrbook;
136 GtkWidget *chkbtn_threadsubj;
137 GtkWidget *entry_datefmt;
140 static struct Message {
141 GtkWidget *chkbtn_mbalnum;
142 GtkWidget *chkbtn_disphdrpane;
143 GtkWidget *chkbtn_disphdr;
144 GtkWidget *spinbtn_linespc;
145 GtkObject *spinbtn_linespc_adj;
146 GtkWidget *chkbtn_headspc;
148 GtkWidget *chkbtn_smoothscroll;
149 GtkWidget *spinbtn_scrollstep;
150 GtkObject *spinbtn_scrollstep_adj;
151 GtkWidget *chkbtn_halfpage;
153 GtkWidget *chkbtn_attach_desc;
157 static struct Privacy {
158 GtkWidget *checkbtn_auto_check_signatures;
159 GtkWidget *checkbtn_store_passphrase;
160 GtkWidget *spinbtn_store_passphrase;
161 GtkObject *spinbtn_store_passphrase_adj;
162 GtkWidget *checkbtn_passphrase_grab;
163 GtkWidget *checkbtn_gpg_warning;
167 static struct Interface {
168 /* GtkWidget *checkbtn_emacs; */
169 GtkWidget *checkbtn_always_show_msg;
170 GtkWidget *checkbtn_openunread;
171 GtkWidget *checkbtn_mark_as_read_on_newwin;
172 GtkWidget *checkbtn_openinbox;
173 GtkWidget *checkbtn_immedexec;
174 GtkWidget *optmenu_nextunreadmsgdialog;
177 static struct Other {
178 GtkWidget *checkbtn_addaddrbyclick;
179 GtkWidget *checkbtn_confonexit;
180 GtkWidget *checkbtn_cleanonexit;
181 GtkWidget *checkbtn_askonclean;
182 GtkWidget *checkbtn_warnqueued;
183 GtkWidget *checkbtn_cliplog;
184 GtkWidget *loglength_entry;
187 GtkWidget *checkbtn_ssl_ask_unknown_valid;
191 GtkWidget *spinbtn_iotimeout;
192 GtkObject *spinbtn_iotimeout_adj;
195 static struct KeybindDialog {
200 static void prefs_common_charset_set_data_from_optmenu (PrefParam *pparam);
201 static void prefs_common_charset_set_optmenu (PrefParam *pparam);
202 static void prefs_common_encoding_set_data_from_optmenu (PrefParam *pparam);
203 static void prefs_common_encoding_set_optmenu (PrefParam *pparam);
204 static void prefs_common_recv_dialog_set_data_from_optmenu (PrefParam *pparam);
205 static void prefs_common_recv_dialog_set_optmenu (PrefParam *pparam);
206 static void prefs_common_recv_dialog_newmail_notify_toggle_cb (GtkWidget *w,
208 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam);
209 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam);
210 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam);
211 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam);
212 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam);
213 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam);
216 parameter name, default value, pointer to the prefs variable, data type,
217 pointer to the widget pointer,
218 pointer to the function for data setting,
219 pointer to the function for widget setting
222 static PrefParam param[] = {
224 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
225 &receive.checkbtn_incext,
226 prefs_set_data_from_toggle, prefs_set_toggle},
227 {"ext_inc_path", DEFAULT_INC_PATH, &prefs_common.extinc_cmd, P_STRING,
228 &receive.entry_incext,
229 prefs_set_data_from_entry, prefs_set_entry},
231 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
232 &receive.checkbtn_autochk,
233 prefs_set_data_from_toggle, prefs_set_toggle},
234 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
235 &receive.spinbtn_autochk,
236 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
237 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
238 &receive.checkbtn_chkonstartup,
239 prefs_set_data_from_toggle, prefs_set_toggle},
240 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
241 P_BOOL, &receive.checkbtn_scan_after_inc,
242 prefs_set_data_from_toggle, prefs_set_toggle},
243 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
244 P_BOOL, &receive.checkbtn_newmail_manu,
245 prefs_set_data_from_toggle, prefs_set_toggle},
246 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
247 P_BOOL, &receive.checkbtn_newmail_auto,
248 prefs_set_data_from_toggle, prefs_set_toggle},
249 {"newmail_notify_cmd", "", &prefs_common.newmail_notify_cmd, P_STRING,
250 &receive.entry_newmail_notify_cmd,
251 prefs_set_data_from_entry, prefs_set_entry},
252 {"receive_dialog_mode", "1", &prefs_common.recv_dialog_mode, P_ENUM,
253 &receive.optmenu_recvdialog,
254 prefs_common_recv_dialog_set_data_from_optmenu,
255 prefs_common_recv_dialog_set_optmenu},
256 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
257 P_BOOL, &receive.checkbtn_no_recv_err_panel,
258 prefs_set_data_from_toggle, prefs_set_toggle},
259 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
260 P_BOOL, &receive.checkbtn_close_recv_dialog,
261 prefs_set_data_from_toggle, prefs_set_toggle},
264 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
265 &p_send.checkbtn_savemsg,
266 prefs_set_data_from_toggle, prefs_set_toggle},
267 {"send_dialog_mode", "0", &prefs_common.send_dialog_mode, P_ENUM,
268 &p_send.optmenu_senddialog,
269 prefs_common_send_dialog_set_data_from_optmenu,
270 prefs_common_send_dialog_set_optmenu},
272 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
273 &p_send.optmenu_charset,
274 prefs_common_charset_set_data_from_optmenu,
275 prefs_common_charset_set_optmenu},
276 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
277 &p_send.optmenu_encoding_method,
278 prefs_common_encoding_set_data_from_optmenu,
279 prefs_common_encoding_set_optmenu},
281 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
282 P_BOOL, NULL, NULL, NULL},
285 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
286 &compose.checkbtn_autoextedit,
287 prefs_set_data_from_toggle, prefs_set_toggle},
288 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
289 P_BOOL, &compose.checkbtn_forward_as_attachment,
290 prefs_set_data_from_toggle, prefs_set_toggle},
291 {"redirect_keep_from", "FALSE",
292 &prefs_common.redirect_keep_from, P_BOOL,
293 &compose.checkbtn_redirect_keep_from,
294 prefs_set_data_from_toggle, prefs_set_toggle},
295 {"undo_level", "50", &prefs_common.undolevels, P_INT,
296 &compose.spinbtn_undolevel,
297 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
298 {"block_cursor", "FALSE", &prefs_common.block_cursor,
299 P_BOOL, &compose.checkbtn_block_cursor,
300 prefs_set_data_from_toggle, prefs_set_toggle},
302 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
304 {"linewrap_quotation", "FALSE", &prefs_common.linewrap_quote, P_BOOL,
306 {"linewrap_auto", "FALSE", &prefs_common.autowrap, P_BOOL,
308 {"linewrap_before_sending", "FALSE", &prefs_common.linewrap_at_send, P_BOOL,
310 {"smart_wrapping", "TRUE", &prefs_common.smart_wrapping, P_BOOL,
312 {"autosave", "FALSE", &prefs_common.autosave,
313 P_BOOL, &compose.checkbtn_autosave,
314 prefs_set_data_from_toggle, prefs_set_toggle},
315 {"autosave_length", "50", &prefs_common.autosave_length,
316 P_INT, &compose.entry_autosave_length,
317 prefs_set_data_from_entry, prefs_set_entry},
319 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
321 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path, P_STRING,
323 {"dictionary", "", &prefs_common.dictionary, P_STRING,
325 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode, P_INT,
327 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
329 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
331 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
334 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
335 &compose.checkbtn_reply_with_quote, prefs_set_data_from_toggle, prefs_set_toggle},
337 /* Account autoselection */
338 {"reply_account_autoselect", "TRUE",
339 &prefs_common.reply_account_autosel, P_BOOL,
340 &compose.checkbtn_reply_account_autosel,
341 prefs_set_data_from_toggle, prefs_set_toggle},
342 {"forward_account_autoselect", "TRUE",
343 &prefs_common.forward_account_autosel, P_BOOL,
344 &compose.checkbtn_forward_account_autosel,
345 prefs_set_data_from_toggle, prefs_set_toggle},
346 {"reedit_account_autoselect", "TRUE",
347 &prefs_common.reedit_account_autosel, P_BOOL,
348 &compose.checkbtn_reedit_account_autosel,
349 prefs_set_data_from_toggle, prefs_set_toggle},
351 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
352 &compose.checkbtn_default_reply_list,
353 prefs_set_data_from_toggle, prefs_set_toggle},
355 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
359 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
360 "e.entry_quotemark, prefs_set_data_from_entry, prefs_set_entry},
361 {"reply_quote_format", "On %d\\n%f wrote:\\n\\n%Q",
362 &prefs_common.quotefmt, P_STRING, "e.text_quotefmt,
363 prefs_set_data_from_text, prefs_set_text},
365 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
366 "e.entry_fw_quotemark,
367 prefs_set_data_from_entry, prefs_set_entry},
368 {"forward_quote_format",
369 "\\n\\nBegin forwarded message:\\n\\n"
370 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
371 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M",
372 &prefs_common.fw_quotefmt, P_STRING, "e.text_fw_quotefmt,
373 prefs_set_data_from_text, prefs_set_text},
374 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
375 "e.entry_quote_chars, prefs_set_data_from_entry, prefs_set_entry},
378 {"widget_font", NULL, &prefs_common.widgetfont, P_STRING,
380 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
381 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
382 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
383 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
384 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
385 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
386 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
387 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
390 {"display_folder_unread_num", "TRUE",
391 &prefs_common.display_folder_unread, P_BOOL,
392 &display.chkbtn_folder_unread,
393 prefs_set_data_from_toggle, prefs_set_toggle},
394 {"newsgroup_abbrev_len", "16",
395 &prefs_common.ng_abbrev_len, P_INT,
396 &display.spinbtn_ng_abbrev_len,
397 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
399 {"translate_header", "TRUE", &prefs_common.trans_hdr, P_BOOL,
400 &display.chkbtn_transhdr,
401 prefs_set_data_from_toggle, prefs_set_toggle},
403 /* Display: Summary View */
404 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
405 &display.chkbtn_swapfrom,
406 prefs_set_data_from_toggle, prefs_set_toggle},
407 {"use_address_book", "TRUE", &prefs_common.use_addr_book, P_BOOL,
408 &display.chkbtn_useaddrbook,
409 prefs_set_data_from_toggle, prefs_set_toggle},
410 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
411 &display.chkbtn_threadsubj,
412 prefs_set_data_from_toggle, prefs_set_toggle},
413 {"date_format", "%y/%m/%d(%a) %H:%M", &prefs_common.date_format,
414 P_STRING, &display.entry_datefmt,
415 prefs_set_data_from_entry, prefs_set_entry},
417 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
419 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
421 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
422 P_INT, NULL, NULL, NULL },
424 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
426 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
428 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
430 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
433 {"folderview_vscrollbar_policy", "0",
434 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
437 {"summary_col_show_mark", "TRUE",
438 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
439 {"summary_col_show_unread", "TRUE",
440 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
441 {"summary_col_show_mime", "TRUE",
442 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
443 {"summary_col_show_subject", "TRUE",
444 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
445 {"summary_col_show_from", "TRUE",
446 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
447 {"summary_col_show_date", "TRUE",
448 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
449 {"summary_col_show_size", "TRUE",
450 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
451 {"summary_col_show_number", "FALSE",
452 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
453 {"summary_col_show_score", "FALSE",
454 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
455 {"summary_col_show_locked", "FALSE",
456 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
458 {"summary_col_pos_mark", "0",
459 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
460 {"summary_col_pos_unread", "1",
461 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
462 {"summary_col_pos_mime", "2",
463 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
464 {"summary_col_pos_subject", "3",
465 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
466 {"summary_col_pos_from", "4",
467 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
468 {"summary_col_pos_date", "5",
469 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
470 {"summary_col_pos_size", "6",
471 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
472 {"summary_col_pos_number", "7",
473 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
474 {"summary_col_pos_score", "8",
475 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
476 {"summary_col_pos_locked", "9",
477 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
479 {"summary_col_size_mark", "10",
480 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
481 {"summary_col_size_unread", "13",
482 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
483 {"summary_col_size_mime", "10",
484 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
485 {"summary_col_size_subject", "200",
486 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
487 {"summary_col_size_from", "120",
488 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
489 {"summary_col_size_date", "118",
490 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
491 {"summary_col_size_size", "45",
492 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
493 {"summary_col_size_number", "40",
494 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
495 {"summary_col_size_score", "40",
496 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
497 {"summary_col_size_locked", "13",
498 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
501 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
503 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
505 {"folderview_width", "179", &prefs_common.folderview_width, P_INT,
507 {"folderview_height", "600", &prefs_common.folderview_height, P_INT,
509 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
512 {"folder_col_folder", "150", &prefs_common.folder_col_folder, P_INT,
514 {"folder_col_new", "32", &prefs_common.folder_col_new, P_INT,
516 {"folder_col_unread", "32", &prefs_common.folder_col_unread, P_INT,
518 {"folder_col_total", "32", &prefs_common.folder_col_total, P_INT,
521 {"summaryview_width", "600", &prefs_common.summaryview_width, P_INT,
523 {"summaryview_height", "173", &prefs_common.summaryview_height, P_INT,
526 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
528 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
530 {"messageview_width", "600", &prefs_common.msgview_width, P_INT,
532 {"messageview_height", "540", &prefs_common.msgview_height, P_INT,
534 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
537 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
539 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
541 {"mainview_width", "600", &prefs_common.mainview_width, P_INT,
543 {"mainview_height", "600", &prefs_common.mainview_height, P_INT,
545 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
547 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
549 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
551 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
553 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
555 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
557 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
559 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
561 {"compose_width", "600", &prefs_common.compose_width, P_INT,
563 {"compose_height", "560", &prefs_common.compose_height, P_INT,
565 {"compose_x", "0", &prefs_common.compose_x, P_INT,
567 {"compose_y", "0", &prefs_common.compose_y, P_INT,
570 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
573 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
575 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
577 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
579 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
581 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
583 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
585 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
586 P_BOOL, NULL, NULL, NULL},
588 {"convert_mb_alnum", "FALSE", &prefs_common.conv_mb_alnum, P_BOOL,
589 &message.chkbtn_mbalnum,
590 prefs_set_data_from_toggle, prefs_set_toggle},
591 {"display_header_pane", "TRUE", &prefs_common.display_header_pane,
592 P_BOOL, &message.chkbtn_disphdrpane,
593 prefs_set_data_from_toggle, prefs_set_toggle},
594 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
595 &message.chkbtn_disphdr,
596 prefs_set_data_from_toggle, prefs_set_toggle},
597 {"line_space", "2", &prefs_common.line_space, P_INT,
598 &message.spinbtn_linespc,
599 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
600 {"enable_head_space", "FALSE", &prefs_common.head_space, P_BOOL,
601 &message.chkbtn_headspc,
602 prefs_set_data_from_toggle, prefs_set_toggle},
604 {"enable_smooth_scroll", "FALSE",
605 &prefs_common.enable_smooth_scroll, P_BOOL,
606 &message.chkbtn_smoothscroll,
607 prefs_set_data_from_toggle, prefs_set_toggle},
608 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
609 &message.spinbtn_scrollstep,
610 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
611 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
612 &message.chkbtn_halfpage,
613 prefs_set_data_from_toggle, prefs_set_toggle},
615 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
618 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
619 &message.chkbtn_attach_desc,
620 prefs_set_data_from_toggle, prefs_set_toggle},
621 {"attach_save_directory", NULL,
622 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
625 {"mime_image_viewer", "display '%s'",
626 &prefs_common.mime_image_viewer, P_STRING, NULL, NULL, NULL},
627 {"mime_audio_player", "play '%s'",
628 &prefs_common.mime_audio_player, P_STRING, NULL, NULL, NULL},
629 {"mime_open_command", "gedit '%s'",
630 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
634 {"auto_check_signatures", "TRUE",
635 &prefs_common.auto_check_signatures, P_BOOL,
636 &privacy.checkbtn_auto_check_signatures,
637 prefs_set_data_from_toggle, prefs_set_toggle},
638 {"store_passphrase", "FALSE", &prefs_common.store_passphrase, P_BOOL,
639 &privacy.checkbtn_store_passphrase,
640 prefs_set_data_from_toggle, prefs_set_toggle},
641 {"store_passphrase_timeout", "0",
642 &prefs_common.store_passphrase_timeout, P_INT,
643 &privacy.spinbtn_store_passphrase,
644 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
646 {"passphrase_grab", "FALSE", &prefs_common.passphrase_grab, P_BOOL,
647 &privacy.checkbtn_passphrase_grab,
648 prefs_set_data_from_toggle, prefs_set_toggle},
649 #endif /* __MINGW32__ */
650 {"gpg_warning", "TRUE", &prefs_common.gpg_warning, P_BOOL,
651 &privacy.checkbtn_gpg_warning,
652 prefs_set_data_from_toggle, prefs_set_toggle},
653 #endif /* USE_GPGME */
656 {"separate_folder", "FALSE", &prefs_common.sep_folder, P_BOOL,
658 {"separate_message", "FALSE", &prefs_common.sep_msg, P_BOOL,
661 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
662 NULL, NULL, NULL}, */
663 {"always_show_message_when_selected", "FALSE",
664 &prefs_common.always_show_msg,
665 P_BOOL, &interface.checkbtn_always_show_msg,
666 prefs_set_data_from_toggle, prefs_set_toggle},
667 {"open_unread_on_enter", "FALSE", &prefs_common.open_unread_on_enter,
668 P_BOOL, &interface.checkbtn_openunread,
669 prefs_set_data_from_toggle, prefs_set_toggle},
670 {"mark_as_read_on_new_window", "FALSE",
671 &prefs_common.mark_as_read_on_new_window,
672 P_BOOL, &interface.checkbtn_mark_as_read_on_newwin,
673 prefs_set_data_from_toggle, prefs_set_toggle},
674 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
675 P_BOOL, &interface.checkbtn_openinbox,
676 prefs_set_data_from_toggle, prefs_set_toggle},
677 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
678 &interface.checkbtn_immedexec,
679 prefs_set_data_from_toggle, prefs_set_toggle},
680 {"nextunreadmsg_dialog", NULL, &prefs_common.next_unread_msg_dialog, P_ENUM,
681 &interface.optmenu_nextunreadmsgdialog,
682 prefs_nextunreadmsgdialog_set_data_from_optmenu,
683 prefs_nextunreadmsgdialog_set_optmenu},
685 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
686 &prefs_common.pixmap_theme_path, P_STRING,
689 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
693 {"uri_open_command", DEFAULT_BROWSER_CMD,
694 &prefs_common.uri_cmd, P_STRING, NULL, NULL, NULL},
695 {"print_command", "lpr %s", &prefs_common.print_cmd, P_STRING,
697 {"ext_editor_command", "gedit %s",
698 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
700 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
701 P_BOOL, &other.checkbtn_addaddrbyclick,
702 prefs_set_data_from_toggle, prefs_set_toggle},
704 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
705 &other.checkbtn_confonexit,
706 prefs_set_data_from_toggle, prefs_set_toggle},
707 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
708 &other.checkbtn_cleanonexit,
709 prefs_set_data_from_toggle, prefs_set_toggle},
710 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
711 &other.checkbtn_askonclean,
712 prefs_set_data_from_toggle, prefs_set_toggle},
713 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
714 P_BOOL, &other.checkbtn_warnqueued,
715 prefs_set_data_from_toggle, prefs_set_toggle},
718 {"ssl_ask_unknown_valid", "TRUE", &prefs_common.ssl_ask_unknown_valid,
719 P_BOOL, &other.checkbtn_ssl_ask_unknown_valid,
720 prefs_set_data_from_toggle, prefs_set_toggle},
723 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
725 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
728 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
729 P_INT, &other.spinbtn_iotimeout,
730 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
731 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
733 {"important_score", "1", &prefs_common.important_score, P_INT,
735 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
736 &other.checkbtn_cliplog,
737 prefs_set_data_from_toggle, prefs_set_toggle},
738 {"log_length", "500", &prefs_common.loglength, P_INT,
739 &other.loglength_entry,
740 prefs_set_data_from_entry, prefs_set_entry},
742 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
744 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
747 {"color_new", "179", &prefs_common.color_new, P_COLOR,
750 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
753 /* widget creating functions */
754 static void prefs_common_create (void);
755 static void prefs_receive_create (void);
756 static void prefs_send_create (void);
757 static void prefs_compose_create (void);
758 static void prefs_quote_create (void);
759 static void prefs_display_create (void);
760 static void prefs_message_create (void);
762 static void prefs_privacy_create (void);
764 static void prefs_interface_create (void);
765 static void prefs_other_create (void);
767 static void date_format_ok_btn_clicked (GtkButton *button,
769 static void date_format_cancel_btn_clicked (GtkButton *button,
771 static void date_format_key_pressed (GtkWidget *keywidget,
774 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
777 static void date_format_entry_on_change (GtkEditable *editable,
779 static void date_format_select_row (GtkWidget *date_format_list,
782 GdkEventButton *event,
783 GtkWidget *date_format);
784 static GtkWidget *date_format_create (GtkButton *button,
787 static void prefs_keybind_select (void);
788 static gint prefs_keybind_deleted (GtkWidget *widget,
791 static void prefs_keybind_key_pressed (GtkWidget *widget,
794 static void prefs_keybind_cancel (void);
795 static void prefs_keybind_apply_clicked (GtkWidget *widget);
797 static gint prefs_common_deleted (GtkWidget *widget,
800 static void prefs_common_key_pressed (GtkWidget *widget,
803 static void prefs_common_ok (void);
804 static void prefs_common_apply (void);
805 static void prefs_common_cancel (void);
807 void prefs_common_init(void)
809 prefs_common.disphdr_list = NULL;
812 PrefsCommon *prefs_common_get(void)
814 return &prefs_common;
818 * Read history list from the specified history file
820 GList *prefs_common_read_history(const gchar *history)
824 gchar buf[PREFSBUFSIZE];
827 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
829 if ((fp = fopen(path, "rb")) == NULL) {
830 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
835 while (fgets(buf, sizeof(buf), fp) != NULL) {
837 if (buf[0] == '\0') continue;
838 tmp = add_history(tmp, buf);
842 tmp = g_list_reverse(tmp);
847 void prefs_common_read_config(void)
849 prefs_read_config(param, "Common", COMMON_RC);
851 prefs_common.mime_open_cmd_history =
852 prefs_common_read_history(COMMAND_HISTORY);
853 prefs_common.summary_quicksearch_history =
854 prefs_common_read_history(QUICKSEARCH_HISTORY);
858 * Save history list to the specified history file
860 void prefs_common_save_history(const gchar *history, GList *list)
866 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
868 if ((fp = fopen(path, "wb")) == NULL) {
869 FILE_OP_ERROR(path, "fopen");
874 for (cur = list; cur != NULL; cur = cur->next) {
875 fputs((gchar *)cur->data, fp);
883 void prefs_common_save_config(void)
885 prefs_save_config(param, "Common", COMMON_RC);
887 prefs_common_save_history(COMMAND_HISTORY,
888 prefs_common.mime_open_cmd_history);
889 prefs_common_save_history(QUICKSEARCH_HISTORY,
890 prefs_common.summary_quicksearch_history);
893 void prefs_common_open(void)
895 if (prefs_rc_is_readonly(COMMON_RC))
900 if (!dialog.window) {
901 prefs_common_create();
904 manage_window_set_transient(GTK_WINDOW(dialog.window));
905 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
906 gtk_widget_grab_focus(dialog.ok_btn);
908 prefs_set_dialog(param);
910 gtk_widget_show(dialog.window);
913 static void prefs_common_create(void)
917 debug_print("Creating common preferences window...\n");
919 prefs_dialog_create(&dialog);
920 gtk_window_set_title (GTK_WINDOW(dialog.window),
921 _("Common Preferences"));
922 gtk_signal_connect (GTK_OBJECT(dialog.window), "delete_event",
923 GTK_SIGNAL_FUNC(prefs_common_deleted), NULL);
924 gtk_signal_connect (GTK_OBJECT(dialog.window), "key_press_event",
925 GTK_SIGNAL_FUNC(prefs_common_key_pressed), NULL);
926 MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
928 gtk_signal_connect (GTK_OBJECT(dialog.ok_btn), "clicked",
929 GTK_SIGNAL_FUNC(prefs_common_ok), NULL);
930 gtk_signal_connect (GTK_OBJECT(dialog.apply_btn), "clicked",
931 GTK_SIGNAL_FUNC(prefs_common_apply), NULL);
932 gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
933 GTK_SIGNAL_FUNC(prefs_common_cancel),
934 GTK_OBJECT(dialog.window));
936 /* create all widgets on notebook */
937 prefs_receive_create();
938 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
940 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
941 prefs_compose_create();
942 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
943 prefs_quote_create();
944 SET_NOTEBOOK_LABEL(dialog.notebook, _("Quote"), page++);
945 prefs_display_create();
946 SET_NOTEBOOK_LABEL(dialog.notebook, _("Display"), page++);
947 prefs_message_create();
948 SET_NOTEBOOK_LABEL(dialog.notebook, _("Message"), page++);
950 prefs_privacy_create();
951 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
953 prefs_interface_create();
954 SET_NOTEBOOK_LABEL(dialog.notebook, _("Interface"), page++);
955 prefs_other_create();
956 SET_NOTEBOOK_LABEL(dialog.notebook, _("Other"), page++);
958 gtk_widget_show_all(dialog.window);
961 static void prefs_receive_create(void)
965 GtkWidget *frame_incext;
966 GtkWidget *checkbtn_incext;
968 GtkWidget *label_incext;
969 GtkWidget *entry_incext;
970 /* GtkWidget *button_incext; */
972 GtkWidget *hbox_autochk;
973 GtkWidget *checkbtn_autochk;
974 GtkWidget *label_autochk1;
975 GtkObject *spinbtn_autochk_adj;
976 GtkWidget *spinbtn_autochk;
977 GtkWidget *label_autochk2;
978 GtkWidget *checkbtn_chkonstartup;
979 GtkWidget *checkbtn_scan_after_inc;
982 GtkWidget *frame_newmail;
983 GtkWidget *hbox_newmail_notify;
984 GtkWidget *checkbtn_newmail_auto;
985 GtkWidget *checkbtn_newmail_manu;
986 GtkWidget *entry_newmail_notify_cmd;
987 GtkWidget *label_newmail_notify_cmd;
989 GtkWidget *hbox_recvdialog;
990 GtkWidget *label_recvdialog;
993 GtkWidget *optmenu_recvdialog;
994 GtkWidget *checkbtn_no_recv_err_panel;
995 GtkWidget *checkbtn_close_recv_dialog;
997 vbox1 = gtk_vbox_new (FALSE, VSPACING);
998 gtk_widget_show (vbox1);
999 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1000 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1002 PACK_FRAME(vbox1, frame_incext, _("External program"));
1004 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1005 gtk_widget_show (vbox2);
1006 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
1007 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1009 /* Use of external incorporation program */
1010 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
1011 _("Use external program for incorporation"));
1013 hbox = gtk_hbox_new (FALSE, 8);
1014 gtk_widget_show (hbox);
1015 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1016 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1018 label_incext = gtk_label_new (_("Command"));
1019 gtk_widget_show (label_incext);
1020 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1022 entry_incext = gtk_entry_new ();
1023 gtk_widget_show (entry_incext);
1024 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1027 button_incext = gtk_button_new_with_label ("... ");
1028 gtk_widget_show (button_incext);
1029 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1032 vbox2 = gtk_vbox_new (FALSE, 0);
1033 gtk_widget_show (vbox2);
1034 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1037 hbox_autochk = gtk_hbox_new (FALSE, 8);
1038 gtk_widget_show (hbox_autochk);
1039 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1041 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1042 _("Auto-check new mail"));
1044 label_autochk1 = gtk_label_new (_("every"));
1045 gtk_widget_show (label_autochk1);
1046 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1048 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1049 spinbtn_autochk = gtk_spin_button_new
1050 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1051 gtk_widget_show (spinbtn_autochk);
1052 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1053 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1054 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1056 label_autochk2 = gtk_label_new (_("minute(s)"));
1057 gtk_widget_show (label_autochk2);
1058 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1060 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1061 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1062 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1064 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1065 _("Check new mail on startup"));
1066 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1067 _("Update all local folders after incorporation"));
1070 /* receive dialog */
1071 hbox_recvdialog = gtk_hbox_new (FALSE, 8);
1072 gtk_widget_show (hbox_recvdialog);
1073 gtk_box_pack_start (GTK_BOX (vbox2), hbox_recvdialog, FALSE, FALSE, 0);
1075 label_recvdialog = gtk_label_new (_("Show receive dialog"));
1076 gtk_misc_set_alignment(GTK_MISC(label_recvdialog), 0, 0.5);
1077 gtk_widget_show (label_recvdialog);
1078 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), label_recvdialog, FALSE, FALSE, 0);
1080 optmenu_recvdialog = gtk_option_menu_new ();
1081 gtk_widget_show (optmenu_recvdialog);
1082 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), optmenu_recvdialog, FALSE, FALSE, 0);
1084 menu = gtk_menu_new ();
1085 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
1086 MENUITEM_ADD (menu, menuitem, _("Only on manual receiving"),
1087 RECV_DIALOG_MANUAL);
1088 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
1090 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
1092 PACK_CHECK_BUTTON (vbox2, checkbtn_no_recv_err_panel,
1093 _("Don't popup error dialog on receive error"));
1095 PACK_CHECK_BUTTON (vbox2, checkbtn_close_recv_dialog,
1096 _("Close receive dialog when finished"));
1098 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1100 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1101 gtk_widget_show (vbox2);
1102 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1103 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1105 hbox = gtk_hbox_new (TRUE, 8);
1106 gtk_widget_show (hbox);
1107 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1108 _("after autochecking"));
1109 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1110 _("after manual checking"));
1111 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1112 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1113 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1115 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1116 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1119 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1120 gtk_widget_show (hbox);
1121 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1124 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1125 "(use %d as number of new "
1127 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1129 gtk_widget_show (label_newmail_notify_cmd);
1130 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1131 label_newmail_notify_cmd, FALSE, FALSE, 0);
1133 entry_newmail_notify_cmd = gtk_entry_new ();
1134 gtk_widget_show (entry_newmail_notify_cmd);
1135 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1136 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1138 gtk_widget_set_sensitive(hbox_newmail_notify,
1139 prefs_common.newmail_notify_auto ||
1140 prefs_common.newmail_notify_manu);
1142 receive.checkbtn_incext = checkbtn_incext;
1143 receive.entry_incext = entry_incext;
1144 /* receive.button_incext = button_incext; */
1146 receive.checkbtn_autochk = checkbtn_autochk;
1147 receive.spinbtn_autochk = spinbtn_autochk;
1148 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1150 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1151 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1154 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1155 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1156 receive.hbox_newmail_notify = hbox_newmail_notify;
1157 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1158 receive.optmenu_recvdialog = optmenu_recvdialog;
1159 receive.checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
1160 receive.checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
1163 static void prefs_send_create(void)
1168 GtkWidget *checkbtn_savemsg;
1169 GtkWidget *label_outcharset;
1170 GtkWidget *optmenu_charset;
1171 GtkWidget *optmenu_menu;
1172 GtkWidget *menuitem;
1173 GtkTooltips *charset_tooltip;
1174 GtkWidget *optmenu_encoding;
1175 GtkWidget *label_encoding;
1176 GtkTooltips *encoding_tooltip;
1177 GtkWidget *label_senddialog;
1179 GtkWidget *optmenu_senddialog;
1180 GtkWidget *hbox_senddialog;
1182 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1183 gtk_widget_show (vbox1);
1184 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1185 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1187 vbox2 = gtk_vbox_new (FALSE, 0);
1188 gtk_widget_show (vbox2);
1189 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1191 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1192 _("Save sent messages to Sent folder"));
1194 hbox_senddialog = gtk_hbox_new (FALSE, 8);
1195 gtk_box_pack_start (GTK_BOX (vbox1), hbox_senddialog, FALSE, FALSE, 0);
1197 label_senddialog = gtk_label_new (_("Show send dialog"));
1198 gtk_widget_show (label_senddialog);
1199 gtk_box_pack_start (GTK_BOX (hbox_senddialog), label_senddialog, FALSE, FALSE, 0);
1201 optmenu_senddialog = gtk_option_menu_new ();
1202 gtk_widget_show (optmenu_senddialog);
1203 gtk_box_pack_start (GTK_BOX (hbox_senddialog), optmenu_senddialog, FALSE, FALSE, 0);
1205 menu = gtk_menu_new ();
1206 MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
1207 MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
1209 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
1211 hbox1 = gtk_hbox_new (FALSE, 8);
1212 gtk_widget_show (hbox1);
1213 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1215 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1216 gtk_widget_show (label_outcharset);
1217 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1219 charset_tooltip = gtk_tooltips_new();
1221 optmenu_charset = gtk_option_menu_new ();
1222 gtk_widget_show (optmenu_charset);
1223 gtk_tooltips_set_tip(GTK_TOOLTIPS(charset_tooltip), optmenu_charset,
1224 _("If `Automatic' is selected, the optimal encoding"
1225 " for the current locale will be used"),
1227 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_charset, FALSE, FALSE, 0);
1229 optmenu_menu = gtk_menu_new ();
1231 #define SET_MENUITEM(str, data) \
1233 MENUITEM_ADD(optmenu_menu, menuitem, str, data); \
1236 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1237 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1239 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1241 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1242 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1243 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1244 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1245 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1246 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1247 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1249 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1251 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1253 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1254 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1256 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1258 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1259 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1261 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1262 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1264 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1265 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1267 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1268 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1269 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1271 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_charset),
1274 hbox1 = gtk_hbox_new (FALSE, 8);
1275 gtk_widget_show (hbox1);
1276 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1278 hbox1 = gtk_hbox_new (FALSE, 8);
1279 gtk_widget_show (hbox1);
1280 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1282 label_encoding = gtk_label_new (_("Transfer encoding"));
1283 gtk_widget_show (label_encoding);
1284 gtk_box_pack_start (GTK_BOX (hbox1), label_encoding, FALSE, FALSE, 0);
1286 encoding_tooltip = gtk_tooltips_new();
1288 optmenu_encoding = gtk_option_menu_new ();
1289 gtk_widget_show (optmenu_encoding);
1290 gtk_tooltips_set_tip(GTK_TOOLTIPS(encoding_tooltip), optmenu_encoding,
1291 _("Specify Content-Transfer-Encoding used when"
1292 " message body contains non-ASCII characters"),
1294 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_encoding, FALSE, FALSE, 0);
1296 optmenu_menu = gtk_menu_new ();
1298 SET_MENUITEM(_("Automatic"), CTE_AUTO);
1299 SET_MENUITEM("base64", CTE_BASE64);
1300 SET_MENUITEM("quoted-printable", CTE_QUOTED_PRINTABLE);
1301 SET_MENUITEM("8bit", CTE_8BIT);
1303 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_encoding),
1306 hbox1 = gtk_hbox_new (FALSE, 8);
1307 gtk_widget_show (hbox1);
1308 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1310 p_send.checkbtn_savemsg = checkbtn_savemsg;
1311 p_send.optmenu_senddialog = optmenu_senddialog;
1313 p_send.optmenu_charset = optmenu_charset;
1314 p_send.optmenu_encoding_method = optmenu_encoding;
1317 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1321 toggled = gtk_toggle_button_get_active
1322 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1323 gtk_toggle_button_get_active
1324 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1325 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1328 static void prefs_compose_create(void)
1333 GtkWidget *checkbtn_autoextedit;
1335 GtkWidget *frame_autosel;
1336 GtkWidget *hbox_autosel;
1337 GtkWidget *checkbtn_reply_account_autosel;
1338 GtkWidget *checkbtn_forward_account_autosel;
1339 GtkWidget *checkbtn_reedit_account_autosel;
1341 GtkWidget *hbox_undolevel;
1342 GtkWidget *label_undolevel;
1343 GtkObject *spinbtn_undolevel_adj;
1344 GtkWidget *spinbtn_undolevel;
1348 GtkWidget *checkbtn_default_reply_list;
1350 GtkWidget *checkbtn_forward_as_attachment;
1351 GtkWidget *checkbtn_redirect_keep_from;
1352 GtkWidget *checkbtn_block_cursor;
1354 GtkWidget *hbox_autosave;
1355 GtkWidget *checkbtn_autosave;
1356 GtkWidget *entry_autosave_length;
1357 GtkWidget *label_autosave_length;
1359 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1360 gtk_widget_show (vbox1);
1361 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1362 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1364 /* Account autoselection */
1365 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1367 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1368 gtk_widget_show (hbox_autosel);
1369 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1370 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1372 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1373 _("when replying"));
1374 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1375 _("when forwarding"));
1376 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1377 _("when re-editing"));
1379 vbox2 = gtk_vbox_new (FALSE, 0);
1380 gtk_widget_show (vbox2);
1381 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1383 PACK_CHECK_BUTTON (vbox2, checkbtn_default_reply_list,
1384 _("Reply button invokes mailing list reply"));
1386 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1387 _("Automatically launch the external editor"));
1389 hbox5 = gtk_hbox_new (FALSE, 8);
1390 gtk_widget_show (hbox5);
1391 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1393 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1394 _("Forward as attachment"));
1396 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1399 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1400 _("Keep the original 'From' header when redirecting"));
1403 hbox_autosave = gtk_hbox_new (FALSE, 8);
1404 gtk_widget_show (hbox_autosave);
1405 gtk_box_pack_start (GTK_BOX (vbox1), hbox_autosave, FALSE, FALSE, 0);
1407 PACK_CHECK_BUTTON (hbox_autosave, checkbtn_autosave,
1408 _("Autosave to Drafts folder every "));
1410 entry_autosave_length = gtk_entry_new();
1411 gtk_widget_set_usize (entry_autosave_length, 64, -1);
1412 gtk_widget_show (entry_autosave_length);
1413 gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
1415 label_autosave_length = gtk_label_new(_("characters"));
1416 gtk_widget_show (label_autosave_length);
1417 gtk_box_pack_start (GTK_BOX (hbox_autosave), label_autosave_length, FALSE, FALSE, 0);
1419 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1420 gtk_widget_show (hbox_undolevel);
1421 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1423 label_undolevel = gtk_label_new (_("Undo level"));
1424 gtk_widget_show (label_undolevel);
1425 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1427 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1428 spinbtn_undolevel = gtk_spin_button_new
1429 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1430 gtk_widget_show (spinbtn_undolevel);
1431 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1432 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1433 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1436 compose.checkbtn_quote = checkbtn_quote;
1437 compose.entry_quotemark = entry_quotemark;
1438 compose.text_quotefmt = text_quotefmt;
1441 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1443 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1444 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1445 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1447 compose.spinbtn_undolevel = spinbtn_undolevel;
1448 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1450 compose.checkbtn_autosave = checkbtn_autosave;
1451 compose.entry_autosave_length = entry_autosave_length;
1453 compose.checkbtn_forward_as_attachment =
1454 checkbtn_forward_as_attachment;
1455 compose.checkbtn_redirect_keep_from =
1456 checkbtn_redirect_keep_from;
1457 compose.checkbtn_block_cursor =
1458 checkbtn_block_cursor;
1459 compose.checkbtn_default_reply_list = checkbtn_default_reply_list;
1462 static void prefs_quote_create(void)
1465 GtkWidget *frame_quote;
1466 GtkWidget *vbox_quote;
1469 GtkWidget *label_quotemark;
1470 GtkWidget *entry_quotemark;
1471 GtkWidget *scrolledwin_quotefmt;
1472 GtkWidget *text_quotefmt;
1474 GtkWidget *entry_fw_quotemark;
1475 GtkWidget *text_fw_quotefmt;
1477 GtkWidget *entry_quote_chars;
1478 GtkWidget *label_quote_chars;
1480 GtkWidget *btn_quotedesc;
1482 GtkWidget *checkbtn_reply_with_quote;
1484 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1485 gtk_widget_show (vbox1);
1486 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1487 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1491 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1493 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1495 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1496 gtk_widget_show (vbox_quote);
1497 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1498 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1500 hbox1 = gtk_hbox_new (FALSE, 32);
1501 gtk_widget_show (hbox1);
1502 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1504 hbox2 = gtk_hbox_new (FALSE, 8);
1505 gtk_widget_show (hbox2);
1506 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1508 label_quotemark = gtk_label_new (_("Quotation mark"));
1509 gtk_widget_show (label_quotemark);
1510 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1512 entry_quotemark = gtk_entry_new ();
1513 gtk_widget_show (entry_quotemark);
1514 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
1515 gtk_widget_set_usize (entry_quotemark, 64, -1);
1517 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1518 gtk_widget_show (scrolledwin_quotefmt);
1519 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1520 gtk_scrolled_window_set_policy
1521 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1522 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1524 text_quotefmt = gtk_text_new (NULL, NULL);
1525 gtk_widget_show (text_quotefmt);
1526 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
1527 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
1528 gtk_widget_set_usize(text_quotefmt, -1, 60);
1532 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
1534 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1535 gtk_widget_show (vbox_quote);
1536 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1537 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1539 hbox1 = gtk_hbox_new (FALSE, 32);
1540 gtk_widget_show (hbox1);
1541 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1543 hbox2 = gtk_hbox_new (FALSE, 8);
1544 gtk_widget_show (hbox2);
1545 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1547 label_quotemark = gtk_label_new (_("Quotation mark"));
1548 gtk_widget_show (label_quotemark);
1549 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1551 entry_fw_quotemark = gtk_entry_new ();
1552 gtk_widget_show (entry_fw_quotemark);
1553 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
1555 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
1557 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1558 gtk_widget_show (scrolledwin_quotefmt);
1559 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1560 gtk_scrolled_window_set_policy
1561 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1562 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1564 text_fw_quotefmt = gtk_text_new (NULL, NULL);
1565 gtk_widget_show (text_fw_quotefmt);
1566 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
1568 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
1569 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
1571 hbox1 = gtk_hbox_new (FALSE, 32);
1572 gtk_widget_show (hbox1);
1573 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1576 gtk_button_new_with_label (_(" Description of symbols "));
1577 gtk_widget_show (btn_quotedesc);
1578 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
1579 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
1580 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
1584 PACK_FRAME (vbox1, frame_quote, _("Quotation characters"));
1586 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1587 gtk_widget_show (vbox_quote);
1588 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1589 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1591 hbox1 = gtk_hbox_new (FALSE, 32);
1592 gtk_widget_show (hbox1);
1593 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1595 hbox2 = gtk_hbox_new (FALSE, 8);
1596 gtk_widget_show (hbox2);
1597 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1599 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
1600 gtk_widget_show (label_quote_chars);
1601 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
1603 entry_quote_chars = gtk_entry_new ();
1604 gtk_widget_show (entry_quote_chars);
1605 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
1607 gtk_widget_set_usize (entry_quote_chars, 64, -1);
1610 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
1611 quote.entry_quotemark = entry_quotemark;
1612 quote.text_quotefmt = text_quotefmt;
1613 quote.entry_fw_quotemark = entry_fw_quotemark;
1614 quote.text_fw_quotefmt = text_fw_quotefmt;
1615 quote.entry_quote_chars = entry_quote_chars;
1618 static void prefs_display_create(void)
1621 GtkWidget *chkbtn_transhdr;
1622 GtkWidget *chkbtn_folder_unread;
1624 GtkWidget *label_ng_abbrev;
1625 GtkWidget *spinbtn_ng_abbrev_len;
1626 GtkObject *spinbtn_ng_abbrev_len_adj;
1627 GtkWidget *frame_summary;
1629 GtkWidget *chkbtn_swapfrom;
1630 GtkWidget *chkbtn_useaddrbook;
1631 GtkWidget *chkbtn_threadsubj;
1633 GtkWidget *label_datefmt;
1634 GtkWidget *button_datefmt;
1635 GtkWidget *entry_datefmt;
1636 GtkWidget *button_dispitem;
1638 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1639 gtk_widget_show (vbox1);
1640 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1641 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1643 vbox2 = gtk_vbox_new (FALSE, 0);
1644 gtk_widget_show (vbox2);
1645 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
1648 (vbox2, chkbtn_transhdr,
1649 _("Translate header name (such as `From:', `Subject:')"));
1651 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
1652 _("Display unread number next to folder name"));
1654 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1656 hbox1 = gtk_hbox_new (FALSE, 8);
1657 gtk_widget_show (hbox1);
1658 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1660 label_ng_abbrev = gtk_label_new
1661 (_("Abbreviate newsgroup names longer than"));
1662 gtk_widget_show (label_ng_abbrev);
1663 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1665 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
1666 spinbtn_ng_abbrev_len = gtk_spin_button_new
1667 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
1668 gtk_widget_show (spinbtn_ng_abbrev_len);
1669 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
1671 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
1672 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
1675 label_ng_abbrev = gtk_label_new
1677 gtk_widget_show (label_ng_abbrev);
1678 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1680 /* ---- Summary ---- */
1682 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
1684 vbox2 = gtk_vbox_new (FALSE, 0);
1685 gtk_widget_show (vbox2);
1686 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
1687 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1690 (vbox2, chkbtn_swapfrom,
1691 _("Display recipient in `From' column if sender is yourself"));
1693 (vbox2, chkbtn_useaddrbook,
1694 _("Display sender using address book"));
1696 (vbox2, chkbtn_threadsubj,
1697 _("Thread using subject in addition to standard headers"));
1699 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1701 hbox1 = gtk_hbox_new (FALSE, 8);
1702 gtk_widget_show (hbox1);
1703 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1705 label_datefmt = gtk_label_new (_("Date format"));
1706 gtk_widget_show (label_datefmt);
1707 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
1709 entry_datefmt = gtk_entry_new ();
1710 gtk_widget_show (entry_datefmt);
1711 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
1713 button_datefmt = gtk_button_new_with_label (" ... ");
1715 gtk_widget_show (button_datefmt);
1716 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
1717 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
1718 GTK_SIGNAL_FUNC (date_format_create), NULL);
1720 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
1722 hbox1 = gtk_hbox_new (FALSE, 8);
1723 gtk_widget_show (hbox1);
1724 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1726 button_dispitem = gtk_button_new_with_label
1727 (_(" Set displayed items in summary... "));
1728 gtk_widget_show (button_dispitem);
1729 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
1730 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
1731 GTK_SIGNAL_FUNC (prefs_summary_column_open),
1734 display.chkbtn_transhdr = chkbtn_transhdr;
1735 display.chkbtn_folder_unread = chkbtn_folder_unread;
1736 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
1737 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
1739 display.chkbtn_swapfrom = chkbtn_swapfrom;
1740 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
1741 display.chkbtn_threadsubj = chkbtn_threadsubj;
1742 display.entry_datefmt = entry_datefmt;
1745 static void prefs_message_create(void)
1751 GtkWidget *chkbtn_mbalnum;
1752 GtkWidget *chkbtn_disphdrpane;
1753 GtkWidget *chkbtn_disphdr;
1754 GtkWidget *button_edit_disphdr;
1755 GtkWidget *hbox_linespc;
1756 GtkWidget *label_linespc;
1757 GtkObject *spinbtn_linespc_adj;
1758 GtkWidget *spinbtn_linespc;
1759 GtkWidget *chkbtn_headspc;
1761 GtkWidget *frame_scr;
1762 GtkWidget *vbox_scr;
1763 GtkWidget *chkbtn_smoothscroll;
1764 GtkWidget *hbox_scr;
1765 GtkWidget *label_scr;
1766 GtkObject *spinbtn_scrollstep_adj;
1767 GtkWidget *spinbtn_scrollstep;
1768 GtkWidget *chkbtn_halfpage;
1770 GtkWidget *chkbtn_attach_desc;
1772 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1773 gtk_widget_show (vbox1);
1774 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1775 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1777 vbox2 = gtk_vbox_new (FALSE, 0);
1778 gtk_widget_show (vbox2);
1779 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1782 (vbox2, chkbtn_mbalnum,
1783 _("Display multi-byte alphanumeric as\n"
1784 "ASCII character (Japanese only)"));
1785 gtk_label_set_justify (GTK_LABEL (GTK_BIN(chkbtn_mbalnum)->child),
1788 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
1789 _("Display header pane above message view"));
1791 hbox1 = gtk_hbox_new (FALSE, 8);
1792 gtk_widget_show (hbox1);
1793 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1795 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
1796 _("Display short headers on message view"));
1798 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
1799 gtk_widget_show (button_edit_disphdr);
1800 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
1802 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
1803 GTK_SIGNAL_FUNC (prefs_display_header_open),
1806 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
1808 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1810 hbox1 = gtk_hbox_new (FALSE, 32);
1811 gtk_widget_show (hbox1);
1812 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1814 hbox_linespc = gtk_hbox_new (FALSE, 8);
1815 gtk_widget_show (hbox1);
1816 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
1818 label_linespc = gtk_label_new (_("Line space"));
1819 gtk_widget_show (label_linespc);
1820 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1823 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
1824 spinbtn_linespc = gtk_spin_button_new
1825 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
1826 gtk_widget_show (spinbtn_linespc);
1827 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
1829 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
1830 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
1832 label_linespc = gtk_label_new (_("pixel(s)"));
1833 gtk_widget_show (label_linespc);
1834 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1837 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Indent text"));
1839 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
1841 vbox_scr = gtk_vbox_new (FALSE, 0);
1842 gtk_widget_show (vbox_scr);
1843 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
1844 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
1846 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
1848 hbox1 = gtk_hbox_new (FALSE, 32);
1849 gtk_widget_show (hbox1);
1850 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
1852 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
1854 hbox_scr = gtk_hbox_new (FALSE, 8);
1855 gtk_widget_show (hbox_scr);
1856 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
1858 label_scr = gtk_label_new (_("Step"));
1859 gtk_widget_show (label_scr);
1860 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1862 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
1863 spinbtn_scrollstep = gtk_spin_button_new
1864 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
1865 gtk_widget_show (spinbtn_scrollstep);
1866 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
1868 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
1869 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
1872 label_scr = gtk_label_new (_("pixel(s)"));
1873 gtk_widget_show (label_scr);
1874 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1876 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
1878 vbox3 = gtk_vbox_new (FALSE, 0);
1879 gtk_widget_show (vbox3);
1880 gtk_box_pack_start (GTK_BOX (vbox1), vbox3, FALSE, FALSE, 0);
1882 PACK_CHECK_BUTTON(vbox3, chkbtn_attach_desc,
1883 _("Show attachment descriptions (rather than names)"));
1885 message.chkbtn_mbalnum = chkbtn_mbalnum;
1886 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
1887 message.chkbtn_disphdr = chkbtn_disphdr;
1888 message.spinbtn_linespc = spinbtn_linespc;
1889 message.chkbtn_headspc = chkbtn_headspc;
1891 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
1892 message.spinbtn_scrollstep = spinbtn_scrollstep;
1893 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
1894 message.chkbtn_halfpage = chkbtn_halfpage;
1896 message.chkbtn_attach_desc = chkbtn_attach_desc;
1900 static void prefs_privacy_create(void)
1906 GtkWidget *hbox_spc;
1908 GtkWidget *checkbtn_auto_check_signatures;
1909 GtkWidget *checkbtn_store_passphrase;
1910 GtkObject *spinbtn_store_passphrase_adj;
1911 GtkWidget *spinbtn_store_passphrase;
1912 GtkTooltips *store_tooltip;
1913 GtkWidget *checkbtn_passphrase_grab;
1914 GtkWidget *checkbtn_gpg_warning;
1916 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1917 gtk_widget_show (vbox1);
1918 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1919 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1921 vbox2 = gtk_vbox_new (FALSE, 0);
1922 gtk_widget_show (vbox2);
1923 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1925 PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
1926 _("Automatically check signatures"));
1928 PACK_CHECK_BUTTON (vbox2, checkbtn_store_passphrase,
1929 _("Store passphrase in memory temporarily"));
1931 vbox3 = gtk_vbox_new (FALSE, 0);
1932 gtk_widget_show (vbox3);
1933 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
1935 hbox1 = gtk_hbox_new (FALSE, 8);
1936 gtk_widget_show (hbox1);
1937 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
1939 hbox_spc = gtk_hbox_new (FALSE, 0);
1940 gtk_widget_show (hbox_spc);
1941 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
1942 gtk_widget_set_usize (hbox_spc, 12, -1);
1944 label = gtk_label_new (_("Expire after"));
1945 gtk_widget_show (label);
1946 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
1948 store_tooltip = gtk_tooltips_new();
1950 spinbtn_store_passphrase_adj = gtk_adjustment_new (0, 0, 1440, 1, 5, 5);
1951 spinbtn_store_passphrase = gtk_spin_button_new
1952 (GTK_ADJUSTMENT (spinbtn_store_passphrase_adj), 1, 0);
1953 gtk_widget_show (spinbtn_store_passphrase);
1954 gtk_tooltips_set_tip(GTK_TOOLTIPS(store_tooltip), spinbtn_store_passphrase,
1955 _("Setting to '0' will store the passphrase"
1956 " for the whole session"),
1958 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_store_passphrase, FALSE, FALSE, 0);
1959 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_store_passphrase),
1961 gtk_widget_set_usize (spinbtn_store_passphrase, 64, -1);
1963 label = gtk_label_new (_("minute(s) "));
1964 gtk_widget_show (label);
1965 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
1967 hbox1 = gtk_hbox_new (FALSE, 8);
1968 gtk_widget_show (hbox1);
1969 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
1971 hbox_spc = gtk_hbox_new (FALSE, 0);
1972 gtk_widget_show (hbox_spc);
1973 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
1974 gtk_widget_set_usize (hbox_spc, 12, -1);
1976 SET_TOGGLE_SENSITIVITY (checkbtn_store_passphrase, vbox3);
1979 PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab,
1980 _("Grab input while entering a passphrase"));
1984 (vbox2, checkbtn_gpg_warning,
1985 _("Display warning on startup if GnuPG doesn't work"));
1987 hbox1 = gtk_hbox_new (FALSE, 8);
1988 gtk_widget_show (hbox1);
1989 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1991 privacy.checkbtn_auto_check_signatures
1992 = checkbtn_auto_check_signatures;
1993 privacy.checkbtn_store_passphrase = checkbtn_store_passphrase;
1994 privacy.spinbtn_store_passphrase = spinbtn_store_passphrase;
1995 privacy.spinbtn_store_passphrase_adj = spinbtn_store_passphrase_adj;
1996 privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
1997 privacy.checkbtn_gpg_warning = checkbtn_gpg_warning;
1999 #endif /* USE_GPGME */
2001 static void prefs_interface_create(void)
2006 /* GtkWidget *checkbtn_emacs; */
2007 GtkWidget *checkbtn_always_show_msg;
2008 GtkWidget *checkbtn_openunread;
2009 GtkWidget *checkbtn_mark_as_read_on_newwin;
2010 GtkWidget *checkbtn_openinbox;
2011 GtkWidget *checkbtn_immedexec;
2012 GtkTooltips *immedexec_tooltip;
2016 GtkWidget *menuitem;
2018 GtkWidget *button_keybind;
2020 GtkWidget *hbox_nextunreadmsgdialog;
2021 GtkWidget *optmenu_nextunreadmsgdialog;
2023 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2024 gtk_widget_show (vbox1);
2025 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2026 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2028 vbox2 = gtk_vbox_new (FALSE, 0);
2029 gtk_widget_show (vbox2);
2030 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2032 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
2033 _("Emulate the behavior of mouse operation of\n"
2034 "Emacs-based mailer"));
2035 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
2036 GTK_JUSTIFY_LEFT); */
2039 (vbox2, checkbtn_always_show_msg,
2040 _("Always open messages in summary when selected"));
2043 (vbox2, checkbtn_openunread,
2044 _("Open first unread message when entering a folder"));
2047 (vbox2, checkbtn_mark_as_read_on_newwin,
2048 _("Only mark message as read when opened in new window"));
2051 (vbox2, checkbtn_openinbox,
2052 _("Go to inbox after receiving new mail"));
2054 vbox3 = gtk_vbox_new (FALSE, 0);
2055 gtk_widget_show (vbox3);
2056 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2058 immedexec_tooltip = gtk_tooltips_new();
2061 (vbox3, checkbtn_immedexec,
2062 _("Execute immediately when moving or deleting messages"));
2063 gtk_tooltips_set_tip(GTK_TOOLTIPS(immedexec_tooltip), checkbtn_immedexec,
2064 _("Messages will be marked until execution"
2065 " if this is turned off"),
2068 hbox1 = gtk_hbox_new (FALSE, 0);
2069 gtk_widget_show (hbox1);
2070 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2072 /* Next Unread Message Dialog */
2073 hbox_nextunreadmsgdialog = gtk_hbox_new (FALSE, 8);
2074 gtk_widget_show (hbox1);
2075 gtk_box_pack_start (GTK_BOX (vbox1), hbox_nextunreadmsgdialog, FALSE, FALSE, 0);
2077 label = gtk_label_new (_("Show no-unread-message dialog"));
2078 gtk_widget_show (label);
2079 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), label, FALSE, FALSE, 8);
2081 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
2082 gtk_widget_show (optmenu_nextunreadmsgdialog);
2083 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), optmenu_nextunreadmsgdialog, FALSE, FALSE, 8);
2085 menu = gtk_menu_new ();
2086 MENUITEM_ADD (menu, menuitem, _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
2087 MENUITEM_ADD (menu, menuitem, _("Assume 'Yes'"),
2088 NEXTUNREADMSGDIALOG_ASSUME_YES);
2089 MENUITEM_ADD (menu, menuitem, _("Assume 'No'"),
2090 NEXTUNREADMSGDIALOG_ASSUME_NO);
2092 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog), menu);
2094 hbox1 = gtk_hbox_new (FALSE, 8);
2095 gtk_widget_show (hbox1);
2096 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2098 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
2099 gtk_widget_show (button_keybind);
2100 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
2101 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
2102 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
2104 /* interface.checkbtn_emacs = checkbtn_emacs; */
2105 interface.checkbtn_always_show_msg = checkbtn_always_show_msg;
2106 interface.checkbtn_openunread = checkbtn_openunread;
2107 interface.checkbtn_mark_as_read_on_newwin
2108 = checkbtn_mark_as_read_on_newwin;
2109 interface.checkbtn_openinbox = checkbtn_openinbox;
2110 interface.checkbtn_immedexec = checkbtn_immedexec;
2111 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
2114 static void prefs_other_create(void)
2119 GtkWidget *frame_addr;
2120 GtkWidget *vbox_addr;
2121 GtkWidget *checkbtn_addaddrbyclick;
2123 GtkWidget *frame_cliplog;
2124 GtkWidget *vbox_cliplog;
2125 GtkWidget *hbox_cliplog;
2126 GtkWidget *checkbtn_cliplog;
2127 GtkWidget *loglength_label;
2128 GtkWidget *loglength_entry;
2129 GtkTooltips *loglength_tooltip;
2131 GtkWidget *frame_exit;
2132 GtkWidget *vbox_exit;
2133 GtkWidget *checkbtn_confonexit;
2134 GtkWidget *checkbtn_cleanonexit;
2135 GtkWidget *checkbtn_askonclean;
2136 GtkWidget *checkbtn_warnqueued;
2138 GtkWidget *label_iotimeout;
2139 GtkWidget *spinbtn_iotimeout;
2140 GtkObject *spinbtn_iotimeout_adj;
2144 GtkWidget *frame_ssl;
2145 GtkWidget *vbox_ssl;
2146 GtkWidget *hbox_ssl;
2147 GtkWidget *checkbtn_ssl_ask_unknown_valid;
2150 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2151 gtk_widget_show (vbox1);
2152 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2153 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2155 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2157 vbox_addr = gtk_vbox_new (FALSE, 0);
2158 gtk_widget_show (vbox_addr);
2159 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2160 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2163 (vbox_addr, checkbtn_addaddrbyclick,
2164 _("Add address to destination when double-clicked"));
2167 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2169 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2170 gtk_widget_show (vbox_cliplog);
2171 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2172 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2173 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2174 _("Clip the log size"));
2175 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2176 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2177 gtk_widget_show (hbox_cliplog);
2179 loglength_label = gtk_label_new (_("Log window length"));
2180 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2182 gtk_widget_show (GTK_WIDGET (loglength_label));
2184 loglength_tooltip = gtk_tooltips_new();
2186 loglength_entry = gtk_entry_new ();
2187 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2188 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2190 gtk_widget_show (GTK_WIDGET (loglength_entry));
2191 gtk_tooltips_set_tip(GTK_TOOLTIPS(loglength_tooltip), loglength_entry,
2192 _("0 to stop logging in the log window"),
2194 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2196 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2201 PACK_FRAME (vbox1, frame_ssl, _("Security"));
2203 vbox_ssl = gtk_vbox_new (FALSE, 0);
2204 gtk_widget_show (vbox_ssl);
2205 gtk_container_add (GTK_CONTAINER (frame_ssl), vbox_ssl);
2206 gtk_container_set_border_width (GTK_CONTAINER (vbox_ssl), 8);
2207 PACK_CHECK_BUTTON (vbox_ssl, checkbtn_ssl_ask_unknown_valid,
2208 _("Ask before accepting SSL certificates"));
2209 hbox_ssl = gtk_hbox_new (FALSE, 3);
2210 gtk_container_add (GTK_CONTAINER (vbox_ssl), hbox_ssl);
2211 gtk_widget_show (hbox_ssl);
2216 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2218 vbox_exit = gtk_vbox_new (FALSE, 0);
2219 gtk_widget_show (vbox_exit);
2220 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2221 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
2223 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
2224 _("Confirm on exit"));
2226 hbox1 = gtk_hbox_new (FALSE, 32);
2227 gtk_widget_show (hbox1);
2228 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
2230 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
2231 _("Empty trash on exit"));
2232 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
2233 _("Ask before emptying"));
2234 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
2236 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
2237 _("Warn if there are queued messages"));
2239 hbox1 = gtk_hbox_new (FALSE, 8);
2240 gtk_widget_show (hbox1);
2241 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2243 label_iotimeout = gtk_label_new (_("Socket I/O timeout:"));
2244 gtk_widget_show (label_iotimeout);
2245 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2247 spinbtn_iotimeout_adj = gtk_adjustment_new (60, 0, 1000, 1, 10, 10);
2248 spinbtn_iotimeout = gtk_spin_button_new
2249 (GTK_ADJUSTMENT (spinbtn_iotimeout_adj), 1, 0);
2250 gtk_widget_show (spinbtn_iotimeout);
2251 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_iotimeout,
2253 gtk_widget_set_usize (spinbtn_iotimeout, 64, -1);
2254 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_iotimeout), TRUE);
2256 label_iotimeout = gtk_label_new (_("seconds"));
2257 gtk_widget_show (label_iotimeout);
2258 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2260 other.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2262 other.checkbtn_cliplog = checkbtn_cliplog;
2263 other.loglength_entry = loglength_entry;
2265 other.checkbtn_confonexit = checkbtn_confonexit;
2266 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
2267 other.checkbtn_askonclean = checkbtn_askonclean;
2268 other.checkbtn_warnqueued = checkbtn_warnqueued;
2270 other.spinbtn_iotimeout = spinbtn_iotimeout;
2271 other.spinbtn_iotimeout_adj = spinbtn_iotimeout_adj;
2275 other.checkbtn_ssl_ask_unknown_valid = checkbtn_ssl_ask_unknown_valid;
2280 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
2282 GtkWidget *datefmt_sample = NULL;
2285 g_return_if_fail(widget != NULL);
2286 g_return_if_fail(*widget != NULL);
2287 g_return_if_fail(display.entry_datefmt != NULL);
2289 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2290 (GTK_OBJECT(*widget), "datefmt_sample"));
2291 g_return_if_fail(datefmt_sample != NULL);
2293 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
2294 g_free(prefs_common.date_format);
2295 prefs_common.date_format = text;
2296 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
2298 gtk_widget_destroy(*widget);
2302 static void date_format_cancel_btn_clicked(GtkButton *button,
2305 g_return_if_fail(widget != NULL);
2306 g_return_if_fail(*widget != NULL);
2308 gtk_widget_destroy(*widget);
2312 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
2315 if (event && event->keyval == GDK_Escape)
2316 date_format_cancel_btn_clicked(NULL, widget);
2319 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
2320 GdkEventAny *event, GtkWidget **widget)
2322 g_return_val_if_fail(widget != NULL, FALSE);
2323 g_return_val_if_fail(*widget != NULL, FALSE);
2329 static void date_format_entry_on_change(GtkEditable *editable,
2333 struct tm *cal_time;
2337 cur_time = time(NULL);
2338 cal_time = localtime(&cur_time);
2340 text = gtk_editable_get_chars(editable, 0, -1);
2342 strftime(buffer, sizeof buffer, text, cal_time);
2344 gtk_label_set_text(example, buffer);
2347 static void date_format_select_row(GtkWidget *date_format_list, gint row,
2348 gint column, GdkEventButton *event,
2349 GtkWidget *date_format)
2355 GtkWidget *datefmt_sample;
2357 /* only on double click */
2358 if (!event || event->type != GDK_2BUTTON_PRESS) return;
2361 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2362 (GTK_OBJECT(date_format), "datefmt_sample"));
2364 g_return_if_fail(date_format_list != NULL);
2365 g_return_if_fail(date_format != NULL);
2366 g_return_if_fail(datefmt_sample != NULL);
2368 /* get format from clist */
2369 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
2371 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
2372 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
2374 /* insert the format into the text entry */
2375 new_format = g_malloc(strlen(old_format) + 3);
2377 strncpy(new_format, old_format, cur_pos);
2378 new_format[cur_pos] = '\0';
2379 strcat(new_format, format);
2380 strcat(new_format, &old_format[cur_pos]);
2382 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
2383 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
2388 static GtkWidget *date_format_create(GtkButton *button, void *data)
2390 static GtkWidget *datefmt_win = NULL;
2392 GtkWidget *scrolledwindow1;
2393 GtkWidget *datefmt_clist;
2398 GtkWidget *confirm_area;
2400 GtkWidget *cancel_btn;
2401 GtkWidget *datefmt_entry;
2430 const gint TIME_FORMAT_ELEMS =
2431 sizeof time_format / sizeof time_format[0];
2433 time_format[0].txt = _("the full abbreviated weekday name");
2434 time_format[1].txt = _("the full weekday name");
2435 time_format[2].txt = _("the abbreviated month name");
2436 time_format[3].txt = _("the full month name");
2437 time_format[4].txt = _("the preferred date and time for the current locale");
2438 time_format[5].txt = _("the century number (year/100)");
2439 time_format[6].txt = _("the day of the month as a decimal number");
2440 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
2441 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
2442 time_format[9].txt = _("the day of the year as a decimal number");
2443 time_format[10].txt = _("the month as a decimal number");
2444 time_format[11].txt = _("the minute as a decimal number");
2445 time_format[12].txt = _("either AM or PM");
2446 time_format[13].txt = _("the second as a decimal number");
2447 time_format[14].txt = _("the day of the week as a decimal number");
2448 time_format[15].txt = _("the preferred date for the current locale");
2449 time_format[16].txt = _("the last two digits of a year");
2450 time_format[17].txt = _("the year as a decimal number");
2451 time_format[18].txt = _("the time zone or name or abbreviation");
2453 if (datefmt_win) return datefmt_win;
2455 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
2456 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
2457 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
2458 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2459 gtk_widget_set_usize(datefmt_win, 440, 280);
2461 vbox1 = gtk_vbox_new(FALSE, 10);
2462 gtk_widget_show(vbox1);
2463 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
2465 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
2466 gtk_scrolled_window_set_policy
2467 (GTK_SCROLLED_WINDOW(scrolledwindow1),
2468 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
2469 gtk_widget_show(scrolledwindow1);
2470 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
2472 titles[0] = _("Specifier");
2473 titles[1] = _("Description");
2474 datefmt_clist = gtk_clist_new_with_titles(2, titles);
2475 gtk_widget_show(datefmt_clist);
2476 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
2477 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
2478 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
2479 GTK_SELECTION_BROWSE);
2481 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
2483 /* phoney casting necessary because of gtk... */
2484 text[0] = (gchar *)time_format[i].fmt;
2485 text[1] = (gchar *)time_format[i].txt;
2486 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
2489 table = gtk_table_new(2, 2, FALSE);
2490 gtk_widget_show(table);
2491 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
2492 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
2493 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
2495 label1 = gtk_label_new(_("Date format"));
2496 gtk_widget_show(label1);
2497 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
2499 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
2500 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
2502 datefmt_entry = gtk_entry_new_with_max_length(256);
2503 gtk_widget_show(datefmt_entry);
2504 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
2505 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2507 /* we need the "sample" entry box; add it as data so callbacks can
2508 * get the entry box */
2509 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
2512 label2 = gtk_label_new(_("Example"));
2513 gtk_widget_show(label2);
2514 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
2516 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
2517 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
2519 label3 = gtk_label_new("");
2520 gtk_widget_show(label3);
2521 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
2522 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2523 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
2524 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
2526 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
2527 &cancel_btn, _("Cancel"), NULL, NULL);
2528 gtk_widget_grab_default(ok_btn);
2529 gtk_widget_show(confirm_area);
2531 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
2533 /* set the current format */
2534 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
2535 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
2538 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2539 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
2541 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
2542 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
2544 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
2545 GTK_SIGNAL_FUNC(date_format_key_pressed),
2547 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
2548 GTK_SIGNAL_FUNC(date_format_on_delete),
2550 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
2551 GTK_SIGNAL_FUNC(date_format_entry_on_change),
2554 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
2555 GTK_SIGNAL_FUNC(date_format_select_row),
2558 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2559 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
2561 gtk_widget_show(datefmt_win);
2562 manage_window_set_transient(GTK_WINDOW(datefmt_win));
2564 gtk_widget_grab_focus(ok_btn);
2569 static void prefs_keybind_select(void)
2576 GtkWidget *confirm_area;
2578 GtkWidget *cancel_btn;
2580 window = gtk_window_new (GTK_WINDOW_DIALOG);
2581 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
2582 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
2583 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
2584 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
2585 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
2586 manage_window_set_transient (GTK_WINDOW (window));
2588 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2589 gtk_container_add (GTK_CONTAINER (window), vbox1);
2590 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
2592 hbox1 = gtk_hbox_new (FALSE, 8);
2593 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2595 label = gtk_label_new
2596 (_("Select preset:"));
2597 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2598 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2600 hbox1 = gtk_hbox_new (FALSE, 8);
2601 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2603 combo = gtk_combo_new ();
2604 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
2605 gtkut_combo_set_items (GTK_COMBO (combo),
2611 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
2613 hbox1 = gtk_hbox_new (FALSE, 8);
2614 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2616 label = gtk_label_new
2617 (_("You can also modify each menu shortcut by pressing\n"
2618 "any key(s) when placing the mouse pointer on the item."));
2619 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2620 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2622 hbox1 = gtk_hbox_new (FALSE, 8);
2623 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2625 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
2626 &cancel_btn, _("Cancel"), NULL, NULL);
2627 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
2628 gtk_widget_grab_default (ok_btn);
2630 MANAGE_WINDOW_SIGNALS_CONNECT(window);
2631 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2632 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
2633 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
2634 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
2635 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
2636 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
2638 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
2639 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
2642 gtk_widget_show_all(window);
2644 keybind.window = window;
2645 keybind.combo = combo;
2648 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
2651 if (event && event->keyval == GDK_Escape)
2652 prefs_keybind_cancel();
2655 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
2658 prefs_keybind_cancel();
2662 static void prefs_keybind_cancel(void)
2664 gtk_widget_destroy(keybind.window);
2665 keybind.window = NULL;
2666 keybind.combo = NULL;
2669 static void prefs_keybind_apply_clicked(GtkWidget *widget)
2671 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
2675 static gchar *default_menurc =
2676 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
2677 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
2678 "(menu-path \"<Main>/File/Print...\" \"\")\n"
2679 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
2681 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2682 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2683 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2684 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
2686 "(menu-path \"<Main>/View/Expand Summary View\" \"V\")\n"
2687 "(menu-path \"<Main>/View/Expand Message View\" \"<shift>V\")\n"
2688 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2689 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2690 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2691 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2692 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2693 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
2694 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2695 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
2696 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2697 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
2699 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
2700 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2701 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
2702 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
2703 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><control>R\")\n"
2704 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2705 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2706 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
2707 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
2708 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
2709 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
2710 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
2711 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2712 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2713 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2714 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2716 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2717 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2718 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2720 "(menu-path \"<Compose>/File/Close\" \"<control>W\")\n"
2721 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
2722 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
2723 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
2724 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
2725 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
2726 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
2728 static gchar *mew_wl_menurc =
2729 "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
2730 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
2731 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
2732 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
2734 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2735 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2736 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2737 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
2739 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
2740 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
2741 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
2742 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2743 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2744 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2745 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2746 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
2747 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2748 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
2749 "(menu-path \"<Main>/View/Show all headers\" \"<shift>H\")\n"
2750 "(menu-path \"<Main>/View/Update\" \"<shift>S\")\n"
2752 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
2753 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2754 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
2755 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
2756 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift>A\")\n"
2757 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2758 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2759 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
2760 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
2761 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
2762 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
2763 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
2764 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2765 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2766 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2767 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
2769 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2770 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2771 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2773 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
2774 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2775 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2776 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2777 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2778 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2779 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2781 static gchar *mutt_menurc =
2782 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
2783 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
2784 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
2785 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
2787 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2788 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2789 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2790 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
2792 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
2793 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2794 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
2795 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
2796 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
2797 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
2798 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
2799 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2800 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
2801 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2802 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
2804 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
2805 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2806 "(menu-path \"<Main>/Message/Compose an email message\" \"M\")\n"
2807 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
2808 "(menu-path \"<Main>/Message/Reply to/all\" \"G\")\n"
2809 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2810 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2811 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
2812 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
2813 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
2814 "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
2815 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
2816 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
2817 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2818 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
2819 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2821 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2822 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2823 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2825 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
2826 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2827 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2828 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2829 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2830 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2831 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2833 static gchar *old_sylpheed_menurc =
2834 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
2835 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
2836 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
2837 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
2839 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2840 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2841 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2842 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
2844 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
2845 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
2846 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2847 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2848 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2849 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2850 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2851 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
2852 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
2853 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
2854 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2855 "(menu-path \"<Main>/View/Update\" \"<alt>U\")\n"
2857 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<alt>I\")\n"
2858 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><alt>I\")\n"
2859 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
2860 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
2861 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><alt>R\")\n"
2862 "(menu-path \"<Main>/Message/Reply to/sender\" \"<control><alt>R\")\n"
2863 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2864 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
2865 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
2866 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
2867 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
2868 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
2869 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2870 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2871 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2872 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2874 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
2875 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
2876 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
2878 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
2879 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2880 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2881 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2882 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2883 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2884 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2886 text = gtk_entry_get_text(entry);
2888 if (!strcmp(text, _("Default")))
2889 rc_str = default_menurc;
2890 else if (!strcmp(text, "Mew / Wanderlust"))
2891 rc_str = mew_wl_menurc;
2892 else if (!strcmp(text, "Mutt"))
2893 rc_str = mutt_menurc;
2894 else if (!strcmp(text, _("Old Sylpheed")))
2895 rc_str = old_sylpheed_menurc;
2899 menu_factory_clear_rc(rc_str);
2900 gtk_item_factory_parse_rc_string(rc_str);
2902 gtk_widget_destroy(keybind.window);
2903 keybind.window = NULL;
2904 keybind.combo = NULL;
2907 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
2910 GtkWidget *menuitem;
2913 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2914 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2915 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
2916 g_free(*((gchar **)pparam->data));
2917 *((gchar **)pparam->data) = g_strdup(charset);
2920 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
2922 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2925 g_return_if_fail(optmenu != NULL);
2926 g_return_if_fail(*((gchar **)pparam->data) != NULL);
2928 index = menu_find_option_menu_index(optmenu, *((gchar **)pparam->data),
2929 (GCompareFunc)strcmp);
2931 gtk_option_menu_set_history(optmenu, index);
2933 gtk_option_menu_set_history(optmenu, 0);
2934 prefs_common_charset_set_data_from_optmenu(pparam);
2938 static void prefs_common_encoding_set_data_from_optmenu(PrefParam *pparam)
2941 GtkWidget *menuitem;
2943 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2944 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2945 *((TransferEncodingMethod *)pparam->data) = GPOINTER_TO_INT
2946 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2949 static void prefs_common_encoding_set_optmenu(PrefParam *pparam)
2951 TransferEncodingMethod method =
2952 *((TransferEncodingMethod *)pparam->data);
2953 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2956 g_return_if_fail(optmenu != NULL);
2958 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(method),
2961 gtk_option_menu_set_history(optmenu, index);
2963 gtk_option_menu_set_history(optmenu, 0);
2964 prefs_common_encoding_set_data_from_optmenu(pparam);
2968 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
2971 GtkWidget *menuitem;
2973 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2974 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2975 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
2976 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2979 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
2981 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
2982 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2984 GtkWidget *menuitem;
2987 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(mode),
2990 gtk_option_menu_set_history(optmenu, index);
2992 gtk_option_menu_set_history(optmenu, 0);
2993 prefs_common_recv_dialog_set_data_from_optmenu(pparam);
2996 menu = gtk_option_menu_get_menu(optmenu);
2997 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2998 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3001 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam)
3004 GtkWidget *menuitem;
3006 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3007 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3008 *((SendDialogMode *)pparam->data) = GPOINTER_TO_INT
3009 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3012 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam)
3014 SendDialogMode mode = *((SendDialogMode *)pparam->data);
3015 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3017 GtkWidget *menuitem;
3020 case SEND_DIALOG_ALWAYS:
3021 gtk_option_menu_set_history(optmenu, 0);
3023 case SEND_DIALOG_NEVER:
3024 gtk_option_menu_set_history(optmenu, 1);
3030 menu = gtk_option_menu_get_menu(optmenu);
3031 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3032 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3035 static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
3038 prefs_common_cancel();
3042 static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
3045 if (event && event->keyval == GDK_Escape)
3046 prefs_common_cancel();
3049 static void prefs_common_ok(void)
3051 prefs_common_apply();
3052 gtk_widget_hide(dialog.window);
3057 static void prefs_common_apply(void)
3059 MainWindow *mainwindow;
3061 prefs_set_data_from_dialog(param);
3062 sock_set_io_timeout(prefs_common.io_timeout_secs);
3063 main_window_reflect_prefs_all_real(FALSE);
3064 prefs_common_save_config();
3066 mainwindow = mainwindow_get_mainwindow();
3067 log_window_set_clipping(mainwindow->logwin, prefs_common.cliplog,
3068 prefs_common.loglength);
3070 inc_autocheck_timer_remove();
3071 inc_autocheck_timer_set();
3074 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
3077 GtkWidget *menuitem;
3079 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3080 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3081 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
3082 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3085 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
3087 NextUnreadMsgDialogShow dialog_show;
3088 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3090 GtkWidget *menuitem;
3092 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
3094 switch (dialog_show) {
3095 case NEXTUNREADMSGDIALOG_ALWAYS:
3096 gtk_option_menu_set_history(optmenu, 0);
3098 case NEXTUNREADMSGDIALOG_ASSUME_YES:
3099 gtk_option_menu_set_history(optmenu, 1);
3101 case NEXTUNREADMSGDIALOG_ASSUME_NO:
3102 gtk_option_menu_set_history(optmenu, 2);
3106 menu = gtk_option_menu_get_menu(optmenu);
3107 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3108 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3111 static void prefs_common_cancel(void)
3113 gtk_widget_hide(dialog.window);
3118 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
3121 GtkWidget *menuitem;
3123 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3124 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3125 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
3126 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3129 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
3131 RecvDialogShow dialog_show;
3132 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3134 GtkWidget *menuitem;
3136 dialog_show = *((RecvDialogShow *)pparam->data);
3138 switch (dialog_show) {
3139 case RECVDIALOG_ALWAYS:
3140 gtk_option_menu_set_history(optmenu, 0);
3142 case RECVDIALOG_WINDOW_ACTIVE:
3143 gtk_option_menu_set_history(optmenu, 1);
3145 case RECVDIALOG_NEVER:
3146 gtk_option_menu_set_history(optmenu, 2);
3151 menu = gtk_option_menu_get_menu(optmenu);
3152 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3153 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));