2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2004 Hiroyuki Yamamoto
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
28 #include <gdk/gdkkeysyms.h>
33 #include <sys/types.h>
39 #include "prefs_gtk.h"
40 #include "prefs_common.h"
41 #include "prefs_display_header.h"
42 #include "prefs_summary_column.h"
43 #include "mainwindow.h"
44 #include "summaryview.h"
45 #include "messageview.h"
46 #include "manage_window.h"
52 #include "alertpanel.h"
56 #include "folderview.h"
57 #include "stock_pixmap.h"
58 #include "quote_fmt.h"
60 PrefsCommon prefs_common;
62 static PrefsDialog dialog;
64 static struct Receive {
65 GtkWidget *checkbtn_incext;
66 GtkWidget *entry_incext;
67 GtkWidget *button_incext;
69 GtkWidget *checkbtn_autochk;
70 GtkWidget *spinbtn_autochk;
71 GtkObject *spinbtn_autochk_adj;
73 GtkWidget *checkbtn_chkonstartup;
74 GtkWidget *checkbtn_scan_after_inc;
77 GtkWidget *checkbtn_newmail_auto;
78 GtkWidget *checkbtn_newmail_manu;
79 GtkWidget *entry_newmail_notify_cmd;
80 GtkWidget *hbox_newmail_notify;
81 GtkWidget *optmenu_recvdialog;
82 GtkWidget *checkbtn_no_recv_err_panel;
83 GtkWidget *checkbtn_close_recv_dialog;
87 GtkWidget *checkbtn_savemsg;
88 GtkWidget *optmenu_senddialog;
90 GtkWidget *optmenu_charset;
91 GtkWidget *optmenu_encoding_method;
94 static struct Compose {
95 GtkWidget *entry_fw_quotemark;
96 GtkWidget *text_fw_quotefmt;
98 GtkWidget *checkbtn_autoextedit;
99 GtkWidget *spinbtn_undolevel;
100 GtkObject *spinbtn_undolevel_adj;
102 GtkWidget *checkbtn_reply_account_autosel;
103 GtkWidget *checkbtn_forward_account_autosel;
104 GtkWidget *checkbtn_reedit_account_autosel;
105 GtkWidget *checkbtn_quote;
106 GtkWidget *checkbtn_default_reply_list;
107 GtkWidget *checkbtn_forward_as_attachment;
108 GtkWidget *checkbtn_redirect_keep_from;
109 GtkWidget *checkbtn_block_cursor;
110 GtkWidget *checkbtn_reply_with_quote;
112 GtkWidget *checkbtn_autosave;
113 GtkWidget *entry_autosave_length;
116 static struct Quote {
117 GtkWidget *entry_quotemark;
118 GtkWidget *text_quotefmt;
120 GtkWidget *entry_fw_quotemark;
121 GtkWidget *text_fw_quotefmt;
123 GtkWidget *entry_quote_chars;
126 static struct Display {
127 GtkWidget *chkbtn_folder_unread;
128 GtkWidget *entry_ng_abbrev_len;
129 GtkWidget *spinbtn_ng_abbrev_len;
130 GtkObject *spinbtn_ng_abbrev_len_adj;
132 GtkWidget *chkbtn_transhdr;
134 GtkWidget *chkbtn_swapfrom;
135 GtkWidget *chkbtn_useaddrbook;
136 GtkWidget *chkbtn_threadsubj;
137 GtkWidget *entry_datefmt;
140 static struct Message {
141 GtkWidget *chkbtn_mbalnum;
142 GtkWidget *chkbtn_disphdrpane;
143 GtkWidget *chkbtn_disphdr;
144 GtkWidget *spinbtn_linespc;
145 GtkObject *spinbtn_linespc_adj;
146 GtkWidget *chkbtn_headspc;
148 GtkWidget *chkbtn_smoothscroll;
149 GtkWidget *spinbtn_scrollstep;
150 GtkObject *spinbtn_scrollstep_adj;
151 GtkWidget *chkbtn_halfpage;
153 GtkWidget *chkbtn_attach_desc;
157 static struct Privacy {
158 GtkWidget *checkbtn_auto_check_signatures;
159 GtkWidget *checkbtn_store_passphrase;
160 GtkWidget *spinbtn_store_passphrase;
161 GtkObject *spinbtn_store_passphrase_adj;
162 GtkWidget *checkbtn_passphrase_grab;
163 GtkWidget *checkbtn_gpg_warning;
167 static struct Interface {
168 /* GtkWidget *checkbtn_emacs; */
169 GtkWidget *checkbtn_always_show_msg;
170 GtkWidget *checkbtn_openunread;
171 GtkWidget *checkbtn_mark_as_read_on_newwin;
172 GtkWidget *checkbtn_openinbox;
173 GtkWidget *checkbtn_immedexec;
174 GtkWidget *optmenu_nextunreadmsgdialog;
177 static struct Other {
178 GtkWidget *checkbtn_addaddrbyclick;
179 GtkWidget *checkbtn_confonexit;
180 GtkWidget *checkbtn_cleanonexit;
181 GtkWidget *checkbtn_askonclean;
182 GtkWidget *checkbtn_warnqueued;
183 GtkWidget *checkbtn_cliplog;
184 GtkWidget *loglength_entry;
187 GtkWidget *checkbtn_ssl_ask_unknown_valid;
191 GtkWidget *spinbtn_iotimeout;
192 GtkObject *spinbtn_iotimeout_adj;
195 static struct KeybindDialog {
200 static void prefs_common_charset_set_data_from_optmenu (PrefParam *pparam);
201 static void prefs_common_charset_set_optmenu (PrefParam *pparam);
202 static void prefs_common_encoding_set_data_from_optmenu (PrefParam *pparam);
203 static void prefs_common_encoding_set_optmenu (PrefParam *pparam);
204 static void prefs_common_recv_dialog_set_data_from_optmenu (PrefParam *pparam);
205 static void prefs_common_recv_dialog_set_optmenu (PrefParam *pparam);
206 static void prefs_common_recv_dialog_newmail_notify_toggle_cb (GtkWidget *w,
208 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam);
209 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam);
210 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam);
211 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam);
212 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam);
213 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam);
216 parameter name, default value, pointer to the prefs variable, data type,
217 pointer to the widget pointer,
218 pointer to the function for data setting,
219 pointer to the function for widget setting
222 static PrefParam param[] = {
224 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
225 &receive.checkbtn_incext,
226 prefs_set_data_from_toggle, prefs_set_toggle},
227 {"ext_inc_path", DEFAULT_INC_PATH, &prefs_common.extinc_cmd, P_STRING,
228 &receive.entry_incext,
229 prefs_set_data_from_entry, prefs_set_entry},
231 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
232 &receive.checkbtn_autochk,
233 prefs_set_data_from_toggle, prefs_set_toggle},
234 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
235 &receive.spinbtn_autochk,
236 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
237 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
238 &receive.checkbtn_chkonstartup,
239 prefs_set_data_from_toggle, prefs_set_toggle},
240 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
241 P_BOOL, &receive.checkbtn_scan_after_inc,
242 prefs_set_data_from_toggle, prefs_set_toggle},
243 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
244 P_BOOL, &receive.checkbtn_newmail_manu,
245 prefs_set_data_from_toggle, prefs_set_toggle},
246 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
247 P_BOOL, &receive.checkbtn_newmail_auto,
248 prefs_set_data_from_toggle, prefs_set_toggle},
249 {"newmail_notify_cmd", "", &prefs_common.newmail_notify_cmd, P_STRING,
250 &receive.entry_newmail_notify_cmd,
251 prefs_set_data_from_entry, prefs_set_entry},
252 {"receive_dialog_mode", "1", &prefs_common.recv_dialog_mode, P_ENUM,
253 &receive.optmenu_recvdialog,
254 prefs_common_recv_dialog_set_data_from_optmenu,
255 prefs_common_recv_dialog_set_optmenu},
256 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
257 P_BOOL, &receive.checkbtn_no_recv_err_panel,
258 prefs_set_data_from_toggle, prefs_set_toggle},
259 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
260 P_BOOL, &receive.checkbtn_close_recv_dialog,
261 prefs_set_data_from_toggle, prefs_set_toggle},
264 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
265 &p_send.checkbtn_savemsg,
266 prefs_set_data_from_toggle, prefs_set_toggle},
267 {"send_dialog_mode", "0", &prefs_common.send_dialog_mode, P_ENUM,
268 &p_send.optmenu_senddialog,
269 prefs_common_send_dialog_set_data_from_optmenu,
270 prefs_common_send_dialog_set_optmenu},
272 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
273 &p_send.optmenu_charset,
274 prefs_common_charset_set_data_from_optmenu,
275 prefs_common_charset_set_optmenu},
276 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
277 &p_send.optmenu_encoding_method,
278 prefs_common_encoding_set_data_from_optmenu,
279 prefs_common_encoding_set_optmenu},
281 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
282 P_BOOL, NULL, NULL, NULL},
285 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
286 &compose.checkbtn_autoextedit,
287 prefs_set_data_from_toggle, prefs_set_toggle},
288 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
289 P_BOOL, &compose.checkbtn_forward_as_attachment,
290 prefs_set_data_from_toggle, prefs_set_toggle},
291 {"redirect_keep_from", "FALSE",
292 &prefs_common.redirect_keep_from, P_BOOL,
293 &compose.checkbtn_redirect_keep_from,
294 prefs_set_data_from_toggle, prefs_set_toggle},
295 {"undo_level", "50", &prefs_common.undolevels, P_INT,
296 &compose.spinbtn_undolevel,
297 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
298 {"block_cursor", "FALSE", &prefs_common.block_cursor,
299 P_BOOL, &compose.checkbtn_block_cursor,
300 prefs_set_data_from_toggle, prefs_set_toggle},
302 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
304 {"linewrap_quotation", "FALSE", &prefs_common.linewrap_quote, P_BOOL,
306 {"linewrap_auto", "FALSE", &prefs_common.autowrap, P_BOOL,
308 {"linewrap_before_sending", "FALSE", &prefs_common.linewrap_at_send, P_BOOL,
310 {"smart_wrapping", "TRUE", &prefs_common.smart_wrapping, P_BOOL,
312 {"autosave", "FALSE", &prefs_common.autosave,
313 P_BOOL, &compose.checkbtn_autosave,
314 prefs_set_data_from_toggle, prefs_set_toggle},
315 {"autosave_length", "50", &prefs_common.autosave_length,
316 P_INT, &compose.entry_autosave_length,
317 prefs_set_data_from_entry, prefs_set_entry},
319 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
321 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path, P_STRING,
323 {"dictionary", "", &prefs_common.dictionary, P_STRING,
325 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode, P_INT,
327 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
329 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
331 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
334 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
335 &compose.checkbtn_reply_with_quote, prefs_set_data_from_toggle, prefs_set_toggle},
337 /* Account autoselection */
338 {"reply_account_autoselect", "TRUE",
339 &prefs_common.reply_account_autosel, P_BOOL,
340 &compose.checkbtn_reply_account_autosel,
341 prefs_set_data_from_toggle, prefs_set_toggle},
342 {"forward_account_autoselect", "TRUE",
343 &prefs_common.forward_account_autosel, P_BOOL,
344 &compose.checkbtn_forward_account_autosel,
345 prefs_set_data_from_toggle, prefs_set_toggle},
346 {"reedit_account_autoselect", "TRUE",
347 &prefs_common.reedit_account_autosel, P_BOOL,
348 &compose.checkbtn_reedit_account_autosel,
349 prefs_set_data_from_toggle, prefs_set_toggle},
351 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
352 &compose.checkbtn_default_reply_list,
353 prefs_set_data_from_toggle, prefs_set_toggle},
355 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
359 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
360 "e.entry_quotemark, prefs_set_data_from_entry, prefs_set_entry},
361 {"reply_quote_format", "On %d\\n%f wrote:\\n\\n%Q",
362 &prefs_common.quotefmt, P_STRING, "e.text_quotefmt,
363 prefs_set_data_from_text, prefs_set_text},
365 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
366 "e.entry_fw_quotemark,
367 prefs_set_data_from_entry, prefs_set_entry},
368 {"forward_quote_format",
369 "\\n\\nBegin forwarded message:\\n\\n"
370 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
371 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M",
372 &prefs_common.fw_quotefmt, P_STRING, "e.text_fw_quotefmt,
373 prefs_set_data_from_text, prefs_set_text},
374 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
375 "e.entry_quote_chars, prefs_set_data_from_entry, prefs_set_entry},
378 {"widget_font", NULL, &prefs_common.widgetfont, P_STRING,
380 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
381 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
382 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
383 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
384 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
385 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
386 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
387 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
390 {"display_folder_unread_num", "TRUE",
391 &prefs_common.display_folder_unread, P_BOOL,
392 &display.chkbtn_folder_unread,
393 prefs_set_data_from_toggle, prefs_set_toggle},
394 {"newsgroup_abbrev_len", "16",
395 &prefs_common.ng_abbrev_len, P_INT,
396 &display.spinbtn_ng_abbrev_len,
397 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
399 {"translate_header", "TRUE", &prefs_common.trans_hdr, P_BOOL,
400 &display.chkbtn_transhdr,
401 prefs_set_data_from_toggle, prefs_set_toggle},
403 /* Display: Summary View */
404 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
405 &display.chkbtn_swapfrom,
406 prefs_set_data_from_toggle, prefs_set_toggle},
407 {"use_address_book", "TRUE", &prefs_common.use_addr_book, P_BOOL,
408 &display.chkbtn_useaddrbook,
409 prefs_set_data_from_toggle, prefs_set_toggle},
410 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
411 &display.chkbtn_threadsubj,
412 prefs_set_data_from_toggle, prefs_set_toggle},
413 {"date_format", "%y/%m/%d(%a) %H:%M", &prefs_common.date_format,
414 P_STRING, &display.entry_datefmt,
415 prefs_set_data_from_entry, prefs_set_entry},
417 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
419 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
421 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
422 P_INT, NULL, NULL, NULL },
424 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
426 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
428 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
430 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
433 {"folderview_vscrollbar_policy", "0",
434 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
437 {"summary_col_show_mark", "TRUE",
438 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
439 {"summary_col_show_unread", "TRUE",
440 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
441 {"summary_col_show_mime", "TRUE",
442 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
443 {"summary_col_show_subject", "TRUE",
444 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
445 {"summary_col_show_from", "TRUE",
446 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
447 {"summary_col_show_date", "TRUE",
448 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
449 {"summary_col_show_size", "TRUE",
450 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
451 {"summary_col_show_number", "FALSE",
452 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
453 {"summary_col_show_score", "FALSE",
454 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
455 {"summary_col_show_locked", "FALSE",
456 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
458 {"summary_col_pos_mark", "0",
459 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
460 {"summary_col_pos_unread", "1",
461 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
462 {"summary_col_pos_mime", "2",
463 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
464 {"summary_col_pos_subject", "3",
465 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
466 {"summary_col_pos_from", "4",
467 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
468 {"summary_col_pos_date", "5",
469 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
470 {"summary_col_pos_size", "6",
471 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
472 {"summary_col_pos_number", "7",
473 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
474 {"summary_col_pos_score", "8",
475 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
476 {"summary_col_pos_locked", "9",
477 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
479 {"summary_col_size_mark", "10",
480 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
481 {"summary_col_size_unread", "13",
482 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
483 {"summary_col_size_mime", "10",
484 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
485 {"summary_col_size_subject", "200",
486 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
487 {"summary_col_size_from", "120",
488 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
489 {"summary_col_size_date", "118",
490 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
491 {"summary_col_size_size", "45",
492 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
493 {"summary_col_size_number", "40",
494 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
495 {"summary_col_size_score", "40",
496 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
497 {"summary_col_size_locked", "13",
498 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
501 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
503 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
505 {"folderview_width", "179", &prefs_common.folderview_width, P_INT,
507 {"folderview_height", "600", &prefs_common.folderview_height, P_INT,
509 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
512 {"folder_col_folder", "150", &prefs_common.folder_col_folder, P_INT,
514 {"folder_col_new", "32", &prefs_common.folder_col_new, P_INT,
516 {"folder_col_unread", "32", &prefs_common.folder_col_unread, P_INT,
518 {"folder_col_total", "32", &prefs_common.folder_col_total, P_INT,
521 {"summaryview_width", "600", &prefs_common.summaryview_width, P_INT,
523 {"summaryview_height", "173", &prefs_common.summaryview_height, P_INT,
526 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
528 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
530 {"messageview_width", "600", &prefs_common.msgview_width, P_INT,
532 {"messageview_height", "540", &prefs_common.msgview_height, P_INT,
534 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
537 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
539 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
541 {"mainview_width", "600", &prefs_common.mainview_width, P_INT,
543 {"mainview_height", "600", &prefs_common.mainview_height, P_INT,
545 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
547 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
549 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
551 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
553 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
555 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
557 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
559 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
561 {"compose_width", "600", &prefs_common.compose_width, P_INT,
563 {"compose_height", "560", &prefs_common.compose_height, P_INT,
565 {"compose_x", "0", &prefs_common.compose_x, P_INT,
567 {"compose_y", "0", &prefs_common.compose_y, P_INT,
570 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
573 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
575 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
577 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
579 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
581 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
583 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
585 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
586 P_BOOL, NULL, NULL, NULL},
588 {"convert_mb_alnum", "FALSE", &prefs_common.conv_mb_alnum, P_BOOL,
589 &message.chkbtn_mbalnum,
590 prefs_set_data_from_toggle, prefs_set_toggle},
591 {"display_header_pane", "TRUE", &prefs_common.display_header_pane,
592 P_BOOL, &message.chkbtn_disphdrpane,
593 prefs_set_data_from_toggle, prefs_set_toggle},
594 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
595 &message.chkbtn_disphdr,
596 prefs_set_data_from_toggle, prefs_set_toggle},
597 {"line_space", "2", &prefs_common.line_space, P_INT,
598 &message.spinbtn_linespc,
599 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
600 {"enable_head_space", "FALSE", &prefs_common.head_space, P_BOOL,
601 &message.chkbtn_headspc,
602 prefs_set_data_from_toggle, prefs_set_toggle},
604 {"enable_smooth_scroll", "FALSE",
605 &prefs_common.enable_smooth_scroll, P_BOOL,
606 &message.chkbtn_smoothscroll,
607 prefs_set_data_from_toggle, prefs_set_toggle},
608 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
609 &message.spinbtn_scrollstep,
610 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
611 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
612 &message.chkbtn_halfpage,
613 prefs_set_data_from_toggle, prefs_set_toggle},
615 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
618 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
619 &message.chkbtn_attach_desc,
620 prefs_set_data_from_toggle, prefs_set_toggle},
621 {"attach_save_directory", NULL,
622 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
625 {"mime_image_viewer", "display '%s'",
626 &prefs_common.mime_image_viewer, P_STRING, NULL, NULL, NULL},
627 {"mime_audio_player", "play '%s'",
628 &prefs_common.mime_audio_player, P_STRING, NULL, NULL, NULL},
629 {"mime_open_command", "gedit '%s'",
630 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
634 {"auto_check_signatures", "TRUE",
635 &prefs_common.auto_check_signatures, P_BOOL,
636 &privacy.checkbtn_auto_check_signatures,
637 prefs_set_data_from_toggle, prefs_set_toggle},
638 {"store_passphrase", "FALSE", &prefs_common.store_passphrase, P_BOOL,
639 &privacy.checkbtn_store_passphrase,
640 prefs_set_data_from_toggle, prefs_set_toggle},
641 {"store_passphrase_timeout", "0",
642 &prefs_common.store_passphrase_timeout, P_INT,
643 &privacy.spinbtn_store_passphrase,
644 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
646 {"passphrase_grab", "FALSE", &prefs_common.passphrase_grab, P_BOOL,
647 &privacy.checkbtn_passphrase_grab,
648 prefs_set_data_from_toggle, prefs_set_toggle},
649 #endif /* __MINGW32__ */
650 {"gpg_warning", "TRUE", &prefs_common.gpg_warning, P_BOOL,
651 &privacy.checkbtn_gpg_warning,
652 prefs_set_data_from_toggle, prefs_set_toggle},
653 #endif /* USE_GPGME */
656 {"separate_folder", "FALSE", &prefs_common.sep_folder, P_BOOL,
658 {"separate_message", "FALSE", &prefs_common.sep_msg, P_BOOL,
661 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
662 NULL, NULL, NULL}, */
663 {"always_show_message_when_selected", "FALSE",
664 &prefs_common.always_show_msg,
665 P_BOOL, &interface.checkbtn_always_show_msg,
666 prefs_set_data_from_toggle, prefs_set_toggle},
667 {"open_unread_on_enter", "FALSE", &prefs_common.open_unread_on_enter,
668 P_BOOL, &interface.checkbtn_openunread,
669 prefs_set_data_from_toggle, prefs_set_toggle},
670 {"mark_as_read_on_new_window", "FALSE",
671 &prefs_common.mark_as_read_on_new_window,
672 P_BOOL, &interface.checkbtn_mark_as_read_on_newwin,
673 prefs_set_data_from_toggle, prefs_set_toggle},
674 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
675 P_BOOL, &interface.checkbtn_openinbox,
676 prefs_set_data_from_toggle, prefs_set_toggle},
677 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
678 &interface.checkbtn_immedexec,
679 prefs_set_data_from_toggle, prefs_set_toggle},
680 {"nextunreadmsg_dialog", NULL, &prefs_common.next_unread_msg_dialog, P_ENUM,
681 &interface.optmenu_nextunreadmsgdialog,
682 prefs_nextunreadmsgdialog_set_data_from_optmenu,
683 prefs_nextunreadmsgdialog_set_optmenu},
685 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
686 &prefs_common.pixmap_theme_path, P_STRING,
689 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
693 {"uri_open_command", DEFAULT_BROWSER_CMD,
694 &prefs_common.uri_cmd, P_STRING, NULL, NULL, NULL},
695 {"print_command", "lpr %s", &prefs_common.print_cmd, P_STRING,
697 {"ext_editor_command", "gedit %s",
698 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
700 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
701 P_BOOL, &other.checkbtn_addaddrbyclick,
702 prefs_set_data_from_toggle, prefs_set_toggle},
704 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
705 &other.checkbtn_confonexit,
706 prefs_set_data_from_toggle, prefs_set_toggle},
707 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
708 &other.checkbtn_cleanonexit,
709 prefs_set_data_from_toggle, prefs_set_toggle},
710 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
711 &other.checkbtn_askonclean,
712 prefs_set_data_from_toggle, prefs_set_toggle},
713 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
714 P_BOOL, &other.checkbtn_warnqueued,
715 prefs_set_data_from_toggle, prefs_set_toggle},
718 {"ssl_ask_unknown_valid", "TRUE", &prefs_common.ssl_ask_unknown_valid,
719 P_BOOL, &other.checkbtn_ssl_ask_unknown_valid,
720 prefs_set_data_from_toggle, prefs_set_toggle},
723 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
725 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
727 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
730 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
731 P_INT, &other.spinbtn_iotimeout,
732 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
733 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
735 {"important_score", "1", &prefs_common.important_score, P_INT,
737 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
738 &other.checkbtn_cliplog,
739 prefs_set_data_from_toggle, prefs_set_toggle},
740 {"log_length", "500", &prefs_common.loglength, P_INT,
741 &other.loglength_entry,
742 prefs_set_data_from_entry, prefs_set_entry},
744 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
746 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
749 {"color_new", "179", &prefs_common.color_new, P_COLOR,
752 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
755 /* widget creating functions */
756 static void prefs_common_create (void);
757 static void prefs_receive_create (void);
758 static void prefs_send_create (void);
759 static void prefs_compose_create (void);
760 static void prefs_quote_create (void);
761 static void prefs_display_create (void);
762 static void prefs_message_create (void);
764 static void prefs_privacy_create (void);
766 static void prefs_interface_create (void);
767 static void prefs_other_create (void);
769 static void date_format_ok_btn_clicked (GtkButton *button,
771 static void date_format_cancel_btn_clicked (GtkButton *button,
773 static void date_format_key_pressed (GtkWidget *keywidget,
776 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
779 static void date_format_entry_on_change (GtkEditable *editable,
781 static void date_format_select_row (GtkWidget *date_format_list,
784 GdkEventButton *event,
785 GtkWidget *date_format);
786 static GtkWidget *date_format_create (GtkButton *button,
789 static void prefs_keybind_select (void);
790 static gint prefs_keybind_deleted (GtkWidget *widget,
793 static void prefs_keybind_key_pressed (GtkWidget *widget,
796 static void prefs_keybind_cancel (void);
797 static void prefs_keybind_apply_clicked (GtkWidget *widget);
799 static gint prefs_common_deleted (GtkWidget *widget,
802 static void prefs_common_key_pressed (GtkWidget *widget,
805 static void prefs_common_ok (void);
806 static void prefs_common_apply (void);
807 static void prefs_common_cancel (void);
809 void prefs_common_init(void)
811 prefs_common.disphdr_list = NULL;
814 PrefsCommon *prefs_common_get(void)
816 return &prefs_common;
820 * Read history list from the specified history file
822 GList *prefs_common_read_history(const gchar *history)
826 gchar buf[PREFSBUFSIZE];
829 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
831 if ((fp = fopen(path, "rb")) == NULL) {
832 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
837 while (fgets(buf, sizeof(buf), fp) != NULL) {
839 if (buf[0] == '\0') continue;
840 tmp = add_history(tmp, buf);
844 tmp = g_list_reverse(tmp);
849 void prefs_common_read_config(void)
851 prefs_read_config(param, "Common", COMMON_RC);
853 prefs_common.mime_open_cmd_history =
854 prefs_common_read_history(COMMAND_HISTORY);
855 prefs_common.summary_quicksearch_history =
856 prefs_common_read_history(QUICKSEARCH_HISTORY);
860 * Save history list to the specified history file
862 void prefs_common_save_history(const gchar *history, GList *list)
868 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
870 if ((fp = fopen(path, "wb")) == NULL) {
871 FILE_OP_ERROR(path, "fopen");
876 for (cur = list; cur != NULL; cur = cur->next) {
877 fputs((gchar *)cur->data, fp);
885 void prefs_common_save_config(void)
887 prefs_save_config(param, "Common", COMMON_RC);
889 prefs_common_save_history(COMMAND_HISTORY,
890 prefs_common.mime_open_cmd_history);
891 prefs_common_save_history(QUICKSEARCH_HISTORY,
892 prefs_common.summary_quicksearch_history);
895 void prefs_common_open(void)
897 if (prefs_rc_is_readonly(COMMON_RC))
902 if (!dialog.window) {
903 prefs_common_create();
906 manage_window_set_transient(GTK_WINDOW(dialog.window));
907 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
908 gtk_widget_grab_focus(dialog.ok_btn);
910 prefs_set_dialog(param);
912 gtk_widget_show(dialog.window);
915 static void prefs_common_create(void)
919 debug_print("Creating common preferences window...\n");
921 prefs_dialog_create(&dialog);
922 gtk_window_set_title (GTK_WINDOW(dialog.window),
923 _("Common Preferences"));
924 gtk_signal_connect (GTK_OBJECT(dialog.window), "delete_event",
925 GTK_SIGNAL_FUNC(prefs_common_deleted), NULL);
926 gtk_signal_connect (GTK_OBJECT(dialog.window), "key_press_event",
927 GTK_SIGNAL_FUNC(prefs_common_key_pressed), NULL);
928 MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
930 gtk_signal_connect (GTK_OBJECT(dialog.ok_btn), "clicked",
931 GTK_SIGNAL_FUNC(prefs_common_ok), NULL);
932 gtk_signal_connect (GTK_OBJECT(dialog.apply_btn), "clicked",
933 GTK_SIGNAL_FUNC(prefs_common_apply), NULL);
934 gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
935 GTK_SIGNAL_FUNC(prefs_common_cancel),
936 GTK_OBJECT(dialog.window));
938 /* create all widgets on notebook */
939 prefs_receive_create();
940 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
942 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
943 prefs_compose_create();
944 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
945 prefs_quote_create();
946 SET_NOTEBOOK_LABEL(dialog.notebook, _("Quote"), page++);
947 prefs_display_create();
948 SET_NOTEBOOK_LABEL(dialog.notebook, _("Display"), page++);
949 prefs_message_create();
950 SET_NOTEBOOK_LABEL(dialog.notebook, _("Message"), page++);
952 prefs_privacy_create();
953 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
955 prefs_interface_create();
956 SET_NOTEBOOK_LABEL(dialog.notebook, _("Interface"), page++);
957 prefs_other_create();
958 SET_NOTEBOOK_LABEL(dialog.notebook, _("Other"), page++);
960 gtk_widget_show_all(dialog.window);
963 static void prefs_receive_create(void)
967 GtkWidget *frame_incext;
968 GtkWidget *checkbtn_incext;
970 GtkWidget *label_incext;
971 GtkWidget *entry_incext;
972 /* GtkWidget *button_incext; */
974 GtkWidget *hbox_autochk;
975 GtkWidget *checkbtn_autochk;
976 GtkWidget *label_autochk1;
977 GtkObject *spinbtn_autochk_adj;
978 GtkWidget *spinbtn_autochk;
979 GtkWidget *label_autochk2;
980 GtkWidget *checkbtn_chkonstartup;
981 GtkWidget *checkbtn_scan_after_inc;
984 GtkWidget *frame_newmail;
985 GtkWidget *hbox_newmail_notify;
986 GtkWidget *checkbtn_newmail_auto;
987 GtkWidget *checkbtn_newmail_manu;
988 GtkWidget *entry_newmail_notify_cmd;
989 GtkWidget *label_newmail_notify_cmd;
991 GtkWidget *hbox_recvdialog;
992 GtkWidget *label_recvdialog;
995 GtkWidget *optmenu_recvdialog;
996 GtkWidget *checkbtn_no_recv_err_panel;
997 GtkWidget *checkbtn_close_recv_dialog;
999 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1000 gtk_widget_show (vbox1);
1001 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1002 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1004 PACK_FRAME(vbox1, frame_incext, _("External program"));
1006 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1007 gtk_widget_show (vbox2);
1008 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
1009 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1011 /* Use of external incorporation program */
1012 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
1013 _("Use external program for incorporation"));
1015 hbox = gtk_hbox_new (FALSE, 8);
1016 gtk_widget_show (hbox);
1017 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1018 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1020 label_incext = gtk_label_new (_("Command"));
1021 gtk_widget_show (label_incext);
1022 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1024 entry_incext = gtk_entry_new ();
1025 gtk_widget_show (entry_incext);
1026 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1029 button_incext = gtk_button_new_with_label ("... ");
1030 gtk_widget_show (button_incext);
1031 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1034 vbox2 = gtk_vbox_new (FALSE, 0);
1035 gtk_widget_show (vbox2);
1036 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1039 hbox_autochk = gtk_hbox_new (FALSE, 8);
1040 gtk_widget_show (hbox_autochk);
1041 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1043 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1044 _("Auto-check new mail"));
1046 label_autochk1 = gtk_label_new (_("every"));
1047 gtk_widget_show (label_autochk1);
1048 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1050 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1051 spinbtn_autochk = gtk_spin_button_new
1052 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1053 gtk_widget_show (spinbtn_autochk);
1054 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1055 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1056 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1058 label_autochk2 = gtk_label_new (_("minute(s)"));
1059 gtk_widget_show (label_autochk2);
1060 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1062 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1063 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1064 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1066 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1067 _("Check new mail on startup"));
1068 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1069 _("Update all local folders after incorporation"));
1072 /* receive dialog */
1073 hbox_recvdialog = gtk_hbox_new (FALSE, 8);
1074 gtk_widget_show (hbox_recvdialog);
1075 gtk_box_pack_start (GTK_BOX (vbox2), hbox_recvdialog, FALSE, FALSE, 0);
1077 label_recvdialog = gtk_label_new (_("Show receive dialog"));
1078 gtk_misc_set_alignment(GTK_MISC(label_recvdialog), 0, 0.5);
1079 gtk_widget_show (label_recvdialog);
1080 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), label_recvdialog, FALSE, FALSE, 0);
1082 optmenu_recvdialog = gtk_option_menu_new ();
1083 gtk_widget_show (optmenu_recvdialog);
1084 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), optmenu_recvdialog, FALSE, FALSE, 0);
1086 menu = gtk_menu_new ();
1087 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
1088 MENUITEM_ADD (menu, menuitem, _("Only on manual receiving"),
1089 RECV_DIALOG_MANUAL);
1090 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
1092 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
1094 PACK_CHECK_BUTTON (vbox2, checkbtn_no_recv_err_panel,
1095 _("Don't popup error dialog on receive error"));
1097 PACK_CHECK_BUTTON (vbox2, checkbtn_close_recv_dialog,
1098 _("Close receive dialog when finished"));
1100 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1102 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1103 gtk_widget_show (vbox2);
1104 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1105 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1107 hbox = gtk_hbox_new (TRUE, 8);
1108 gtk_widget_show (hbox);
1109 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1110 _("after autochecking"));
1111 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1112 _("after manual checking"));
1113 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1114 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1115 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1117 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1118 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1121 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1122 gtk_widget_show (hbox);
1123 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1126 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1127 "(use %d as number of new "
1129 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1131 gtk_widget_show (label_newmail_notify_cmd);
1132 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1133 label_newmail_notify_cmd, FALSE, FALSE, 0);
1135 entry_newmail_notify_cmd = gtk_entry_new ();
1136 gtk_widget_show (entry_newmail_notify_cmd);
1137 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1138 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1140 gtk_widget_set_sensitive(hbox_newmail_notify,
1141 prefs_common.newmail_notify_auto ||
1142 prefs_common.newmail_notify_manu);
1144 receive.checkbtn_incext = checkbtn_incext;
1145 receive.entry_incext = entry_incext;
1146 /* receive.button_incext = button_incext; */
1148 receive.checkbtn_autochk = checkbtn_autochk;
1149 receive.spinbtn_autochk = spinbtn_autochk;
1150 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1152 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1153 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1156 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1157 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1158 receive.hbox_newmail_notify = hbox_newmail_notify;
1159 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1160 receive.optmenu_recvdialog = optmenu_recvdialog;
1161 receive.checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
1162 receive.checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
1165 static void prefs_send_create(void)
1170 GtkWidget *checkbtn_savemsg;
1171 GtkWidget *label_outcharset;
1172 GtkWidget *optmenu_charset;
1173 GtkWidget *optmenu_menu;
1174 GtkWidget *menuitem;
1175 GtkTooltips *charset_tooltip;
1176 GtkWidget *optmenu_encoding;
1177 GtkWidget *label_encoding;
1178 GtkTooltips *encoding_tooltip;
1179 GtkWidget *label_senddialog;
1181 GtkWidget *optmenu_senddialog;
1182 GtkWidget *hbox_senddialog;
1184 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1185 gtk_widget_show (vbox1);
1186 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1187 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1189 vbox2 = gtk_vbox_new (FALSE, 0);
1190 gtk_widget_show (vbox2);
1191 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1193 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1194 _("Save sent messages to Sent folder"));
1196 hbox_senddialog = gtk_hbox_new (FALSE, 8);
1197 gtk_box_pack_start (GTK_BOX (vbox1), hbox_senddialog, FALSE, FALSE, 0);
1199 label_senddialog = gtk_label_new (_("Show send dialog"));
1200 gtk_widget_show (label_senddialog);
1201 gtk_box_pack_start (GTK_BOX (hbox_senddialog), label_senddialog, FALSE, FALSE, 0);
1203 optmenu_senddialog = gtk_option_menu_new ();
1204 gtk_widget_show (optmenu_senddialog);
1205 gtk_box_pack_start (GTK_BOX (hbox_senddialog), optmenu_senddialog, FALSE, FALSE, 0);
1207 menu = gtk_menu_new ();
1208 MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
1209 MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
1211 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
1213 hbox1 = gtk_hbox_new (FALSE, 8);
1214 gtk_widget_show (hbox1);
1215 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1217 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1218 gtk_widget_show (label_outcharset);
1219 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1221 charset_tooltip = gtk_tooltips_new();
1223 optmenu_charset = gtk_option_menu_new ();
1224 gtk_widget_show (optmenu_charset);
1225 gtk_tooltips_set_tip(GTK_TOOLTIPS(charset_tooltip), optmenu_charset,
1226 _("If `Automatic' is selected, the optimal encoding"
1227 " for the current locale will be used"),
1229 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_charset, FALSE, FALSE, 0);
1231 optmenu_menu = gtk_menu_new ();
1233 #define SET_MENUITEM(str, data) \
1235 MENUITEM_ADD(optmenu_menu, menuitem, str, data); \
1238 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1239 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1241 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1243 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1244 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1245 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1246 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1247 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1248 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1249 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1251 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1253 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1255 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1256 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1258 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1260 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1261 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1263 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1264 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1266 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1267 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1269 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1270 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1271 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1273 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_charset),
1276 hbox1 = gtk_hbox_new (FALSE, 8);
1277 gtk_widget_show (hbox1);
1278 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1280 hbox1 = gtk_hbox_new (FALSE, 8);
1281 gtk_widget_show (hbox1);
1282 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1284 label_encoding = gtk_label_new (_("Transfer encoding"));
1285 gtk_widget_show (label_encoding);
1286 gtk_box_pack_start (GTK_BOX (hbox1), label_encoding, FALSE, FALSE, 0);
1288 encoding_tooltip = gtk_tooltips_new();
1290 optmenu_encoding = gtk_option_menu_new ();
1291 gtk_widget_show (optmenu_encoding);
1292 gtk_tooltips_set_tip(GTK_TOOLTIPS(encoding_tooltip), optmenu_encoding,
1293 _("Specify Content-Transfer-Encoding used when"
1294 " message body contains non-ASCII characters"),
1296 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_encoding, FALSE, FALSE, 0);
1298 optmenu_menu = gtk_menu_new ();
1300 SET_MENUITEM(_("Automatic"), CTE_AUTO);
1301 SET_MENUITEM("base64", CTE_BASE64);
1302 SET_MENUITEM("quoted-printable", CTE_QUOTED_PRINTABLE);
1303 SET_MENUITEM("8bit", CTE_8BIT);
1305 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_encoding),
1308 hbox1 = gtk_hbox_new (FALSE, 8);
1309 gtk_widget_show (hbox1);
1310 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1312 p_send.checkbtn_savemsg = checkbtn_savemsg;
1313 p_send.optmenu_senddialog = optmenu_senddialog;
1315 p_send.optmenu_charset = optmenu_charset;
1316 p_send.optmenu_encoding_method = optmenu_encoding;
1319 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1323 toggled = gtk_toggle_button_get_active
1324 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1325 gtk_toggle_button_get_active
1326 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1327 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1330 static void prefs_compose_create(void)
1335 GtkWidget *checkbtn_autoextedit;
1337 GtkWidget *frame_autosel;
1338 GtkWidget *hbox_autosel;
1339 GtkWidget *checkbtn_reply_account_autosel;
1340 GtkWidget *checkbtn_forward_account_autosel;
1341 GtkWidget *checkbtn_reedit_account_autosel;
1343 GtkWidget *hbox_undolevel;
1344 GtkWidget *label_undolevel;
1345 GtkObject *spinbtn_undolevel_adj;
1346 GtkWidget *spinbtn_undolevel;
1350 GtkWidget *checkbtn_default_reply_list;
1352 GtkWidget *checkbtn_forward_as_attachment;
1353 GtkWidget *checkbtn_redirect_keep_from;
1354 GtkWidget *checkbtn_block_cursor;
1356 GtkWidget *hbox_autosave;
1357 GtkWidget *checkbtn_autosave;
1358 GtkWidget *entry_autosave_length;
1359 GtkWidget *label_autosave_length;
1361 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1362 gtk_widget_show (vbox1);
1363 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1364 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1366 /* Account autoselection */
1367 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1369 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1370 gtk_widget_show (hbox_autosel);
1371 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1372 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1374 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1375 _("when replying"));
1376 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1377 _("when forwarding"));
1378 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1379 _("when re-editing"));
1381 vbox2 = gtk_vbox_new (FALSE, 0);
1382 gtk_widget_show (vbox2);
1383 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1385 PACK_CHECK_BUTTON (vbox2, checkbtn_default_reply_list,
1386 _("Reply button invokes mailing list reply"));
1388 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1389 _("Automatically launch the external editor"));
1391 hbox5 = gtk_hbox_new (FALSE, 8);
1392 gtk_widget_show (hbox5);
1393 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1395 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1396 _("Forward as attachment"));
1398 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1401 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1402 _("Keep the original 'From' header when redirecting"));
1405 hbox_autosave = gtk_hbox_new (FALSE, 8);
1406 gtk_widget_show (hbox_autosave);
1407 gtk_box_pack_start (GTK_BOX (vbox1), hbox_autosave, FALSE, FALSE, 0);
1409 PACK_CHECK_BUTTON (hbox_autosave, checkbtn_autosave,
1410 _("Autosave to Drafts folder every "));
1412 entry_autosave_length = gtk_entry_new();
1413 gtk_widget_set_usize (entry_autosave_length, 64, -1);
1414 gtk_widget_show (entry_autosave_length);
1415 gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
1417 label_autosave_length = gtk_label_new(_("characters"));
1418 gtk_widget_show (label_autosave_length);
1419 gtk_box_pack_start (GTK_BOX (hbox_autosave), label_autosave_length, FALSE, FALSE, 0);
1421 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1422 gtk_widget_show (hbox_undolevel);
1423 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1425 label_undolevel = gtk_label_new (_("Undo level"));
1426 gtk_widget_show (label_undolevel);
1427 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1429 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1430 spinbtn_undolevel = gtk_spin_button_new
1431 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1432 gtk_widget_show (spinbtn_undolevel);
1433 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1434 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1435 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1438 compose.checkbtn_quote = checkbtn_quote;
1439 compose.entry_quotemark = entry_quotemark;
1440 compose.text_quotefmt = text_quotefmt;
1443 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1445 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1446 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1447 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1449 compose.spinbtn_undolevel = spinbtn_undolevel;
1450 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1452 compose.checkbtn_autosave = checkbtn_autosave;
1453 compose.entry_autosave_length = entry_autosave_length;
1455 compose.checkbtn_forward_as_attachment =
1456 checkbtn_forward_as_attachment;
1457 compose.checkbtn_redirect_keep_from =
1458 checkbtn_redirect_keep_from;
1459 compose.checkbtn_block_cursor =
1460 checkbtn_block_cursor;
1461 compose.checkbtn_default_reply_list = checkbtn_default_reply_list;
1464 static void prefs_quote_create(void)
1467 GtkWidget *frame_quote;
1468 GtkWidget *vbox_quote;
1471 GtkWidget *label_quotemark;
1472 GtkWidget *entry_quotemark;
1473 GtkWidget *scrolledwin_quotefmt;
1474 GtkWidget *text_quotefmt;
1476 GtkWidget *entry_fw_quotemark;
1477 GtkWidget *text_fw_quotefmt;
1479 GtkWidget *entry_quote_chars;
1480 GtkWidget *label_quote_chars;
1482 GtkWidget *btn_quotedesc;
1484 GtkWidget *checkbtn_reply_with_quote;
1486 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1487 gtk_widget_show (vbox1);
1488 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1489 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1493 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1495 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1497 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1498 gtk_widget_show (vbox_quote);
1499 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1500 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1502 hbox1 = gtk_hbox_new (FALSE, 32);
1503 gtk_widget_show (hbox1);
1504 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1506 hbox2 = gtk_hbox_new (FALSE, 8);
1507 gtk_widget_show (hbox2);
1508 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1510 label_quotemark = gtk_label_new (_("Quotation mark"));
1511 gtk_widget_show (label_quotemark);
1512 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1514 entry_quotemark = gtk_entry_new ();
1515 gtk_widget_show (entry_quotemark);
1516 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
1517 gtk_widget_set_usize (entry_quotemark, 64, -1);
1519 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1520 gtk_widget_show (scrolledwin_quotefmt);
1521 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1522 gtk_scrolled_window_set_policy
1523 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1524 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1526 text_quotefmt = gtk_text_new (NULL, NULL);
1527 gtk_widget_show (text_quotefmt);
1528 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
1529 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
1530 gtk_widget_set_usize(text_quotefmt, -1, 60);
1534 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
1536 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1537 gtk_widget_show (vbox_quote);
1538 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1539 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1541 hbox1 = gtk_hbox_new (FALSE, 32);
1542 gtk_widget_show (hbox1);
1543 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1545 hbox2 = gtk_hbox_new (FALSE, 8);
1546 gtk_widget_show (hbox2);
1547 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1549 label_quotemark = gtk_label_new (_("Quotation mark"));
1550 gtk_widget_show (label_quotemark);
1551 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1553 entry_fw_quotemark = gtk_entry_new ();
1554 gtk_widget_show (entry_fw_quotemark);
1555 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
1557 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
1559 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1560 gtk_widget_show (scrolledwin_quotefmt);
1561 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1562 gtk_scrolled_window_set_policy
1563 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1564 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1566 text_fw_quotefmt = gtk_text_new (NULL, NULL);
1567 gtk_widget_show (text_fw_quotefmt);
1568 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
1570 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
1571 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
1573 hbox1 = gtk_hbox_new (FALSE, 32);
1574 gtk_widget_show (hbox1);
1575 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1578 gtk_button_new_with_label (_(" Description of symbols "));
1579 gtk_widget_show (btn_quotedesc);
1580 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
1581 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
1582 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
1586 PACK_FRAME (vbox1, frame_quote, _("Quotation characters"));
1588 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1589 gtk_widget_show (vbox_quote);
1590 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1591 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1593 hbox1 = gtk_hbox_new (FALSE, 32);
1594 gtk_widget_show (hbox1);
1595 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1597 hbox2 = gtk_hbox_new (FALSE, 8);
1598 gtk_widget_show (hbox2);
1599 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1601 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
1602 gtk_widget_show (label_quote_chars);
1603 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
1605 entry_quote_chars = gtk_entry_new ();
1606 gtk_widget_show (entry_quote_chars);
1607 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
1609 gtk_widget_set_usize (entry_quote_chars, 64, -1);
1612 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
1613 quote.entry_quotemark = entry_quotemark;
1614 quote.text_quotefmt = text_quotefmt;
1615 quote.entry_fw_quotemark = entry_fw_quotemark;
1616 quote.text_fw_quotefmt = text_fw_quotefmt;
1617 quote.entry_quote_chars = entry_quote_chars;
1620 static void prefs_display_create(void)
1623 GtkWidget *chkbtn_transhdr;
1624 GtkWidget *chkbtn_folder_unread;
1626 GtkWidget *label_ng_abbrev;
1627 GtkWidget *spinbtn_ng_abbrev_len;
1628 GtkObject *spinbtn_ng_abbrev_len_adj;
1629 GtkWidget *frame_summary;
1631 GtkWidget *chkbtn_swapfrom;
1632 GtkWidget *chkbtn_useaddrbook;
1633 GtkWidget *chkbtn_threadsubj;
1635 GtkWidget *label_datefmt;
1636 GtkWidget *button_datefmt;
1637 GtkWidget *entry_datefmt;
1638 GtkWidget *button_dispitem;
1640 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1641 gtk_widget_show (vbox1);
1642 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1643 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1645 vbox2 = gtk_vbox_new (FALSE, 0);
1646 gtk_widget_show (vbox2);
1647 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
1650 (vbox2, chkbtn_transhdr,
1651 _("Translate header name (such as `From:', `Subject:')"));
1653 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
1654 _("Display unread number next to folder name"));
1656 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1658 hbox1 = gtk_hbox_new (FALSE, 8);
1659 gtk_widget_show (hbox1);
1660 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1662 label_ng_abbrev = gtk_label_new
1663 (_("Abbreviate newsgroup names longer than"));
1664 gtk_widget_show (label_ng_abbrev);
1665 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1667 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
1668 spinbtn_ng_abbrev_len = gtk_spin_button_new
1669 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
1670 gtk_widget_show (spinbtn_ng_abbrev_len);
1671 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
1673 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
1674 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
1677 label_ng_abbrev = gtk_label_new
1679 gtk_widget_show (label_ng_abbrev);
1680 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1682 /* ---- Summary ---- */
1684 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
1686 vbox2 = gtk_vbox_new (FALSE, 0);
1687 gtk_widget_show (vbox2);
1688 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
1689 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1692 (vbox2, chkbtn_swapfrom,
1693 _("Display recipient in `From' column if sender is yourself"));
1695 (vbox2, chkbtn_useaddrbook,
1696 _("Display sender using address book"));
1698 (vbox2, chkbtn_threadsubj,
1699 _("Thread using subject in addition to standard headers"));
1701 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1703 hbox1 = gtk_hbox_new (FALSE, 8);
1704 gtk_widget_show (hbox1);
1705 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1707 label_datefmt = gtk_label_new (_("Date format"));
1708 gtk_widget_show (label_datefmt);
1709 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
1711 entry_datefmt = gtk_entry_new ();
1712 gtk_widget_show (entry_datefmt);
1713 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
1715 button_datefmt = gtk_button_new_with_label (" ... ");
1717 gtk_widget_show (button_datefmt);
1718 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
1719 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
1720 GTK_SIGNAL_FUNC (date_format_create), NULL);
1722 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
1724 hbox1 = gtk_hbox_new (FALSE, 8);
1725 gtk_widget_show (hbox1);
1726 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1728 button_dispitem = gtk_button_new_with_label
1729 (_(" Set displayed items in summary... "));
1730 gtk_widget_show (button_dispitem);
1731 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
1732 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
1733 GTK_SIGNAL_FUNC (prefs_summary_column_open),
1736 display.chkbtn_transhdr = chkbtn_transhdr;
1737 display.chkbtn_folder_unread = chkbtn_folder_unread;
1738 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
1739 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
1741 display.chkbtn_swapfrom = chkbtn_swapfrom;
1742 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
1743 display.chkbtn_threadsubj = chkbtn_threadsubj;
1744 display.entry_datefmt = entry_datefmt;
1747 static void prefs_message_create(void)
1753 GtkWidget *chkbtn_mbalnum;
1754 GtkWidget *chkbtn_disphdrpane;
1755 GtkWidget *chkbtn_disphdr;
1756 GtkWidget *button_edit_disphdr;
1757 GtkWidget *hbox_linespc;
1758 GtkWidget *label_linespc;
1759 GtkObject *spinbtn_linespc_adj;
1760 GtkWidget *spinbtn_linespc;
1761 GtkWidget *chkbtn_headspc;
1763 GtkWidget *frame_scr;
1764 GtkWidget *vbox_scr;
1765 GtkWidget *chkbtn_smoothscroll;
1766 GtkWidget *hbox_scr;
1767 GtkWidget *label_scr;
1768 GtkObject *spinbtn_scrollstep_adj;
1769 GtkWidget *spinbtn_scrollstep;
1770 GtkWidget *chkbtn_halfpage;
1772 GtkWidget *chkbtn_attach_desc;
1774 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1775 gtk_widget_show (vbox1);
1776 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1777 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1779 vbox2 = gtk_vbox_new (FALSE, 0);
1780 gtk_widget_show (vbox2);
1781 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1784 (vbox2, chkbtn_mbalnum,
1785 _("Display multi-byte alphanumeric as\n"
1786 "ASCII character (Japanese only)"));
1787 gtk_label_set_justify (GTK_LABEL (GTK_BIN(chkbtn_mbalnum)->child),
1790 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
1791 _("Display header pane above message view"));
1793 hbox1 = gtk_hbox_new (FALSE, 8);
1794 gtk_widget_show (hbox1);
1795 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1797 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
1798 _("Display short headers on message view"));
1800 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
1801 gtk_widget_show (button_edit_disphdr);
1802 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
1804 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
1805 GTK_SIGNAL_FUNC (prefs_display_header_open),
1808 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
1810 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1812 hbox1 = gtk_hbox_new (FALSE, 32);
1813 gtk_widget_show (hbox1);
1814 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1816 hbox_linespc = gtk_hbox_new (FALSE, 8);
1817 gtk_widget_show (hbox1);
1818 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
1820 label_linespc = gtk_label_new (_("Line space"));
1821 gtk_widget_show (label_linespc);
1822 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1825 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
1826 spinbtn_linespc = gtk_spin_button_new
1827 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
1828 gtk_widget_show (spinbtn_linespc);
1829 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
1831 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
1832 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
1834 label_linespc = gtk_label_new (_("pixel(s)"));
1835 gtk_widget_show (label_linespc);
1836 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1839 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Indent text"));
1841 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
1843 vbox_scr = gtk_vbox_new (FALSE, 0);
1844 gtk_widget_show (vbox_scr);
1845 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
1846 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
1848 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
1850 hbox1 = gtk_hbox_new (FALSE, 32);
1851 gtk_widget_show (hbox1);
1852 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
1854 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
1856 hbox_scr = gtk_hbox_new (FALSE, 8);
1857 gtk_widget_show (hbox_scr);
1858 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
1860 label_scr = gtk_label_new (_("Step"));
1861 gtk_widget_show (label_scr);
1862 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1864 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
1865 spinbtn_scrollstep = gtk_spin_button_new
1866 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
1867 gtk_widget_show (spinbtn_scrollstep);
1868 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
1870 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
1871 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
1874 label_scr = gtk_label_new (_("pixel(s)"));
1875 gtk_widget_show (label_scr);
1876 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1878 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
1880 vbox3 = gtk_vbox_new (FALSE, 0);
1881 gtk_widget_show (vbox3);
1882 gtk_box_pack_start (GTK_BOX (vbox1), vbox3, FALSE, FALSE, 0);
1884 PACK_CHECK_BUTTON(vbox3, chkbtn_attach_desc,
1885 _("Show attachment descriptions (rather than names)"));
1887 message.chkbtn_mbalnum = chkbtn_mbalnum;
1888 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
1889 message.chkbtn_disphdr = chkbtn_disphdr;
1890 message.spinbtn_linespc = spinbtn_linespc;
1891 message.chkbtn_headspc = chkbtn_headspc;
1893 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
1894 message.spinbtn_scrollstep = spinbtn_scrollstep;
1895 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
1896 message.chkbtn_halfpage = chkbtn_halfpage;
1898 message.chkbtn_attach_desc = chkbtn_attach_desc;
1902 static void prefs_privacy_create(void)
1908 GtkWidget *hbox_spc;
1910 GtkWidget *checkbtn_auto_check_signatures;
1911 GtkWidget *checkbtn_store_passphrase;
1912 GtkObject *spinbtn_store_passphrase_adj;
1913 GtkWidget *spinbtn_store_passphrase;
1914 GtkTooltips *store_tooltip;
1915 GtkWidget *checkbtn_passphrase_grab;
1916 GtkWidget *checkbtn_gpg_warning;
1918 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1919 gtk_widget_show (vbox1);
1920 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1921 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1923 vbox2 = gtk_vbox_new (FALSE, 0);
1924 gtk_widget_show (vbox2);
1925 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1927 PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
1928 _("Automatically check signatures"));
1930 PACK_CHECK_BUTTON (vbox2, checkbtn_store_passphrase,
1931 _("Store passphrase in memory temporarily"));
1933 vbox3 = gtk_vbox_new (FALSE, 0);
1934 gtk_widget_show (vbox3);
1935 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
1937 hbox1 = gtk_hbox_new (FALSE, 8);
1938 gtk_widget_show (hbox1);
1939 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
1941 hbox_spc = gtk_hbox_new (FALSE, 0);
1942 gtk_widget_show (hbox_spc);
1943 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
1944 gtk_widget_set_usize (hbox_spc, 12, -1);
1946 label = gtk_label_new (_("Expire after"));
1947 gtk_widget_show (label);
1948 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
1950 store_tooltip = gtk_tooltips_new();
1952 spinbtn_store_passphrase_adj = gtk_adjustment_new (0, 0, 1440, 1, 5, 5);
1953 spinbtn_store_passphrase = gtk_spin_button_new
1954 (GTK_ADJUSTMENT (spinbtn_store_passphrase_adj), 1, 0);
1955 gtk_widget_show (spinbtn_store_passphrase);
1956 gtk_tooltips_set_tip(GTK_TOOLTIPS(store_tooltip), spinbtn_store_passphrase,
1957 _("Setting to '0' will store the passphrase"
1958 " for the whole session"),
1960 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_store_passphrase, FALSE, FALSE, 0);
1961 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_store_passphrase),
1963 gtk_widget_set_usize (spinbtn_store_passphrase, 64, -1);
1965 label = gtk_label_new (_("minute(s) "));
1966 gtk_widget_show (label);
1967 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
1969 hbox1 = gtk_hbox_new (FALSE, 8);
1970 gtk_widget_show (hbox1);
1971 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
1973 hbox_spc = gtk_hbox_new (FALSE, 0);
1974 gtk_widget_show (hbox_spc);
1975 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
1976 gtk_widget_set_usize (hbox_spc, 12, -1);
1978 SET_TOGGLE_SENSITIVITY (checkbtn_store_passphrase, vbox3);
1981 PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab,
1982 _("Grab input while entering a passphrase"));
1986 (vbox2, checkbtn_gpg_warning,
1987 _("Display warning on startup if GnuPG doesn't work"));
1989 hbox1 = gtk_hbox_new (FALSE, 8);
1990 gtk_widget_show (hbox1);
1991 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1993 privacy.checkbtn_auto_check_signatures
1994 = checkbtn_auto_check_signatures;
1995 privacy.checkbtn_store_passphrase = checkbtn_store_passphrase;
1996 privacy.spinbtn_store_passphrase = spinbtn_store_passphrase;
1997 privacy.spinbtn_store_passphrase_adj = spinbtn_store_passphrase_adj;
1998 privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
1999 privacy.checkbtn_gpg_warning = checkbtn_gpg_warning;
2001 #endif /* USE_GPGME */
2003 static void prefs_interface_create(void)
2008 /* GtkWidget *checkbtn_emacs; */
2009 GtkWidget *checkbtn_always_show_msg;
2010 GtkWidget *checkbtn_openunread;
2011 GtkWidget *checkbtn_mark_as_read_on_newwin;
2012 GtkWidget *checkbtn_openinbox;
2013 GtkWidget *checkbtn_immedexec;
2014 GtkTooltips *immedexec_tooltip;
2018 GtkWidget *menuitem;
2020 GtkWidget *button_keybind;
2022 GtkWidget *hbox_nextunreadmsgdialog;
2023 GtkWidget *optmenu_nextunreadmsgdialog;
2025 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2026 gtk_widget_show (vbox1);
2027 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2028 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2030 vbox2 = gtk_vbox_new (FALSE, 0);
2031 gtk_widget_show (vbox2);
2032 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2034 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
2035 _("Emulate the behavior of mouse operation of\n"
2036 "Emacs-based mailer"));
2037 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
2038 GTK_JUSTIFY_LEFT); */
2041 (vbox2, checkbtn_always_show_msg,
2042 _("Always open messages in summary when selected"));
2045 (vbox2, checkbtn_openunread,
2046 _("Open first unread message when entering a folder"));
2049 (vbox2, checkbtn_mark_as_read_on_newwin,
2050 _("Only mark message as read when opened in new window"));
2053 (vbox2, checkbtn_openinbox,
2054 _("Go to inbox after receiving new mail"));
2056 vbox3 = gtk_vbox_new (FALSE, 0);
2057 gtk_widget_show (vbox3);
2058 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2060 immedexec_tooltip = gtk_tooltips_new();
2063 (vbox3, checkbtn_immedexec,
2064 _("Execute immediately when moving or deleting messages"));
2065 gtk_tooltips_set_tip(GTK_TOOLTIPS(immedexec_tooltip), checkbtn_immedexec,
2066 _("Messages will be marked until execution"
2067 " if this is turned off"),
2070 hbox1 = gtk_hbox_new (FALSE, 0);
2071 gtk_widget_show (hbox1);
2072 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2074 /* Next Unread Message Dialog */
2075 hbox_nextunreadmsgdialog = gtk_hbox_new (FALSE, 8);
2076 gtk_widget_show (hbox1);
2077 gtk_box_pack_start (GTK_BOX (vbox1), hbox_nextunreadmsgdialog, FALSE, FALSE, 0);
2079 label = gtk_label_new (_("Show no-unread-message dialog"));
2080 gtk_widget_show (label);
2081 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), label, FALSE, FALSE, 8);
2083 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
2084 gtk_widget_show (optmenu_nextunreadmsgdialog);
2085 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), optmenu_nextunreadmsgdialog, FALSE, FALSE, 8);
2087 menu = gtk_menu_new ();
2088 MENUITEM_ADD (menu, menuitem, _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
2089 MENUITEM_ADD (menu, menuitem, _("Assume 'Yes'"),
2090 NEXTUNREADMSGDIALOG_ASSUME_YES);
2091 MENUITEM_ADD (menu, menuitem, _("Assume 'No'"),
2092 NEXTUNREADMSGDIALOG_ASSUME_NO);
2094 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog), menu);
2096 hbox1 = gtk_hbox_new (FALSE, 8);
2097 gtk_widget_show (hbox1);
2098 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2100 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
2101 gtk_widget_show (button_keybind);
2102 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
2103 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
2104 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
2106 /* interface.checkbtn_emacs = checkbtn_emacs; */
2107 interface.checkbtn_always_show_msg = checkbtn_always_show_msg;
2108 interface.checkbtn_openunread = checkbtn_openunread;
2109 interface.checkbtn_mark_as_read_on_newwin
2110 = checkbtn_mark_as_read_on_newwin;
2111 interface.checkbtn_openinbox = checkbtn_openinbox;
2112 interface.checkbtn_immedexec = checkbtn_immedexec;
2113 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
2116 static void prefs_other_create(void)
2121 GtkWidget *frame_addr;
2122 GtkWidget *vbox_addr;
2123 GtkWidget *checkbtn_addaddrbyclick;
2125 GtkWidget *frame_cliplog;
2126 GtkWidget *vbox_cliplog;
2127 GtkWidget *hbox_cliplog;
2128 GtkWidget *checkbtn_cliplog;
2129 GtkWidget *loglength_label;
2130 GtkWidget *loglength_entry;
2131 GtkTooltips *loglength_tooltip;
2133 GtkWidget *frame_exit;
2134 GtkWidget *vbox_exit;
2135 GtkWidget *checkbtn_confonexit;
2136 GtkWidget *checkbtn_cleanonexit;
2137 GtkWidget *checkbtn_askonclean;
2138 GtkWidget *checkbtn_warnqueued;
2140 GtkWidget *label_iotimeout;
2141 GtkWidget *spinbtn_iotimeout;
2142 GtkObject *spinbtn_iotimeout_adj;
2146 GtkWidget *frame_ssl;
2147 GtkWidget *vbox_ssl;
2148 GtkWidget *hbox_ssl;
2149 GtkWidget *checkbtn_ssl_ask_unknown_valid;
2152 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2153 gtk_widget_show (vbox1);
2154 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2155 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2157 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2159 vbox_addr = gtk_vbox_new (FALSE, 0);
2160 gtk_widget_show (vbox_addr);
2161 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2162 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2165 (vbox_addr, checkbtn_addaddrbyclick,
2166 _("Add address to destination when double-clicked"));
2169 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2171 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2172 gtk_widget_show (vbox_cliplog);
2173 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2174 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2175 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2176 _("Clip the log size"));
2177 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2178 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2179 gtk_widget_show (hbox_cliplog);
2181 loglength_label = gtk_label_new (_("Log window length"));
2182 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2184 gtk_widget_show (GTK_WIDGET (loglength_label));
2186 loglength_tooltip = gtk_tooltips_new();
2188 loglength_entry = gtk_entry_new ();
2189 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2190 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2192 gtk_widget_show (GTK_WIDGET (loglength_entry));
2193 gtk_tooltips_set_tip(GTK_TOOLTIPS(loglength_tooltip), loglength_entry,
2194 _("0 to stop logging in the log window"),
2196 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2198 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2203 PACK_FRAME (vbox1, frame_ssl, _("Security"));
2205 vbox_ssl = gtk_vbox_new (FALSE, 0);
2206 gtk_widget_show (vbox_ssl);
2207 gtk_container_add (GTK_CONTAINER (frame_ssl), vbox_ssl);
2208 gtk_container_set_border_width (GTK_CONTAINER (vbox_ssl), 8);
2209 PACK_CHECK_BUTTON (vbox_ssl, checkbtn_ssl_ask_unknown_valid,
2210 _("Ask before accepting SSL certificates"));
2211 hbox_ssl = gtk_hbox_new (FALSE, 3);
2212 gtk_container_add (GTK_CONTAINER (vbox_ssl), hbox_ssl);
2213 gtk_widget_show (hbox_ssl);
2218 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2220 vbox_exit = gtk_vbox_new (FALSE, 0);
2221 gtk_widget_show (vbox_exit);
2222 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2223 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
2225 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
2226 _("Confirm on exit"));
2228 hbox1 = gtk_hbox_new (FALSE, 32);
2229 gtk_widget_show (hbox1);
2230 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
2232 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
2233 _("Empty trash on exit"));
2234 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
2235 _("Ask before emptying"));
2236 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
2238 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
2239 _("Warn if there are queued messages"));
2241 hbox1 = gtk_hbox_new (FALSE, 8);
2242 gtk_widget_show (hbox1);
2243 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2245 label_iotimeout = gtk_label_new (_("Socket I/O timeout:"));
2246 gtk_widget_show (label_iotimeout);
2247 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2249 spinbtn_iotimeout_adj = gtk_adjustment_new (60, 0, 1000, 1, 10, 10);
2250 spinbtn_iotimeout = gtk_spin_button_new
2251 (GTK_ADJUSTMENT (spinbtn_iotimeout_adj), 1, 0);
2252 gtk_widget_show (spinbtn_iotimeout);
2253 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_iotimeout,
2255 gtk_widget_set_usize (spinbtn_iotimeout, 64, -1);
2256 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_iotimeout), TRUE);
2258 label_iotimeout = gtk_label_new (_("seconds"));
2259 gtk_widget_show (label_iotimeout);
2260 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2262 other.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2264 other.checkbtn_cliplog = checkbtn_cliplog;
2265 other.loglength_entry = loglength_entry;
2267 other.checkbtn_confonexit = checkbtn_confonexit;
2268 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
2269 other.checkbtn_askonclean = checkbtn_askonclean;
2270 other.checkbtn_warnqueued = checkbtn_warnqueued;
2272 other.spinbtn_iotimeout = spinbtn_iotimeout;
2273 other.spinbtn_iotimeout_adj = spinbtn_iotimeout_adj;
2277 other.checkbtn_ssl_ask_unknown_valid = checkbtn_ssl_ask_unknown_valid;
2282 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
2284 GtkWidget *datefmt_sample = NULL;
2287 g_return_if_fail(widget != NULL);
2288 g_return_if_fail(*widget != NULL);
2289 g_return_if_fail(display.entry_datefmt != NULL);
2291 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2292 (GTK_OBJECT(*widget), "datefmt_sample"));
2293 g_return_if_fail(datefmt_sample != NULL);
2295 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
2296 g_free(prefs_common.date_format);
2297 prefs_common.date_format = text;
2298 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
2300 gtk_widget_destroy(*widget);
2304 static void date_format_cancel_btn_clicked(GtkButton *button,
2307 g_return_if_fail(widget != NULL);
2308 g_return_if_fail(*widget != NULL);
2310 gtk_widget_destroy(*widget);
2314 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
2317 if (event && event->keyval == GDK_Escape)
2318 date_format_cancel_btn_clicked(NULL, widget);
2321 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
2322 GdkEventAny *event, GtkWidget **widget)
2324 g_return_val_if_fail(widget != NULL, FALSE);
2325 g_return_val_if_fail(*widget != NULL, FALSE);
2331 static void date_format_entry_on_change(GtkEditable *editable,
2335 struct tm *cal_time;
2339 cur_time = time(NULL);
2340 cal_time = localtime(&cur_time);
2342 text = gtk_editable_get_chars(editable, 0, -1);
2344 strftime(buffer, sizeof buffer, text, cal_time);
2346 gtk_label_set_text(example, buffer);
2349 static void date_format_select_row(GtkWidget *date_format_list, gint row,
2350 gint column, GdkEventButton *event,
2351 GtkWidget *date_format)
2357 GtkWidget *datefmt_sample;
2359 /* only on double click */
2360 if (!event || event->type != GDK_2BUTTON_PRESS) return;
2363 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2364 (GTK_OBJECT(date_format), "datefmt_sample"));
2366 g_return_if_fail(date_format_list != NULL);
2367 g_return_if_fail(date_format != NULL);
2368 g_return_if_fail(datefmt_sample != NULL);
2370 /* get format from clist */
2371 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
2373 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
2374 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
2376 /* insert the format into the text entry */
2377 new_format = g_malloc(strlen(old_format) + 3);
2379 strncpy(new_format, old_format, cur_pos);
2380 new_format[cur_pos] = '\0';
2381 strcat(new_format, format);
2382 strcat(new_format, &old_format[cur_pos]);
2384 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
2385 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
2390 static GtkWidget *date_format_create(GtkButton *button, void *data)
2392 static GtkWidget *datefmt_win = NULL;
2394 GtkWidget *scrolledwindow1;
2395 GtkWidget *datefmt_clist;
2400 GtkWidget *confirm_area;
2402 GtkWidget *cancel_btn;
2403 GtkWidget *datefmt_entry;
2432 const gint TIME_FORMAT_ELEMS =
2433 sizeof time_format / sizeof time_format[0];
2435 time_format[0].txt = _("the full abbreviated weekday name");
2436 time_format[1].txt = _("the full weekday name");
2437 time_format[2].txt = _("the abbreviated month name");
2438 time_format[3].txt = _("the full month name");
2439 time_format[4].txt = _("the preferred date and time for the current locale");
2440 time_format[5].txt = _("the century number (year/100)");
2441 time_format[6].txt = _("the day of the month as a decimal number");
2442 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
2443 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
2444 time_format[9].txt = _("the day of the year as a decimal number");
2445 time_format[10].txt = _("the month as a decimal number");
2446 time_format[11].txt = _("the minute as a decimal number");
2447 time_format[12].txt = _("either AM or PM");
2448 time_format[13].txt = _("the second as a decimal number");
2449 time_format[14].txt = _("the day of the week as a decimal number");
2450 time_format[15].txt = _("the preferred date for the current locale");
2451 time_format[16].txt = _("the last two digits of a year");
2452 time_format[17].txt = _("the year as a decimal number");
2453 time_format[18].txt = _("the time zone or name or abbreviation");
2455 if (datefmt_win) return datefmt_win;
2457 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
2458 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
2459 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
2460 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2461 gtk_widget_set_usize(datefmt_win, 440, 280);
2463 vbox1 = gtk_vbox_new(FALSE, 10);
2464 gtk_widget_show(vbox1);
2465 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
2467 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
2468 gtk_scrolled_window_set_policy
2469 (GTK_SCROLLED_WINDOW(scrolledwindow1),
2470 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
2471 gtk_widget_show(scrolledwindow1);
2472 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
2474 titles[0] = _("Specifier");
2475 titles[1] = _("Description");
2476 datefmt_clist = gtk_clist_new_with_titles(2, titles);
2477 gtk_widget_show(datefmt_clist);
2478 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
2479 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
2480 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
2481 GTK_SELECTION_BROWSE);
2483 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
2485 /* phoney casting necessary because of gtk... */
2486 text[0] = (gchar *)time_format[i].fmt;
2487 text[1] = (gchar *)time_format[i].txt;
2488 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
2491 table = gtk_table_new(2, 2, FALSE);
2492 gtk_widget_show(table);
2493 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
2494 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
2495 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
2497 label1 = gtk_label_new(_("Date format"));
2498 gtk_widget_show(label1);
2499 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
2501 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
2502 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
2504 datefmt_entry = gtk_entry_new_with_max_length(256);
2505 gtk_widget_show(datefmt_entry);
2506 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
2507 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2509 /* we need the "sample" entry box; add it as data so callbacks can
2510 * get the entry box */
2511 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
2514 label2 = gtk_label_new(_("Example"));
2515 gtk_widget_show(label2);
2516 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
2518 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
2519 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
2521 label3 = gtk_label_new("");
2522 gtk_widget_show(label3);
2523 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
2524 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2525 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
2526 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
2528 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
2529 &cancel_btn, _("Cancel"), NULL, NULL);
2530 gtk_widget_grab_default(ok_btn);
2531 gtk_widget_show(confirm_area);
2533 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
2535 /* set the current format */
2536 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
2537 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
2540 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2541 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
2543 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
2544 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
2546 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
2547 GTK_SIGNAL_FUNC(date_format_key_pressed),
2549 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
2550 GTK_SIGNAL_FUNC(date_format_on_delete),
2552 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
2553 GTK_SIGNAL_FUNC(date_format_entry_on_change),
2556 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
2557 GTK_SIGNAL_FUNC(date_format_select_row),
2560 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2561 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
2563 gtk_widget_show(datefmt_win);
2564 manage_window_set_transient(GTK_WINDOW(datefmt_win));
2566 gtk_widget_grab_focus(ok_btn);
2571 static void prefs_keybind_select(void)
2578 GtkWidget *confirm_area;
2580 GtkWidget *cancel_btn;
2582 window = gtk_window_new (GTK_WINDOW_DIALOG);
2583 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
2584 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
2585 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
2586 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
2587 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
2588 manage_window_set_transient (GTK_WINDOW (window));
2590 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2591 gtk_container_add (GTK_CONTAINER (window), vbox1);
2592 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
2594 hbox1 = gtk_hbox_new (FALSE, 8);
2595 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2597 label = gtk_label_new
2598 (_("Select preset:"));
2599 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2600 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2602 hbox1 = gtk_hbox_new (FALSE, 8);
2603 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2605 combo = gtk_combo_new ();
2606 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
2607 gtkut_combo_set_items (GTK_COMBO (combo),
2613 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
2615 hbox1 = gtk_hbox_new (FALSE, 8);
2616 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2618 label = gtk_label_new
2619 (_("You can also modify each menu shortcut by pressing\n"
2620 "any key(s) when placing the mouse pointer on the item."));
2621 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2622 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2624 hbox1 = gtk_hbox_new (FALSE, 8);
2625 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2627 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
2628 &cancel_btn, _("Cancel"), NULL, NULL);
2629 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
2630 gtk_widget_grab_default (ok_btn);
2632 MANAGE_WINDOW_SIGNALS_CONNECT(window);
2633 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2634 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
2635 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
2636 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
2637 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
2638 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
2640 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
2641 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
2644 gtk_widget_show_all(window);
2646 keybind.window = window;
2647 keybind.combo = combo;
2650 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
2653 if (event && event->keyval == GDK_Escape)
2654 prefs_keybind_cancel();
2657 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
2660 prefs_keybind_cancel();
2664 static void prefs_keybind_cancel(void)
2666 gtk_widget_destroy(keybind.window);
2667 keybind.window = NULL;
2668 keybind.combo = NULL;
2671 static void prefs_keybind_apply_clicked(GtkWidget *widget)
2673 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
2677 static gchar *default_menurc =
2678 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
2679 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
2680 "(menu-path \"<Main>/File/Print...\" \"\")\n"
2681 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
2683 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2684 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2685 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2686 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
2688 "(menu-path \"<Main>/View/Expand Summary View\" \"V\")\n"
2689 "(menu-path \"<Main>/View/Expand Message View\" \"<shift>V\")\n"
2690 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2691 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2692 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2693 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2694 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2695 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
2696 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2697 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
2698 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2699 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
2701 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
2702 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2703 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
2704 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
2705 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><control>R\")\n"
2706 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2707 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2708 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
2709 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
2710 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
2711 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
2712 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
2713 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2714 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2715 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2716 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2718 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2719 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2720 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2722 "(menu-path \"<Compose>/File/Close\" \"<control>W\")\n"
2723 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
2724 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
2725 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
2726 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
2727 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
2728 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
2730 static gchar *mew_wl_menurc =
2731 "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
2732 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
2733 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
2734 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
2736 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2737 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2738 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2739 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
2741 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
2742 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
2743 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
2744 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2745 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2746 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2747 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2748 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
2749 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2750 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
2751 "(menu-path \"<Main>/View/Show all headers\" \"<shift>H\")\n"
2752 "(menu-path \"<Main>/View/Update\" \"<shift>S\")\n"
2754 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
2755 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2756 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
2757 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
2758 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift>A\")\n"
2759 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2760 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2761 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
2762 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
2763 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
2764 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
2765 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
2766 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2767 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2768 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2769 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
2771 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2772 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2773 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2775 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
2776 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2777 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2778 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2779 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2780 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2781 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2783 static gchar *mutt_menurc =
2784 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
2785 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
2786 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
2787 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
2789 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2790 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2791 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2792 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
2794 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
2795 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2796 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
2797 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
2798 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
2799 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
2800 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
2801 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2802 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
2803 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2804 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
2806 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<control>I\")\n"
2807 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2808 "(menu-path \"<Main>/Message/Compose an email message\" \"M\")\n"
2809 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
2810 "(menu-path \"<Main>/Message/Reply to/all\" \"G\")\n"
2811 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2812 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2813 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
2814 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
2815 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
2816 "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
2817 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
2818 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
2819 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2820 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
2821 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2823 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2824 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2825 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2827 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
2828 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2829 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2830 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2831 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2832 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2833 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2835 static gchar *old_sylpheed_menurc =
2836 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
2837 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
2838 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
2839 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
2841 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2842 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2843 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2844 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
2846 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
2847 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
2848 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2849 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2850 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2851 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2852 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2853 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
2854 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
2855 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
2856 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2857 "(menu-path \"<Main>/View/Update\" \"<alt>U\")\n"
2859 "(menu-path \"<Main>/Message/Receive/Get new mail\" \"<alt>I\")\n"
2860 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><alt>I\")\n"
2861 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
2862 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
2863 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><alt>R\")\n"
2864 "(menu-path \"<Main>/Message/Reply to/sender\" \"<control><alt>R\")\n"
2865 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2866 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
2867 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
2868 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
2869 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
2870 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
2871 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2872 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2873 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2874 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2876 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
2877 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
2878 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
2880 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
2881 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2882 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2883 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2884 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2885 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2886 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2888 text = gtk_entry_get_text(entry);
2890 if (!strcmp(text, _("Default")))
2891 rc_str = default_menurc;
2892 else if (!strcmp(text, "Mew / Wanderlust"))
2893 rc_str = mew_wl_menurc;
2894 else if (!strcmp(text, "Mutt"))
2895 rc_str = mutt_menurc;
2896 else if (!strcmp(text, _("Old Sylpheed")))
2897 rc_str = old_sylpheed_menurc;
2901 menu_factory_clear_rc(rc_str);
2902 gtk_item_factory_parse_rc_string(rc_str);
2904 gtk_widget_destroy(keybind.window);
2905 keybind.window = NULL;
2906 keybind.combo = NULL;
2909 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
2912 GtkWidget *menuitem;
2915 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2916 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2917 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
2918 g_free(*((gchar **)pparam->data));
2919 *((gchar **)pparam->data) = g_strdup(charset);
2922 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
2924 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2927 g_return_if_fail(optmenu != NULL);
2928 g_return_if_fail(*((gchar **)pparam->data) != NULL);
2930 index = menu_find_option_menu_index(optmenu, *((gchar **)pparam->data),
2931 (GCompareFunc)strcmp);
2933 gtk_option_menu_set_history(optmenu, index);
2935 gtk_option_menu_set_history(optmenu, 0);
2936 prefs_common_charset_set_data_from_optmenu(pparam);
2940 static void prefs_common_encoding_set_data_from_optmenu(PrefParam *pparam)
2943 GtkWidget *menuitem;
2945 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2946 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2947 *((TransferEncodingMethod *)pparam->data) = GPOINTER_TO_INT
2948 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2951 static void prefs_common_encoding_set_optmenu(PrefParam *pparam)
2953 TransferEncodingMethod method =
2954 *((TransferEncodingMethod *)pparam->data);
2955 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2958 g_return_if_fail(optmenu != NULL);
2960 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(method),
2963 gtk_option_menu_set_history(optmenu, index);
2965 gtk_option_menu_set_history(optmenu, 0);
2966 prefs_common_encoding_set_data_from_optmenu(pparam);
2970 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
2973 GtkWidget *menuitem;
2975 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2976 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2977 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
2978 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2981 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
2983 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
2984 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2986 GtkWidget *menuitem;
2989 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(mode),
2992 gtk_option_menu_set_history(optmenu, index);
2994 gtk_option_menu_set_history(optmenu, 0);
2995 prefs_common_recv_dialog_set_data_from_optmenu(pparam);
2998 menu = gtk_option_menu_get_menu(optmenu);
2999 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3000 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3003 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam)
3006 GtkWidget *menuitem;
3008 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3009 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3010 *((SendDialogMode *)pparam->data) = GPOINTER_TO_INT
3011 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3014 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam)
3016 SendDialogMode mode = *((SendDialogMode *)pparam->data);
3017 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3019 GtkWidget *menuitem;
3022 case SEND_DIALOG_ALWAYS:
3023 gtk_option_menu_set_history(optmenu, 0);
3025 case SEND_DIALOG_NEVER:
3026 gtk_option_menu_set_history(optmenu, 1);
3032 menu = gtk_option_menu_get_menu(optmenu);
3033 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3034 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3037 static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
3040 prefs_common_cancel();
3044 static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
3047 if (event && event->keyval == GDK_Escape)
3048 prefs_common_cancel();
3051 static void prefs_common_ok(void)
3053 prefs_common_apply();
3054 gtk_widget_hide(dialog.window);
3059 static void prefs_common_apply(void)
3061 MainWindow *mainwindow;
3063 prefs_set_data_from_dialog(param);
3064 sock_set_io_timeout(prefs_common.io_timeout_secs);
3065 main_window_reflect_prefs_all_real(FALSE);
3066 prefs_common_save_config();
3068 mainwindow = mainwindow_get_mainwindow();
3069 log_window_set_clipping(mainwindow->logwin, prefs_common.cliplog,
3070 prefs_common.loglength);
3072 inc_autocheck_timer_remove();
3073 inc_autocheck_timer_set();
3076 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
3079 GtkWidget *menuitem;
3081 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3082 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3083 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
3084 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3087 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
3089 NextUnreadMsgDialogShow dialog_show;
3090 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3092 GtkWidget *menuitem;
3094 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
3096 switch (dialog_show) {
3097 case NEXTUNREADMSGDIALOG_ALWAYS:
3098 gtk_option_menu_set_history(optmenu, 0);
3100 case NEXTUNREADMSGDIALOG_ASSUME_YES:
3101 gtk_option_menu_set_history(optmenu, 1);
3103 case NEXTUNREADMSGDIALOG_ASSUME_NO:
3104 gtk_option_menu_set_history(optmenu, 2);
3108 menu = gtk_option_menu_get_menu(optmenu);
3109 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3110 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3113 static void prefs_common_cancel(void)
3115 gtk_widget_hide(dialog.window);
3120 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
3123 GtkWidget *menuitem;
3125 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3126 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3127 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
3128 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3131 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
3133 RecvDialogShow dialog_show;
3134 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3136 GtkWidget *menuitem;
3138 dialog_show = *((RecvDialogShow *)pparam->data);
3140 switch (dialog_show) {
3141 case RECVDIALOG_ALWAYS:
3142 gtk_option_menu_set_history(optmenu, 0);
3144 case RECVDIALOG_WINDOW_ACTIVE:
3145 gtk_option_menu_set_history(optmenu, 1);
3147 case RECVDIALOG_NEVER:
3148 gtk_option_menu_set_history(optmenu, 2);
3153 menu = gtk_option_menu_get_menu(optmenu);
3154 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3155 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));