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,
697 {"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
700 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
701 P_INT, &other.spinbtn_iotimeout,
702 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
703 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
705 {"important_score", "1", &prefs_common.important_score, P_INT,
707 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
708 &other.checkbtn_cliplog,
709 prefs_set_data_from_toggle, prefs_set_toggle},
710 {"log_length", "500", &prefs_common.loglength, P_INT,
711 &other.loglength_entry,
712 prefs_set_data_from_entry, prefs_set_entry},
714 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
716 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
719 {"color_new", "179", &prefs_common.color_new, P_COLOR,
722 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
725 /* widget creating functions */
726 static void prefs_common_create (void);
727 static void prefs_receive_create (void);
728 static void prefs_send_create (void);
729 static void prefs_compose_create (void);
730 static void prefs_quote_create (void);
731 static void prefs_display_create (void);
732 static void prefs_message_create (void);
733 static void prefs_interface_create (void);
734 static void prefs_other_create (void);
736 static void date_format_ok_btn_clicked (GtkButton *button,
738 static void date_format_cancel_btn_clicked (GtkButton *button,
740 static void date_format_key_pressed (GtkWidget *keywidget,
743 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
746 static void date_format_entry_on_change (GtkEditable *editable,
748 static void date_format_select_row (GtkWidget *date_format_list,
751 GdkEventButton *event,
752 GtkWidget *date_format);
753 static GtkWidget *date_format_create (GtkButton *button,
756 static void prefs_keybind_select (void);
757 static gint prefs_keybind_deleted (GtkWidget *widget,
760 static void prefs_keybind_key_pressed (GtkWidget *widget,
763 static void prefs_keybind_cancel (void);
764 static void prefs_keybind_apply_clicked (GtkWidget *widget);
766 static void prefs_common_apply (void);
768 typedef struct CommonPage
775 static CommonPage common_page;
777 static void create_widget_func(PrefsPage * _page,
781 CommonPage *page = (CommonPage *) _page;
784 vbox = gtk_vbox_new(FALSE, 6);
785 gtk_widget_show(vbox);
787 if (notebook == NULL)
788 prefs_common_create();
789 gtk_box_pack_start (GTK_BOX (vbox), notebook, TRUE, TRUE, 0);
790 gtk_notebook_set_page(GTK_NOTEBOOK(notebook), 0);
792 prefs_set_dialog(param);
796 page->page.widget = vbox;
799 static void destroy_widget_func(PrefsPage *_page)
801 CommonPage *page = (CommonPage *) _page;
803 gtk_container_remove(GTK_CONTAINER (page->vbox), notebook);
806 static void save_func(PrefsPage * _page)
808 prefs_common_apply();
811 void prefs_common_init(void)
813 static gchar *path[2];
815 prefs_common.disphdr_list = NULL;
817 path[0] = _("Common");
820 common_page.page.path = path;
821 common_page.page.weight = 1000.0;
822 common_page.page.create_widget = create_widget_func;
823 common_page.page.destroy_widget = destroy_widget_func;
824 common_page.page.save_page = save_func;
826 prefs_gtk_register_page((PrefsPage *) &common_page);
829 PrefsCommon *prefs_common_get(void)
831 return &prefs_common;
835 * Read history list from the specified history file
837 GList *prefs_common_read_history(const gchar *history)
841 gchar buf[PREFSBUFSIZE];
844 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
846 if ((fp = fopen(path, "rb")) == NULL) {
847 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
852 while (fgets(buf, sizeof(buf), fp) != NULL) {
854 if (buf[0] == '\0') continue;
855 tmp = add_history(tmp, buf);
859 tmp = g_list_reverse(tmp);
864 void prefs_common_read_config(void)
866 prefs_read_config(param, "Common", COMMON_RC);
868 prefs_common.mime_open_cmd_history =
869 prefs_common_read_history(COMMAND_HISTORY);
870 prefs_common.summary_quicksearch_history =
871 prefs_common_read_history(QUICKSEARCH_HISTORY);
875 * Save history list to the specified history file
877 void prefs_common_save_history(const gchar *history, GList *list)
883 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
885 if ((fp = fopen(path, "wb")) == NULL) {
886 FILE_OP_ERROR(path, "fopen");
891 for (cur = list; cur != NULL; cur = cur->next) {
892 fputs((gchar *)cur->data, fp);
900 void prefs_common_write_config(void)
902 prefs_write_config(param, "Common", COMMON_RC);
904 prefs_common_save_history(COMMAND_HISTORY,
905 prefs_common.mime_open_cmd_history);
906 prefs_common_save_history(QUICKSEARCH_HISTORY,
907 prefs_common.summary_quicksearch_history);
910 static void prefs_common_create(void)
914 debug_print("Creating common preferences window...\n");
916 notebook = gtk_notebook_new ();
917 gtk_widget_show(notebook);
918 gtk_container_set_border_width (GTK_CONTAINER (notebook), 2);
919 /* GTK_WIDGET_UNSET_FLAGS (notebook, GTK_CAN_FOCUS); */
920 gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook), TRUE);
922 gtk_notebook_popup_enable (GTK_NOTEBOOK (notebook));
924 gtk_widget_ref(notebook);
926 /* create all widgets on notebook */
927 prefs_receive_create();
928 SET_NOTEBOOK_LABEL(notebook, _("Receive"), page++);
930 SET_NOTEBOOK_LABEL(notebook, _("Send"), page++);
931 prefs_compose_create();
932 SET_NOTEBOOK_LABEL(notebook, _("Compose"), page++);
933 prefs_quote_create();
934 SET_NOTEBOOK_LABEL(notebook, _("Quote"), page++);
935 prefs_display_create();
936 SET_NOTEBOOK_LABEL(notebook, _("Display"), page++);
937 prefs_message_create();
938 SET_NOTEBOOK_LABEL(notebook, _("Message"), page++);
939 prefs_interface_create();
940 SET_NOTEBOOK_LABEL(notebook, _("Interface"), page++);
941 prefs_other_create();
942 SET_NOTEBOOK_LABEL(notebook, _("Other"), page++);
944 gtk_widget_show_all(notebook);
947 static void prefs_receive_create(void)
951 GtkWidget *frame_incext;
952 GtkWidget *checkbtn_incext;
954 GtkWidget *label_incext;
955 GtkWidget *entry_incext;
956 /* GtkWidget *button_incext; */
958 GtkWidget *hbox_autochk;
959 GtkWidget *checkbtn_autochk;
960 GtkWidget *label_autochk1;
961 GtkObject *spinbtn_autochk_adj;
962 GtkWidget *spinbtn_autochk;
963 GtkWidget *label_autochk2;
964 GtkWidget *checkbtn_chkonstartup;
965 GtkWidget *checkbtn_scan_after_inc;
968 GtkWidget *frame_newmail;
969 GtkWidget *hbox_newmail_notify;
970 GtkWidget *checkbtn_newmail_auto;
971 GtkWidget *checkbtn_newmail_manu;
972 GtkWidget *entry_newmail_notify_cmd;
973 GtkWidget *label_newmail_notify_cmd;
975 GtkWidget *hbox_recvdialog;
976 GtkWidget *label_recvdialog;
979 GtkWidget *optmenu_recvdialog;
980 GtkWidget *checkbtn_no_recv_err_panel;
981 GtkWidget *checkbtn_close_recv_dialog;
983 vbox1 = gtk_vbox_new (FALSE, VSPACING);
984 gtk_widget_show (vbox1);
985 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
986 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
988 PACK_FRAME(vbox1, frame_incext, _("External program"));
990 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
991 gtk_widget_show (vbox2);
992 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
993 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
995 /* Use of external incorporation program */
996 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
997 _("Use external program for incorporation"));
999 hbox = gtk_hbox_new (FALSE, 8);
1000 gtk_widget_show (hbox);
1001 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1002 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1004 label_incext = gtk_label_new (_("Command"));
1005 gtk_widget_show (label_incext);
1006 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1008 entry_incext = gtk_entry_new ();
1009 gtk_widget_show (entry_incext);
1010 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1013 button_incext = gtk_button_new_with_label ("... ");
1014 gtk_widget_show (button_incext);
1015 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1018 vbox2 = gtk_vbox_new (FALSE, 0);
1019 gtk_widget_show (vbox2);
1020 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1023 hbox_autochk = gtk_hbox_new (FALSE, 8);
1024 gtk_widget_show (hbox_autochk);
1025 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1027 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1028 _("Auto-check new mail"));
1030 label_autochk1 = gtk_label_new (_("every"));
1031 gtk_widget_show (label_autochk1);
1032 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1034 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1035 spinbtn_autochk = gtk_spin_button_new
1036 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1037 gtk_widget_show (spinbtn_autochk);
1038 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1039 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1040 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1042 label_autochk2 = gtk_label_new (_("minute(s)"));
1043 gtk_widget_show (label_autochk2);
1044 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1046 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1047 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1048 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1050 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1051 _("Check new mail on startup"));
1052 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1053 _("Update all local folders after incorporation"));
1056 /* receive dialog */
1057 hbox_recvdialog = gtk_hbox_new (FALSE, 8);
1058 gtk_widget_show (hbox_recvdialog);
1059 gtk_box_pack_start (GTK_BOX (vbox2), hbox_recvdialog, FALSE, FALSE, 0);
1061 label_recvdialog = gtk_label_new (_("Show receive dialog"));
1062 gtk_misc_set_alignment(GTK_MISC(label_recvdialog), 0, 0.5);
1063 gtk_widget_show (label_recvdialog);
1064 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), label_recvdialog, FALSE, FALSE, 0);
1066 optmenu_recvdialog = gtk_option_menu_new ();
1067 gtk_widget_show (optmenu_recvdialog);
1068 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), optmenu_recvdialog, FALSE, FALSE, 0);
1070 menu = gtk_menu_new ();
1071 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
1072 MENUITEM_ADD (menu, menuitem, _("Only on manual receiving"),
1073 RECV_DIALOG_MANUAL);
1074 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
1076 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
1078 PACK_CHECK_BUTTON (vbox2, checkbtn_no_recv_err_panel,
1079 _("Don't popup error dialog on receive error"));
1081 PACK_CHECK_BUTTON (vbox2, checkbtn_close_recv_dialog,
1082 _("Close receive dialog when finished"));
1084 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1086 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1087 gtk_widget_show (vbox2);
1088 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1089 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1091 hbox = gtk_hbox_new (TRUE, 8);
1092 gtk_widget_show (hbox);
1093 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1094 _("after autochecking"));
1095 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1096 _("after manual checking"));
1097 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1098 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1099 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1101 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1102 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1105 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1106 gtk_widget_show (hbox);
1107 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1110 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1111 "(use %d as number of new "
1113 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1115 gtk_widget_show (label_newmail_notify_cmd);
1116 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1117 label_newmail_notify_cmd, FALSE, FALSE, 0);
1119 entry_newmail_notify_cmd = gtk_entry_new ();
1120 gtk_widget_show (entry_newmail_notify_cmd);
1121 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1122 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1124 gtk_widget_set_sensitive(hbox_newmail_notify,
1125 prefs_common.newmail_notify_auto ||
1126 prefs_common.newmail_notify_manu);
1128 receive.checkbtn_incext = checkbtn_incext;
1129 receive.entry_incext = entry_incext;
1130 /* receive.button_incext = button_incext; */
1132 receive.checkbtn_autochk = checkbtn_autochk;
1133 receive.spinbtn_autochk = spinbtn_autochk;
1134 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1136 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1137 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1140 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1141 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1142 receive.hbox_newmail_notify = hbox_newmail_notify;
1143 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1144 receive.optmenu_recvdialog = optmenu_recvdialog;
1145 receive.checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
1146 receive.checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
1149 static void prefs_send_create(void)
1154 GtkWidget *checkbtn_savemsg;
1155 GtkWidget *label_outcharset;
1156 GtkWidget *optmenu_charset;
1157 GtkWidget *optmenu_menu;
1158 GtkWidget *menuitem;
1159 GtkTooltips *charset_tooltip;
1160 GtkWidget *optmenu_encoding;
1161 GtkWidget *label_encoding;
1162 GtkTooltips *encoding_tooltip;
1163 GtkWidget *label_senddialog;
1165 GtkWidget *optmenu_senddialog;
1166 GtkWidget *hbox_senddialog;
1168 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1169 gtk_widget_show (vbox1);
1170 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1171 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1173 vbox2 = gtk_vbox_new (FALSE, 0);
1174 gtk_widget_show (vbox2);
1175 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1177 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1178 _("Save sent messages to Sent folder"));
1180 hbox_senddialog = gtk_hbox_new (FALSE, 8);
1181 gtk_box_pack_start (GTK_BOX (vbox1), hbox_senddialog, FALSE, FALSE, 0);
1183 label_senddialog = gtk_label_new (_("Show send dialog"));
1184 gtk_widget_show (label_senddialog);
1185 gtk_box_pack_start (GTK_BOX (hbox_senddialog), label_senddialog, FALSE, FALSE, 0);
1187 optmenu_senddialog = gtk_option_menu_new ();
1188 gtk_widget_show (optmenu_senddialog);
1189 gtk_box_pack_start (GTK_BOX (hbox_senddialog), optmenu_senddialog, FALSE, FALSE, 0);
1191 menu = gtk_menu_new ();
1192 MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
1193 MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
1195 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
1197 hbox1 = gtk_hbox_new (FALSE, 8);
1198 gtk_widget_show (hbox1);
1199 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1201 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1202 gtk_widget_show (label_outcharset);
1203 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1205 charset_tooltip = gtk_tooltips_new();
1207 optmenu_charset = gtk_option_menu_new ();
1208 gtk_widget_show (optmenu_charset);
1209 gtk_tooltips_set_tip(GTK_TOOLTIPS(charset_tooltip), optmenu_charset,
1210 _("If `Automatic' is selected, the optimal encoding"
1211 " for the current locale will be used"),
1213 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_charset, FALSE, FALSE, 0);
1215 optmenu_menu = gtk_menu_new ();
1217 #define SET_MENUITEM(str, data) \
1219 MENUITEM_ADD(optmenu_menu, menuitem, str, data); \
1222 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1223 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1225 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1227 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1228 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1229 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1230 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1231 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1232 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1233 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1235 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1237 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1239 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1240 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1242 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1244 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1245 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1247 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1248 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1250 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1251 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1253 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1254 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1255 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1257 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_charset),
1260 hbox1 = gtk_hbox_new (FALSE, 8);
1261 gtk_widget_show (hbox1);
1262 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1264 hbox1 = gtk_hbox_new (FALSE, 8);
1265 gtk_widget_show (hbox1);
1266 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1268 label_encoding = gtk_label_new (_("Transfer encoding"));
1269 gtk_widget_show (label_encoding);
1270 gtk_box_pack_start (GTK_BOX (hbox1), label_encoding, FALSE, FALSE, 0);
1272 encoding_tooltip = gtk_tooltips_new();
1274 optmenu_encoding = gtk_option_menu_new ();
1275 gtk_widget_show (optmenu_encoding);
1276 gtk_tooltips_set_tip(GTK_TOOLTIPS(encoding_tooltip), optmenu_encoding,
1277 _("Specify Content-Transfer-Encoding used when"
1278 " message body contains non-ASCII characters"),
1280 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_encoding, FALSE, FALSE, 0);
1282 optmenu_menu = gtk_menu_new ();
1284 SET_MENUITEM(_("Automatic"), CTE_AUTO);
1285 SET_MENUITEM("base64", CTE_BASE64);
1286 SET_MENUITEM("quoted-printable", CTE_QUOTED_PRINTABLE);
1287 SET_MENUITEM("8bit", CTE_8BIT);
1289 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_encoding),
1292 hbox1 = gtk_hbox_new (FALSE, 8);
1293 gtk_widget_show (hbox1);
1294 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1296 p_send.checkbtn_savemsg = checkbtn_savemsg;
1297 p_send.optmenu_senddialog = optmenu_senddialog;
1299 p_send.optmenu_charset = optmenu_charset;
1300 p_send.optmenu_encoding_method = optmenu_encoding;
1303 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1307 toggled = gtk_toggle_button_get_active
1308 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1309 gtk_toggle_button_get_active
1310 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1311 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1314 static void prefs_compose_create(void)
1319 GtkWidget *checkbtn_autoextedit;
1321 GtkWidget *frame_autosel;
1322 GtkWidget *hbox_autosel;
1323 GtkWidget *checkbtn_reply_account_autosel;
1324 GtkWidget *checkbtn_forward_account_autosel;
1325 GtkWidget *checkbtn_reedit_account_autosel;
1327 GtkWidget *hbox_undolevel;
1328 GtkWidget *label_undolevel;
1329 GtkObject *spinbtn_undolevel_adj;
1330 GtkWidget *spinbtn_undolevel;
1334 GtkWidget *checkbtn_default_reply_list;
1336 GtkWidget *checkbtn_forward_as_attachment;
1337 GtkWidget *checkbtn_redirect_keep_from;
1338 GtkWidget *checkbtn_block_cursor;
1340 GtkWidget *hbox_autosave;
1341 GtkWidget *checkbtn_autosave;
1342 GtkWidget *entry_autosave_length;
1343 GtkWidget *label_autosave_length;
1345 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1346 gtk_widget_show (vbox1);
1347 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1348 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1350 /* Account autoselection */
1351 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1353 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1354 gtk_widget_show (hbox_autosel);
1355 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1356 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1358 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1359 _("when replying"));
1360 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1361 _("when forwarding"));
1362 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1363 _("when re-editing"));
1365 vbox2 = gtk_vbox_new (FALSE, 0);
1366 gtk_widget_show (vbox2);
1367 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1369 PACK_CHECK_BUTTON (vbox2, checkbtn_default_reply_list,
1370 _("Reply button invokes mailing list reply"));
1372 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1373 _("Automatically launch the external editor"));
1375 hbox5 = gtk_hbox_new (FALSE, 8);
1376 gtk_widget_show (hbox5);
1377 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1379 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1380 _("Forward as attachment"));
1382 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1385 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1386 _("Keep the original 'From' header when redirecting"));
1389 hbox_autosave = gtk_hbox_new (FALSE, 8);
1390 gtk_widget_show (hbox_autosave);
1391 gtk_box_pack_start (GTK_BOX (vbox1), hbox_autosave, FALSE, FALSE, 0);
1393 PACK_CHECK_BUTTON (hbox_autosave, checkbtn_autosave,
1394 _("Autosave to Drafts folder every "));
1396 entry_autosave_length = gtk_entry_new();
1397 gtk_widget_set_usize (entry_autosave_length, 64, -1);
1398 gtk_widget_show (entry_autosave_length);
1399 gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
1401 label_autosave_length = gtk_label_new(_("characters"));
1402 gtk_widget_show (label_autosave_length);
1403 gtk_box_pack_start (GTK_BOX (hbox_autosave), label_autosave_length, FALSE, FALSE, 0);
1405 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1406 gtk_widget_show (hbox_undolevel);
1407 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1409 label_undolevel = gtk_label_new (_("Undo level"));
1410 gtk_widget_show (label_undolevel);
1411 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1413 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1414 spinbtn_undolevel = gtk_spin_button_new
1415 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1416 gtk_widget_show (spinbtn_undolevel);
1417 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1418 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1419 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1422 compose.checkbtn_quote = checkbtn_quote;
1423 compose.entry_quotemark = entry_quotemark;
1424 compose.text_quotefmt = text_quotefmt;
1427 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1429 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1430 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1431 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1433 compose.spinbtn_undolevel = spinbtn_undolevel;
1434 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1436 compose.checkbtn_autosave = checkbtn_autosave;
1437 compose.entry_autosave_length = entry_autosave_length;
1439 compose.checkbtn_forward_as_attachment =
1440 checkbtn_forward_as_attachment;
1441 compose.checkbtn_redirect_keep_from =
1442 checkbtn_redirect_keep_from;
1443 compose.checkbtn_block_cursor =
1444 checkbtn_block_cursor;
1445 compose.checkbtn_default_reply_list = checkbtn_default_reply_list;
1448 static void prefs_quote_create(void)
1451 GtkWidget *frame_quote;
1452 GtkWidget *vbox_quote;
1455 GtkWidget *label_quotemark;
1456 GtkWidget *entry_quotemark;
1457 GtkWidget *scrolledwin_quotefmt;
1458 GtkWidget *text_quotefmt;
1460 GtkWidget *entry_fw_quotemark;
1461 GtkWidget *text_fw_quotefmt;
1463 GtkWidget *entry_quote_chars;
1464 GtkWidget *label_quote_chars;
1466 GtkWidget *btn_quotedesc;
1468 GtkWidget *checkbtn_reply_with_quote;
1470 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1471 gtk_widget_show (vbox1);
1472 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1473 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1477 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1479 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1481 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1482 gtk_widget_show (vbox_quote);
1483 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1484 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1486 hbox1 = gtk_hbox_new (FALSE, 32);
1487 gtk_widget_show (hbox1);
1488 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1490 hbox2 = gtk_hbox_new (FALSE, 8);
1491 gtk_widget_show (hbox2);
1492 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1494 label_quotemark = gtk_label_new (_("Quotation mark"));
1495 gtk_widget_show (label_quotemark);
1496 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1498 entry_quotemark = gtk_entry_new ();
1499 gtk_widget_show (entry_quotemark);
1500 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
1501 gtk_widget_set_usize (entry_quotemark, 64, -1);
1503 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1504 gtk_widget_show (scrolledwin_quotefmt);
1505 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1506 gtk_scrolled_window_set_policy
1507 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1508 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1510 text_quotefmt = gtk_text_new (NULL, NULL);
1511 gtk_widget_show (text_quotefmt);
1512 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
1513 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
1514 gtk_widget_set_usize(text_quotefmt, -1, 60);
1518 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
1520 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1521 gtk_widget_show (vbox_quote);
1522 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1523 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1525 hbox1 = gtk_hbox_new (FALSE, 32);
1526 gtk_widget_show (hbox1);
1527 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1529 hbox2 = gtk_hbox_new (FALSE, 8);
1530 gtk_widget_show (hbox2);
1531 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1533 label_quotemark = gtk_label_new (_("Quotation mark"));
1534 gtk_widget_show (label_quotemark);
1535 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1537 entry_fw_quotemark = gtk_entry_new ();
1538 gtk_widget_show (entry_fw_quotemark);
1539 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
1541 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
1543 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1544 gtk_widget_show (scrolledwin_quotefmt);
1545 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1546 gtk_scrolled_window_set_policy
1547 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1548 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1550 text_fw_quotefmt = gtk_text_new (NULL, NULL);
1551 gtk_widget_show (text_fw_quotefmt);
1552 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
1554 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
1555 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
1557 hbox1 = gtk_hbox_new (FALSE, 32);
1558 gtk_widget_show (hbox1);
1559 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1562 gtk_button_new_with_label (_(" Description of symbols "));
1563 gtk_widget_show (btn_quotedesc);
1564 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
1565 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
1566 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
1570 PACK_FRAME (vbox1, frame_quote, _("Quotation characters"));
1572 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1573 gtk_widget_show (vbox_quote);
1574 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1575 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1577 hbox1 = gtk_hbox_new (FALSE, 32);
1578 gtk_widget_show (hbox1);
1579 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1581 hbox2 = gtk_hbox_new (FALSE, 8);
1582 gtk_widget_show (hbox2);
1583 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1585 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
1586 gtk_widget_show (label_quote_chars);
1587 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
1589 entry_quote_chars = gtk_entry_new ();
1590 gtk_widget_show (entry_quote_chars);
1591 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
1593 gtk_widget_set_usize (entry_quote_chars, 64, -1);
1596 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
1597 quote.entry_quotemark = entry_quotemark;
1598 quote.text_quotefmt = text_quotefmt;
1599 quote.entry_fw_quotemark = entry_fw_quotemark;
1600 quote.text_fw_quotefmt = text_fw_quotefmt;
1601 quote.entry_quote_chars = entry_quote_chars;
1604 static void prefs_display_create(void)
1607 GtkWidget *chkbtn_transhdr;
1608 GtkWidget *chkbtn_folder_unread;
1610 GtkWidget *label_ng_abbrev;
1611 GtkWidget *spinbtn_ng_abbrev_len;
1612 GtkObject *spinbtn_ng_abbrev_len_adj;
1613 GtkWidget *frame_summary;
1615 GtkWidget *chkbtn_swapfrom;
1616 GtkWidget *chkbtn_useaddrbook;
1617 GtkWidget *chkbtn_threadsubj;
1619 GtkWidget *label_datefmt;
1620 GtkWidget *button_datefmt;
1621 GtkWidget *entry_datefmt;
1622 GtkWidget *button_dispitem;
1624 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1625 gtk_widget_show (vbox1);
1626 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1627 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1629 vbox2 = gtk_vbox_new (FALSE, 0);
1630 gtk_widget_show (vbox2);
1631 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
1634 (vbox2, chkbtn_transhdr,
1635 _("Translate header name (such as `From:', `Subject:')"));
1637 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
1638 _("Display unread number next to folder name"));
1640 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1642 hbox1 = gtk_hbox_new (FALSE, 8);
1643 gtk_widget_show (hbox1);
1644 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1646 label_ng_abbrev = gtk_label_new
1647 (_("Abbreviate newsgroup names longer than"));
1648 gtk_widget_show (label_ng_abbrev);
1649 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1651 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
1652 spinbtn_ng_abbrev_len = gtk_spin_button_new
1653 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
1654 gtk_widget_show (spinbtn_ng_abbrev_len);
1655 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
1657 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
1658 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
1661 label_ng_abbrev = gtk_label_new
1663 gtk_widget_show (label_ng_abbrev);
1664 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1666 /* ---- Summary ---- */
1668 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
1670 vbox2 = gtk_vbox_new (FALSE, 0);
1671 gtk_widget_show (vbox2);
1672 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
1673 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1676 (vbox2, chkbtn_swapfrom,
1677 _("Display recipient in `From' column if sender is yourself"));
1679 (vbox2, chkbtn_useaddrbook,
1680 _("Display sender using address book"));
1682 (vbox2, chkbtn_threadsubj,
1683 _("Thread using subject in addition to standard headers"));
1685 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1687 hbox1 = gtk_hbox_new (FALSE, 8);
1688 gtk_widget_show (hbox1);
1689 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1691 label_datefmt = gtk_label_new (_("Date format"));
1692 gtk_widget_show (label_datefmt);
1693 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
1695 entry_datefmt = gtk_entry_new ();
1696 gtk_widget_show (entry_datefmt);
1697 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
1699 button_datefmt = gtk_button_new_with_label (" ... ");
1701 gtk_widget_show (button_datefmt);
1702 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
1703 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
1704 GTK_SIGNAL_FUNC (date_format_create), NULL);
1706 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
1708 hbox1 = gtk_hbox_new (FALSE, 8);
1709 gtk_widget_show (hbox1);
1710 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1712 button_dispitem = gtk_button_new_with_label
1713 (_(" Set displayed items in summary... "));
1714 gtk_widget_show (button_dispitem);
1715 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
1716 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
1717 GTK_SIGNAL_FUNC (prefs_summary_column_open),
1720 display.chkbtn_transhdr = chkbtn_transhdr;
1721 display.chkbtn_folder_unread = chkbtn_folder_unread;
1722 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
1723 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
1725 display.chkbtn_swapfrom = chkbtn_swapfrom;
1726 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
1727 display.chkbtn_threadsubj = chkbtn_threadsubj;
1728 display.entry_datefmt = entry_datefmt;
1731 static void prefs_message_create(void)
1737 GtkWidget *chkbtn_mbalnum;
1738 GtkWidget *chkbtn_disphdrpane;
1739 GtkWidget *chkbtn_disphdr;
1740 GtkWidget *button_edit_disphdr;
1741 GtkWidget *hbox_linespc;
1742 GtkWidget *label_linespc;
1743 GtkObject *spinbtn_linespc_adj;
1744 GtkWidget *spinbtn_linespc;
1745 GtkWidget *chkbtn_headspc;
1747 GtkWidget *frame_scr;
1748 GtkWidget *vbox_scr;
1749 GtkWidget *chkbtn_smoothscroll;
1750 GtkWidget *hbox_scr;
1751 GtkWidget *label_scr;
1752 GtkObject *spinbtn_scrollstep_adj;
1753 GtkWidget *spinbtn_scrollstep;
1754 GtkWidget *chkbtn_halfpage;
1756 GtkWidget *chkbtn_attach_desc;
1758 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1759 gtk_widget_show (vbox1);
1760 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1761 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1763 vbox2 = gtk_vbox_new (FALSE, 0);
1764 gtk_widget_show (vbox2);
1765 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1768 (vbox2, chkbtn_mbalnum,
1769 _("Display multi-byte alphanumeric as\n"
1770 "ASCII character (Japanese only)"));
1771 gtk_label_set_justify (GTK_LABEL (GTK_BIN(chkbtn_mbalnum)->child),
1774 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
1775 _("Display header pane above message view"));
1777 hbox1 = gtk_hbox_new (FALSE, 8);
1778 gtk_widget_show (hbox1);
1779 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1781 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
1782 _("Display short headers on message view"));
1784 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
1785 gtk_widget_show (button_edit_disphdr);
1786 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
1788 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
1789 GTK_SIGNAL_FUNC (prefs_display_header_open),
1792 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
1794 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1796 hbox1 = gtk_hbox_new (FALSE, 32);
1797 gtk_widget_show (hbox1);
1798 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1800 hbox_linespc = gtk_hbox_new (FALSE, 8);
1801 gtk_widget_show (hbox1);
1802 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
1804 label_linespc = gtk_label_new (_("Line space"));
1805 gtk_widget_show (label_linespc);
1806 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1809 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
1810 spinbtn_linespc = gtk_spin_button_new
1811 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
1812 gtk_widget_show (spinbtn_linespc);
1813 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
1815 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
1816 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
1818 label_linespc = gtk_label_new (_("pixel(s)"));
1819 gtk_widget_show (label_linespc);
1820 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1823 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Indent text"));
1825 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
1827 vbox_scr = gtk_vbox_new (FALSE, 0);
1828 gtk_widget_show (vbox_scr);
1829 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
1830 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
1832 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
1834 hbox1 = gtk_hbox_new (FALSE, 32);
1835 gtk_widget_show (hbox1);
1836 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
1838 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
1840 hbox_scr = gtk_hbox_new (FALSE, 8);
1841 gtk_widget_show (hbox_scr);
1842 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
1844 label_scr = gtk_label_new (_("Step"));
1845 gtk_widget_show (label_scr);
1846 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1848 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
1849 spinbtn_scrollstep = gtk_spin_button_new
1850 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
1851 gtk_widget_show (spinbtn_scrollstep);
1852 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
1854 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
1855 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
1858 label_scr = gtk_label_new (_("pixel(s)"));
1859 gtk_widget_show (label_scr);
1860 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1862 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
1864 vbox3 = gtk_vbox_new (FALSE, 0);
1865 gtk_widget_show (vbox3);
1866 gtk_box_pack_start (GTK_BOX (vbox1), vbox3, FALSE, FALSE, 0);
1868 PACK_CHECK_BUTTON(vbox3, chkbtn_attach_desc,
1869 _("Show attachment descriptions (rather than names)"));
1871 message.chkbtn_mbalnum = chkbtn_mbalnum;
1872 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
1873 message.chkbtn_disphdr = chkbtn_disphdr;
1874 message.spinbtn_linespc = spinbtn_linespc;
1875 message.chkbtn_headspc = chkbtn_headspc;
1877 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
1878 message.spinbtn_scrollstep = spinbtn_scrollstep;
1879 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
1880 message.chkbtn_halfpage = chkbtn_halfpage;
1882 message.chkbtn_attach_desc = chkbtn_attach_desc;
1885 static void prefs_interface_create(void)
1890 /* GtkWidget *checkbtn_emacs; */
1891 GtkWidget *checkbtn_always_show_msg;
1892 GtkWidget *checkbtn_openunread;
1893 GtkWidget *checkbtn_mark_as_read_on_newwin;
1894 GtkWidget *checkbtn_openinbox;
1895 GtkWidget *checkbtn_immedexec;
1896 GtkTooltips *immedexec_tooltip;
1900 GtkWidget *menuitem;
1902 GtkWidget *button_keybind;
1904 GtkWidget *hbox_nextunreadmsgdialog;
1905 GtkWidget *optmenu_nextunreadmsgdialog;
1907 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1908 gtk_widget_show (vbox1);
1909 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1910 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1912 vbox2 = gtk_vbox_new (FALSE, 0);
1913 gtk_widget_show (vbox2);
1914 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1916 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
1917 _("Emulate the behavior of mouse operation of\n"
1918 "Emacs-based mailer"));
1919 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
1920 GTK_JUSTIFY_LEFT); */
1923 (vbox2, checkbtn_always_show_msg,
1924 _("Always open messages in summary when selected"));
1927 (vbox2, checkbtn_openunread,
1928 _("Open first unread message when entering a folder"));
1931 (vbox2, checkbtn_mark_as_read_on_newwin,
1932 _("Only mark message as read when opened in new window"));
1935 (vbox2, checkbtn_openinbox,
1936 _("Go to inbox after receiving new mail"));
1938 vbox3 = gtk_vbox_new (FALSE, 0);
1939 gtk_widget_show (vbox3);
1940 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
1942 immedexec_tooltip = gtk_tooltips_new();
1945 (vbox3, checkbtn_immedexec,
1946 _("Execute immediately when moving or deleting messages"));
1947 gtk_tooltips_set_tip(GTK_TOOLTIPS(immedexec_tooltip), checkbtn_immedexec,
1948 _("Messages will be marked until execution"
1949 " if this is turned off"),
1952 hbox1 = gtk_hbox_new (FALSE, 0);
1953 gtk_widget_show (hbox1);
1954 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
1956 /* Next Unread Message Dialog */
1957 hbox_nextunreadmsgdialog = gtk_hbox_new (FALSE, 8);
1958 gtk_widget_show (hbox1);
1959 gtk_box_pack_start (GTK_BOX (vbox1), hbox_nextunreadmsgdialog, FALSE, FALSE, 0);
1961 label = gtk_label_new (_("Show no-unread-message dialog"));
1962 gtk_widget_show (label);
1963 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), label, FALSE, FALSE, 8);
1965 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
1966 gtk_widget_show (optmenu_nextunreadmsgdialog);
1967 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), optmenu_nextunreadmsgdialog, FALSE, FALSE, 8);
1969 menu = gtk_menu_new ();
1970 MENUITEM_ADD (menu, menuitem, _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
1971 MENUITEM_ADD (menu, menuitem, _("Assume 'Yes'"),
1972 NEXTUNREADMSGDIALOG_ASSUME_YES);
1973 MENUITEM_ADD (menu, menuitem, _("Assume 'No'"),
1974 NEXTUNREADMSGDIALOG_ASSUME_NO);
1976 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog), menu);
1978 hbox1 = gtk_hbox_new (FALSE, 8);
1979 gtk_widget_show (hbox1);
1980 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1982 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
1983 gtk_widget_show (button_keybind);
1984 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
1985 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
1986 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
1988 /* interface.checkbtn_emacs = checkbtn_emacs; */
1989 interface.checkbtn_always_show_msg = checkbtn_always_show_msg;
1990 interface.checkbtn_openunread = checkbtn_openunread;
1991 interface.checkbtn_mark_as_read_on_newwin
1992 = checkbtn_mark_as_read_on_newwin;
1993 interface.checkbtn_openinbox = checkbtn_openinbox;
1994 interface.checkbtn_immedexec = checkbtn_immedexec;
1995 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
1998 static void prefs_other_create(void)
2003 GtkWidget *frame_addr;
2004 GtkWidget *vbox_addr;
2005 GtkWidget *checkbtn_addaddrbyclick;
2007 GtkWidget *frame_cliplog;
2008 GtkWidget *vbox_cliplog;
2009 GtkWidget *hbox_cliplog;
2010 GtkWidget *checkbtn_cliplog;
2011 GtkWidget *loglength_label;
2012 GtkWidget *loglength_entry;
2013 GtkTooltips *loglength_tooltip;
2015 GtkWidget *frame_exit;
2016 GtkWidget *vbox_exit;
2017 GtkWidget *checkbtn_confonexit;
2018 GtkWidget *checkbtn_cleanonexit;
2019 GtkWidget *checkbtn_askonclean;
2020 GtkWidget *checkbtn_warnqueued;
2022 GtkWidget *label_iotimeout;
2023 GtkWidget *spinbtn_iotimeout;
2024 GtkObject *spinbtn_iotimeout_adj;
2028 GtkWidget *frame_ssl;
2029 GtkWidget *vbox_ssl;
2030 GtkWidget *hbox_ssl;
2031 GtkWidget *checkbtn_ssl_ask_unknown_valid;
2034 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2035 gtk_widget_show (vbox1);
2036 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
2037 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2039 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2041 vbox_addr = gtk_vbox_new (FALSE, 0);
2042 gtk_widget_show (vbox_addr);
2043 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2044 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2047 (vbox_addr, checkbtn_addaddrbyclick,
2048 _("Add address to destination when double-clicked"));
2051 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2053 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2054 gtk_widget_show (vbox_cliplog);
2055 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2056 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2057 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2058 _("Clip the log size"));
2059 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2060 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2061 gtk_widget_show (hbox_cliplog);
2063 loglength_label = gtk_label_new (_("Log window length"));
2064 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2066 gtk_widget_show (GTK_WIDGET (loglength_label));
2068 loglength_tooltip = gtk_tooltips_new();
2070 loglength_entry = gtk_entry_new ();
2071 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2072 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2074 gtk_widget_show (GTK_WIDGET (loglength_entry));
2075 gtk_tooltips_set_tip(GTK_TOOLTIPS(loglength_tooltip), loglength_entry,
2076 _("0 to stop logging in the log window"),
2078 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2083 PACK_FRAME (vbox1, frame_ssl, _("Security"));
2085 vbox_ssl = gtk_vbox_new (FALSE, 0);
2086 gtk_widget_show (vbox_ssl);
2087 gtk_container_add (GTK_CONTAINER (frame_ssl), vbox_ssl);
2088 gtk_container_set_border_width (GTK_CONTAINER (vbox_ssl), 8);
2089 PACK_CHECK_BUTTON (vbox_ssl, checkbtn_ssl_ask_unknown_valid,
2090 _("Ask before accepting SSL certificates"));
2091 hbox_ssl = gtk_hbox_new (FALSE, 3);
2092 gtk_container_add (GTK_CONTAINER (vbox_ssl), hbox_ssl);
2093 gtk_widget_show (hbox_ssl);
2098 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2100 vbox_exit = gtk_vbox_new (FALSE, 0);
2101 gtk_widget_show (vbox_exit);
2102 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2103 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
2105 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
2106 _("Confirm on exit"));
2108 hbox1 = gtk_hbox_new (FALSE, 32);
2109 gtk_widget_show (hbox1);
2110 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
2112 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
2113 _("Empty trash on exit"));
2114 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
2115 _("Ask before emptying"));
2116 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
2118 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
2119 _("Warn if there are queued messages"));
2121 hbox1 = gtk_hbox_new (FALSE, 8);
2122 gtk_widget_show (hbox1);
2123 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2125 label_iotimeout = gtk_label_new (_("Socket I/O timeout:"));
2126 gtk_widget_show (label_iotimeout);
2127 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2129 spinbtn_iotimeout_adj = gtk_adjustment_new (60, 0, 1000, 1, 10, 10);
2130 spinbtn_iotimeout = gtk_spin_button_new
2131 (GTK_ADJUSTMENT (spinbtn_iotimeout_adj), 1, 0);
2132 gtk_widget_show (spinbtn_iotimeout);
2133 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_iotimeout,
2135 gtk_widget_set_usize (spinbtn_iotimeout, 64, -1);
2136 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_iotimeout), TRUE);
2138 label_iotimeout = gtk_label_new (_("seconds"));
2139 gtk_widget_show (label_iotimeout);
2140 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2142 other.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2144 other.checkbtn_cliplog = checkbtn_cliplog;
2145 other.loglength_entry = loglength_entry;
2147 other.checkbtn_confonexit = checkbtn_confonexit;
2148 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
2149 other.checkbtn_askonclean = checkbtn_askonclean;
2150 other.checkbtn_warnqueued = checkbtn_warnqueued;
2152 other.spinbtn_iotimeout = spinbtn_iotimeout;
2153 other.spinbtn_iotimeout_adj = spinbtn_iotimeout_adj;
2157 other.checkbtn_ssl_ask_unknown_valid = checkbtn_ssl_ask_unknown_valid;
2162 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
2164 GtkWidget *datefmt_sample = NULL;
2167 g_return_if_fail(widget != NULL);
2168 g_return_if_fail(*widget != NULL);
2169 g_return_if_fail(display.entry_datefmt != NULL);
2171 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2172 (GTK_OBJECT(*widget), "datefmt_sample"));
2173 g_return_if_fail(datefmt_sample != NULL);
2175 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
2176 g_free(prefs_common.date_format);
2177 prefs_common.date_format = text;
2178 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
2180 gtk_widget_destroy(*widget);
2184 static void date_format_cancel_btn_clicked(GtkButton *button,
2187 g_return_if_fail(widget != NULL);
2188 g_return_if_fail(*widget != NULL);
2190 gtk_widget_destroy(*widget);
2194 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
2197 if (event && event->keyval == GDK_Escape)
2198 date_format_cancel_btn_clicked(NULL, widget);
2201 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
2202 GdkEventAny *event, GtkWidget **widget)
2204 g_return_val_if_fail(widget != NULL, FALSE);
2205 g_return_val_if_fail(*widget != NULL, FALSE);
2211 static void date_format_entry_on_change(GtkEditable *editable,
2215 struct tm *cal_time;
2219 cur_time = time(NULL);
2220 cal_time = localtime(&cur_time);
2222 text = gtk_editable_get_chars(editable, 0, -1);
2224 strftime(buffer, sizeof buffer, text, cal_time);
2226 gtk_label_set_text(example, buffer);
2229 static void date_format_select_row(GtkWidget *date_format_list, gint row,
2230 gint column, GdkEventButton *event,
2231 GtkWidget *date_format)
2237 GtkWidget *datefmt_sample;
2239 /* only on double click */
2240 if (!event || event->type != GDK_2BUTTON_PRESS) return;
2243 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2244 (GTK_OBJECT(date_format), "datefmt_sample"));
2246 g_return_if_fail(date_format_list != NULL);
2247 g_return_if_fail(date_format != NULL);
2248 g_return_if_fail(datefmt_sample != NULL);
2250 /* get format from clist */
2251 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
2253 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
2254 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
2256 /* insert the format into the text entry */
2257 new_format = g_malloc(strlen(old_format) + 3);
2259 strncpy(new_format, old_format, cur_pos);
2260 new_format[cur_pos] = '\0';
2261 strcat(new_format, format);
2262 strcat(new_format, &old_format[cur_pos]);
2264 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
2265 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
2270 static GtkWidget *date_format_create(GtkButton *button, void *data)
2272 static GtkWidget *datefmt_win = NULL;
2274 GtkWidget *scrolledwindow1;
2275 GtkWidget *datefmt_clist;
2280 GtkWidget *confirm_area;
2282 GtkWidget *cancel_btn;
2283 GtkWidget *datefmt_entry;
2312 const gint TIME_FORMAT_ELEMS =
2313 sizeof time_format / sizeof time_format[0];
2315 time_format[0].txt = _("the full abbreviated weekday name");
2316 time_format[1].txt = _("the full weekday name");
2317 time_format[2].txt = _("the abbreviated month name");
2318 time_format[3].txt = _("the full month name");
2319 time_format[4].txt = _("the preferred date and time for the current locale");
2320 time_format[5].txt = _("the century number (year/100)");
2321 time_format[6].txt = _("the day of the month as a decimal number");
2322 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
2323 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
2324 time_format[9].txt = _("the day of the year as a decimal number");
2325 time_format[10].txt = _("the month as a decimal number");
2326 time_format[11].txt = _("the minute as a decimal number");
2327 time_format[12].txt = _("either AM or PM");
2328 time_format[13].txt = _("the second as a decimal number");
2329 time_format[14].txt = _("the day of the week as a decimal number");
2330 time_format[15].txt = _("the preferred date for the current locale");
2331 time_format[16].txt = _("the last two digits of a year");
2332 time_format[17].txt = _("the year as a decimal number");
2333 time_format[18].txt = _("the time zone or name or abbreviation");
2335 if (datefmt_win) return datefmt_win;
2337 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
2338 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
2339 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
2340 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2341 gtk_widget_set_usize(datefmt_win, 440, 280);
2343 vbox1 = gtk_vbox_new(FALSE, 10);
2344 gtk_widget_show(vbox1);
2345 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
2347 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
2348 gtk_scrolled_window_set_policy
2349 (GTK_SCROLLED_WINDOW(scrolledwindow1),
2350 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
2351 gtk_widget_show(scrolledwindow1);
2352 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
2354 titles[0] = _("Specifier");
2355 titles[1] = _("Description");
2356 datefmt_clist = gtk_clist_new_with_titles(2, titles);
2357 gtk_widget_show(datefmt_clist);
2358 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
2359 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
2360 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
2361 GTK_SELECTION_BROWSE);
2363 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
2365 /* phoney casting necessary because of gtk... */
2366 text[0] = (gchar *)time_format[i].fmt;
2367 text[1] = (gchar *)time_format[i].txt;
2368 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
2371 table = gtk_table_new(2, 2, FALSE);
2372 gtk_widget_show(table);
2373 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
2374 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
2375 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
2377 label1 = gtk_label_new(_("Date format"));
2378 gtk_widget_show(label1);
2379 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
2381 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
2382 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
2384 datefmt_entry = gtk_entry_new_with_max_length(256);
2385 gtk_widget_show(datefmt_entry);
2386 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
2387 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2389 /* we need the "sample" entry box; add it as data so callbacks can
2390 * get the entry box */
2391 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
2394 label2 = gtk_label_new(_("Example"));
2395 gtk_widget_show(label2);
2396 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
2398 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
2399 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
2401 label3 = gtk_label_new("");
2402 gtk_widget_show(label3);
2403 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
2404 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2405 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
2406 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
2408 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
2409 &cancel_btn, _("Cancel"), NULL, NULL);
2410 gtk_widget_grab_default(ok_btn);
2411 gtk_widget_show(confirm_area);
2413 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
2415 /* set the current format */
2416 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
2417 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
2420 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2421 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
2423 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
2424 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
2426 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
2427 GTK_SIGNAL_FUNC(date_format_key_pressed),
2429 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
2430 GTK_SIGNAL_FUNC(date_format_on_delete),
2432 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
2433 GTK_SIGNAL_FUNC(date_format_entry_on_change),
2436 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
2437 GTK_SIGNAL_FUNC(date_format_select_row),
2440 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2441 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
2443 gtk_widget_show(datefmt_win);
2444 manage_window_set_transient(GTK_WINDOW(datefmt_win));
2446 gtk_widget_grab_focus(ok_btn);
2451 static void prefs_keybind_select(void)
2458 GtkWidget *confirm_area;
2460 GtkWidget *cancel_btn;
2462 window = gtk_window_new (GTK_WINDOW_DIALOG);
2463 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
2464 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
2465 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
2466 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
2467 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
2468 manage_window_set_transient (GTK_WINDOW (window));
2470 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2471 gtk_container_add (GTK_CONTAINER (window), vbox1);
2472 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
2474 hbox1 = gtk_hbox_new (FALSE, 8);
2475 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2477 label = gtk_label_new
2478 (_("Select preset:"));
2479 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2480 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2482 hbox1 = gtk_hbox_new (FALSE, 8);
2483 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2485 combo = gtk_combo_new ();
2486 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
2487 gtkut_combo_set_items (GTK_COMBO (combo),
2493 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
2495 hbox1 = gtk_hbox_new (FALSE, 8);
2496 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2498 label = gtk_label_new
2499 (_("You can also modify each menu shortcut by pressing\n"
2500 "any key(s) when placing the mouse pointer on the item."));
2501 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2502 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2504 hbox1 = gtk_hbox_new (FALSE, 8);
2505 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2507 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
2508 &cancel_btn, _("Cancel"), NULL, NULL);
2509 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
2510 gtk_widget_grab_default (ok_btn);
2512 MANAGE_WINDOW_SIGNALS_CONNECT(window);
2513 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2514 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
2515 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
2516 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
2517 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
2518 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
2520 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
2521 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
2524 gtk_widget_show_all(window);
2526 keybind.window = window;
2527 keybind.combo = combo;
2530 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
2533 if (event && event->keyval == GDK_Escape)
2534 prefs_keybind_cancel();
2537 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
2540 prefs_keybind_cancel();
2544 static void prefs_keybind_cancel(void)
2546 gtk_widget_destroy(keybind.window);
2547 keybind.window = NULL;
2548 keybind.combo = NULL;
2551 static void prefs_keybind_apply_clicked(GtkWidget *widget)
2553 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
2557 static gchar *default_menurc =
2558 "(menu-path \"<Main>/File/Empty all Trash folders\" \"\")\n"
2559 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
2560 "(menu-path \"<Main>/File/Print...\" \"\")\n"
2561 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
2563 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2564 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2565 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2566 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
2568 "(menu-path \"<Main>/View/Show or hide/Message view\" \"V\")\n"
2569 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2570 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2571 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2572 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2573 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2574 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
2575 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2576 "(menu-path \"<Main>/View/Message source\" \"<control>U\")\n"
2577 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2578 "(menu-path \"<Main>/View/Update summary\" \"<control><alt>U\")\n"
2580 "(menu-path \"<Main>/Message/Receive/Get from current account\" \"<control>I\")\n"
2581 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2582 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
2583 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
2584 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><control>R\")\n"
2585 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2586 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2587 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
2588 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
2589 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
2590 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
2591 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
2592 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2593 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2594 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2595 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2597 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2598 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2599 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2601 "(menu-path \"<Compose>/Message/Close\" \"<control>W\")\n"
2602 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
2603 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
2604 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
2605 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
2606 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
2607 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
2609 static gchar *mew_wl_menurc =
2610 "(menu-path \"<Main>/File/Empty all Trash folders\" \"<shift>D\")\n"
2611 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
2612 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
2613 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
2615 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2616 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2617 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2618 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
2620 "(menu-path \"<Main>/View/Show or hide/Message view\" \"\")\n"
2621 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
2622 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2623 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2624 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2625 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2626 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
2627 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2628 "(menu-path \"<Main>/View/Message source\" \"<control>U\")\n"
2629 "(menu-path \"<Main>/View/Show all headers\" \"<shift>H\")\n"
2630 "(menu-path \"<Main>/View/Update summary\" \"<shift>S\")\n"
2632 "(menu-path \"<Main>/Message/Receive/Get from current account\" \"<control>I\")\n"
2633 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2634 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
2635 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
2636 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift>A\")\n"
2637 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2638 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2639 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
2640 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
2641 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
2642 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
2643 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
2644 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2645 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2646 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2647 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
2649 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2650 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2651 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2653 "(menu-path \"<Compose>/Message/Close\" \"<alt>W\")\n"
2654 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2655 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2656 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2657 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2658 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2659 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2661 static gchar *mutt_menurc =
2662 "(menu-path \"<Main>/File/Empty all Trash folders\" \"\")\n"
2663 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
2664 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
2665 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
2667 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2668 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2669 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2670 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
2672 "(menu-path \"<Main>/View/Show or hide/Message view\" \"V\")\n"
2673 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2674 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
2675 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
2676 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
2677 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
2678 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
2679 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2680 "(menu-path \"<Main>/View/Message source\" \"<control>U\")\n"
2681 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2682 "(menu-path \"<Main>/View/Update summary\" \"<control><alt>U\")\n"
2684 "(menu-path \"<Main>/Message/Receive/Get from current account\" \"<control>I\")\n"
2685 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2686 "(menu-path \"<Main>/Message/Compose an email message\" \"M\")\n"
2687 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
2688 "(menu-path \"<Main>/Message/Reply to/all\" \"G\")\n"
2689 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2690 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2691 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
2692 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
2693 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
2694 "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
2695 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
2696 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
2697 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2698 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
2699 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2701 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2702 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2703 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2705 "(menu-path \"<Compose>/Message/Close\" \"<alt>W\")\n"
2706 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2707 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2708 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2709 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2710 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2711 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2713 static gchar *old_sylpheed_menurc =
2714 "(menu-path \"<Main>/File/Empty all Trash folders\" \"\")\n"
2715 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
2716 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
2717 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
2719 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2720 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2721 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2722 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
2724 "(menu-path \"<Main>/View/Show or hide/Message view\" \"\")\n"
2725 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2726 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2727 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2728 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2729 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2730 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
2731 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
2732 "(menu-path \"<Main>/View/Message source\" \"<control>U\")\n"
2733 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2734 "(menu-path \"<Main>/View/Update summary\" \"<alt>U\")\n"
2736 "(menu-path \"<Main>/Message/Receive/Get from current account\" \"<alt>I\")\n"
2737 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><alt>I\")\n"
2738 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
2739 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
2740 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><alt>R\")\n"
2741 "(menu-path \"<Main>/Message/Reply to/sender\" \"<control><alt>R\")\n"
2742 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2743 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
2744 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
2745 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
2746 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
2747 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
2748 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2749 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2750 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2751 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2753 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
2754 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
2755 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
2757 "(menu-path \"<Compose>/Message/Close\" \"<alt>W\")\n"
2758 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2759 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2760 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2761 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2762 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2763 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2765 text = gtk_entry_get_text(entry);
2767 if (!strcmp(text, _("Default")))
2768 rc_str = default_menurc;
2769 else if (!strcmp(text, "Mew / Wanderlust"))
2770 rc_str = mew_wl_menurc;
2771 else if (!strcmp(text, "Mutt"))
2772 rc_str = mutt_menurc;
2773 else if (!strcmp(text, _("Old Sylpheed")))
2774 rc_str = old_sylpheed_menurc;
2778 menu_factory_clear_rc(rc_str);
2779 gtk_item_factory_parse_rc_string(rc_str);
2781 gtk_widget_destroy(keybind.window);
2782 keybind.window = NULL;
2783 keybind.combo = NULL;
2786 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
2789 GtkWidget *menuitem;
2792 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2793 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2794 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
2795 g_free(*((gchar **)pparam->data));
2796 *((gchar **)pparam->data) = g_strdup(charset);
2799 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
2801 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2804 g_return_if_fail(optmenu != NULL);
2805 g_return_if_fail(*((gchar **)pparam->data) != NULL);
2807 index = menu_find_option_menu_index(optmenu, *((gchar **)pparam->data),
2808 (GCompareFunc)strcmp);
2810 gtk_option_menu_set_history(optmenu, index);
2812 gtk_option_menu_set_history(optmenu, 0);
2813 prefs_common_charset_set_data_from_optmenu(pparam);
2817 static void prefs_common_encoding_set_data_from_optmenu(PrefParam *pparam)
2820 GtkWidget *menuitem;
2822 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2823 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2824 *((TransferEncodingMethod *)pparam->data) = GPOINTER_TO_INT
2825 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2828 static void prefs_common_encoding_set_optmenu(PrefParam *pparam)
2830 TransferEncodingMethod method =
2831 *((TransferEncodingMethod *)pparam->data);
2832 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2835 g_return_if_fail(optmenu != NULL);
2837 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(method),
2840 gtk_option_menu_set_history(optmenu, index);
2842 gtk_option_menu_set_history(optmenu, 0);
2843 prefs_common_encoding_set_data_from_optmenu(pparam);
2847 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
2850 GtkWidget *menuitem;
2852 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2853 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2854 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
2855 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2858 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
2860 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
2861 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2863 GtkWidget *menuitem;
2866 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(mode),
2869 gtk_option_menu_set_history(optmenu, index);
2871 gtk_option_menu_set_history(optmenu, 0);
2872 prefs_common_recv_dialog_set_data_from_optmenu(pparam);
2875 menu = gtk_option_menu_get_menu(optmenu);
2876 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2877 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
2880 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam)
2883 GtkWidget *menuitem;
2885 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2886 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2887 *((SendDialogMode *)pparam->data) = GPOINTER_TO_INT
2888 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2891 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam)
2893 SendDialogMode mode = *((SendDialogMode *)pparam->data);
2894 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2896 GtkWidget *menuitem;
2899 case SEND_DIALOG_ALWAYS:
2900 gtk_option_menu_set_history(optmenu, 0);
2902 case SEND_DIALOG_NEVER:
2903 gtk_option_menu_set_history(optmenu, 1);
2909 menu = gtk_option_menu_get_menu(optmenu);
2910 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2911 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
2914 static void prefs_common_apply(void)
2916 MainWindow *mainwindow;
2918 prefs_set_data_from_dialog(param);
2919 sock_set_io_timeout(prefs_common.io_timeout_secs);
2920 main_window_reflect_prefs_all_real(FALSE);
2921 prefs_common_write_config();
2923 mainwindow = mainwindow_get_mainwindow();
2924 log_window_set_clipping(mainwindow->logwin, prefs_common.cliplog,
2925 prefs_common.loglength);
2927 inc_autocheck_timer_remove();
2928 inc_autocheck_timer_set();
2931 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
2934 GtkWidget *menuitem;
2936 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2937 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2938 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
2939 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2942 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
2944 NextUnreadMsgDialogShow dialog_show;
2945 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2947 GtkWidget *menuitem;
2949 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
2951 switch (dialog_show) {
2952 case NEXTUNREADMSGDIALOG_ALWAYS:
2953 gtk_option_menu_set_history(optmenu, 0);
2955 case NEXTUNREADMSGDIALOG_ASSUME_YES:
2956 gtk_option_menu_set_history(optmenu, 1);
2958 case NEXTUNREADMSGDIALOG_ASSUME_NO:
2959 gtk_option_menu_set_history(optmenu, 2);
2963 menu = gtk_option_menu_get_menu(optmenu);
2964 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2965 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
2969 static void prefs_common_cancel(void)
2971 gtk_widget_hide(dialog.window);
2976 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
2979 GtkWidget *menuitem;
2981 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2982 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2983 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
2984 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2987 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
2989 RecvDialogShow dialog_show;
2990 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2992 GtkWidget *menuitem;
2994 dialog_show = *((RecvDialogShow *)pparam->data);
2996 switch (dialog_show) {
2997 case RECVDIALOG_ALWAYS:
2998 gtk_option_menu_set_history(optmenu, 0);
3000 case RECVDIALOG_WINDOW_ACTIVE:
3001 gtk_option_menu_set_history(optmenu, 1);
3003 case RECVDIALOG_NEVER:
3004 gtk_option_menu_set_history(optmenu, 2);
3009 menu = gtk_option_menu_get_menu(optmenu);
3010 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3011 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));