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"
59 #include "prefswindow.h"
61 PrefsCommon prefs_common;
65 static struct Receive {
66 GtkWidget *checkbtn_incext;
67 GtkWidget *entry_incext;
68 GtkWidget *button_incext;
70 GtkWidget *checkbtn_autochk;
71 GtkWidget *spinbtn_autochk;
72 GtkObject *spinbtn_autochk_adj;
74 GtkWidget *checkbtn_chkonstartup;
75 GtkWidget *checkbtn_scan_after_inc;
78 GtkWidget *checkbtn_newmail_auto;
79 GtkWidget *checkbtn_newmail_manu;
80 GtkWidget *entry_newmail_notify_cmd;
81 GtkWidget *hbox_newmail_notify;
82 GtkWidget *optmenu_recvdialog;
83 GtkWidget *checkbtn_no_recv_err_panel;
84 GtkWidget *checkbtn_close_recv_dialog;
88 GtkWidget *checkbtn_savemsg;
89 GtkWidget *optmenu_senddialog;
91 GtkWidget *optmenu_charset;
92 GtkWidget *optmenu_encoding_method;
95 static struct Compose {
96 GtkWidget *entry_fw_quotemark;
97 GtkWidget *text_fw_quotefmt;
99 GtkWidget *checkbtn_autoextedit;
100 GtkWidget *spinbtn_undolevel;
101 GtkObject *spinbtn_undolevel_adj;
103 GtkWidget *checkbtn_reply_account_autosel;
104 GtkWidget *checkbtn_forward_account_autosel;
105 GtkWidget *checkbtn_reedit_account_autosel;
106 GtkWidget *checkbtn_quote;
107 GtkWidget *checkbtn_default_reply_list;
108 GtkWidget *checkbtn_forward_as_attachment;
109 GtkWidget *checkbtn_redirect_keep_from;
110 GtkWidget *checkbtn_block_cursor;
111 GtkWidget *checkbtn_reply_with_quote;
113 GtkWidget *checkbtn_autosave;
114 GtkWidget *entry_autosave_length;
117 static struct Quote {
118 GtkWidget *entry_quotemark;
119 GtkWidget *text_quotefmt;
121 GtkWidget *entry_fw_quotemark;
122 GtkWidget *text_fw_quotefmt;
124 GtkWidget *entry_quote_chars;
127 static struct Display {
128 GtkWidget *chkbtn_folder_unread;
129 GtkWidget *entry_ng_abbrev_len;
130 GtkWidget *spinbtn_ng_abbrev_len;
131 GtkObject *spinbtn_ng_abbrev_len_adj;
133 GtkWidget *chkbtn_transhdr;
135 GtkWidget *chkbtn_swapfrom;
136 GtkWidget *chkbtn_useaddrbook;
137 GtkWidget *chkbtn_threadsubj;
138 GtkWidget *entry_datefmt;
141 static struct Message {
142 GtkWidget *chkbtn_mbalnum;
143 GtkWidget *chkbtn_disphdrpane;
144 GtkWidget *chkbtn_disphdr;
145 GtkWidget *spinbtn_linespc;
146 GtkObject *spinbtn_linespc_adj;
147 GtkWidget *chkbtn_headspc;
149 GtkWidget *chkbtn_smoothscroll;
150 GtkWidget *spinbtn_scrollstep;
151 GtkObject *spinbtn_scrollstep_adj;
152 GtkWidget *chkbtn_halfpage;
154 GtkWidget *chkbtn_attach_desc;
157 static struct Interface {
158 /* GtkWidget *checkbtn_emacs; */
159 GtkWidget *checkbtn_always_show_msg;
160 GtkWidget *checkbtn_openunread;
161 GtkWidget *checkbtn_mark_as_read_on_newwin;
162 GtkWidget *checkbtn_openinbox;
163 GtkWidget *checkbtn_immedexec;
164 GtkWidget *optmenu_nextunreadmsgdialog;
167 static struct Other {
168 GtkWidget *checkbtn_addaddrbyclick;
169 GtkWidget *checkbtn_confonexit;
170 GtkWidget *checkbtn_cleanonexit;
171 GtkWidget *checkbtn_askonclean;
172 GtkWidget *checkbtn_warnqueued;
173 GtkWidget *checkbtn_cliplog;
174 GtkWidget *loglength_entry;
177 GtkWidget *checkbtn_ssl_ask_unknown_valid;
181 GtkWidget *spinbtn_iotimeout;
182 GtkObject *spinbtn_iotimeout_adj;
185 static struct KeybindDialog {
190 static void prefs_common_charset_set_data_from_optmenu (PrefParam *pparam);
191 static void prefs_common_charset_set_optmenu (PrefParam *pparam);
192 static void prefs_common_encoding_set_data_from_optmenu (PrefParam *pparam);
193 static void prefs_common_encoding_set_optmenu (PrefParam *pparam);
194 static void prefs_common_recv_dialog_set_data_from_optmenu (PrefParam *pparam);
195 static void prefs_common_recv_dialog_set_optmenu (PrefParam *pparam);
196 static void prefs_common_recv_dialog_newmail_notify_toggle_cb (GtkWidget *w,
198 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam);
199 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam);
200 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam);
201 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam);
202 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam);
203 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam);
206 parameter name, default value, pointer to the prefs variable, data type,
207 pointer to the widget pointer,
208 pointer to the function for data setting,
209 pointer to the function for widget setting
212 static PrefParam param[] = {
214 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
215 &receive.checkbtn_incext,
216 prefs_set_data_from_toggle, prefs_set_toggle},
217 {"ext_inc_path", DEFAULT_INC_PATH, &prefs_common.extinc_cmd, P_STRING,
218 &receive.entry_incext,
219 prefs_set_data_from_entry, prefs_set_entry},
221 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
222 &receive.checkbtn_autochk,
223 prefs_set_data_from_toggle, prefs_set_toggle},
224 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
225 &receive.spinbtn_autochk,
226 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
227 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
228 &receive.checkbtn_chkonstartup,
229 prefs_set_data_from_toggle, prefs_set_toggle},
230 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
231 P_BOOL, &receive.checkbtn_scan_after_inc,
232 prefs_set_data_from_toggle, prefs_set_toggle},
233 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
234 P_BOOL, &receive.checkbtn_newmail_manu,
235 prefs_set_data_from_toggle, prefs_set_toggle},
236 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
237 P_BOOL, &receive.checkbtn_newmail_auto,
238 prefs_set_data_from_toggle, prefs_set_toggle},
239 {"newmail_notify_cmd", "", &prefs_common.newmail_notify_cmd, P_STRING,
240 &receive.entry_newmail_notify_cmd,
241 prefs_set_data_from_entry, prefs_set_entry},
242 {"receive_dialog_mode", "1", &prefs_common.recv_dialog_mode, P_ENUM,
243 &receive.optmenu_recvdialog,
244 prefs_common_recv_dialog_set_data_from_optmenu,
245 prefs_common_recv_dialog_set_optmenu},
246 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
247 P_BOOL, &receive.checkbtn_no_recv_err_panel,
248 prefs_set_data_from_toggle, prefs_set_toggle},
249 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
250 P_BOOL, &receive.checkbtn_close_recv_dialog,
251 prefs_set_data_from_toggle, prefs_set_toggle},
254 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
255 &p_send.checkbtn_savemsg,
256 prefs_set_data_from_toggle, prefs_set_toggle},
257 {"send_dialog_mode", "0", &prefs_common.send_dialog_mode, P_ENUM,
258 &p_send.optmenu_senddialog,
259 prefs_common_send_dialog_set_data_from_optmenu,
260 prefs_common_send_dialog_set_optmenu},
262 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
263 &p_send.optmenu_charset,
264 prefs_common_charset_set_data_from_optmenu,
265 prefs_common_charset_set_optmenu},
266 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
267 &p_send.optmenu_encoding_method,
268 prefs_common_encoding_set_data_from_optmenu,
269 prefs_common_encoding_set_optmenu},
271 {"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
272 P_BOOL, NULL, NULL, NULL},
275 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
276 &compose.checkbtn_autoextedit,
277 prefs_set_data_from_toggle, prefs_set_toggle},
278 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
279 P_BOOL, &compose.checkbtn_forward_as_attachment,
280 prefs_set_data_from_toggle, prefs_set_toggle},
281 {"redirect_keep_from", "FALSE",
282 &prefs_common.redirect_keep_from, P_BOOL,
283 &compose.checkbtn_redirect_keep_from,
284 prefs_set_data_from_toggle, prefs_set_toggle},
285 {"undo_level", "50", &prefs_common.undolevels, P_INT,
286 &compose.spinbtn_undolevel,
287 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
288 {"block_cursor", "FALSE", &prefs_common.block_cursor,
289 P_BOOL, &compose.checkbtn_block_cursor,
290 prefs_set_data_from_toggle, prefs_set_toggle},
292 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
294 {"linewrap_quotation", "FALSE", &prefs_common.linewrap_quote, P_BOOL,
296 {"linewrap_auto", "FALSE", &prefs_common.autowrap, P_BOOL,
298 {"linewrap_before_sending", "FALSE", &prefs_common.linewrap_at_send, P_BOOL,
300 {"autosave", "FALSE", &prefs_common.autosave,
301 P_BOOL, &compose.checkbtn_autosave,
302 prefs_set_data_from_toggle, prefs_set_toggle},
303 {"autosave_length", "50", &prefs_common.autosave_length,
304 P_INT, &compose.entry_autosave_length,
305 prefs_set_data_from_entry, prefs_set_entry},
307 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
309 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path, P_STRING,
311 {"dictionary", "", &prefs_common.dictionary, P_STRING,
313 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode, P_INT,
315 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
317 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
319 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
322 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
323 &compose.checkbtn_reply_with_quote, prefs_set_data_from_toggle, prefs_set_toggle},
325 /* Account autoselection */
326 {"reply_account_autoselect", "TRUE",
327 &prefs_common.reply_account_autosel, P_BOOL,
328 &compose.checkbtn_reply_account_autosel,
329 prefs_set_data_from_toggle, prefs_set_toggle},
330 {"forward_account_autoselect", "TRUE",
331 &prefs_common.forward_account_autosel, P_BOOL,
332 &compose.checkbtn_forward_account_autosel,
333 prefs_set_data_from_toggle, prefs_set_toggle},
334 {"reedit_account_autoselect", "TRUE",
335 &prefs_common.reedit_account_autosel, P_BOOL,
336 &compose.checkbtn_reedit_account_autosel,
337 prefs_set_data_from_toggle, prefs_set_toggle},
339 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
340 &compose.checkbtn_default_reply_list,
341 prefs_set_data_from_toggle, prefs_set_toggle},
343 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
347 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
348 "e.entry_quotemark, prefs_set_data_from_entry, prefs_set_entry},
349 {"reply_quote_format", "On %d\\n%f wrote:\\n\\n%Q",
350 &prefs_common.quotefmt, P_STRING, "e.text_quotefmt,
351 prefs_set_data_from_text, prefs_set_text},
353 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
354 "e.entry_fw_quotemark,
355 prefs_set_data_from_entry, prefs_set_entry},
356 {"forward_quote_format",
357 "\\n\\nBegin forwarded message:\\n\\n"
358 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
359 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M",
360 &prefs_common.fw_quotefmt, P_STRING, "e.text_fw_quotefmt,
361 prefs_set_data_from_text, prefs_set_text},
362 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
363 "e.entry_quote_chars, prefs_set_data_from_entry, prefs_set_entry},
366 {"widget_font", NULL, &prefs_common.widgetfont, P_STRING,
368 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
369 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
370 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
371 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
372 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
373 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
374 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
375 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
378 {"display_folder_unread_num", "TRUE",
379 &prefs_common.display_folder_unread, P_BOOL,
380 &display.chkbtn_folder_unread,
381 prefs_set_data_from_toggle, prefs_set_toggle},
382 {"newsgroup_abbrev_len", "16",
383 &prefs_common.ng_abbrev_len, P_INT,
384 &display.spinbtn_ng_abbrev_len,
385 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
387 {"translate_header", "TRUE", &prefs_common.trans_hdr, P_BOOL,
388 &display.chkbtn_transhdr,
389 prefs_set_data_from_toggle, prefs_set_toggle},
391 /* Display: Summary View */
392 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
393 &display.chkbtn_swapfrom,
394 prefs_set_data_from_toggle, prefs_set_toggle},
395 {"use_address_book", "TRUE", &prefs_common.use_addr_book, P_BOOL,
396 &display.chkbtn_useaddrbook,
397 prefs_set_data_from_toggle, prefs_set_toggle},
398 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
399 &display.chkbtn_threadsubj,
400 prefs_set_data_from_toggle, prefs_set_toggle},
401 {"date_format", "%y/%m/%d(%a) %H:%M", &prefs_common.date_format,
402 P_STRING, &display.entry_datefmt,
403 prefs_set_data_from_entry, prefs_set_entry},
405 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
407 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
409 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
410 P_INT, NULL, NULL, NULL },
412 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
414 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
416 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
418 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
421 {"folderview_vscrollbar_policy", "0",
422 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
425 {"summary_col_show_mark", "TRUE",
426 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
427 {"summary_col_show_unread", "TRUE",
428 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
429 {"summary_col_show_mime", "TRUE",
430 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
431 {"summary_col_show_subject", "TRUE",
432 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
433 {"summary_col_show_from", "TRUE",
434 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
435 {"summary_col_show_date", "TRUE",
436 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
437 {"summary_col_show_size", "TRUE",
438 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
439 {"summary_col_show_number", "FALSE",
440 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
441 {"summary_col_show_score", "FALSE",
442 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
443 {"summary_col_show_locked", "FALSE",
444 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
446 {"summary_col_pos_mark", "0",
447 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
448 {"summary_col_pos_unread", "1",
449 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
450 {"summary_col_pos_mime", "2",
451 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
452 {"summary_col_pos_subject", "3",
453 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
454 {"summary_col_pos_from", "4",
455 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
456 {"summary_col_pos_date", "5",
457 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
458 {"summary_col_pos_size", "6",
459 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
460 {"summary_col_pos_number", "7",
461 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
462 {"summary_col_pos_score", "8",
463 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
464 {"summary_col_pos_locked", "9",
465 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
467 {"summary_col_size_mark", "10",
468 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
469 {"summary_col_size_unread", "13",
470 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
471 {"summary_col_size_mime", "10",
472 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
473 {"summary_col_size_subject", "200",
474 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
475 {"summary_col_size_from", "120",
476 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
477 {"summary_col_size_date", "118",
478 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
479 {"summary_col_size_size", "45",
480 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
481 {"summary_col_size_number", "40",
482 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
483 {"summary_col_size_score", "40",
484 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
485 {"summary_col_size_locked", "13",
486 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
489 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
491 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
493 {"folderview_width", "179", &prefs_common.folderview_width, P_INT,
495 {"folderview_height", "450", &prefs_common.folderview_height, P_INT,
497 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
500 {"folder_col_folder", "150", &prefs_common.folder_col_folder, P_INT,
502 {"folder_col_new", "32", &prefs_common.folder_col_new, P_INT,
504 {"folder_col_unread", "32", &prefs_common.folder_col_unread, P_INT,
506 {"folder_col_total", "32", &prefs_common.folder_col_total, P_INT,
509 {"summaryview_width", "600", &prefs_common.summaryview_width, P_INT,
511 {"summaryview_height", "157", &prefs_common.summaryview_height, P_INT,
514 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
516 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
518 {"messageview_width", "600", &prefs_common.msgview_width, P_INT,
520 {"messageview_height", "300", &prefs_common.msgview_height, P_INT,
522 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
525 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
527 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
529 {"mainview_width", "600", &prefs_common.mainview_width, P_INT,
531 {"mainview_height", "600", &prefs_common.mainview_height, P_INT,
533 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
535 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
537 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
539 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
541 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
543 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
545 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
547 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
549 {"compose_width", "600", &prefs_common.compose_width, P_INT,
551 {"compose_height", "560", &prefs_common.compose_height, P_INT,
553 {"compose_x", "0", &prefs_common.compose_x, P_INT,
555 {"compose_y", "0", &prefs_common.compose_y, P_INT,
558 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
561 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
563 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
565 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
567 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
569 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
571 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
573 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
574 P_BOOL, NULL, NULL, NULL},
576 {"convert_mb_alnum", "FALSE", &prefs_common.conv_mb_alnum, P_BOOL,
577 &message.chkbtn_mbalnum,
578 prefs_set_data_from_toggle, prefs_set_toggle},
579 {"display_header_pane", "TRUE", &prefs_common.display_header_pane,
580 P_BOOL, &message.chkbtn_disphdrpane,
581 prefs_set_data_from_toggle, prefs_set_toggle},
582 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
583 &message.chkbtn_disphdr,
584 prefs_set_data_from_toggle, prefs_set_toggle},
585 {"line_space", "2", &prefs_common.line_space, P_INT,
586 &message.spinbtn_linespc,
587 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
588 {"enable_head_space", "FALSE", &prefs_common.head_space, P_BOOL,
589 &message.chkbtn_headspc,
590 prefs_set_data_from_toggle, prefs_set_toggle},
592 {"enable_smooth_scroll", "FALSE",
593 &prefs_common.enable_smooth_scroll, P_BOOL,
594 &message.chkbtn_smoothscroll,
595 prefs_set_data_from_toggle, prefs_set_toggle},
596 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
597 &message.spinbtn_scrollstep,
598 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
599 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
600 &message.chkbtn_halfpage,
601 prefs_set_data_from_toggle, prefs_set_toggle},
603 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
606 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
607 &message.chkbtn_attach_desc,
608 prefs_set_data_from_toggle, prefs_set_toggle},
609 {"attach_save_directory", NULL,
610 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
613 {"mime_image_viewer", "display '%s'",
614 &prefs_common.mime_image_viewer, P_STRING, NULL, NULL, NULL},
615 {"mime_audio_player", "play '%s'",
616 &prefs_common.mime_audio_player, P_STRING, NULL, NULL, NULL},
617 {"mime_open_command", "gedit '%s'",
618 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
621 {"separate_folder", "FALSE", &prefs_common.sep_folder, P_BOOL,
623 {"separate_message", "FALSE", &prefs_common.sep_msg, P_BOOL,
626 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
627 NULL, NULL, NULL}, */
628 {"always_show_message_when_selected", "FALSE",
629 &prefs_common.always_show_msg,
630 P_BOOL, &interface.checkbtn_always_show_msg,
631 prefs_set_data_from_toggle, prefs_set_toggle},
632 {"open_unread_on_enter", "FALSE", &prefs_common.open_unread_on_enter,
633 P_BOOL, &interface.checkbtn_openunread,
634 prefs_set_data_from_toggle, prefs_set_toggle},
635 {"mark_as_read_on_new_window", "FALSE",
636 &prefs_common.mark_as_read_on_new_window,
637 P_BOOL, &interface.checkbtn_mark_as_read_on_newwin,
638 prefs_set_data_from_toggle, prefs_set_toggle},
639 {"mark_as_read_delay", "0",
640 &prefs_common.mark_as_read_delay, P_INT,
642 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
643 P_BOOL, &interface.checkbtn_openinbox,
644 prefs_set_data_from_toggle, prefs_set_toggle},
645 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
646 &interface.checkbtn_immedexec,
647 prefs_set_data_from_toggle, prefs_set_toggle},
648 {"nextunreadmsg_dialog", NULL, &prefs_common.next_unread_msg_dialog, P_ENUM,
649 &interface.optmenu_nextunreadmsgdialog,
650 prefs_nextunreadmsgdialog_set_data_from_optmenu,
651 prefs_nextunreadmsgdialog_set_optmenu},
653 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
654 &prefs_common.pixmap_theme_path, P_STRING,
657 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
661 {"uri_open_command", DEFAULT_BROWSER_CMD,
662 &prefs_common.uri_cmd, P_STRING, NULL, NULL, NULL},
663 {"print_command", "lpr %s", &prefs_common.print_cmd, P_STRING,
665 {"ext_editor_command", "gedit %s",
666 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
668 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
669 P_BOOL, &other.checkbtn_addaddrbyclick,
670 prefs_set_data_from_toggle, prefs_set_toggle},
672 {"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
673 &other.checkbtn_confonexit,
674 prefs_set_data_from_toggle, prefs_set_toggle},
675 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
676 &other.checkbtn_cleanonexit,
677 prefs_set_data_from_toggle, prefs_set_toggle},
678 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
679 &other.checkbtn_askonclean,
680 prefs_set_data_from_toggle, prefs_set_toggle},
681 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
682 P_BOOL, &other.checkbtn_warnqueued,
683 prefs_set_data_from_toggle, prefs_set_toggle},
686 {"ssl_ask_unknown_valid", "TRUE", &prefs_common.ssl_ask_unknown_valid,
687 P_BOOL, &other.checkbtn_ssl_ask_unknown_valid,
688 prefs_set_data_from_toggle, prefs_set_toggle},
691 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
693 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
695 {"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
698 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
699 P_INT, &other.spinbtn_iotimeout,
700 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
701 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
703 {"important_score", "1", &prefs_common.important_score, P_INT,
705 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
706 &other.checkbtn_cliplog,
707 prefs_set_data_from_toggle, prefs_set_toggle},
708 {"log_length", "500", &prefs_common.loglength, P_INT,
709 &other.loglength_entry,
710 prefs_set_data_from_entry, prefs_set_entry},
712 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
714 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
717 {"color_new", "179", &prefs_common.color_new, P_COLOR,
720 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
723 /* widget creating functions */
724 static void prefs_common_create (void);
725 static void prefs_receive_create (void);
726 static void prefs_send_create (void);
727 static void prefs_compose_create (void);
728 static void prefs_quote_create (void);
729 static void prefs_display_create (void);
730 static void prefs_message_create (void);
731 static void prefs_interface_create (void);
732 static void prefs_other_create (void);
734 static void date_format_ok_btn_clicked (GtkButton *button,
736 static void date_format_cancel_btn_clicked (GtkButton *button,
738 static void date_format_key_pressed (GtkWidget *keywidget,
741 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
744 static void date_format_entry_on_change (GtkEditable *editable,
746 static void date_format_select_row (GtkWidget *date_format_list,
749 GdkEventButton *event,
750 GtkWidget *date_format);
751 static GtkWidget *date_format_create (GtkButton *button,
754 static void prefs_keybind_select (void);
755 static gint prefs_keybind_deleted (GtkWidget *widget,
758 static void prefs_keybind_key_pressed (GtkWidget *widget,
761 static void prefs_keybind_cancel (void);
762 static void prefs_keybind_apply_clicked (GtkWidget *widget);
764 static void prefs_common_apply (void);
766 typedef struct CommonPage
773 static CommonPage common_page;
775 static void create_widget_func(PrefsPage * _page,
779 CommonPage *page = (CommonPage *) _page;
782 vbox = gtk_vbox_new(FALSE, 6);
783 gtk_widget_show(vbox);
785 if (notebook == NULL)
786 prefs_common_create();
787 gtk_box_pack_start (GTK_BOX (vbox), notebook, TRUE, TRUE, 0);
788 gtk_notebook_set_page(GTK_NOTEBOOK(notebook), 0);
790 prefs_set_dialog(param);
794 page->page.widget = vbox;
797 static void destroy_widget_func(PrefsPage *_page)
799 CommonPage *page = (CommonPage *) _page;
801 gtk_container_remove(GTK_CONTAINER (page->vbox), notebook);
804 static void save_func(PrefsPage * _page)
806 prefs_common_apply();
809 void prefs_common_init(void)
811 static gchar *path[2];
813 prefs_common.disphdr_list = NULL;
815 path[0] = _("Common");
818 common_page.page.path = path;
819 common_page.page.weight = 1000.0;
820 common_page.page.create_widget = create_widget_func;
821 common_page.page.destroy_widget = destroy_widget_func;
822 common_page.page.save_page = save_func;
824 prefs_gtk_register_page((PrefsPage *) &common_page);
827 PrefsCommon *prefs_common_get(void)
829 return &prefs_common;
833 * Read history list from the specified history file
835 GList *prefs_common_read_history(const gchar *history)
839 gchar buf[PREFSBUFSIZE];
842 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
844 if ((fp = fopen(path, "rb")) == NULL) {
845 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
850 while (fgets(buf, sizeof(buf), fp) != NULL) {
852 if (buf[0] == '\0') continue;
853 tmp = add_history(tmp, buf);
857 tmp = g_list_reverse(tmp);
862 void prefs_common_read_config(void)
864 prefs_read_config(param, "Common", COMMON_RC);
866 prefs_common.mime_open_cmd_history =
867 prefs_common_read_history(COMMAND_HISTORY);
868 prefs_common.summary_quicksearch_history =
869 prefs_common_read_history(QUICKSEARCH_HISTORY);
873 * Save history list to the specified history file
875 void prefs_common_save_history(const gchar *history, GList *list)
881 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
883 if ((fp = fopen(path, "wb")) == NULL) {
884 FILE_OP_ERROR(path, "fopen");
889 for (cur = list; cur != NULL; cur = cur->next) {
890 fputs((gchar *)cur->data, fp);
898 void prefs_common_write_config(void)
900 prefs_write_config(param, "Common", COMMON_RC);
902 prefs_common_save_history(COMMAND_HISTORY,
903 prefs_common.mime_open_cmd_history);
904 prefs_common_save_history(QUICKSEARCH_HISTORY,
905 prefs_common.summary_quicksearch_history);
908 static void prefs_common_create(void)
912 debug_print("Creating common preferences window...\n");
914 notebook = gtk_notebook_new ();
915 gtk_widget_show(notebook);
916 gtk_container_set_border_width (GTK_CONTAINER (notebook), 2);
917 /* GTK_WIDGET_UNSET_FLAGS (notebook, GTK_CAN_FOCUS); */
918 gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook), TRUE);
920 gtk_notebook_popup_enable (GTK_NOTEBOOK (notebook));
922 gtk_widget_ref(notebook);
924 /* create all widgets on notebook */
925 prefs_receive_create();
926 SET_NOTEBOOK_LABEL(notebook, _("Receive"), page++);
928 SET_NOTEBOOK_LABEL(notebook, _("Send"), page++);
929 prefs_compose_create();
930 SET_NOTEBOOK_LABEL(notebook, _("Compose"), page++);
931 prefs_quote_create();
932 SET_NOTEBOOK_LABEL(notebook, _("Quote"), page++);
933 prefs_display_create();
934 SET_NOTEBOOK_LABEL(notebook, _("Display"), page++);
935 prefs_message_create();
936 SET_NOTEBOOK_LABEL(notebook, _("Message"), page++);
937 prefs_interface_create();
938 SET_NOTEBOOK_LABEL(notebook, _("Interface"), page++);
939 prefs_other_create();
940 SET_NOTEBOOK_LABEL(notebook, _("Other"), page++);
942 gtk_widget_show_all(notebook);
945 static void prefs_receive_create(void)
949 GtkWidget *frame_incext;
950 GtkWidget *checkbtn_incext;
952 GtkWidget *label_incext;
953 GtkWidget *entry_incext;
954 /* GtkWidget *button_incext; */
956 GtkWidget *hbox_autochk;
957 GtkWidget *checkbtn_autochk;
958 GtkWidget *label_autochk1;
959 GtkObject *spinbtn_autochk_adj;
960 GtkWidget *spinbtn_autochk;
961 GtkWidget *label_autochk2;
962 GtkWidget *checkbtn_chkonstartup;
963 GtkWidget *checkbtn_scan_after_inc;
966 GtkWidget *frame_newmail;
967 GtkWidget *hbox_newmail_notify;
968 GtkWidget *checkbtn_newmail_auto;
969 GtkWidget *checkbtn_newmail_manu;
970 GtkWidget *entry_newmail_notify_cmd;
971 GtkWidget *label_newmail_notify_cmd;
973 GtkWidget *hbox_recvdialog;
974 GtkWidget *label_recvdialog;
977 GtkWidget *optmenu_recvdialog;
978 GtkWidget *checkbtn_no_recv_err_panel;
979 GtkWidget *checkbtn_close_recv_dialog;
981 vbox1 = gtk_vbox_new (FALSE, VSPACING);
982 gtk_widget_show (vbox1);
983 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
984 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
986 PACK_FRAME(vbox1, frame_incext, _("External program"));
988 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
989 gtk_widget_show (vbox2);
990 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
991 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
993 /* Use of external incorporation program */
994 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
995 _("Use external program for incorporation"));
997 hbox = gtk_hbox_new (FALSE, 8);
998 gtk_widget_show (hbox);
999 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1000 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1002 label_incext = gtk_label_new (_("Command"));
1003 gtk_widget_show (label_incext);
1004 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1006 entry_incext = gtk_entry_new ();
1007 gtk_widget_show (entry_incext);
1008 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1011 button_incext = gtk_button_new_with_label ("... ");
1012 gtk_widget_show (button_incext);
1013 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1016 vbox2 = gtk_vbox_new (FALSE, 0);
1017 gtk_widget_show (vbox2);
1018 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1021 hbox_autochk = gtk_hbox_new (FALSE, 8);
1022 gtk_widget_show (hbox_autochk);
1023 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1025 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1026 _("Auto-check new mail"));
1028 label_autochk1 = gtk_label_new (_("every"));
1029 gtk_widget_show (label_autochk1);
1030 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1032 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1033 spinbtn_autochk = gtk_spin_button_new
1034 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1035 gtk_widget_show (spinbtn_autochk);
1036 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1037 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1038 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1040 label_autochk2 = gtk_label_new (_("minute(s)"));
1041 gtk_widget_show (label_autochk2);
1042 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1044 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1045 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1046 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1048 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1049 _("Check new mail on startup"));
1050 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1051 _("Update all local folders after incorporation"));
1054 /* receive dialog */
1055 hbox_recvdialog = gtk_hbox_new (FALSE, 8);
1056 gtk_widget_show (hbox_recvdialog);
1057 gtk_box_pack_start (GTK_BOX (vbox2), hbox_recvdialog, FALSE, FALSE, 0);
1059 label_recvdialog = gtk_label_new (_("Show receive dialog"));
1060 gtk_misc_set_alignment(GTK_MISC(label_recvdialog), 0, 0.5);
1061 gtk_widget_show (label_recvdialog);
1062 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), label_recvdialog, FALSE, FALSE, 0);
1064 optmenu_recvdialog = gtk_option_menu_new ();
1065 gtk_widget_show (optmenu_recvdialog);
1066 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), optmenu_recvdialog, FALSE, FALSE, 0);
1068 menu = gtk_menu_new ();
1069 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
1070 MENUITEM_ADD (menu, menuitem, _("Only on manual receiving"),
1071 RECV_DIALOG_MANUAL);
1072 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
1074 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
1076 PACK_CHECK_BUTTON (vbox2, checkbtn_no_recv_err_panel,
1077 _("Don't popup error dialog on receive error"));
1079 PACK_CHECK_BUTTON (vbox2, checkbtn_close_recv_dialog,
1080 _("Close receive dialog when finished"));
1082 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1084 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1085 gtk_widget_show (vbox2);
1086 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1087 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1089 hbox = gtk_hbox_new (TRUE, 8);
1090 gtk_widget_show (hbox);
1091 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1092 _("after autochecking"));
1093 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1094 _("after manual checking"));
1095 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1096 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1097 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1099 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1100 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1103 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1104 gtk_widget_show (hbox);
1105 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1108 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1109 "(use %d as number of new "
1111 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1113 gtk_widget_show (label_newmail_notify_cmd);
1114 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1115 label_newmail_notify_cmd, FALSE, FALSE, 0);
1117 entry_newmail_notify_cmd = gtk_entry_new ();
1118 gtk_widget_show (entry_newmail_notify_cmd);
1119 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1120 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1122 gtk_widget_set_sensitive(hbox_newmail_notify,
1123 prefs_common.newmail_notify_auto ||
1124 prefs_common.newmail_notify_manu);
1126 receive.checkbtn_incext = checkbtn_incext;
1127 receive.entry_incext = entry_incext;
1128 /* receive.button_incext = button_incext; */
1130 receive.checkbtn_autochk = checkbtn_autochk;
1131 receive.spinbtn_autochk = spinbtn_autochk;
1132 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1134 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1135 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1138 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1139 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1140 receive.hbox_newmail_notify = hbox_newmail_notify;
1141 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1142 receive.optmenu_recvdialog = optmenu_recvdialog;
1143 receive.checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
1144 receive.checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
1147 static void prefs_send_create(void)
1152 GtkWidget *checkbtn_savemsg;
1153 GtkWidget *label_outcharset;
1154 GtkWidget *optmenu_charset;
1155 GtkWidget *optmenu_menu;
1156 GtkWidget *menuitem;
1157 GtkTooltips *charset_tooltip;
1158 GtkWidget *optmenu_encoding;
1159 GtkWidget *label_encoding;
1160 GtkTooltips *encoding_tooltip;
1161 GtkWidget *label_senddialog;
1163 GtkWidget *optmenu_senddialog;
1164 GtkWidget *hbox_senddialog;
1166 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1167 gtk_widget_show (vbox1);
1168 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1169 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1171 vbox2 = gtk_vbox_new (FALSE, 0);
1172 gtk_widget_show (vbox2);
1173 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1175 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1176 _("Save sent messages to Sent folder"));
1178 hbox_senddialog = gtk_hbox_new (FALSE, 8);
1179 gtk_box_pack_start (GTK_BOX (vbox1), hbox_senddialog, FALSE, FALSE, 0);
1181 label_senddialog = gtk_label_new (_("Show send dialog"));
1182 gtk_widget_show (label_senddialog);
1183 gtk_box_pack_start (GTK_BOX (hbox_senddialog), label_senddialog, FALSE, FALSE, 0);
1185 optmenu_senddialog = gtk_option_menu_new ();
1186 gtk_widget_show (optmenu_senddialog);
1187 gtk_box_pack_start (GTK_BOX (hbox_senddialog), optmenu_senddialog, FALSE, FALSE, 0);
1189 menu = gtk_menu_new ();
1190 MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
1191 MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
1193 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
1195 hbox1 = gtk_hbox_new (FALSE, 8);
1196 gtk_widget_show (hbox1);
1197 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1199 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1200 gtk_widget_show (label_outcharset);
1201 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1203 charset_tooltip = gtk_tooltips_new();
1205 optmenu_charset = gtk_option_menu_new ();
1206 gtk_widget_show (optmenu_charset);
1207 gtk_tooltips_set_tip(GTK_TOOLTIPS(charset_tooltip), optmenu_charset,
1208 _("If `Automatic' is selected, the optimal encoding"
1209 " for the current locale will be used"),
1211 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_charset, FALSE, FALSE, 0);
1213 optmenu_menu = gtk_menu_new ();
1215 #define SET_MENUITEM(str, data) \
1217 MENUITEM_ADD(optmenu_menu, menuitem, str, data); \
1220 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1221 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1223 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1225 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1226 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1227 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1228 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1229 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1230 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1231 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1233 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1235 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1237 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1238 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1240 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1242 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1243 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1245 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1246 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1248 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1249 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1251 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1252 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1253 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1255 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_charset),
1258 hbox1 = gtk_hbox_new (FALSE, 8);
1259 gtk_widget_show (hbox1);
1260 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1262 hbox1 = gtk_hbox_new (FALSE, 8);
1263 gtk_widget_show (hbox1);
1264 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1266 label_encoding = gtk_label_new (_("Transfer encoding"));
1267 gtk_widget_show (label_encoding);
1268 gtk_box_pack_start (GTK_BOX (hbox1), label_encoding, FALSE, FALSE, 0);
1270 encoding_tooltip = gtk_tooltips_new();
1272 optmenu_encoding = gtk_option_menu_new ();
1273 gtk_widget_show (optmenu_encoding);
1274 gtk_tooltips_set_tip(GTK_TOOLTIPS(encoding_tooltip), optmenu_encoding,
1275 _("Specify Content-Transfer-Encoding used when"
1276 " message body contains non-ASCII characters"),
1278 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_encoding, FALSE, FALSE, 0);
1280 optmenu_menu = gtk_menu_new ();
1282 SET_MENUITEM(_("Automatic"), CTE_AUTO);
1283 SET_MENUITEM("base64", CTE_BASE64);
1284 SET_MENUITEM("quoted-printable", CTE_QUOTED_PRINTABLE);
1285 SET_MENUITEM("8bit", CTE_8BIT);
1287 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_encoding),
1290 hbox1 = gtk_hbox_new (FALSE, 8);
1291 gtk_widget_show (hbox1);
1292 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1294 p_send.checkbtn_savemsg = checkbtn_savemsg;
1295 p_send.optmenu_senddialog = optmenu_senddialog;
1297 p_send.optmenu_charset = optmenu_charset;
1298 p_send.optmenu_encoding_method = optmenu_encoding;
1301 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1305 toggled = gtk_toggle_button_get_active
1306 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1307 gtk_toggle_button_get_active
1308 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1309 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1312 static void prefs_compose_create(void)
1317 GtkWidget *checkbtn_autoextedit;
1319 GtkWidget *frame_autosel;
1320 GtkWidget *hbox_autosel;
1321 GtkWidget *checkbtn_reply_account_autosel;
1322 GtkWidget *checkbtn_forward_account_autosel;
1323 GtkWidget *checkbtn_reedit_account_autosel;
1325 GtkWidget *hbox_undolevel;
1326 GtkWidget *label_undolevel;
1327 GtkObject *spinbtn_undolevel_adj;
1328 GtkWidget *spinbtn_undolevel;
1332 GtkWidget *checkbtn_default_reply_list;
1334 GtkWidget *checkbtn_forward_as_attachment;
1335 GtkWidget *checkbtn_redirect_keep_from;
1336 GtkWidget *checkbtn_block_cursor;
1338 GtkWidget *hbox_autosave;
1339 GtkWidget *checkbtn_autosave;
1340 GtkWidget *entry_autosave_length;
1341 GtkWidget *label_autosave_length;
1343 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1344 gtk_widget_show (vbox1);
1345 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1346 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1348 /* Account autoselection */
1349 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1351 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1352 gtk_widget_show (hbox_autosel);
1353 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1354 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1356 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1357 _("when replying"));
1358 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1359 _("when forwarding"));
1360 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1361 _("when re-editing"));
1363 vbox2 = gtk_vbox_new (FALSE, 0);
1364 gtk_widget_show (vbox2);
1365 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1367 PACK_CHECK_BUTTON (vbox2, checkbtn_default_reply_list,
1368 _("Reply button invokes mailing list reply"));
1370 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1371 _("Automatically launch the external editor"));
1373 hbox5 = gtk_hbox_new (FALSE, 8);
1374 gtk_widget_show (hbox5);
1375 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1377 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1378 _("Forward as attachment"));
1380 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1383 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1384 _("Keep the original 'From' header when redirecting"));
1387 hbox_autosave = gtk_hbox_new (FALSE, 8);
1388 gtk_widget_show (hbox_autosave);
1389 gtk_box_pack_start (GTK_BOX (vbox1), hbox_autosave, FALSE, FALSE, 0);
1391 PACK_CHECK_BUTTON (hbox_autosave, checkbtn_autosave,
1392 _("Autosave to Drafts folder every "));
1394 entry_autosave_length = gtk_entry_new();
1395 gtk_widget_set_usize (entry_autosave_length, 64, -1);
1396 gtk_widget_show (entry_autosave_length);
1397 gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
1399 label_autosave_length = gtk_label_new(_("characters"));
1400 gtk_widget_show (label_autosave_length);
1401 gtk_box_pack_start (GTK_BOX (hbox_autosave), label_autosave_length, FALSE, FALSE, 0);
1403 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1404 gtk_widget_show (hbox_undolevel);
1405 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1407 label_undolevel = gtk_label_new (_("Undo level"));
1408 gtk_widget_show (label_undolevel);
1409 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1411 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1412 spinbtn_undolevel = gtk_spin_button_new
1413 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1414 gtk_widget_show (spinbtn_undolevel);
1415 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1416 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1417 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1420 compose.checkbtn_quote = checkbtn_quote;
1421 compose.entry_quotemark = entry_quotemark;
1422 compose.text_quotefmt = text_quotefmt;
1425 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1427 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1428 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1429 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1431 compose.spinbtn_undolevel = spinbtn_undolevel;
1432 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1434 compose.checkbtn_autosave = checkbtn_autosave;
1435 compose.entry_autosave_length = entry_autosave_length;
1437 compose.checkbtn_forward_as_attachment =
1438 checkbtn_forward_as_attachment;
1439 compose.checkbtn_redirect_keep_from =
1440 checkbtn_redirect_keep_from;
1441 compose.checkbtn_block_cursor =
1442 checkbtn_block_cursor;
1443 compose.checkbtn_default_reply_list = checkbtn_default_reply_list;
1446 static void prefs_quote_create(void)
1449 GtkWidget *frame_quote;
1450 GtkWidget *vbox_quote;
1453 GtkWidget *label_quotemark;
1454 GtkWidget *entry_quotemark;
1455 GtkWidget *scrolledwin_quotefmt;
1456 GtkWidget *text_quotefmt;
1458 GtkWidget *entry_fw_quotemark;
1459 GtkWidget *text_fw_quotefmt;
1461 GtkWidget *entry_quote_chars;
1462 GtkWidget *label_quote_chars;
1464 GtkWidget *btn_quotedesc;
1466 GtkWidget *checkbtn_reply_with_quote;
1468 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1469 gtk_widget_show (vbox1);
1470 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1471 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1475 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1477 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1479 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1480 gtk_widget_show (vbox_quote);
1481 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1482 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1484 hbox1 = gtk_hbox_new (FALSE, 32);
1485 gtk_widget_show (hbox1);
1486 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1488 hbox2 = gtk_hbox_new (FALSE, 8);
1489 gtk_widget_show (hbox2);
1490 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1492 label_quotemark = gtk_label_new (_("Quotation mark"));
1493 gtk_widget_show (label_quotemark);
1494 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1496 entry_quotemark = gtk_entry_new ();
1497 gtk_widget_show (entry_quotemark);
1498 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
1499 gtk_widget_set_usize (entry_quotemark, 64, -1);
1501 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1502 gtk_widget_show (scrolledwin_quotefmt);
1503 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1504 gtk_scrolled_window_set_policy
1505 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1506 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1508 text_quotefmt = gtk_text_new (NULL, NULL);
1509 gtk_widget_show (text_quotefmt);
1510 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
1511 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
1512 gtk_widget_set_usize(text_quotefmt, -1, 60);
1516 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
1518 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1519 gtk_widget_show (vbox_quote);
1520 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1521 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1523 hbox1 = gtk_hbox_new (FALSE, 32);
1524 gtk_widget_show (hbox1);
1525 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1527 hbox2 = gtk_hbox_new (FALSE, 8);
1528 gtk_widget_show (hbox2);
1529 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1531 label_quotemark = gtk_label_new (_("Quotation mark"));
1532 gtk_widget_show (label_quotemark);
1533 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1535 entry_fw_quotemark = gtk_entry_new ();
1536 gtk_widget_show (entry_fw_quotemark);
1537 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
1539 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
1541 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1542 gtk_widget_show (scrolledwin_quotefmt);
1543 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1544 gtk_scrolled_window_set_policy
1545 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1546 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1548 text_fw_quotefmt = gtk_text_new (NULL, NULL);
1549 gtk_widget_show (text_fw_quotefmt);
1550 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
1552 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
1553 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
1555 hbox1 = gtk_hbox_new (FALSE, 32);
1556 gtk_widget_show (hbox1);
1557 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1560 gtk_button_new_with_label (_(" Description of symbols "));
1561 gtk_widget_show (btn_quotedesc);
1562 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
1563 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
1564 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
1568 PACK_FRAME (vbox1, frame_quote, _("Quotation characters"));
1570 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1571 gtk_widget_show (vbox_quote);
1572 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1573 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1575 hbox1 = gtk_hbox_new (FALSE, 32);
1576 gtk_widget_show (hbox1);
1577 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1579 hbox2 = gtk_hbox_new (FALSE, 8);
1580 gtk_widget_show (hbox2);
1581 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1583 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
1584 gtk_widget_show (label_quote_chars);
1585 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
1587 entry_quote_chars = gtk_entry_new ();
1588 gtk_widget_show (entry_quote_chars);
1589 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
1591 gtk_widget_set_usize (entry_quote_chars, 64, -1);
1594 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
1595 quote.entry_quotemark = entry_quotemark;
1596 quote.text_quotefmt = text_quotefmt;
1597 quote.entry_fw_quotemark = entry_fw_quotemark;
1598 quote.text_fw_quotefmt = text_fw_quotefmt;
1599 quote.entry_quote_chars = entry_quote_chars;
1602 static void prefs_display_create(void)
1605 GtkWidget *chkbtn_transhdr;
1606 GtkWidget *chkbtn_folder_unread;
1608 GtkWidget *label_ng_abbrev;
1609 GtkWidget *spinbtn_ng_abbrev_len;
1610 GtkObject *spinbtn_ng_abbrev_len_adj;
1611 GtkWidget *frame_summary;
1613 GtkWidget *chkbtn_swapfrom;
1614 GtkWidget *chkbtn_useaddrbook;
1615 GtkWidget *chkbtn_threadsubj;
1617 GtkWidget *label_datefmt;
1618 GtkWidget *button_datefmt;
1619 GtkWidget *entry_datefmt;
1620 GtkWidget *button_dispitem;
1622 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1623 gtk_widget_show (vbox1);
1624 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1625 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1627 vbox2 = gtk_vbox_new (FALSE, 0);
1628 gtk_widget_show (vbox2);
1629 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
1632 (vbox2, chkbtn_transhdr,
1633 _("Translate header name (such as `From:', `Subject:')"));
1635 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
1636 _("Display unread number next to folder name"));
1638 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1640 hbox1 = gtk_hbox_new (FALSE, 8);
1641 gtk_widget_show (hbox1);
1642 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1644 label_ng_abbrev = gtk_label_new
1645 (_("Abbreviate newsgroup names longer than"));
1646 gtk_widget_show (label_ng_abbrev);
1647 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1649 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
1650 spinbtn_ng_abbrev_len = gtk_spin_button_new
1651 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
1652 gtk_widget_show (spinbtn_ng_abbrev_len);
1653 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
1655 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
1656 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
1659 label_ng_abbrev = gtk_label_new
1661 gtk_widget_show (label_ng_abbrev);
1662 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1664 /* ---- Summary ---- */
1666 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
1668 vbox2 = gtk_vbox_new (FALSE, 0);
1669 gtk_widget_show (vbox2);
1670 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
1671 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1674 (vbox2, chkbtn_swapfrom,
1675 _("Display recipient in `From' column if sender is yourself"));
1677 (vbox2, chkbtn_useaddrbook,
1678 _("Display sender using address book"));
1680 (vbox2, chkbtn_threadsubj,
1681 _("Thread using subject in addition to standard headers"));
1683 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1685 hbox1 = gtk_hbox_new (FALSE, 8);
1686 gtk_widget_show (hbox1);
1687 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1689 label_datefmt = gtk_label_new (_("Date format"));
1690 gtk_widget_show (label_datefmt);
1691 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
1693 entry_datefmt = gtk_entry_new ();
1694 gtk_widget_show (entry_datefmt);
1695 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
1697 button_datefmt = gtk_button_new_with_label (" ... ");
1699 gtk_widget_show (button_datefmt);
1700 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
1701 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
1702 GTK_SIGNAL_FUNC (date_format_create), NULL);
1704 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
1706 hbox1 = gtk_hbox_new (FALSE, 8);
1707 gtk_widget_show (hbox1);
1708 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1710 button_dispitem = gtk_button_new_with_label
1711 (_(" Set displayed items in summary... "));
1712 gtk_widget_show (button_dispitem);
1713 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
1714 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
1715 GTK_SIGNAL_FUNC (prefs_summary_column_open),
1718 display.chkbtn_transhdr = chkbtn_transhdr;
1719 display.chkbtn_folder_unread = chkbtn_folder_unread;
1720 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
1721 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
1723 display.chkbtn_swapfrom = chkbtn_swapfrom;
1724 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
1725 display.chkbtn_threadsubj = chkbtn_threadsubj;
1726 display.entry_datefmt = entry_datefmt;
1729 static void prefs_message_create(void)
1735 GtkWidget *chkbtn_mbalnum;
1736 GtkWidget *chkbtn_disphdrpane;
1737 GtkWidget *chkbtn_disphdr;
1738 GtkWidget *button_edit_disphdr;
1739 GtkWidget *hbox_linespc;
1740 GtkWidget *label_linespc;
1741 GtkObject *spinbtn_linespc_adj;
1742 GtkWidget *spinbtn_linespc;
1743 GtkWidget *chkbtn_headspc;
1745 GtkWidget *frame_scr;
1746 GtkWidget *vbox_scr;
1747 GtkWidget *chkbtn_smoothscroll;
1748 GtkWidget *hbox_scr;
1749 GtkWidget *label_scr;
1750 GtkObject *spinbtn_scrollstep_adj;
1751 GtkWidget *spinbtn_scrollstep;
1752 GtkWidget *chkbtn_halfpage;
1754 GtkWidget *chkbtn_attach_desc;
1756 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1757 gtk_widget_show (vbox1);
1758 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1759 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1761 vbox2 = gtk_vbox_new (FALSE, 0);
1762 gtk_widget_show (vbox2);
1763 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1766 (vbox2, chkbtn_mbalnum,
1767 _("Display multi-byte alphanumeric as\n"
1768 "ASCII character (Japanese only)"));
1769 gtk_label_set_justify (GTK_LABEL (GTK_BIN(chkbtn_mbalnum)->child),
1772 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
1773 _("Display header pane above message view"));
1775 hbox1 = gtk_hbox_new (FALSE, 8);
1776 gtk_widget_show (hbox1);
1777 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1779 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
1780 _("Display short headers on message view"));
1782 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
1783 gtk_widget_show (button_edit_disphdr);
1784 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
1786 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
1787 GTK_SIGNAL_FUNC (prefs_display_header_open),
1790 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
1792 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1794 hbox1 = gtk_hbox_new (FALSE, 32);
1795 gtk_widget_show (hbox1);
1796 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1798 hbox_linespc = gtk_hbox_new (FALSE, 8);
1799 gtk_widget_show (hbox1);
1800 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
1802 label_linespc = gtk_label_new (_("Line space"));
1803 gtk_widget_show (label_linespc);
1804 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1807 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
1808 spinbtn_linespc = gtk_spin_button_new
1809 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
1810 gtk_widget_show (spinbtn_linespc);
1811 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
1813 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
1814 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
1816 label_linespc = gtk_label_new (_("pixel(s)"));
1817 gtk_widget_show (label_linespc);
1818 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1821 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Indent text"));
1823 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
1825 vbox_scr = gtk_vbox_new (FALSE, 0);
1826 gtk_widget_show (vbox_scr);
1827 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
1828 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
1830 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
1832 hbox1 = gtk_hbox_new (FALSE, 32);
1833 gtk_widget_show (hbox1);
1834 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
1836 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
1838 hbox_scr = gtk_hbox_new (FALSE, 8);
1839 gtk_widget_show (hbox_scr);
1840 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
1842 label_scr = gtk_label_new (_("Step"));
1843 gtk_widget_show (label_scr);
1844 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1846 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
1847 spinbtn_scrollstep = gtk_spin_button_new
1848 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
1849 gtk_widget_show (spinbtn_scrollstep);
1850 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
1852 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
1853 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
1856 label_scr = gtk_label_new (_("pixel(s)"));
1857 gtk_widget_show (label_scr);
1858 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1860 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
1862 vbox3 = gtk_vbox_new (FALSE, 0);
1863 gtk_widget_show (vbox3);
1864 gtk_box_pack_start (GTK_BOX (vbox1), vbox3, FALSE, FALSE, 0);
1866 PACK_CHECK_BUTTON(vbox3, chkbtn_attach_desc,
1867 _("Show attachment descriptions (rather than names)"));
1869 message.chkbtn_mbalnum = chkbtn_mbalnum;
1870 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
1871 message.chkbtn_disphdr = chkbtn_disphdr;
1872 message.spinbtn_linespc = spinbtn_linespc;
1873 message.chkbtn_headspc = chkbtn_headspc;
1875 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
1876 message.spinbtn_scrollstep = spinbtn_scrollstep;
1877 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
1878 message.chkbtn_halfpage = chkbtn_halfpage;
1880 message.chkbtn_attach_desc = chkbtn_attach_desc;
1883 static void prefs_interface_create(void)
1888 /* GtkWidget *checkbtn_emacs; */
1889 GtkWidget *checkbtn_always_show_msg;
1890 GtkWidget *checkbtn_openunread;
1891 GtkWidget *checkbtn_mark_as_read_on_newwin;
1892 GtkWidget *checkbtn_openinbox;
1893 GtkWidget *checkbtn_immedexec;
1894 GtkTooltips *immedexec_tooltip;
1898 GtkWidget *menuitem;
1900 GtkWidget *button_keybind;
1902 GtkWidget *hbox_nextunreadmsgdialog;
1903 GtkWidget *optmenu_nextunreadmsgdialog;
1905 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1906 gtk_widget_show (vbox1);
1907 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1908 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1910 vbox2 = gtk_vbox_new (FALSE, 0);
1911 gtk_widget_show (vbox2);
1912 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1914 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
1915 _("Emulate the behavior of mouse operation of\n"
1916 "Emacs-based mailer"));
1917 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
1918 GTK_JUSTIFY_LEFT); */
1921 (vbox2, checkbtn_always_show_msg,
1922 _("Always open messages in summary when selected"));
1925 (vbox2, checkbtn_openunread,
1926 _("Open first unread message when entering a folder"));
1929 (vbox2, checkbtn_mark_as_read_on_newwin,
1930 _("Only mark message as read when opened in new window"));
1933 (vbox2, checkbtn_openinbox,
1934 _("Go to inbox after receiving new mail"));
1936 vbox3 = gtk_vbox_new (FALSE, 0);
1937 gtk_widget_show (vbox3);
1938 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
1940 immedexec_tooltip = gtk_tooltips_new();
1943 (vbox3, checkbtn_immedexec,
1944 _("Execute immediately when moving or deleting messages"));
1945 gtk_tooltips_set_tip(GTK_TOOLTIPS(immedexec_tooltip), checkbtn_immedexec,
1946 _("Messages will be marked until execution"
1947 " if this is turned off"),
1950 hbox1 = gtk_hbox_new (FALSE, 0);
1951 gtk_widget_show (hbox1);
1952 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
1954 /* Next Unread Message Dialog */
1955 hbox_nextunreadmsgdialog = gtk_hbox_new (FALSE, 8);
1956 gtk_widget_show (hbox1);
1957 gtk_box_pack_start (GTK_BOX (vbox1), hbox_nextunreadmsgdialog, FALSE, FALSE, 0);
1959 label = gtk_label_new (_("Show no-unread-message dialog"));
1960 gtk_widget_show (label);
1961 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), label, FALSE, FALSE, 8);
1963 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
1964 gtk_widget_show (optmenu_nextunreadmsgdialog);
1965 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), optmenu_nextunreadmsgdialog, FALSE, FALSE, 8);
1967 menu = gtk_menu_new ();
1968 MENUITEM_ADD (menu, menuitem, _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
1969 MENUITEM_ADD (menu, menuitem, _("Assume 'Yes'"),
1970 NEXTUNREADMSGDIALOG_ASSUME_YES);
1971 MENUITEM_ADD (menu, menuitem, _("Assume 'No'"),
1972 NEXTUNREADMSGDIALOG_ASSUME_NO);
1974 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog), menu);
1976 hbox1 = gtk_hbox_new (FALSE, 8);
1977 gtk_widget_show (hbox1);
1978 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1980 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
1981 gtk_widget_show (button_keybind);
1982 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
1983 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
1984 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
1986 /* interface.checkbtn_emacs = checkbtn_emacs; */
1987 interface.checkbtn_always_show_msg = checkbtn_always_show_msg;
1988 interface.checkbtn_openunread = checkbtn_openunread;
1989 interface.checkbtn_mark_as_read_on_newwin
1990 = checkbtn_mark_as_read_on_newwin;
1991 interface.checkbtn_openinbox = checkbtn_openinbox;
1992 interface.checkbtn_immedexec = checkbtn_immedexec;
1993 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
1996 static void prefs_other_create(void)
2001 GtkWidget *frame_addr;
2002 GtkWidget *vbox_addr;
2003 GtkWidget *checkbtn_addaddrbyclick;
2005 GtkWidget *frame_cliplog;
2006 GtkWidget *vbox_cliplog;
2007 GtkWidget *hbox_cliplog;
2008 GtkWidget *checkbtn_cliplog;
2009 GtkWidget *loglength_label;
2010 GtkWidget *loglength_entry;
2011 GtkTooltips *loglength_tooltip;
2013 GtkWidget *frame_exit;
2014 GtkWidget *vbox_exit;
2015 GtkWidget *checkbtn_confonexit;
2016 GtkWidget *checkbtn_cleanonexit;
2017 GtkWidget *checkbtn_askonclean;
2018 GtkWidget *checkbtn_warnqueued;
2020 GtkWidget *label_iotimeout;
2021 GtkWidget *spinbtn_iotimeout;
2022 GtkObject *spinbtn_iotimeout_adj;
2026 GtkWidget *frame_ssl;
2027 GtkWidget *vbox_ssl;
2028 GtkWidget *hbox_ssl;
2029 GtkWidget *checkbtn_ssl_ask_unknown_valid;
2032 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2033 gtk_widget_show (vbox1);
2034 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
2035 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2037 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2039 vbox_addr = gtk_vbox_new (FALSE, 0);
2040 gtk_widget_show (vbox_addr);
2041 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2042 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2045 (vbox_addr, checkbtn_addaddrbyclick,
2046 _("Add address to destination when double-clicked"));
2049 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2051 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2052 gtk_widget_show (vbox_cliplog);
2053 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2054 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2055 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2056 _("Clip the log size"));
2057 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2058 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2059 gtk_widget_show (hbox_cliplog);
2061 loglength_label = gtk_label_new (_("Log window length"));
2062 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2064 gtk_widget_show (GTK_WIDGET (loglength_label));
2066 loglength_tooltip = gtk_tooltips_new();
2068 loglength_entry = gtk_entry_new ();
2069 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2070 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2072 gtk_widget_show (GTK_WIDGET (loglength_entry));
2073 gtk_tooltips_set_tip(GTK_TOOLTIPS(loglength_tooltip), loglength_entry,
2074 _("0 to stop logging in the log window"),
2076 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2081 PACK_FRAME (vbox1, frame_ssl, _("Security"));
2083 vbox_ssl = gtk_vbox_new (FALSE, 0);
2084 gtk_widget_show (vbox_ssl);
2085 gtk_container_add (GTK_CONTAINER (frame_ssl), vbox_ssl);
2086 gtk_container_set_border_width (GTK_CONTAINER (vbox_ssl), 8);
2087 PACK_CHECK_BUTTON (vbox_ssl, checkbtn_ssl_ask_unknown_valid,
2088 _("Ask before accepting SSL certificates"));
2089 hbox_ssl = gtk_hbox_new (FALSE, 3);
2090 gtk_container_add (GTK_CONTAINER (vbox_ssl), hbox_ssl);
2091 gtk_widget_show (hbox_ssl);
2096 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2098 vbox_exit = gtk_vbox_new (FALSE, 0);
2099 gtk_widget_show (vbox_exit);
2100 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2101 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
2103 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
2104 _("Confirm on exit"));
2106 hbox1 = gtk_hbox_new (FALSE, 32);
2107 gtk_widget_show (hbox1);
2108 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
2110 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
2111 _("Empty trash on exit"));
2112 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
2113 _("Ask before emptying"));
2114 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
2116 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
2117 _("Warn if there are queued messages"));
2119 hbox1 = gtk_hbox_new (FALSE, 8);
2120 gtk_widget_show (hbox1);
2121 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2123 label_iotimeout = gtk_label_new (_("Socket I/O timeout:"));
2124 gtk_widget_show (label_iotimeout);
2125 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2127 spinbtn_iotimeout_adj = gtk_adjustment_new (60, 0, 1000, 1, 10, 10);
2128 spinbtn_iotimeout = gtk_spin_button_new
2129 (GTK_ADJUSTMENT (spinbtn_iotimeout_adj), 1, 0);
2130 gtk_widget_show (spinbtn_iotimeout);
2131 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_iotimeout,
2133 gtk_widget_set_usize (spinbtn_iotimeout, 64, -1);
2134 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_iotimeout), TRUE);
2136 label_iotimeout = gtk_label_new (_("seconds"));
2137 gtk_widget_show (label_iotimeout);
2138 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2140 other.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2142 other.checkbtn_cliplog = checkbtn_cliplog;
2143 other.loglength_entry = loglength_entry;
2145 other.checkbtn_confonexit = checkbtn_confonexit;
2146 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
2147 other.checkbtn_askonclean = checkbtn_askonclean;
2148 other.checkbtn_warnqueued = checkbtn_warnqueued;
2150 other.spinbtn_iotimeout = spinbtn_iotimeout;
2151 other.spinbtn_iotimeout_adj = spinbtn_iotimeout_adj;
2155 other.checkbtn_ssl_ask_unknown_valid = checkbtn_ssl_ask_unknown_valid;
2160 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
2162 GtkWidget *datefmt_sample = NULL;
2165 g_return_if_fail(widget != NULL);
2166 g_return_if_fail(*widget != NULL);
2167 g_return_if_fail(display.entry_datefmt != NULL);
2169 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2170 (GTK_OBJECT(*widget), "datefmt_sample"));
2171 g_return_if_fail(datefmt_sample != NULL);
2173 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
2174 g_free(prefs_common.date_format);
2175 prefs_common.date_format = text;
2176 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
2178 gtk_widget_destroy(*widget);
2182 static void date_format_cancel_btn_clicked(GtkButton *button,
2185 g_return_if_fail(widget != NULL);
2186 g_return_if_fail(*widget != NULL);
2188 gtk_widget_destroy(*widget);
2192 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
2195 if (event && event->keyval == GDK_Escape)
2196 date_format_cancel_btn_clicked(NULL, widget);
2199 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
2200 GdkEventAny *event, GtkWidget **widget)
2202 g_return_val_if_fail(widget != NULL, FALSE);
2203 g_return_val_if_fail(*widget != NULL, FALSE);
2209 static void date_format_entry_on_change(GtkEditable *editable,
2213 struct tm *cal_time;
2217 cur_time = time(NULL);
2218 cal_time = localtime(&cur_time);
2220 text = gtk_editable_get_chars(editable, 0, -1);
2222 strftime(buffer, sizeof buffer, text, cal_time);
2224 gtk_label_set_text(example, buffer);
2227 static void date_format_select_row(GtkWidget *date_format_list, gint row,
2228 gint column, GdkEventButton *event,
2229 GtkWidget *date_format)
2235 GtkWidget *datefmt_sample;
2237 /* only on double click */
2238 if (!event || event->type != GDK_2BUTTON_PRESS) return;
2241 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2242 (GTK_OBJECT(date_format), "datefmt_sample"));
2244 g_return_if_fail(date_format_list != NULL);
2245 g_return_if_fail(date_format != NULL);
2246 g_return_if_fail(datefmt_sample != NULL);
2248 /* get format from clist */
2249 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
2251 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
2252 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
2254 /* insert the format into the text entry */
2255 new_format = g_malloc(strlen(old_format) + 3);
2257 strncpy(new_format, old_format, cur_pos);
2258 new_format[cur_pos] = '\0';
2259 strcat(new_format, format);
2260 strcat(new_format, &old_format[cur_pos]);
2262 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
2263 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
2268 static GtkWidget *date_format_create(GtkButton *button, void *data)
2270 static GtkWidget *datefmt_win = NULL;
2272 GtkWidget *scrolledwindow1;
2273 GtkWidget *datefmt_clist;
2278 GtkWidget *confirm_area;
2280 GtkWidget *cancel_btn;
2281 GtkWidget *datefmt_entry;
2310 const gint TIME_FORMAT_ELEMS =
2311 sizeof time_format / sizeof time_format[0];
2313 time_format[0].txt = _("the full abbreviated weekday name");
2314 time_format[1].txt = _("the full weekday name");
2315 time_format[2].txt = _("the abbreviated month name");
2316 time_format[3].txt = _("the full month name");
2317 time_format[4].txt = _("the preferred date and time for the current locale");
2318 time_format[5].txt = _("the century number (year/100)");
2319 time_format[6].txt = _("the day of the month as a decimal number");
2320 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
2321 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
2322 time_format[9].txt = _("the day of the year as a decimal number");
2323 time_format[10].txt = _("the month as a decimal number");
2324 time_format[11].txt = _("the minute as a decimal number");
2325 time_format[12].txt = _("either AM or PM");
2326 time_format[13].txt = _("the second as a decimal number");
2327 time_format[14].txt = _("the day of the week as a decimal number");
2328 time_format[15].txt = _("the preferred date for the current locale");
2329 time_format[16].txt = _("the last two digits of a year");
2330 time_format[17].txt = _("the year as a decimal number");
2331 time_format[18].txt = _("the time zone or name or abbreviation");
2333 if (datefmt_win) return datefmt_win;
2335 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
2336 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
2337 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
2338 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2339 gtk_widget_set_usize(datefmt_win, 440, 280);
2341 vbox1 = gtk_vbox_new(FALSE, 10);
2342 gtk_widget_show(vbox1);
2343 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
2345 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
2346 gtk_scrolled_window_set_policy
2347 (GTK_SCROLLED_WINDOW(scrolledwindow1),
2348 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
2349 gtk_widget_show(scrolledwindow1);
2350 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
2352 titles[0] = _("Specifier");
2353 titles[1] = _("Description");
2354 datefmt_clist = gtk_clist_new_with_titles(2, titles);
2355 gtk_widget_show(datefmt_clist);
2356 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
2357 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
2358 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
2359 GTK_SELECTION_BROWSE);
2361 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
2363 /* phoney casting necessary because of gtk... */
2364 text[0] = (gchar *)time_format[i].fmt;
2365 text[1] = (gchar *)time_format[i].txt;
2366 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
2369 table = gtk_table_new(2, 2, FALSE);
2370 gtk_widget_show(table);
2371 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
2372 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
2373 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
2375 label1 = gtk_label_new(_("Date format"));
2376 gtk_widget_show(label1);
2377 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
2379 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
2380 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
2382 datefmt_entry = gtk_entry_new_with_max_length(256);
2383 gtk_widget_show(datefmt_entry);
2384 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
2385 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2387 /* we need the "sample" entry box; add it as data so callbacks can
2388 * get the entry box */
2389 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
2392 label2 = gtk_label_new(_("Example"));
2393 gtk_widget_show(label2);
2394 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
2396 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
2397 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
2399 label3 = gtk_label_new("");
2400 gtk_widget_show(label3);
2401 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
2402 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2403 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
2404 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
2406 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
2407 &cancel_btn, _("Cancel"), NULL, NULL);
2408 gtk_widget_grab_default(ok_btn);
2409 gtk_widget_show(confirm_area);
2411 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
2413 /* set the current format */
2414 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
2415 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
2418 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2419 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
2421 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
2422 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
2424 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
2425 GTK_SIGNAL_FUNC(date_format_key_pressed),
2427 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
2428 GTK_SIGNAL_FUNC(date_format_on_delete),
2430 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
2431 GTK_SIGNAL_FUNC(date_format_entry_on_change),
2434 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
2435 GTK_SIGNAL_FUNC(date_format_select_row),
2438 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2439 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
2441 gtk_widget_show(datefmt_win);
2442 manage_window_set_transient(GTK_WINDOW(datefmt_win));
2444 gtk_widget_grab_focus(ok_btn);
2449 static void prefs_keybind_select(void)
2456 GtkWidget *confirm_area;
2458 GtkWidget *cancel_btn;
2460 window = gtk_window_new (GTK_WINDOW_DIALOG);
2461 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
2462 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
2463 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
2464 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
2465 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
2466 manage_window_set_transient (GTK_WINDOW (window));
2468 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2469 gtk_container_add (GTK_CONTAINER (window), vbox1);
2470 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
2472 hbox1 = gtk_hbox_new (FALSE, 8);
2473 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2475 label = gtk_label_new
2476 (_("Select preset:"));
2477 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2478 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2480 hbox1 = gtk_hbox_new (FALSE, 8);
2481 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2483 combo = gtk_combo_new ();
2484 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
2485 gtkut_combo_set_items (GTK_COMBO (combo),
2491 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
2493 hbox1 = gtk_hbox_new (FALSE, 8);
2494 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2496 label = gtk_label_new
2497 (_("You can also modify each menu shortcut by pressing\n"
2498 "any key(s) when placing the mouse pointer on the item."));
2499 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2500 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2502 hbox1 = gtk_hbox_new (FALSE, 8);
2503 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2505 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
2506 &cancel_btn, _("Cancel"), NULL, NULL);
2507 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
2508 gtk_widget_grab_default (ok_btn);
2510 MANAGE_WINDOW_SIGNALS_CONNECT(window);
2511 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2512 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
2513 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
2514 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
2515 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
2516 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
2518 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
2519 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
2522 gtk_widget_show_all(window);
2524 keybind.window = window;
2525 keybind.combo = combo;
2528 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
2531 if (event && event->keyval == GDK_Escape)
2532 prefs_keybind_cancel();
2535 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
2538 prefs_keybind_cancel();
2542 static void prefs_keybind_cancel(void)
2544 gtk_widget_destroy(keybind.window);
2545 keybind.window = NULL;
2546 keybind.combo = NULL;
2549 static void prefs_keybind_apply_clicked(GtkWidget *widget)
2551 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
2555 static gchar *default_menurc =
2556 "(menu-path \"<Main>/File/Empty all Trash folders\" \"\")\n"
2557 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
2558 "(menu-path \"<Main>/File/Print...\" \"\")\n"
2559 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
2561 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2562 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2563 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2564 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
2566 "(menu-path \"<Main>/View/Show or hide/Message view\" \"V\")\n"
2567 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2568 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2569 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2570 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2571 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2572 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
2573 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2574 "(menu-path \"<Main>/View/Message source\" \"<control>U\")\n"
2575 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2576 "(menu-path \"<Main>/View/Update summary\" \"<control><alt>U\")\n"
2578 "(menu-path \"<Main>/Message/Receive/Get from current account\" \"<control>I\")\n"
2579 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2580 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
2581 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
2582 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><control>R\")\n"
2583 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2584 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2585 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
2586 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
2587 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
2588 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
2589 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
2590 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2591 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2592 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2593 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2595 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2596 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2597 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2599 "(menu-path \"<Compose>/Message/Close\" \"<control>W\")\n"
2600 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
2601 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
2602 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
2603 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
2604 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
2605 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
2607 static gchar *mew_wl_menurc =
2608 "(menu-path \"<Main>/File/Empty all Trash folders\" \"<shift>D\")\n"
2609 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
2610 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
2611 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
2613 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2614 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2615 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2616 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
2618 "(menu-path \"<Main>/View/Show or hide/Message view\" \"\")\n"
2619 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
2620 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2621 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2622 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2623 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2624 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
2625 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2626 "(menu-path \"<Main>/View/Message source\" \"<control>U\")\n"
2627 "(menu-path \"<Main>/View/Show all headers\" \"<shift>H\")\n"
2628 "(menu-path \"<Main>/View/Update summary\" \"<shift>S\")\n"
2630 "(menu-path \"<Main>/Message/Receive/Get from current account\" \"<control>I\")\n"
2631 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2632 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
2633 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
2634 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift>A\")\n"
2635 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2636 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2637 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
2638 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
2639 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
2640 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
2641 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
2642 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2643 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2644 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2645 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
2647 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2648 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2649 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2651 "(menu-path \"<Compose>/Message/Close\" \"<alt>W\")\n"
2652 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2653 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2654 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2655 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2656 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2657 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2659 static gchar *mutt_menurc =
2660 "(menu-path \"<Main>/File/Empty all Trash folders\" \"\")\n"
2661 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
2662 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
2663 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
2665 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2666 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2667 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2668 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
2670 "(menu-path \"<Main>/View/Show or hide/Message view\" \"V\")\n"
2671 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2672 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
2673 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
2674 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
2675 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
2676 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
2677 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2678 "(menu-path \"<Main>/View/Message source\" \"<control>U\")\n"
2679 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2680 "(menu-path \"<Main>/View/Update summary\" \"<control><alt>U\")\n"
2682 "(menu-path \"<Main>/Message/Receive/Get from current account\" \"<control>I\")\n"
2683 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2684 "(menu-path \"<Main>/Message/Compose an email message\" \"M\")\n"
2685 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
2686 "(menu-path \"<Main>/Message/Reply to/all\" \"G\")\n"
2687 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2688 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2689 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
2690 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
2691 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
2692 "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
2693 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
2694 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
2695 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2696 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
2697 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2699 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2700 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2701 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2703 "(menu-path \"<Compose>/Message/Close\" \"<alt>W\")\n"
2704 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2705 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2706 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2707 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2708 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2709 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2711 static gchar *old_sylpheed_menurc =
2712 "(menu-path \"<Main>/File/Empty all Trash folders\" \"\")\n"
2713 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
2714 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
2715 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
2717 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2718 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2719 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2720 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
2722 "(menu-path \"<Main>/View/Show or hide/Message view\" \"\")\n"
2723 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2724 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2725 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2726 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2727 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2728 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
2729 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
2730 "(menu-path \"<Main>/View/Message source\" \"<control>U\")\n"
2731 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2732 "(menu-path \"<Main>/View/Update summary\" \"<alt>U\")\n"
2734 "(menu-path \"<Main>/Message/Receive/Get from current account\" \"<alt>I\")\n"
2735 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><alt>I\")\n"
2736 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
2737 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
2738 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><alt>R\")\n"
2739 "(menu-path \"<Main>/Message/Reply to/sender\" \"<control><alt>R\")\n"
2740 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2741 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
2742 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
2743 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
2744 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
2745 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
2746 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2747 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2748 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2749 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2751 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
2752 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
2753 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
2755 "(menu-path \"<Compose>/Message/Close\" \"<alt>W\")\n"
2756 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2757 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2758 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2759 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2760 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2761 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2763 text = gtk_entry_get_text(entry);
2765 if (!strcmp(text, _("Default")))
2766 rc_str = default_menurc;
2767 else if (!strcmp(text, "Mew / Wanderlust"))
2768 rc_str = mew_wl_menurc;
2769 else if (!strcmp(text, "Mutt"))
2770 rc_str = mutt_menurc;
2771 else if (!strcmp(text, _("Old Sylpheed")))
2772 rc_str = old_sylpheed_menurc;
2776 menu_factory_clear_rc(rc_str);
2777 gtk_item_factory_parse_rc_string(rc_str);
2779 gtk_widget_destroy(keybind.window);
2780 keybind.window = NULL;
2781 keybind.combo = NULL;
2784 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
2787 GtkWidget *menuitem;
2790 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2791 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2792 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
2793 g_free(*((gchar **)pparam->data));
2794 *((gchar **)pparam->data) = g_strdup(charset);
2797 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
2799 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2802 g_return_if_fail(optmenu != NULL);
2803 g_return_if_fail(*((gchar **)pparam->data) != NULL);
2805 index = menu_find_option_menu_index(optmenu, *((gchar **)pparam->data),
2806 (GCompareFunc)strcmp);
2808 gtk_option_menu_set_history(optmenu, index);
2810 gtk_option_menu_set_history(optmenu, 0);
2811 prefs_common_charset_set_data_from_optmenu(pparam);
2815 static void prefs_common_encoding_set_data_from_optmenu(PrefParam *pparam)
2818 GtkWidget *menuitem;
2820 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2821 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2822 *((TransferEncodingMethod *)pparam->data) = GPOINTER_TO_INT
2823 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2826 static void prefs_common_encoding_set_optmenu(PrefParam *pparam)
2828 TransferEncodingMethod method =
2829 *((TransferEncodingMethod *)pparam->data);
2830 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2833 g_return_if_fail(optmenu != NULL);
2835 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(method),
2838 gtk_option_menu_set_history(optmenu, index);
2840 gtk_option_menu_set_history(optmenu, 0);
2841 prefs_common_encoding_set_data_from_optmenu(pparam);
2845 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
2848 GtkWidget *menuitem;
2850 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2851 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2852 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
2853 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2856 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
2858 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
2859 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2861 GtkWidget *menuitem;
2864 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(mode),
2867 gtk_option_menu_set_history(optmenu, index);
2869 gtk_option_menu_set_history(optmenu, 0);
2870 prefs_common_recv_dialog_set_data_from_optmenu(pparam);
2873 menu = gtk_option_menu_get_menu(optmenu);
2874 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2875 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
2878 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam)
2881 GtkWidget *menuitem;
2883 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2884 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2885 *((SendDialogMode *)pparam->data) = GPOINTER_TO_INT
2886 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2889 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam)
2891 SendDialogMode mode = *((SendDialogMode *)pparam->data);
2892 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2894 GtkWidget *menuitem;
2897 case SEND_DIALOG_ALWAYS:
2898 gtk_option_menu_set_history(optmenu, 0);
2900 case SEND_DIALOG_NEVER:
2901 gtk_option_menu_set_history(optmenu, 1);
2907 menu = gtk_option_menu_get_menu(optmenu);
2908 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2909 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
2912 static void prefs_common_apply(void)
2914 MainWindow *mainwindow;
2916 prefs_set_data_from_dialog(param);
2917 sock_set_io_timeout(prefs_common.io_timeout_secs);
2918 main_window_reflect_prefs_all_real(FALSE);
2919 prefs_common_write_config();
2921 mainwindow = mainwindow_get_mainwindow();
2922 log_window_set_clipping(mainwindow->logwin, prefs_common.cliplog,
2923 prefs_common.loglength);
2925 inc_autocheck_timer_remove();
2926 inc_autocheck_timer_set();
2929 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
2932 GtkWidget *menuitem;
2934 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2935 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2936 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
2937 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2940 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
2942 NextUnreadMsgDialogShow dialog_show;
2943 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2945 GtkWidget *menuitem;
2947 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
2949 switch (dialog_show) {
2950 case NEXTUNREADMSGDIALOG_ALWAYS:
2951 gtk_option_menu_set_history(optmenu, 0);
2953 case NEXTUNREADMSGDIALOG_ASSUME_YES:
2954 gtk_option_menu_set_history(optmenu, 1);
2956 case NEXTUNREADMSGDIALOG_ASSUME_NO:
2957 gtk_option_menu_set_history(optmenu, 2);
2961 menu = gtk_option_menu_get_menu(optmenu);
2962 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2963 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
2967 static void prefs_common_cancel(void)
2969 gtk_widget_hide(dialog.window);
2974 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
2977 GtkWidget *menuitem;
2979 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2980 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2981 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
2982 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2985 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
2987 RecvDialogShow dialog_show;
2988 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2990 GtkWidget *menuitem;
2992 dialog_show = *((RecvDialogShow *)pparam->data);
2994 switch (dialog_show) {
2995 case RECVDIALOG_ALWAYS:
2996 gtk_option_menu_set_history(optmenu, 0);
2998 case RECVDIALOG_WINDOW_ACTIVE:
2999 gtk_option_menu_set_history(optmenu, 1);
3001 case RECVDIALOG_NEVER:
3002 gtk_option_menu_set_history(optmenu, 2);
3007 menu = gtk_option_menu_get_menu(optmenu);
3008 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3009 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));