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 {"mark_as_read_delay", "0",
675 &prefs_common.mark_as_read_delay, P_INT,
677 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
678 P_BOOL, &interface.checkbtn_openinbox,
679 prefs_set_data_from_toggle, prefs_set_toggle},
680 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
681 &interface.checkbtn_immedexec,
682 prefs_set_data_from_toggle, prefs_set_toggle},
683 {"nextunreadmsg_dialog", NULL, &prefs_common.next_unread_msg_dialog, P_ENUM,
684 &interface.optmenu_nextunreadmsgdialog,
685 prefs_nextunreadmsgdialog_set_data_from_optmenu,
686 prefs_nextunreadmsgdialog_set_optmenu},
688 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
689 &prefs_common.pixmap_theme_path, P_STRING,
692 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
696 {"uri_open_command", DEFAULT_BROWSER_CMD,
697 &prefs_common.uri_cmd, P_STRING, NULL, NULL, NULL},
698 {"print_command", "lpr %s", &prefs_common.print_cmd, P_STRING,
700 {"ext_editor_command", "gedit %s",
701 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
703 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
704 P_BOOL, &other.checkbtn_addaddrbyclick,
705 prefs_set_data_from_toggle, prefs_set_toggle},
707 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
708 &other.checkbtn_confonexit,
709 prefs_set_data_from_toggle, prefs_set_toggle},
710 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
711 &other.checkbtn_cleanonexit,
712 prefs_set_data_from_toggle, prefs_set_toggle},
713 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
714 &other.checkbtn_askonclean,
715 prefs_set_data_from_toggle, prefs_set_toggle},
716 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
717 P_BOOL, &other.checkbtn_warnqueued,
718 prefs_set_data_from_toggle, prefs_set_toggle},
721 {"ssl_ask_unknown_valid", "TRUE", &prefs_common.ssl_ask_unknown_valid,
722 P_BOOL, &other.checkbtn_ssl_ask_unknown_valid,
723 prefs_set_data_from_toggle, prefs_set_toggle},
726 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
728 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
730 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
733 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
734 P_INT, &other.spinbtn_iotimeout,
735 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
736 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
738 {"important_score", "1", &prefs_common.important_score, P_INT,
740 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
741 &other.checkbtn_cliplog,
742 prefs_set_data_from_toggle, prefs_set_toggle},
743 {"log_length", "500", &prefs_common.loglength, P_INT,
744 &other.loglength_entry,
745 prefs_set_data_from_entry, prefs_set_entry},
747 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
749 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
752 {"color_new", "179", &prefs_common.color_new, P_COLOR,
755 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
758 /* widget creating functions */
759 static void prefs_common_create (void);
760 static void prefs_receive_create (void);
761 static void prefs_send_create (void);
762 static void prefs_compose_create (void);
763 static void prefs_quote_create (void);
764 static void prefs_display_create (void);
765 static void prefs_message_create (void);
767 static void prefs_privacy_create (void);
769 static void prefs_interface_create (void);
770 static void prefs_other_create (void);
772 static void date_format_ok_btn_clicked (GtkButton *button,
774 static void date_format_cancel_btn_clicked (GtkButton *button,
776 static void date_format_key_pressed (GtkWidget *keywidget,
779 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
782 static void date_format_entry_on_change (GtkEditable *editable,
784 static void date_format_select_row (GtkWidget *date_format_list,
787 GdkEventButton *event,
788 GtkWidget *date_format);
789 static GtkWidget *date_format_create (GtkButton *button,
792 static void prefs_keybind_select (void);
793 static gint prefs_keybind_deleted (GtkWidget *widget,
796 static void prefs_keybind_key_pressed (GtkWidget *widget,
799 static void prefs_keybind_cancel (void);
800 static void prefs_keybind_apply_clicked (GtkWidget *widget);
802 static gint prefs_common_deleted (GtkWidget *widget,
805 static void prefs_common_key_pressed (GtkWidget *widget,
808 static void prefs_common_ok (void);
809 static void prefs_common_apply (void);
810 static void prefs_common_cancel (void);
812 void prefs_common_init(void)
814 prefs_common.disphdr_list = NULL;
817 PrefsCommon *prefs_common_get(void)
819 return &prefs_common;
823 * Read history list from the specified history file
825 GList *prefs_common_read_history(const gchar *history)
829 gchar buf[PREFSBUFSIZE];
832 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
834 if ((fp = fopen(path, "rb")) == NULL) {
835 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
840 while (fgets(buf, sizeof(buf), fp) != NULL) {
842 if (buf[0] == '\0') continue;
843 tmp = add_history(tmp, buf);
847 tmp = g_list_reverse(tmp);
852 void prefs_common_read_config(void)
854 prefs_read_config(param, "Common", COMMON_RC);
856 prefs_common.mime_open_cmd_history =
857 prefs_common_read_history(COMMAND_HISTORY);
858 prefs_common.summary_quicksearch_history =
859 prefs_common_read_history(QUICKSEARCH_HISTORY);
863 * Save history list to the specified history file
865 void prefs_common_save_history(const gchar *history, GList *list)
871 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
873 if ((fp = fopen(path, "wb")) == NULL) {
874 FILE_OP_ERROR(path, "fopen");
879 for (cur = list; cur != NULL; cur = cur->next) {
880 fputs((gchar *)cur->data, fp);
888 void prefs_common_write_config(void)
890 prefs_write_config(param, "Common", COMMON_RC);
892 prefs_common_save_history(COMMAND_HISTORY,
893 prefs_common.mime_open_cmd_history);
894 prefs_common_save_history(QUICKSEARCH_HISTORY,
895 prefs_common.summary_quicksearch_history);
898 void prefs_common_open(void)
900 if (prefs_rc_is_readonly(COMMON_RC))
905 if (!dialog.window) {
906 prefs_common_create();
909 manage_window_set_transient(GTK_WINDOW(dialog.window));
910 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
911 gtk_widget_grab_focus(dialog.ok_btn);
913 prefs_set_dialog(param);
915 gtk_widget_show(dialog.window);
918 static void prefs_common_create(void)
922 debug_print("Creating common preferences window...\n");
924 prefs_dialog_create(&dialog);
925 gtk_window_set_title (GTK_WINDOW(dialog.window),
926 _("Common Preferences"));
927 gtk_signal_connect (GTK_OBJECT(dialog.window), "delete_event",
928 GTK_SIGNAL_FUNC(prefs_common_deleted), NULL);
929 gtk_signal_connect (GTK_OBJECT(dialog.window), "key_press_event",
930 GTK_SIGNAL_FUNC(prefs_common_key_pressed), NULL);
931 MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
933 gtk_signal_connect (GTK_OBJECT(dialog.ok_btn), "clicked",
934 GTK_SIGNAL_FUNC(prefs_common_ok), NULL);
935 gtk_signal_connect (GTK_OBJECT(dialog.apply_btn), "clicked",
936 GTK_SIGNAL_FUNC(prefs_common_apply), NULL);
937 gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
938 GTK_SIGNAL_FUNC(prefs_common_cancel),
939 GTK_OBJECT(dialog.window));
941 /* create all widgets on notebook */
942 prefs_receive_create();
943 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
945 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
946 prefs_compose_create();
947 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
948 prefs_quote_create();
949 SET_NOTEBOOK_LABEL(dialog.notebook, _("Quote"), page++);
950 prefs_display_create();
951 SET_NOTEBOOK_LABEL(dialog.notebook, _("Display"), page++);
952 prefs_message_create();
953 SET_NOTEBOOK_LABEL(dialog.notebook, _("Message"), page++);
955 prefs_privacy_create();
956 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
958 prefs_interface_create();
959 SET_NOTEBOOK_LABEL(dialog.notebook, _("Interface"), page++);
960 prefs_other_create();
961 SET_NOTEBOOK_LABEL(dialog.notebook, _("Other"), page++);
963 gtk_widget_show_all(dialog.window);
966 static void prefs_receive_create(void)
970 GtkWidget *frame_incext;
971 GtkWidget *checkbtn_incext;
973 GtkWidget *label_incext;
974 GtkWidget *entry_incext;
975 /* GtkWidget *button_incext; */
977 GtkWidget *hbox_autochk;
978 GtkWidget *checkbtn_autochk;
979 GtkWidget *label_autochk1;
980 GtkObject *spinbtn_autochk_adj;
981 GtkWidget *spinbtn_autochk;
982 GtkWidget *label_autochk2;
983 GtkWidget *checkbtn_chkonstartup;
984 GtkWidget *checkbtn_scan_after_inc;
987 GtkWidget *frame_newmail;
988 GtkWidget *hbox_newmail_notify;
989 GtkWidget *checkbtn_newmail_auto;
990 GtkWidget *checkbtn_newmail_manu;
991 GtkWidget *entry_newmail_notify_cmd;
992 GtkWidget *label_newmail_notify_cmd;
994 GtkWidget *hbox_recvdialog;
995 GtkWidget *label_recvdialog;
998 GtkWidget *optmenu_recvdialog;
999 GtkWidget *checkbtn_no_recv_err_panel;
1000 GtkWidget *checkbtn_close_recv_dialog;
1002 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1003 gtk_widget_show (vbox1);
1004 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1005 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1007 PACK_FRAME(vbox1, frame_incext, _("External program"));
1009 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1010 gtk_widget_show (vbox2);
1011 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
1012 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1014 /* Use of external incorporation program */
1015 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
1016 _("Use external program for incorporation"));
1018 hbox = gtk_hbox_new (FALSE, 8);
1019 gtk_widget_show (hbox);
1020 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1021 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1023 label_incext = gtk_label_new (_("Command"));
1024 gtk_widget_show (label_incext);
1025 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1027 entry_incext = gtk_entry_new ();
1028 gtk_widget_show (entry_incext);
1029 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1032 button_incext = gtk_button_new_with_label ("... ");
1033 gtk_widget_show (button_incext);
1034 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1037 vbox2 = gtk_vbox_new (FALSE, 0);
1038 gtk_widget_show (vbox2);
1039 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1042 hbox_autochk = gtk_hbox_new (FALSE, 8);
1043 gtk_widget_show (hbox_autochk);
1044 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1046 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1047 _("Auto-check new mail"));
1049 label_autochk1 = gtk_label_new (_("every"));
1050 gtk_widget_show (label_autochk1);
1051 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1053 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1054 spinbtn_autochk = gtk_spin_button_new
1055 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1056 gtk_widget_show (spinbtn_autochk);
1057 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1058 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1059 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1061 label_autochk2 = gtk_label_new (_("minute(s)"));
1062 gtk_widget_show (label_autochk2);
1063 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1065 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1066 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1067 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1069 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1070 _("Check new mail on startup"));
1071 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1072 _("Update all local folders after incorporation"));
1075 /* receive dialog */
1076 hbox_recvdialog = gtk_hbox_new (FALSE, 8);
1077 gtk_widget_show (hbox_recvdialog);
1078 gtk_box_pack_start (GTK_BOX (vbox2), hbox_recvdialog, FALSE, FALSE, 0);
1080 label_recvdialog = gtk_label_new (_("Show receive dialog"));
1081 gtk_misc_set_alignment(GTK_MISC(label_recvdialog), 0, 0.5);
1082 gtk_widget_show (label_recvdialog);
1083 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), label_recvdialog, FALSE, FALSE, 0);
1085 optmenu_recvdialog = gtk_option_menu_new ();
1086 gtk_widget_show (optmenu_recvdialog);
1087 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), optmenu_recvdialog, FALSE, FALSE, 0);
1089 menu = gtk_menu_new ();
1090 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
1091 MENUITEM_ADD (menu, menuitem, _("Only on manual receiving"),
1092 RECV_DIALOG_MANUAL);
1093 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
1095 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
1097 PACK_CHECK_BUTTON (vbox2, checkbtn_no_recv_err_panel,
1098 _("Don't popup error dialog on receive error"));
1100 PACK_CHECK_BUTTON (vbox2, checkbtn_close_recv_dialog,
1101 _("Close receive dialog when finished"));
1103 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1105 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1106 gtk_widget_show (vbox2);
1107 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1108 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1110 hbox = gtk_hbox_new (TRUE, 8);
1111 gtk_widget_show (hbox);
1112 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1113 _("after autochecking"));
1114 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1115 _("after manual checking"));
1116 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1117 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1118 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1120 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1121 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1124 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1125 gtk_widget_show (hbox);
1126 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1129 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1130 "(use %d as number of new "
1132 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1134 gtk_widget_show (label_newmail_notify_cmd);
1135 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1136 label_newmail_notify_cmd, FALSE, FALSE, 0);
1138 entry_newmail_notify_cmd = gtk_entry_new ();
1139 gtk_widget_show (entry_newmail_notify_cmd);
1140 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1141 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1143 gtk_widget_set_sensitive(hbox_newmail_notify,
1144 prefs_common.newmail_notify_auto ||
1145 prefs_common.newmail_notify_manu);
1147 receive.checkbtn_incext = checkbtn_incext;
1148 receive.entry_incext = entry_incext;
1149 /* receive.button_incext = button_incext; */
1151 receive.checkbtn_autochk = checkbtn_autochk;
1152 receive.spinbtn_autochk = spinbtn_autochk;
1153 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1155 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1156 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1159 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1160 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1161 receive.hbox_newmail_notify = hbox_newmail_notify;
1162 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1163 receive.optmenu_recvdialog = optmenu_recvdialog;
1164 receive.checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
1165 receive.checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
1168 static void prefs_send_create(void)
1173 GtkWidget *checkbtn_savemsg;
1174 GtkWidget *label_outcharset;
1175 GtkWidget *optmenu_charset;
1176 GtkWidget *optmenu_menu;
1177 GtkWidget *menuitem;
1178 GtkTooltips *charset_tooltip;
1179 GtkWidget *optmenu_encoding;
1180 GtkWidget *label_encoding;
1181 GtkTooltips *encoding_tooltip;
1182 GtkWidget *label_senddialog;
1184 GtkWidget *optmenu_senddialog;
1185 GtkWidget *hbox_senddialog;
1187 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1188 gtk_widget_show (vbox1);
1189 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1190 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1192 vbox2 = gtk_vbox_new (FALSE, 0);
1193 gtk_widget_show (vbox2);
1194 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1196 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1197 _("Save sent messages to Sent folder"));
1199 hbox_senddialog = gtk_hbox_new (FALSE, 8);
1200 gtk_box_pack_start (GTK_BOX (vbox1), hbox_senddialog, FALSE, FALSE, 0);
1202 label_senddialog = gtk_label_new (_("Show send dialog"));
1203 gtk_widget_show (label_senddialog);
1204 gtk_box_pack_start (GTK_BOX (hbox_senddialog), label_senddialog, FALSE, FALSE, 0);
1206 optmenu_senddialog = gtk_option_menu_new ();
1207 gtk_widget_show (optmenu_senddialog);
1208 gtk_box_pack_start (GTK_BOX (hbox_senddialog), optmenu_senddialog, FALSE, FALSE, 0);
1210 menu = gtk_menu_new ();
1211 MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
1212 MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
1214 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
1216 hbox1 = gtk_hbox_new (FALSE, 8);
1217 gtk_widget_show (hbox1);
1218 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1220 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1221 gtk_widget_show (label_outcharset);
1222 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1224 charset_tooltip = gtk_tooltips_new();
1226 optmenu_charset = gtk_option_menu_new ();
1227 gtk_widget_show (optmenu_charset);
1228 gtk_tooltips_set_tip(GTK_TOOLTIPS(charset_tooltip), optmenu_charset,
1229 _("If `Automatic' is selected, the optimal encoding"
1230 " for the current locale will be used"),
1232 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_charset, FALSE, FALSE, 0);
1234 optmenu_menu = gtk_menu_new ();
1236 #define SET_MENUITEM(str, data) \
1238 MENUITEM_ADD(optmenu_menu, menuitem, str, data); \
1241 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1242 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1244 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1246 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1247 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1248 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1249 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1250 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1251 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1252 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1254 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1256 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1258 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1259 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1261 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1263 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1264 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1266 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1267 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1269 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1270 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1272 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1273 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1274 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1276 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_charset),
1279 hbox1 = gtk_hbox_new (FALSE, 8);
1280 gtk_widget_show (hbox1);
1281 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1283 hbox1 = gtk_hbox_new (FALSE, 8);
1284 gtk_widget_show (hbox1);
1285 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1287 label_encoding = gtk_label_new (_("Transfer encoding"));
1288 gtk_widget_show (label_encoding);
1289 gtk_box_pack_start (GTK_BOX (hbox1), label_encoding, FALSE, FALSE, 0);
1291 encoding_tooltip = gtk_tooltips_new();
1293 optmenu_encoding = gtk_option_menu_new ();
1294 gtk_widget_show (optmenu_encoding);
1295 gtk_tooltips_set_tip(GTK_TOOLTIPS(encoding_tooltip), optmenu_encoding,
1296 _("Specify Content-Transfer-Encoding used when"
1297 " message body contains non-ASCII characters"),
1299 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_encoding, FALSE, FALSE, 0);
1301 optmenu_menu = gtk_menu_new ();
1303 SET_MENUITEM(_("Automatic"), CTE_AUTO);
1304 SET_MENUITEM("base64", CTE_BASE64);
1305 SET_MENUITEM("quoted-printable", CTE_QUOTED_PRINTABLE);
1306 SET_MENUITEM("8bit", CTE_8BIT);
1308 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_encoding),
1311 hbox1 = gtk_hbox_new (FALSE, 8);
1312 gtk_widget_show (hbox1);
1313 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1315 p_send.checkbtn_savemsg = checkbtn_savemsg;
1316 p_send.optmenu_senddialog = optmenu_senddialog;
1318 p_send.optmenu_charset = optmenu_charset;
1319 p_send.optmenu_encoding_method = optmenu_encoding;
1322 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1326 toggled = gtk_toggle_button_get_active
1327 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1328 gtk_toggle_button_get_active
1329 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1330 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1333 static void prefs_compose_create(void)
1338 GtkWidget *checkbtn_autoextedit;
1340 GtkWidget *frame_autosel;
1341 GtkWidget *hbox_autosel;
1342 GtkWidget *checkbtn_reply_account_autosel;
1343 GtkWidget *checkbtn_forward_account_autosel;
1344 GtkWidget *checkbtn_reedit_account_autosel;
1346 GtkWidget *hbox_undolevel;
1347 GtkWidget *label_undolevel;
1348 GtkObject *spinbtn_undolevel_adj;
1349 GtkWidget *spinbtn_undolevel;
1353 GtkWidget *checkbtn_default_reply_list;
1355 GtkWidget *checkbtn_forward_as_attachment;
1356 GtkWidget *checkbtn_redirect_keep_from;
1357 GtkWidget *checkbtn_block_cursor;
1359 GtkWidget *hbox_autosave;
1360 GtkWidget *checkbtn_autosave;
1361 GtkWidget *entry_autosave_length;
1362 GtkWidget *label_autosave_length;
1364 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1365 gtk_widget_show (vbox1);
1366 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1367 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1369 /* Account autoselection */
1370 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1372 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1373 gtk_widget_show (hbox_autosel);
1374 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1375 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1377 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1378 _("when replying"));
1379 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1380 _("when forwarding"));
1381 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1382 _("when re-editing"));
1384 vbox2 = gtk_vbox_new (FALSE, 0);
1385 gtk_widget_show (vbox2);
1386 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1388 PACK_CHECK_BUTTON (vbox2, checkbtn_default_reply_list,
1389 _("Reply button invokes mailing list reply"));
1391 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1392 _("Automatically launch the external editor"));
1394 hbox5 = gtk_hbox_new (FALSE, 8);
1395 gtk_widget_show (hbox5);
1396 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1398 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1399 _("Forward as attachment"));
1401 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1404 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1405 _("Keep the original 'From' header when redirecting"));
1408 hbox_autosave = gtk_hbox_new (FALSE, 8);
1409 gtk_widget_show (hbox_autosave);
1410 gtk_box_pack_start (GTK_BOX (vbox1), hbox_autosave, FALSE, FALSE, 0);
1412 PACK_CHECK_BUTTON (hbox_autosave, checkbtn_autosave,
1413 _("Autosave to Drafts folder every "));
1415 entry_autosave_length = gtk_entry_new();
1416 gtk_widget_set_usize (entry_autosave_length, 64, -1);
1417 gtk_widget_show (entry_autosave_length);
1418 gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
1420 label_autosave_length = gtk_label_new(_("characters"));
1421 gtk_widget_show (label_autosave_length);
1422 gtk_box_pack_start (GTK_BOX (hbox_autosave), label_autosave_length, FALSE, FALSE, 0);
1424 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1425 gtk_widget_show (hbox_undolevel);
1426 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1428 label_undolevel = gtk_label_new (_("Undo level"));
1429 gtk_widget_show (label_undolevel);
1430 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1432 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1433 spinbtn_undolevel = gtk_spin_button_new
1434 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1435 gtk_widget_show (spinbtn_undolevel);
1436 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1437 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1438 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1441 compose.checkbtn_quote = checkbtn_quote;
1442 compose.entry_quotemark = entry_quotemark;
1443 compose.text_quotefmt = text_quotefmt;
1446 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1448 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1449 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1450 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1452 compose.spinbtn_undolevel = spinbtn_undolevel;
1453 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1455 compose.checkbtn_autosave = checkbtn_autosave;
1456 compose.entry_autosave_length = entry_autosave_length;
1458 compose.checkbtn_forward_as_attachment =
1459 checkbtn_forward_as_attachment;
1460 compose.checkbtn_redirect_keep_from =
1461 checkbtn_redirect_keep_from;
1462 compose.checkbtn_block_cursor =
1463 checkbtn_block_cursor;
1464 compose.checkbtn_default_reply_list = checkbtn_default_reply_list;
1467 static void prefs_quote_create(void)
1470 GtkWidget *frame_quote;
1471 GtkWidget *vbox_quote;
1474 GtkWidget *label_quotemark;
1475 GtkWidget *entry_quotemark;
1476 GtkWidget *scrolledwin_quotefmt;
1477 GtkWidget *text_quotefmt;
1479 GtkWidget *entry_fw_quotemark;
1480 GtkWidget *text_fw_quotefmt;
1482 GtkWidget *entry_quote_chars;
1483 GtkWidget *label_quote_chars;
1485 GtkWidget *btn_quotedesc;
1487 GtkWidget *checkbtn_reply_with_quote;
1489 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1490 gtk_widget_show (vbox1);
1491 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1492 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1496 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1498 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1500 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1501 gtk_widget_show (vbox_quote);
1502 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1503 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1505 hbox1 = gtk_hbox_new (FALSE, 32);
1506 gtk_widget_show (hbox1);
1507 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1509 hbox2 = gtk_hbox_new (FALSE, 8);
1510 gtk_widget_show (hbox2);
1511 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1513 label_quotemark = gtk_label_new (_("Quotation mark"));
1514 gtk_widget_show (label_quotemark);
1515 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1517 entry_quotemark = gtk_entry_new ();
1518 gtk_widget_show (entry_quotemark);
1519 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
1520 gtk_widget_set_usize (entry_quotemark, 64, -1);
1522 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1523 gtk_widget_show (scrolledwin_quotefmt);
1524 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1525 gtk_scrolled_window_set_policy
1526 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1527 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1529 text_quotefmt = gtk_text_new (NULL, NULL);
1530 gtk_widget_show (text_quotefmt);
1531 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
1532 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
1533 gtk_widget_set_usize(text_quotefmt, -1, 60);
1537 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
1539 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1540 gtk_widget_show (vbox_quote);
1541 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1542 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1544 hbox1 = gtk_hbox_new (FALSE, 32);
1545 gtk_widget_show (hbox1);
1546 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1548 hbox2 = gtk_hbox_new (FALSE, 8);
1549 gtk_widget_show (hbox2);
1550 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1552 label_quotemark = gtk_label_new (_("Quotation mark"));
1553 gtk_widget_show (label_quotemark);
1554 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1556 entry_fw_quotemark = gtk_entry_new ();
1557 gtk_widget_show (entry_fw_quotemark);
1558 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
1560 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
1562 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1563 gtk_widget_show (scrolledwin_quotefmt);
1564 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1565 gtk_scrolled_window_set_policy
1566 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1567 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1569 text_fw_quotefmt = gtk_text_new (NULL, NULL);
1570 gtk_widget_show (text_fw_quotefmt);
1571 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
1573 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
1574 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
1576 hbox1 = gtk_hbox_new (FALSE, 32);
1577 gtk_widget_show (hbox1);
1578 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1581 gtk_button_new_with_label (_(" Description of symbols "));
1582 gtk_widget_show (btn_quotedesc);
1583 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
1584 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
1585 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
1589 PACK_FRAME (vbox1, frame_quote, _("Quotation characters"));
1591 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1592 gtk_widget_show (vbox_quote);
1593 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1594 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1596 hbox1 = gtk_hbox_new (FALSE, 32);
1597 gtk_widget_show (hbox1);
1598 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1600 hbox2 = gtk_hbox_new (FALSE, 8);
1601 gtk_widget_show (hbox2);
1602 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1604 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
1605 gtk_widget_show (label_quote_chars);
1606 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
1608 entry_quote_chars = gtk_entry_new ();
1609 gtk_widget_show (entry_quote_chars);
1610 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
1612 gtk_widget_set_usize (entry_quote_chars, 64, -1);
1615 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
1616 quote.entry_quotemark = entry_quotemark;
1617 quote.text_quotefmt = text_quotefmt;
1618 quote.entry_fw_quotemark = entry_fw_quotemark;
1619 quote.text_fw_quotefmt = text_fw_quotefmt;
1620 quote.entry_quote_chars = entry_quote_chars;
1623 static void prefs_display_create(void)
1626 GtkWidget *chkbtn_transhdr;
1627 GtkWidget *chkbtn_folder_unread;
1629 GtkWidget *label_ng_abbrev;
1630 GtkWidget *spinbtn_ng_abbrev_len;
1631 GtkObject *spinbtn_ng_abbrev_len_adj;
1632 GtkWidget *frame_summary;
1634 GtkWidget *chkbtn_swapfrom;
1635 GtkWidget *chkbtn_useaddrbook;
1636 GtkWidget *chkbtn_threadsubj;
1638 GtkWidget *label_datefmt;
1639 GtkWidget *button_datefmt;
1640 GtkWidget *entry_datefmt;
1641 GtkWidget *button_dispitem;
1643 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1644 gtk_widget_show (vbox1);
1645 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1646 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1648 vbox2 = gtk_vbox_new (FALSE, 0);
1649 gtk_widget_show (vbox2);
1650 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
1653 (vbox2, chkbtn_transhdr,
1654 _("Translate header name (such as `From:', `Subject:')"));
1656 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
1657 _("Display unread number next to folder name"));
1659 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1661 hbox1 = gtk_hbox_new (FALSE, 8);
1662 gtk_widget_show (hbox1);
1663 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1665 label_ng_abbrev = gtk_label_new
1666 (_("Abbreviate newsgroup names longer than"));
1667 gtk_widget_show (label_ng_abbrev);
1668 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1670 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
1671 spinbtn_ng_abbrev_len = gtk_spin_button_new
1672 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
1673 gtk_widget_show (spinbtn_ng_abbrev_len);
1674 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
1676 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
1677 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
1680 label_ng_abbrev = gtk_label_new
1682 gtk_widget_show (label_ng_abbrev);
1683 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1685 /* ---- Summary ---- */
1687 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
1689 vbox2 = gtk_vbox_new (FALSE, 0);
1690 gtk_widget_show (vbox2);
1691 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
1692 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1695 (vbox2, chkbtn_swapfrom,
1696 _("Display recipient in `From' column if sender is yourself"));
1698 (vbox2, chkbtn_useaddrbook,
1699 _("Display sender using address book"));
1701 (vbox2, chkbtn_threadsubj,
1702 _("Thread using subject in addition to standard headers"));
1704 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1706 hbox1 = gtk_hbox_new (FALSE, 8);
1707 gtk_widget_show (hbox1);
1708 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1710 label_datefmt = gtk_label_new (_("Date format"));
1711 gtk_widget_show (label_datefmt);
1712 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
1714 entry_datefmt = gtk_entry_new ();
1715 gtk_widget_show (entry_datefmt);
1716 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
1718 button_datefmt = gtk_button_new_with_label (" ... ");
1720 gtk_widget_show (button_datefmt);
1721 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
1722 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
1723 GTK_SIGNAL_FUNC (date_format_create), NULL);
1725 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
1727 hbox1 = gtk_hbox_new (FALSE, 8);
1728 gtk_widget_show (hbox1);
1729 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1731 button_dispitem = gtk_button_new_with_label
1732 (_(" Set displayed items in summary... "));
1733 gtk_widget_show (button_dispitem);
1734 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
1735 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
1736 GTK_SIGNAL_FUNC (prefs_summary_column_open),
1739 display.chkbtn_transhdr = chkbtn_transhdr;
1740 display.chkbtn_folder_unread = chkbtn_folder_unread;
1741 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
1742 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
1744 display.chkbtn_swapfrom = chkbtn_swapfrom;
1745 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
1746 display.chkbtn_threadsubj = chkbtn_threadsubj;
1747 display.entry_datefmt = entry_datefmt;
1750 static void prefs_message_create(void)
1756 GtkWidget *chkbtn_mbalnum;
1757 GtkWidget *chkbtn_disphdrpane;
1758 GtkWidget *chkbtn_disphdr;
1759 GtkWidget *button_edit_disphdr;
1760 GtkWidget *hbox_linespc;
1761 GtkWidget *label_linespc;
1762 GtkObject *spinbtn_linespc_adj;
1763 GtkWidget *spinbtn_linespc;
1764 GtkWidget *chkbtn_headspc;
1766 GtkWidget *frame_scr;
1767 GtkWidget *vbox_scr;
1768 GtkWidget *chkbtn_smoothscroll;
1769 GtkWidget *hbox_scr;
1770 GtkWidget *label_scr;
1771 GtkObject *spinbtn_scrollstep_adj;
1772 GtkWidget *spinbtn_scrollstep;
1773 GtkWidget *chkbtn_halfpage;
1775 GtkWidget *chkbtn_attach_desc;
1777 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1778 gtk_widget_show (vbox1);
1779 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1780 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1782 vbox2 = gtk_vbox_new (FALSE, 0);
1783 gtk_widget_show (vbox2);
1784 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1787 (vbox2, chkbtn_mbalnum,
1788 _("Display multi-byte alphanumeric as\n"
1789 "ASCII character (Japanese only)"));
1790 gtk_label_set_justify (GTK_LABEL (GTK_BIN(chkbtn_mbalnum)->child),
1793 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
1794 _("Display header pane above message view"));
1796 hbox1 = gtk_hbox_new (FALSE, 8);
1797 gtk_widget_show (hbox1);
1798 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1800 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
1801 _("Display short headers on message view"));
1803 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
1804 gtk_widget_show (button_edit_disphdr);
1805 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
1807 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
1808 GTK_SIGNAL_FUNC (prefs_display_header_open),
1811 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
1813 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1815 hbox1 = gtk_hbox_new (FALSE, 32);
1816 gtk_widget_show (hbox1);
1817 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1819 hbox_linespc = gtk_hbox_new (FALSE, 8);
1820 gtk_widget_show (hbox1);
1821 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
1823 label_linespc = gtk_label_new (_("Line space"));
1824 gtk_widget_show (label_linespc);
1825 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1828 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
1829 spinbtn_linespc = gtk_spin_button_new
1830 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
1831 gtk_widget_show (spinbtn_linespc);
1832 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
1834 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
1835 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
1837 label_linespc = gtk_label_new (_("pixel(s)"));
1838 gtk_widget_show (label_linespc);
1839 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1842 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Indent text"));
1844 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
1846 vbox_scr = gtk_vbox_new (FALSE, 0);
1847 gtk_widget_show (vbox_scr);
1848 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
1849 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
1851 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
1853 hbox1 = gtk_hbox_new (FALSE, 32);
1854 gtk_widget_show (hbox1);
1855 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
1857 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
1859 hbox_scr = gtk_hbox_new (FALSE, 8);
1860 gtk_widget_show (hbox_scr);
1861 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
1863 label_scr = gtk_label_new (_("Step"));
1864 gtk_widget_show (label_scr);
1865 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1867 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
1868 spinbtn_scrollstep = gtk_spin_button_new
1869 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
1870 gtk_widget_show (spinbtn_scrollstep);
1871 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
1873 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
1874 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
1877 label_scr = gtk_label_new (_("pixel(s)"));
1878 gtk_widget_show (label_scr);
1879 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1881 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
1883 vbox3 = gtk_vbox_new (FALSE, 0);
1884 gtk_widget_show (vbox3);
1885 gtk_box_pack_start (GTK_BOX (vbox1), vbox3, FALSE, FALSE, 0);
1887 PACK_CHECK_BUTTON(vbox3, chkbtn_attach_desc,
1888 _("Show attachment descriptions (rather than names)"));
1890 message.chkbtn_mbalnum = chkbtn_mbalnum;
1891 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
1892 message.chkbtn_disphdr = chkbtn_disphdr;
1893 message.spinbtn_linespc = spinbtn_linespc;
1894 message.chkbtn_headspc = chkbtn_headspc;
1896 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
1897 message.spinbtn_scrollstep = spinbtn_scrollstep;
1898 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
1899 message.chkbtn_halfpage = chkbtn_halfpage;
1901 message.chkbtn_attach_desc = chkbtn_attach_desc;
1905 static void prefs_privacy_create(void)
1911 GtkWidget *hbox_spc;
1913 GtkWidget *checkbtn_auto_check_signatures;
1914 GtkWidget *checkbtn_store_passphrase;
1915 GtkObject *spinbtn_store_passphrase_adj;
1916 GtkWidget *spinbtn_store_passphrase;
1917 GtkTooltips *store_tooltip;
1918 GtkWidget *checkbtn_passphrase_grab;
1919 GtkWidget *checkbtn_gpg_warning;
1921 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1922 gtk_widget_show (vbox1);
1923 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1924 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1926 vbox2 = gtk_vbox_new (FALSE, 0);
1927 gtk_widget_show (vbox2);
1928 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1930 PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
1931 _("Automatically check signatures"));
1933 PACK_CHECK_BUTTON (vbox2, checkbtn_store_passphrase,
1934 _("Store passphrase in memory temporarily"));
1936 vbox3 = gtk_vbox_new (FALSE, 0);
1937 gtk_widget_show (vbox3);
1938 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
1940 hbox1 = gtk_hbox_new (FALSE, 8);
1941 gtk_widget_show (hbox1);
1942 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
1944 hbox_spc = gtk_hbox_new (FALSE, 0);
1945 gtk_widget_show (hbox_spc);
1946 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
1947 gtk_widget_set_usize (hbox_spc, 12, -1);
1949 label = gtk_label_new (_("Expire after"));
1950 gtk_widget_show (label);
1951 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
1953 store_tooltip = gtk_tooltips_new();
1955 spinbtn_store_passphrase_adj = gtk_adjustment_new (0, 0, 1440, 1, 5, 5);
1956 spinbtn_store_passphrase = gtk_spin_button_new
1957 (GTK_ADJUSTMENT (spinbtn_store_passphrase_adj), 1, 0);
1958 gtk_widget_show (spinbtn_store_passphrase);
1959 gtk_tooltips_set_tip(GTK_TOOLTIPS(store_tooltip), spinbtn_store_passphrase,
1960 _("Setting to '0' will store the passphrase"
1961 " for the whole session"),
1963 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_store_passphrase, FALSE, FALSE, 0);
1964 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_store_passphrase),
1966 gtk_widget_set_usize (spinbtn_store_passphrase, 64, -1);
1968 label = gtk_label_new (_("minute(s) "));
1969 gtk_widget_show (label);
1970 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
1972 hbox1 = gtk_hbox_new (FALSE, 8);
1973 gtk_widget_show (hbox1);
1974 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
1976 hbox_spc = gtk_hbox_new (FALSE, 0);
1977 gtk_widget_show (hbox_spc);
1978 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
1979 gtk_widget_set_usize (hbox_spc, 12, -1);
1981 SET_TOGGLE_SENSITIVITY (checkbtn_store_passphrase, vbox3);
1984 PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab,
1985 _("Grab input while entering a passphrase"));
1989 (vbox2, checkbtn_gpg_warning,
1990 _("Display warning on startup if GnuPG doesn't work"));
1992 hbox1 = gtk_hbox_new (FALSE, 8);
1993 gtk_widget_show (hbox1);
1994 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1996 privacy.checkbtn_auto_check_signatures
1997 = checkbtn_auto_check_signatures;
1998 privacy.checkbtn_store_passphrase = checkbtn_store_passphrase;
1999 privacy.spinbtn_store_passphrase = spinbtn_store_passphrase;
2000 privacy.spinbtn_store_passphrase_adj = spinbtn_store_passphrase_adj;
2001 privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
2002 privacy.checkbtn_gpg_warning = checkbtn_gpg_warning;
2004 #endif /* USE_GPGME */
2006 static void prefs_interface_create(void)
2011 /* GtkWidget *checkbtn_emacs; */
2012 GtkWidget *checkbtn_always_show_msg;
2013 GtkWidget *checkbtn_openunread;
2014 GtkWidget *checkbtn_mark_as_read_on_newwin;
2015 GtkWidget *checkbtn_openinbox;
2016 GtkWidget *checkbtn_immedexec;
2017 GtkTooltips *immedexec_tooltip;
2021 GtkWidget *menuitem;
2023 GtkWidget *button_keybind;
2025 GtkWidget *hbox_nextunreadmsgdialog;
2026 GtkWidget *optmenu_nextunreadmsgdialog;
2028 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2029 gtk_widget_show (vbox1);
2030 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2031 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2033 vbox2 = gtk_vbox_new (FALSE, 0);
2034 gtk_widget_show (vbox2);
2035 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2037 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
2038 _("Emulate the behavior of mouse operation of\n"
2039 "Emacs-based mailer"));
2040 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
2041 GTK_JUSTIFY_LEFT); */
2044 (vbox2, checkbtn_always_show_msg,
2045 _("Always open messages in summary when selected"));
2048 (vbox2, checkbtn_openunread,
2049 _("Open first unread message when entering a folder"));
2052 (vbox2, checkbtn_mark_as_read_on_newwin,
2053 _("Only mark message as read when opened in new window"));
2056 (vbox2, checkbtn_openinbox,
2057 _("Go to inbox after receiving new mail"));
2059 vbox3 = gtk_vbox_new (FALSE, 0);
2060 gtk_widget_show (vbox3);
2061 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2063 immedexec_tooltip = gtk_tooltips_new();
2066 (vbox3, checkbtn_immedexec,
2067 _("Execute immediately when moving or deleting messages"));
2068 gtk_tooltips_set_tip(GTK_TOOLTIPS(immedexec_tooltip), checkbtn_immedexec,
2069 _("Messages will be marked until execution"
2070 " if this is turned off"),
2073 hbox1 = gtk_hbox_new (FALSE, 0);
2074 gtk_widget_show (hbox1);
2075 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2077 /* Next Unread Message Dialog */
2078 hbox_nextunreadmsgdialog = gtk_hbox_new (FALSE, 8);
2079 gtk_widget_show (hbox1);
2080 gtk_box_pack_start (GTK_BOX (vbox1), hbox_nextunreadmsgdialog, FALSE, FALSE, 0);
2082 label = gtk_label_new (_("Show no-unread-message dialog"));
2083 gtk_widget_show (label);
2084 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), label, FALSE, FALSE, 8);
2086 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
2087 gtk_widget_show (optmenu_nextunreadmsgdialog);
2088 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), optmenu_nextunreadmsgdialog, FALSE, FALSE, 8);
2090 menu = gtk_menu_new ();
2091 MENUITEM_ADD (menu, menuitem, _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
2092 MENUITEM_ADD (menu, menuitem, _("Assume 'Yes'"),
2093 NEXTUNREADMSGDIALOG_ASSUME_YES);
2094 MENUITEM_ADD (menu, menuitem, _("Assume 'No'"),
2095 NEXTUNREADMSGDIALOG_ASSUME_NO);
2097 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog), menu);
2099 hbox1 = gtk_hbox_new (FALSE, 8);
2100 gtk_widget_show (hbox1);
2101 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2103 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
2104 gtk_widget_show (button_keybind);
2105 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
2106 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
2107 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
2109 /* interface.checkbtn_emacs = checkbtn_emacs; */
2110 interface.checkbtn_always_show_msg = checkbtn_always_show_msg;
2111 interface.checkbtn_openunread = checkbtn_openunread;
2112 interface.checkbtn_mark_as_read_on_newwin
2113 = checkbtn_mark_as_read_on_newwin;
2114 interface.checkbtn_openinbox = checkbtn_openinbox;
2115 interface.checkbtn_immedexec = checkbtn_immedexec;
2116 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
2119 static void prefs_other_create(void)
2124 GtkWidget *frame_addr;
2125 GtkWidget *vbox_addr;
2126 GtkWidget *checkbtn_addaddrbyclick;
2128 GtkWidget *frame_cliplog;
2129 GtkWidget *vbox_cliplog;
2130 GtkWidget *hbox_cliplog;
2131 GtkWidget *checkbtn_cliplog;
2132 GtkWidget *loglength_label;
2133 GtkWidget *loglength_entry;
2134 GtkTooltips *loglength_tooltip;
2136 GtkWidget *frame_exit;
2137 GtkWidget *vbox_exit;
2138 GtkWidget *checkbtn_confonexit;
2139 GtkWidget *checkbtn_cleanonexit;
2140 GtkWidget *checkbtn_askonclean;
2141 GtkWidget *checkbtn_warnqueued;
2143 GtkWidget *label_iotimeout;
2144 GtkWidget *spinbtn_iotimeout;
2145 GtkObject *spinbtn_iotimeout_adj;
2149 GtkWidget *frame_ssl;
2150 GtkWidget *vbox_ssl;
2151 GtkWidget *hbox_ssl;
2152 GtkWidget *checkbtn_ssl_ask_unknown_valid;
2155 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2156 gtk_widget_show (vbox1);
2157 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2158 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2160 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2162 vbox_addr = gtk_vbox_new (FALSE, 0);
2163 gtk_widget_show (vbox_addr);
2164 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2165 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2168 (vbox_addr, checkbtn_addaddrbyclick,
2169 _("Add address to destination when double-clicked"));
2172 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2174 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2175 gtk_widget_show (vbox_cliplog);
2176 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2177 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2178 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2179 _("Clip the log size"));
2180 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2181 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2182 gtk_widget_show (hbox_cliplog);
2184 loglength_label = gtk_label_new (_("Log window length"));
2185 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2187 gtk_widget_show (GTK_WIDGET (loglength_label));
2189 loglength_tooltip = gtk_tooltips_new();
2191 loglength_entry = gtk_entry_new ();
2192 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2193 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2195 gtk_widget_show (GTK_WIDGET (loglength_entry));
2196 gtk_tooltips_set_tip(GTK_TOOLTIPS(loglength_tooltip), loglength_entry,
2197 _("0 to stop logging in the log window"),
2199 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2201 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2206 PACK_FRAME (vbox1, frame_ssl, _("Security"));
2208 vbox_ssl = gtk_vbox_new (FALSE, 0);
2209 gtk_widget_show (vbox_ssl);
2210 gtk_container_add (GTK_CONTAINER (frame_ssl), vbox_ssl);
2211 gtk_container_set_border_width (GTK_CONTAINER (vbox_ssl), 8);
2212 PACK_CHECK_BUTTON (vbox_ssl, checkbtn_ssl_ask_unknown_valid,
2213 _("Ask before accepting SSL certificates"));
2214 hbox_ssl = gtk_hbox_new (FALSE, 3);
2215 gtk_container_add (GTK_CONTAINER (vbox_ssl), hbox_ssl);
2216 gtk_widget_show (hbox_ssl);
2221 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2223 vbox_exit = gtk_vbox_new (FALSE, 0);
2224 gtk_widget_show (vbox_exit);
2225 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2226 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
2228 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
2229 _("Confirm on exit"));
2231 hbox1 = gtk_hbox_new (FALSE, 32);
2232 gtk_widget_show (hbox1);
2233 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
2235 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
2236 _("Empty trash on exit"));
2237 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
2238 _("Ask before emptying"));
2239 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
2241 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
2242 _("Warn if there are queued messages"));
2244 hbox1 = gtk_hbox_new (FALSE, 8);
2245 gtk_widget_show (hbox1);
2246 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2248 label_iotimeout = gtk_label_new (_("Socket I/O timeout:"));
2249 gtk_widget_show (label_iotimeout);
2250 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2252 spinbtn_iotimeout_adj = gtk_adjustment_new (60, 0, 1000, 1, 10, 10);
2253 spinbtn_iotimeout = gtk_spin_button_new
2254 (GTK_ADJUSTMENT (spinbtn_iotimeout_adj), 1, 0);
2255 gtk_widget_show (spinbtn_iotimeout);
2256 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_iotimeout,
2258 gtk_widget_set_usize (spinbtn_iotimeout, 64, -1);
2259 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_iotimeout), TRUE);
2261 label_iotimeout = gtk_label_new (_("seconds"));
2262 gtk_widget_show (label_iotimeout);
2263 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2265 other.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2267 other.checkbtn_cliplog = checkbtn_cliplog;
2268 other.loglength_entry = loglength_entry;
2270 other.checkbtn_confonexit = checkbtn_confonexit;
2271 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
2272 other.checkbtn_askonclean = checkbtn_askonclean;
2273 other.checkbtn_warnqueued = checkbtn_warnqueued;
2275 other.spinbtn_iotimeout = spinbtn_iotimeout;
2276 other.spinbtn_iotimeout_adj = spinbtn_iotimeout_adj;
2280 other.checkbtn_ssl_ask_unknown_valid = checkbtn_ssl_ask_unknown_valid;
2285 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
2287 GtkWidget *datefmt_sample = NULL;
2290 g_return_if_fail(widget != NULL);
2291 g_return_if_fail(*widget != NULL);
2292 g_return_if_fail(display.entry_datefmt != NULL);
2294 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2295 (GTK_OBJECT(*widget), "datefmt_sample"));
2296 g_return_if_fail(datefmt_sample != NULL);
2298 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
2299 g_free(prefs_common.date_format);
2300 prefs_common.date_format = text;
2301 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
2303 gtk_widget_destroy(*widget);
2307 static void date_format_cancel_btn_clicked(GtkButton *button,
2310 g_return_if_fail(widget != NULL);
2311 g_return_if_fail(*widget != NULL);
2313 gtk_widget_destroy(*widget);
2317 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
2320 if (event && event->keyval == GDK_Escape)
2321 date_format_cancel_btn_clicked(NULL, widget);
2324 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
2325 GdkEventAny *event, GtkWidget **widget)
2327 g_return_val_if_fail(widget != NULL, FALSE);
2328 g_return_val_if_fail(*widget != NULL, FALSE);
2334 static void date_format_entry_on_change(GtkEditable *editable,
2338 struct tm *cal_time;
2342 cur_time = time(NULL);
2343 cal_time = localtime(&cur_time);
2345 text = gtk_editable_get_chars(editable, 0, -1);
2347 strftime(buffer, sizeof buffer, text, cal_time);
2349 gtk_label_set_text(example, buffer);
2352 static void date_format_select_row(GtkWidget *date_format_list, gint row,
2353 gint column, GdkEventButton *event,
2354 GtkWidget *date_format)
2360 GtkWidget *datefmt_sample;
2362 /* only on double click */
2363 if (!event || event->type != GDK_2BUTTON_PRESS) return;
2366 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2367 (GTK_OBJECT(date_format), "datefmt_sample"));
2369 g_return_if_fail(date_format_list != NULL);
2370 g_return_if_fail(date_format != NULL);
2371 g_return_if_fail(datefmt_sample != NULL);
2373 /* get format from clist */
2374 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
2376 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
2377 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
2379 /* insert the format into the text entry */
2380 new_format = g_malloc(strlen(old_format) + 3);
2382 strncpy(new_format, old_format, cur_pos);
2383 new_format[cur_pos] = '\0';
2384 strcat(new_format, format);
2385 strcat(new_format, &old_format[cur_pos]);
2387 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
2388 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
2393 static GtkWidget *date_format_create(GtkButton *button, void *data)
2395 static GtkWidget *datefmt_win = NULL;
2397 GtkWidget *scrolledwindow1;
2398 GtkWidget *datefmt_clist;
2403 GtkWidget *confirm_area;
2405 GtkWidget *cancel_btn;
2406 GtkWidget *datefmt_entry;
2435 const gint TIME_FORMAT_ELEMS =
2436 sizeof time_format / sizeof time_format[0];
2438 time_format[0].txt = _("the full abbreviated weekday name");
2439 time_format[1].txt = _("the full weekday name");
2440 time_format[2].txt = _("the abbreviated month name");
2441 time_format[3].txt = _("the full month name");
2442 time_format[4].txt = _("the preferred date and time for the current locale");
2443 time_format[5].txt = _("the century number (year/100)");
2444 time_format[6].txt = _("the day of the month as a decimal number");
2445 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
2446 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
2447 time_format[9].txt = _("the day of the year as a decimal number");
2448 time_format[10].txt = _("the month as a decimal number");
2449 time_format[11].txt = _("the minute as a decimal number");
2450 time_format[12].txt = _("either AM or PM");
2451 time_format[13].txt = _("the second as a decimal number");
2452 time_format[14].txt = _("the day of the week as a decimal number");
2453 time_format[15].txt = _("the preferred date for the current locale");
2454 time_format[16].txt = _("the last two digits of a year");
2455 time_format[17].txt = _("the year as a decimal number");
2456 time_format[18].txt = _("the time zone or name or abbreviation");
2458 if (datefmt_win) return datefmt_win;
2460 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
2461 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
2462 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
2463 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2464 gtk_widget_set_usize(datefmt_win, 440, 280);
2466 vbox1 = gtk_vbox_new(FALSE, 10);
2467 gtk_widget_show(vbox1);
2468 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
2470 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
2471 gtk_scrolled_window_set_policy
2472 (GTK_SCROLLED_WINDOW(scrolledwindow1),
2473 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
2474 gtk_widget_show(scrolledwindow1);
2475 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
2477 titles[0] = _("Specifier");
2478 titles[1] = _("Description");
2479 datefmt_clist = gtk_clist_new_with_titles(2, titles);
2480 gtk_widget_show(datefmt_clist);
2481 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
2482 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
2483 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
2484 GTK_SELECTION_BROWSE);
2486 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
2488 /* phoney casting necessary because of gtk... */
2489 text[0] = (gchar *)time_format[i].fmt;
2490 text[1] = (gchar *)time_format[i].txt;
2491 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
2494 table = gtk_table_new(2, 2, FALSE);
2495 gtk_widget_show(table);
2496 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
2497 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
2498 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
2500 label1 = gtk_label_new(_("Date format"));
2501 gtk_widget_show(label1);
2502 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
2504 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
2505 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
2507 datefmt_entry = gtk_entry_new_with_max_length(256);
2508 gtk_widget_show(datefmt_entry);
2509 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
2510 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2512 /* we need the "sample" entry box; add it as data so callbacks can
2513 * get the entry box */
2514 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
2517 label2 = gtk_label_new(_("Example"));
2518 gtk_widget_show(label2);
2519 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
2521 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
2522 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
2524 label3 = gtk_label_new("");
2525 gtk_widget_show(label3);
2526 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
2527 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2528 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
2529 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
2531 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
2532 &cancel_btn, _("Cancel"), NULL, NULL);
2533 gtk_widget_grab_default(ok_btn);
2534 gtk_widget_show(confirm_area);
2536 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
2538 /* set the current format */
2539 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
2540 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
2543 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2544 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
2546 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
2547 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
2549 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
2550 GTK_SIGNAL_FUNC(date_format_key_pressed),
2552 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
2553 GTK_SIGNAL_FUNC(date_format_on_delete),
2555 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
2556 GTK_SIGNAL_FUNC(date_format_entry_on_change),
2559 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
2560 GTK_SIGNAL_FUNC(date_format_select_row),
2563 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2564 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
2566 gtk_widget_show(datefmt_win);
2567 manage_window_set_transient(GTK_WINDOW(datefmt_win));
2569 gtk_widget_grab_focus(ok_btn);
2574 static void prefs_keybind_select(void)
2581 GtkWidget *confirm_area;
2583 GtkWidget *cancel_btn;
2585 window = gtk_window_new (GTK_WINDOW_DIALOG);
2586 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
2587 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
2588 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
2589 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
2590 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
2591 manage_window_set_transient (GTK_WINDOW (window));
2593 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2594 gtk_container_add (GTK_CONTAINER (window), vbox1);
2595 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
2597 hbox1 = gtk_hbox_new (FALSE, 8);
2598 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2600 label = gtk_label_new
2601 (_("Select preset:"));
2602 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2603 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2605 hbox1 = gtk_hbox_new (FALSE, 8);
2606 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2608 combo = gtk_combo_new ();
2609 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
2610 gtkut_combo_set_items (GTK_COMBO (combo),
2616 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
2618 hbox1 = gtk_hbox_new (FALSE, 8);
2619 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2621 label = gtk_label_new
2622 (_("You can also modify each menu shortcut by pressing\n"
2623 "any key(s) when placing the mouse pointer on the item."));
2624 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2625 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2627 hbox1 = gtk_hbox_new (FALSE, 8);
2628 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2630 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
2631 &cancel_btn, _("Cancel"), NULL, NULL);
2632 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
2633 gtk_widget_grab_default (ok_btn);
2635 MANAGE_WINDOW_SIGNALS_CONNECT(window);
2636 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2637 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
2638 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
2639 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
2640 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
2641 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
2643 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
2644 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
2647 gtk_widget_show_all(window);
2649 keybind.window = window;
2650 keybind.combo = combo;
2653 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
2656 if (event && event->keyval == GDK_Escape)
2657 prefs_keybind_cancel();
2660 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
2663 prefs_keybind_cancel();
2667 static void prefs_keybind_cancel(void)
2669 gtk_widget_destroy(keybind.window);
2670 keybind.window = NULL;
2671 keybind.combo = NULL;
2674 static void prefs_keybind_apply_clicked(GtkWidget *widget)
2676 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
2680 static gchar *default_menurc =
2681 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
2682 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
2683 "(menu-path \"<Main>/File/Print...\" \"\")\n"
2684 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
2686 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2687 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2688 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2689 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
2691 "(menu-path \"<Main>/View/Expand Summary View\" \"V\")\n"
2692 "(menu-path \"<Main>/View/Expand Message View\" \"<shift>V\")\n"
2693 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2694 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2695 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2696 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2697 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2698 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
2699 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2700 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
2701 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2702 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
2704 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
2705 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2706 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
2707 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
2708 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><control>R\")\n"
2709 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2710 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2711 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
2712 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
2713 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
2714 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
2715 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
2716 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2717 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2718 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2719 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2721 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2722 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2723 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2725 "(menu-path \"<Compose>/File/Close\" \"<control>W\")\n"
2726 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
2727 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
2728 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
2729 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
2730 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
2731 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
2733 static gchar *mew_wl_menurc =
2734 "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
2735 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
2736 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
2737 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
2739 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2740 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2741 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2742 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
2744 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
2745 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
2746 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
2747 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2748 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2749 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2750 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2751 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
2752 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2753 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
2754 "(menu-path \"<Main>/View/Show all headers\" \"<shift>H\")\n"
2755 "(menu-path \"<Main>/View/Update\" \"<shift>S\")\n"
2757 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
2758 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2759 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
2760 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
2761 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift>A\")\n"
2762 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2763 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2764 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
2765 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
2766 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
2767 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
2768 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
2769 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2770 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2771 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2772 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
2774 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2775 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2776 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2778 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
2779 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2780 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2781 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2782 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2783 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2784 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2786 static gchar *mutt_menurc =
2787 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
2788 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
2789 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
2790 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
2792 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2793 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2794 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2795 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
2797 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
2798 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2799 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
2800 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
2801 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
2802 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
2803 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
2804 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2805 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
2806 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2807 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
2809 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
2810 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2811 "(menu-path \"<Main>/Message/Compose an email message\" \"M\")\n"
2812 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
2813 "(menu-path \"<Main>/Message/Reply to/all\" \"G\")\n"
2814 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2815 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2816 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
2817 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
2818 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
2819 "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
2820 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
2821 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
2822 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2823 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
2824 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2826 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2827 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2828 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2830 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
2831 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2832 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2833 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2834 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2835 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2836 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2838 static gchar *old_sylpheed_menurc =
2839 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
2840 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
2841 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
2842 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
2844 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2845 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2846 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2847 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
2849 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
2850 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
2851 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2852 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2853 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2854 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2855 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2856 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
2857 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
2858 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
2859 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2860 "(menu-path \"<Main>/View/Update\" \"<alt>U\")\n"
2862 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<alt>I\")\n"
2863 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><alt>I\")\n"
2864 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
2865 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
2866 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><alt>R\")\n"
2867 "(menu-path \"<Main>/Message/Reply to/sender\" \"<control><alt>R\")\n"
2868 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2869 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
2870 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
2871 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
2872 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
2873 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
2874 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2875 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2876 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2877 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2879 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
2880 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
2881 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
2883 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
2884 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2885 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2886 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2887 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2888 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2889 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2891 text = gtk_entry_get_text(entry);
2893 if (!strcmp(text, _("Default")))
2894 rc_str = default_menurc;
2895 else if (!strcmp(text, "Mew / Wanderlust"))
2896 rc_str = mew_wl_menurc;
2897 else if (!strcmp(text, "Mutt"))
2898 rc_str = mutt_menurc;
2899 else if (!strcmp(text, _("Old Sylpheed")))
2900 rc_str = old_sylpheed_menurc;
2904 menu_factory_clear_rc(rc_str);
2905 gtk_item_factory_parse_rc_string(rc_str);
2907 gtk_widget_destroy(keybind.window);
2908 keybind.window = NULL;
2909 keybind.combo = NULL;
2912 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
2915 GtkWidget *menuitem;
2918 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2919 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2920 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
2921 g_free(*((gchar **)pparam->data));
2922 *((gchar **)pparam->data) = g_strdup(charset);
2925 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
2927 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2930 g_return_if_fail(optmenu != NULL);
2931 g_return_if_fail(*((gchar **)pparam->data) != NULL);
2933 index = menu_find_option_menu_index(optmenu, *((gchar **)pparam->data),
2934 (GCompareFunc)strcmp);
2936 gtk_option_menu_set_history(optmenu, index);
2938 gtk_option_menu_set_history(optmenu, 0);
2939 prefs_common_charset_set_data_from_optmenu(pparam);
2943 static void prefs_common_encoding_set_data_from_optmenu(PrefParam *pparam)
2946 GtkWidget *menuitem;
2948 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2949 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2950 *((TransferEncodingMethod *)pparam->data) = GPOINTER_TO_INT
2951 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2954 static void prefs_common_encoding_set_optmenu(PrefParam *pparam)
2956 TransferEncodingMethod method =
2957 *((TransferEncodingMethod *)pparam->data);
2958 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2961 g_return_if_fail(optmenu != NULL);
2963 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(method),
2966 gtk_option_menu_set_history(optmenu, index);
2968 gtk_option_menu_set_history(optmenu, 0);
2969 prefs_common_encoding_set_data_from_optmenu(pparam);
2973 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
2976 GtkWidget *menuitem;
2978 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2979 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2980 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
2981 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2984 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
2986 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
2987 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2989 GtkWidget *menuitem;
2992 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(mode),
2995 gtk_option_menu_set_history(optmenu, index);
2997 gtk_option_menu_set_history(optmenu, 0);
2998 prefs_common_recv_dialog_set_data_from_optmenu(pparam);
3001 menu = gtk_option_menu_get_menu(optmenu);
3002 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3003 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3006 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam)
3009 GtkWidget *menuitem;
3011 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3012 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3013 *((SendDialogMode *)pparam->data) = GPOINTER_TO_INT
3014 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3017 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam)
3019 SendDialogMode mode = *((SendDialogMode *)pparam->data);
3020 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3022 GtkWidget *menuitem;
3025 case SEND_DIALOG_ALWAYS:
3026 gtk_option_menu_set_history(optmenu, 0);
3028 case SEND_DIALOG_NEVER:
3029 gtk_option_menu_set_history(optmenu, 1);
3035 menu = gtk_option_menu_get_menu(optmenu);
3036 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3037 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3040 static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
3043 prefs_common_cancel();
3047 static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
3050 if (event && event->keyval == GDK_Escape)
3051 prefs_common_cancel();
3054 static void prefs_common_ok(void)
3056 prefs_common_apply();
3057 gtk_widget_hide(dialog.window);
3062 static void prefs_common_apply(void)
3064 MainWindow *mainwindow;
3066 prefs_set_data_from_dialog(param);
3067 sock_set_io_timeout(prefs_common.io_timeout_secs);
3068 main_window_reflect_prefs_all_real(FALSE);
3069 prefs_common_write_config();
3071 mainwindow = mainwindow_get_mainwindow();
3072 log_window_set_clipping(mainwindow->logwin, prefs_common.cliplog,
3073 prefs_common.loglength);
3075 inc_autocheck_timer_remove();
3076 inc_autocheck_timer_set();
3079 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
3082 GtkWidget *menuitem;
3084 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3085 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3086 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
3087 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3090 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
3092 NextUnreadMsgDialogShow dialog_show;
3093 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3095 GtkWidget *menuitem;
3097 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
3099 switch (dialog_show) {
3100 case NEXTUNREADMSGDIALOG_ALWAYS:
3101 gtk_option_menu_set_history(optmenu, 0);
3103 case NEXTUNREADMSGDIALOG_ASSUME_YES:
3104 gtk_option_menu_set_history(optmenu, 1);
3106 case NEXTUNREADMSGDIALOG_ASSUME_NO:
3107 gtk_option_menu_set_history(optmenu, 2);
3111 menu = gtk_option_menu_get_menu(optmenu);
3112 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3113 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3116 static void prefs_common_cancel(void)
3118 gtk_widget_hide(dialog.window);
3123 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
3126 GtkWidget *menuitem;
3128 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3129 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3130 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
3131 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3134 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
3136 RecvDialogShow dialog_show;
3137 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3139 GtkWidget *menuitem;
3141 dialog_show = *((RecvDialogShow *)pparam->data);
3143 switch (dialog_show) {
3144 case RECVDIALOG_ALWAYS:
3145 gtk_option_menu_set_history(optmenu, 0);
3147 case RECVDIALOG_WINDOW_ACTIVE:
3148 gtk_option_menu_set_history(optmenu, 1);
3150 case RECVDIALOG_NEVER:
3151 gtk_option_menu_set_history(optmenu, 2);
3156 menu = gtk_option_menu_get_menu(optmenu);
3157 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3158 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));