2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2005 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 {"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
724 {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
726 {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
729 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
732 /* widget creating functions */
733 static void prefs_common_create (void);
734 static void prefs_receive_create (void);
735 static void prefs_send_create (void);
736 static void prefs_compose_create (void);
737 static void prefs_quote_create (void);
738 static void prefs_display_create (void);
739 static void prefs_message_create (void);
740 static void prefs_interface_create (void);
741 static void prefs_other_create (void);
743 static void date_format_ok_btn_clicked (GtkButton *button,
745 static void date_format_cancel_btn_clicked (GtkButton *button,
747 static void date_format_key_pressed (GtkWidget *keywidget,
750 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
753 static void date_format_entry_on_change (GtkEditable *editable,
755 static void date_format_select_row (GtkWidget *date_format_list,
758 GdkEventButton *event,
759 GtkWidget *date_format);
760 static GtkWidget *date_format_create (GtkButton *button,
763 static void prefs_keybind_select (void);
764 static gint prefs_keybind_deleted (GtkWidget *widget,
767 static void prefs_keybind_key_pressed (GtkWidget *widget,
770 static void prefs_keybind_cancel (void);
771 static void prefs_keybind_apply_clicked (GtkWidget *widget);
773 static void prefs_common_apply (void);
775 typedef struct CommonPage
782 static CommonPage common_page;
784 static void create_widget_func(PrefsPage * _page,
788 CommonPage *page = (CommonPage *) _page;
791 vbox = gtk_vbox_new(FALSE, 6);
792 gtk_widget_show(vbox);
794 if (notebook == NULL)
795 prefs_common_create();
796 gtk_box_pack_start (GTK_BOX (vbox), notebook, TRUE, TRUE, 0);
797 gtk_notebook_set_page(GTK_NOTEBOOK(notebook), 0);
799 prefs_set_dialog(param);
803 page->page.widget = vbox;
806 static void destroy_widget_func(PrefsPage *_page)
808 CommonPage *page = (CommonPage *) _page;
810 gtk_container_remove(GTK_CONTAINER (page->vbox), notebook);
813 static void save_func(PrefsPage * _page)
815 prefs_common_apply();
818 void prefs_common_init(void)
820 static gchar *path[2];
822 prefs_common.disphdr_list = NULL;
824 path[0] = _("Common");
827 common_page.page.path = path;
828 common_page.page.weight = 1000.0;
829 common_page.page.create_widget = create_widget_func;
830 common_page.page.destroy_widget = destroy_widget_func;
831 common_page.page.save_page = save_func;
833 prefs_gtk_register_page((PrefsPage *) &common_page);
836 PrefsCommon *prefs_common_get(void)
838 return &prefs_common;
842 * Read history list from the specified history file
844 GList *prefs_common_read_history(const gchar *history)
848 gchar buf[PREFSBUFSIZE];
851 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
853 if ((fp = fopen(path, "rb")) == NULL) {
854 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
859 while (fgets(buf, sizeof(buf), fp) != NULL) {
861 if (buf[0] == '\0') continue;
862 tmp = add_history(tmp, buf);
866 tmp = g_list_reverse(tmp);
871 void prefs_common_read_config(void)
873 prefs_read_config(param, "Common", COMMON_RC);
875 prefs_common.mime_open_cmd_history =
876 prefs_common_read_history(COMMAND_HISTORY);
877 prefs_common.summary_quicksearch_history =
878 prefs_common_read_history(QUICKSEARCH_HISTORY);
882 * Save history list to the specified history file
884 void prefs_common_save_history(const gchar *history, GList *list)
890 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
892 if ((fp = fopen(path, "wb")) == NULL) {
893 FILE_OP_ERROR(path, "fopen");
898 for (cur = list; cur != NULL; cur = cur->next) {
899 fputs((gchar *)cur->data, fp);
907 void prefs_common_write_config(void)
909 prefs_write_config(param, "Common", COMMON_RC);
911 prefs_common_save_history(COMMAND_HISTORY,
912 prefs_common.mime_open_cmd_history);
913 prefs_common_save_history(QUICKSEARCH_HISTORY,
914 prefs_common.summary_quicksearch_history);
917 static void prefs_common_create(void)
921 debug_print("Creating common preferences window...\n");
923 notebook = gtk_notebook_new ();
924 gtk_widget_show(notebook);
925 gtk_container_set_border_width (GTK_CONTAINER (notebook), 2);
926 /* GTK_WIDGET_UNSET_FLAGS (notebook, GTK_CAN_FOCUS); */
927 gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook), TRUE);
929 gtk_notebook_popup_enable (GTK_NOTEBOOK (notebook));
931 gtk_widget_ref(notebook);
933 /* create all widgets on notebook */
934 prefs_receive_create();
935 SET_NOTEBOOK_LABEL(notebook, _("Receive"), page++);
937 SET_NOTEBOOK_LABEL(notebook, _("Send"), page++);
938 prefs_compose_create();
939 SET_NOTEBOOK_LABEL(notebook, _("Compose"), page++);
940 prefs_quote_create();
941 SET_NOTEBOOK_LABEL(notebook, _("Quote"), page++);
942 prefs_display_create();
943 SET_NOTEBOOK_LABEL(notebook, _("Display"), page++);
944 prefs_message_create();
945 SET_NOTEBOOK_LABEL(notebook, _("Message"), page++);
946 prefs_interface_create();
947 SET_NOTEBOOK_LABEL(notebook, _("Interface"), page++);
948 prefs_other_create();
949 SET_NOTEBOOK_LABEL(notebook, _("Other"), page++);
951 gtk_widget_show_all(notebook);
954 static void prefs_receive_create(void)
958 GtkWidget *frame_incext;
959 GtkWidget *checkbtn_incext;
961 GtkWidget *label_incext;
962 GtkWidget *entry_incext;
963 /* GtkWidget *button_incext; */
965 GtkWidget *hbox_autochk;
966 GtkWidget *checkbtn_autochk;
967 GtkWidget *label_autochk1;
968 GtkObject *spinbtn_autochk_adj;
969 GtkWidget *spinbtn_autochk;
970 GtkWidget *label_autochk2;
971 GtkWidget *checkbtn_chkonstartup;
972 GtkWidget *checkbtn_scan_after_inc;
975 GtkWidget *frame_newmail;
976 GtkWidget *hbox_newmail_notify;
977 GtkWidget *checkbtn_newmail_auto;
978 GtkWidget *checkbtn_newmail_manu;
979 GtkWidget *entry_newmail_notify_cmd;
980 GtkWidget *label_newmail_notify_cmd;
982 GtkWidget *hbox_recvdialog;
983 GtkWidget *label_recvdialog;
986 GtkWidget *optmenu_recvdialog;
987 GtkWidget *checkbtn_no_recv_err_panel;
988 GtkWidget *checkbtn_close_recv_dialog;
990 vbox1 = gtk_vbox_new (FALSE, VSPACING);
991 gtk_widget_show (vbox1);
992 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
993 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
995 PACK_FRAME(vbox1, frame_incext, _("External program"));
997 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
998 gtk_widget_show (vbox2);
999 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
1000 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1002 /* Use of external incorporation program */
1003 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
1004 _("Use external program for incorporation"));
1006 hbox = gtk_hbox_new (FALSE, 8);
1007 gtk_widget_show (hbox);
1008 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1009 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1011 label_incext = gtk_label_new (_("Command"));
1012 gtk_widget_show (label_incext);
1013 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1015 entry_incext = gtk_entry_new ();
1016 gtk_widget_show (entry_incext);
1017 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1020 button_incext = gtk_button_new_with_label ("... ");
1021 gtk_widget_show (button_incext);
1022 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1025 vbox2 = gtk_vbox_new (FALSE, 0);
1026 gtk_widget_show (vbox2);
1027 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1030 hbox_autochk = gtk_hbox_new (FALSE, 8);
1031 gtk_widget_show (hbox_autochk);
1032 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1034 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1035 _("Auto-check new mail"));
1037 label_autochk1 = gtk_label_new (_("every"));
1038 gtk_widget_show (label_autochk1);
1039 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1041 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1042 spinbtn_autochk = gtk_spin_button_new
1043 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1044 gtk_widget_show (spinbtn_autochk);
1045 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1046 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1047 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1049 label_autochk2 = gtk_label_new (_("minute(s)"));
1050 gtk_widget_show (label_autochk2);
1051 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1053 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1054 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1055 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1057 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1058 _("Check new mail on startup"));
1059 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1060 _("Update all local folders after incorporation"));
1063 /* receive dialog */
1064 hbox_recvdialog = gtk_hbox_new (FALSE, 8);
1065 gtk_widget_show (hbox_recvdialog);
1066 gtk_box_pack_start (GTK_BOX (vbox2), hbox_recvdialog, FALSE, FALSE, 0);
1068 label_recvdialog = gtk_label_new (_("Show receive dialog"));
1069 gtk_misc_set_alignment(GTK_MISC(label_recvdialog), 0, 0.5);
1070 gtk_widget_show (label_recvdialog);
1071 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), label_recvdialog, FALSE, FALSE, 0);
1073 optmenu_recvdialog = gtk_option_menu_new ();
1074 gtk_widget_show (optmenu_recvdialog);
1075 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), optmenu_recvdialog, FALSE, FALSE, 0);
1077 menu = gtk_menu_new ();
1078 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
1079 MENUITEM_ADD (menu, menuitem, _("Only on manual receiving"),
1080 RECV_DIALOG_MANUAL);
1081 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
1083 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
1085 PACK_CHECK_BUTTON (vbox2, checkbtn_no_recv_err_panel,
1086 _("Don't popup error dialog on receive error"));
1088 PACK_CHECK_BUTTON (vbox2, checkbtn_close_recv_dialog,
1089 _("Close receive dialog when finished"));
1091 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1093 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1094 gtk_widget_show (vbox2);
1095 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1096 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1098 hbox = gtk_hbox_new (TRUE, 8);
1099 gtk_widget_show (hbox);
1100 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1101 _("after autochecking"));
1102 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1103 _("after manual checking"));
1104 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1105 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1106 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1108 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1109 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1112 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1113 gtk_widget_show (hbox);
1114 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1117 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1118 "(use %d as number of new "
1120 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1122 gtk_widget_show (label_newmail_notify_cmd);
1123 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1124 label_newmail_notify_cmd, FALSE, FALSE, 0);
1126 entry_newmail_notify_cmd = gtk_entry_new ();
1127 gtk_widget_show (entry_newmail_notify_cmd);
1128 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1129 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1131 gtk_widget_set_sensitive(hbox_newmail_notify,
1132 prefs_common.newmail_notify_auto ||
1133 prefs_common.newmail_notify_manu);
1135 receive.checkbtn_incext = checkbtn_incext;
1136 receive.entry_incext = entry_incext;
1137 /* receive.button_incext = button_incext; */
1139 receive.checkbtn_autochk = checkbtn_autochk;
1140 receive.spinbtn_autochk = spinbtn_autochk;
1141 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1143 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1144 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1147 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1148 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1149 receive.hbox_newmail_notify = hbox_newmail_notify;
1150 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1151 receive.optmenu_recvdialog = optmenu_recvdialog;
1152 receive.checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
1153 receive.checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
1156 static void prefs_send_create(void)
1161 GtkWidget *checkbtn_savemsg;
1162 GtkWidget *label_outcharset;
1163 GtkWidget *optmenu_charset;
1164 GtkWidget *optmenu_menu;
1165 GtkWidget *menuitem;
1166 GtkTooltips *charset_tooltip;
1167 GtkWidget *optmenu_encoding;
1168 GtkWidget *label_encoding;
1169 GtkTooltips *encoding_tooltip;
1170 GtkWidget *label_senddialog;
1172 GtkWidget *optmenu_senddialog;
1173 GtkWidget *hbox_senddialog;
1175 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1176 gtk_widget_show (vbox1);
1177 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1178 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1180 vbox2 = gtk_vbox_new (FALSE, 0);
1181 gtk_widget_show (vbox2);
1182 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1184 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1185 _("Save sent messages to Sent folder"));
1187 hbox_senddialog = gtk_hbox_new (FALSE, 8);
1188 gtk_box_pack_start (GTK_BOX (vbox1), hbox_senddialog, FALSE, FALSE, 0);
1190 label_senddialog = gtk_label_new (_("Show send dialog"));
1191 gtk_widget_show (label_senddialog);
1192 gtk_box_pack_start (GTK_BOX (hbox_senddialog), label_senddialog, FALSE, FALSE, 0);
1194 optmenu_senddialog = gtk_option_menu_new ();
1195 gtk_widget_show (optmenu_senddialog);
1196 gtk_box_pack_start (GTK_BOX (hbox_senddialog), optmenu_senddialog, FALSE, FALSE, 0);
1198 menu = gtk_menu_new ();
1199 MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
1200 MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
1202 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
1204 hbox1 = gtk_hbox_new (FALSE, 8);
1205 gtk_widget_show (hbox1);
1206 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1208 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1209 gtk_widget_show (label_outcharset);
1210 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1212 charset_tooltip = gtk_tooltips_new();
1214 optmenu_charset = gtk_option_menu_new ();
1215 gtk_widget_show (optmenu_charset);
1216 gtk_tooltips_set_tip(GTK_TOOLTIPS(charset_tooltip), optmenu_charset,
1217 _("If `Automatic' is selected, the optimal encoding"
1218 " for the current locale will be used"),
1220 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_charset, FALSE, FALSE, 0);
1222 optmenu_menu = gtk_menu_new ();
1224 #define SET_MENUITEM(str, data) \
1226 MENUITEM_ADD(optmenu_menu, menuitem, str, data); \
1229 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1230 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1232 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1234 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1235 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1236 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1237 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1238 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1239 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1240 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1242 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1244 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1246 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1247 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1249 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1251 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1252 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1254 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1255 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1257 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1258 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1260 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1261 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1262 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1264 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_charset),
1267 hbox1 = gtk_hbox_new (FALSE, 8);
1268 gtk_widget_show (hbox1);
1269 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1271 hbox1 = gtk_hbox_new (FALSE, 8);
1272 gtk_widget_show (hbox1);
1273 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1275 label_encoding = gtk_label_new (_("Transfer encoding"));
1276 gtk_widget_show (label_encoding);
1277 gtk_box_pack_start (GTK_BOX (hbox1), label_encoding, FALSE, FALSE, 0);
1279 encoding_tooltip = gtk_tooltips_new();
1281 optmenu_encoding = gtk_option_menu_new ();
1282 gtk_widget_show (optmenu_encoding);
1283 gtk_tooltips_set_tip(GTK_TOOLTIPS(encoding_tooltip), optmenu_encoding,
1284 _("Specify Content-Transfer-Encoding used when"
1285 " message body contains non-ASCII characters"),
1287 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_encoding, FALSE, FALSE, 0);
1289 optmenu_menu = gtk_menu_new ();
1291 SET_MENUITEM(_("Automatic"), CTE_AUTO);
1292 SET_MENUITEM("base64", CTE_BASE64);
1293 SET_MENUITEM("quoted-printable", CTE_QUOTED_PRINTABLE);
1294 SET_MENUITEM("8bit", CTE_8BIT);
1296 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_encoding),
1299 hbox1 = gtk_hbox_new (FALSE, 8);
1300 gtk_widget_show (hbox1);
1301 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1303 p_send.checkbtn_savemsg = checkbtn_savemsg;
1304 p_send.optmenu_senddialog = optmenu_senddialog;
1306 p_send.optmenu_charset = optmenu_charset;
1307 p_send.optmenu_encoding_method = optmenu_encoding;
1310 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1314 toggled = gtk_toggle_button_get_active
1315 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1316 gtk_toggle_button_get_active
1317 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1318 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1321 static void prefs_compose_create(void)
1326 GtkWidget *checkbtn_autoextedit;
1328 GtkWidget *frame_autosel;
1329 GtkWidget *hbox_autosel;
1330 GtkWidget *checkbtn_reply_account_autosel;
1331 GtkWidget *checkbtn_forward_account_autosel;
1332 GtkWidget *checkbtn_reedit_account_autosel;
1334 GtkWidget *hbox_undolevel;
1335 GtkWidget *label_undolevel;
1336 GtkObject *spinbtn_undolevel_adj;
1337 GtkWidget *spinbtn_undolevel;
1341 GtkWidget *checkbtn_default_reply_list;
1343 GtkWidget *checkbtn_forward_as_attachment;
1344 GtkWidget *checkbtn_redirect_keep_from;
1345 GtkWidget *checkbtn_block_cursor;
1347 GtkWidget *hbox_autosave;
1348 GtkWidget *checkbtn_autosave;
1349 GtkWidget *entry_autosave_length;
1350 GtkWidget *label_autosave_length;
1352 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1353 gtk_widget_show (vbox1);
1354 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1355 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1357 /* Account autoselection */
1358 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1360 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1361 gtk_widget_show (hbox_autosel);
1362 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1363 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1365 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1366 _("when replying"));
1367 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1368 _("when forwarding"));
1369 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1370 _("when re-editing"));
1372 vbox2 = gtk_vbox_new (FALSE, 0);
1373 gtk_widget_show (vbox2);
1374 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1376 PACK_CHECK_BUTTON (vbox2, checkbtn_default_reply_list,
1377 _("Reply button invokes mailing list reply"));
1379 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1380 _("Automatically launch the external editor"));
1382 hbox5 = gtk_hbox_new (FALSE, 8);
1383 gtk_widget_show (hbox5);
1384 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1386 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1387 _("Forward as attachment"));
1389 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1392 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1393 _("Keep the original 'From' header when redirecting"));
1396 hbox_autosave = gtk_hbox_new (FALSE, 8);
1397 gtk_widget_show (hbox_autosave);
1398 gtk_box_pack_start (GTK_BOX (vbox1), hbox_autosave, FALSE, FALSE, 0);
1400 PACK_CHECK_BUTTON (hbox_autosave, checkbtn_autosave,
1401 _("Autosave to Drafts folder every "));
1403 entry_autosave_length = gtk_entry_new();
1404 gtk_widget_set_usize (entry_autosave_length, 64, -1);
1405 gtk_widget_show (entry_autosave_length);
1406 gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
1408 label_autosave_length = gtk_label_new(_("characters"));
1409 gtk_widget_show (label_autosave_length);
1410 gtk_box_pack_start (GTK_BOX (hbox_autosave), label_autosave_length, FALSE, FALSE, 0);
1412 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1413 gtk_widget_show (hbox_undolevel);
1414 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1416 label_undolevel = gtk_label_new (_("Undo level"));
1417 gtk_widget_show (label_undolevel);
1418 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1420 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1421 spinbtn_undolevel = gtk_spin_button_new
1422 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1423 gtk_widget_show (spinbtn_undolevel);
1424 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1425 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1426 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1429 compose.checkbtn_quote = checkbtn_quote;
1430 compose.entry_quotemark = entry_quotemark;
1431 compose.text_quotefmt = text_quotefmt;
1434 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1436 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1437 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1438 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1440 compose.spinbtn_undolevel = spinbtn_undolevel;
1441 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1443 compose.checkbtn_autosave = checkbtn_autosave;
1444 compose.entry_autosave_length = entry_autosave_length;
1446 compose.checkbtn_forward_as_attachment =
1447 checkbtn_forward_as_attachment;
1448 compose.checkbtn_redirect_keep_from =
1449 checkbtn_redirect_keep_from;
1450 compose.checkbtn_block_cursor =
1451 checkbtn_block_cursor;
1452 compose.checkbtn_default_reply_list = checkbtn_default_reply_list;
1455 static void prefs_quote_create(void)
1458 GtkWidget *frame_quote;
1459 GtkWidget *vbox_quote;
1462 GtkWidget *label_quotemark;
1463 GtkWidget *entry_quotemark;
1464 GtkWidget *scrolledwin_quotefmt;
1465 GtkWidget *text_quotefmt;
1467 GtkWidget *entry_fw_quotemark;
1468 GtkWidget *text_fw_quotefmt;
1470 GtkWidget *entry_quote_chars;
1471 GtkWidget *label_quote_chars;
1473 GtkWidget *btn_quotedesc;
1475 GtkWidget *checkbtn_reply_with_quote;
1477 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1478 gtk_widget_show (vbox1);
1479 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1480 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1484 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1486 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1488 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1489 gtk_widget_show (vbox_quote);
1490 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1491 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1493 hbox1 = gtk_hbox_new (FALSE, 32);
1494 gtk_widget_show (hbox1);
1495 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1497 hbox2 = gtk_hbox_new (FALSE, 8);
1498 gtk_widget_show (hbox2);
1499 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1501 label_quotemark = gtk_label_new (_("Quotation mark"));
1502 gtk_widget_show (label_quotemark);
1503 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1505 entry_quotemark = gtk_entry_new ();
1506 gtk_widget_show (entry_quotemark);
1507 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
1508 gtk_widget_set_usize (entry_quotemark, 64, -1);
1510 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1511 gtk_widget_show (scrolledwin_quotefmt);
1512 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1513 gtk_scrolled_window_set_policy
1514 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1515 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1517 text_quotefmt = gtk_text_new (NULL, NULL);
1518 gtk_widget_show (text_quotefmt);
1519 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
1520 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
1521 gtk_widget_set_usize(text_quotefmt, -1, 60);
1525 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
1527 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1528 gtk_widget_show (vbox_quote);
1529 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1530 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1532 hbox1 = gtk_hbox_new (FALSE, 32);
1533 gtk_widget_show (hbox1);
1534 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1536 hbox2 = gtk_hbox_new (FALSE, 8);
1537 gtk_widget_show (hbox2);
1538 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1540 label_quotemark = gtk_label_new (_("Quotation mark"));
1541 gtk_widget_show (label_quotemark);
1542 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1544 entry_fw_quotemark = gtk_entry_new ();
1545 gtk_widget_show (entry_fw_quotemark);
1546 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
1548 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
1550 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1551 gtk_widget_show (scrolledwin_quotefmt);
1552 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1553 gtk_scrolled_window_set_policy
1554 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1555 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1557 text_fw_quotefmt = gtk_text_new (NULL, NULL);
1558 gtk_widget_show (text_fw_quotefmt);
1559 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
1561 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
1562 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
1564 hbox1 = gtk_hbox_new (FALSE, 32);
1565 gtk_widget_show (hbox1);
1566 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1569 gtk_button_new_with_label (_(" Description of symbols "));
1570 gtk_widget_show (btn_quotedesc);
1571 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
1572 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
1573 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
1577 PACK_FRAME (vbox1, frame_quote, _("Quotation characters"));
1579 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1580 gtk_widget_show (vbox_quote);
1581 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1582 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1584 hbox1 = gtk_hbox_new (FALSE, 32);
1585 gtk_widget_show (hbox1);
1586 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1588 hbox2 = gtk_hbox_new (FALSE, 8);
1589 gtk_widget_show (hbox2);
1590 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1592 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
1593 gtk_widget_show (label_quote_chars);
1594 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
1596 entry_quote_chars = gtk_entry_new ();
1597 gtk_widget_show (entry_quote_chars);
1598 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
1600 gtk_widget_set_usize (entry_quote_chars, 64, -1);
1603 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
1604 quote.entry_quotemark = entry_quotemark;
1605 quote.text_quotefmt = text_quotefmt;
1606 quote.entry_fw_quotemark = entry_fw_quotemark;
1607 quote.text_fw_quotefmt = text_fw_quotefmt;
1608 quote.entry_quote_chars = entry_quote_chars;
1611 static void prefs_display_create(void)
1614 GtkWidget *chkbtn_transhdr;
1615 GtkWidget *chkbtn_folder_unread;
1617 GtkWidget *label_ng_abbrev;
1618 GtkWidget *spinbtn_ng_abbrev_len;
1619 GtkObject *spinbtn_ng_abbrev_len_adj;
1620 GtkWidget *frame_summary;
1622 GtkWidget *chkbtn_swapfrom;
1623 GtkWidget *chkbtn_useaddrbook;
1624 GtkWidget *chkbtn_threadsubj;
1626 GtkWidget *label_datefmt;
1627 GtkWidget *button_datefmt;
1628 GtkWidget *entry_datefmt;
1629 GtkWidget *button_dispitem;
1631 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1632 gtk_widget_show (vbox1);
1633 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1634 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1636 vbox2 = gtk_vbox_new (FALSE, 0);
1637 gtk_widget_show (vbox2);
1638 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
1641 (vbox2, chkbtn_transhdr,
1642 _("Translate header name (such as `From:', `Subject:')"));
1644 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
1645 _("Display unread number next to folder name"));
1647 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1649 hbox1 = gtk_hbox_new (FALSE, 8);
1650 gtk_widget_show (hbox1);
1651 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1653 label_ng_abbrev = gtk_label_new
1654 (_("Abbreviate newsgroup names longer than"));
1655 gtk_widget_show (label_ng_abbrev);
1656 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1658 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
1659 spinbtn_ng_abbrev_len = gtk_spin_button_new
1660 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
1661 gtk_widget_show (spinbtn_ng_abbrev_len);
1662 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
1664 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
1665 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
1668 label_ng_abbrev = gtk_label_new
1670 gtk_widget_show (label_ng_abbrev);
1671 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1673 /* ---- Summary ---- */
1675 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
1677 vbox2 = gtk_vbox_new (FALSE, 0);
1678 gtk_widget_show (vbox2);
1679 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
1680 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1683 (vbox2, chkbtn_swapfrom,
1684 _("Display recipient in `From' column if sender is yourself"));
1686 (vbox2, chkbtn_useaddrbook,
1687 _("Display sender using address book"));
1689 (vbox2, chkbtn_threadsubj,
1690 _("Thread using subject in addition to standard headers"));
1692 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1694 hbox1 = gtk_hbox_new (FALSE, 8);
1695 gtk_widget_show (hbox1);
1696 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1698 label_datefmt = gtk_label_new (_("Date format"));
1699 gtk_widget_show (label_datefmt);
1700 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
1702 entry_datefmt = gtk_entry_new ();
1703 gtk_widget_show (entry_datefmt);
1704 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
1706 button_datefmt = gtk_button_new_with_label (" ... ");
1708 gtk_widget_show (button_datefmt);
1709 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
1710 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
1711 GTK_SIGNAL_FUNC (date_format_create), NULL);
1713 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
1715 hbox1 = gtk_hbox_new (FALSE, 8);
1716 gtk_widget_show (hbox1);
1717 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1719 button_dispitem = gtk_button_new_with_label
1720 (_(" Set displayed items in summary... "));
1721 gtk_widget_show (button_dispitem);
1722 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
1723 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
1724 GTK_SIGNAL_FUNC (prefs_summary_column_open),
1727 display.chkbtn_transhdr = chkbtn_transhdr;
1728 display.chkbtn_folder_unread = chkbtn_folder_unread;
1729 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
1730 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
1732 display.chkbtn_swapfrom = chkbtn_swapfrom;
1733 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
1734 display.chkbtn_threadsubj = chkbtn_threadsubj;
1735 display.entry_datefmt = entry_datefmt;
1738 static void prefs_message_create(void)
1744 GtkWidget *chkbtn_mbalnum;
1745 GtkWidget *chkbtn_disphdrpane;
1746 GtkWidget *chkbtn_disphdr;
1747 GtkWidget *button_edit_disphdr;
1748 GtkWidget *hbox_linespc;
1749 GtkWidget *label_linespc;
1750 GtkObject *spinbtn_linespc_adj;
1751 GtkWidget *spinbtn_linespc;
1752 GtkWidget *chkbtn_headspc;
1754 GtkWidget *frame_scr;
1755 GtkWidget *vbox_scr;
1756 GtkWidget *chkbtn_smoothscroll;
1757 GtkWidget *hbox_scr;
1758 GtkWidget *label_scr;
1759 GtkObject *spinbtn_scrollstep_adj;
1760 GtkWidget *spinbtn_scrollstep;
1761 GtkWidget *chkbtn_halfpage;
1763 GtkWidget *chkbtn_attach_desc;
1765 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1766 gtk_widget_show (vbox1);
1767 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1768 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1770 vbox2 = gtk_vbox_new (FALSE, 0);
1771 gtk_widget_show (vbox2);
1772 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1775 (vbox2, chkbtn_mbalnum,
1776 _("Display multi-byte alphanumeric as\n"
1777 "ASCII character (Japanese only)"));
1778 gtk_label_set_justify (GTK_LABEL (GTK_BIN(chkbtn_mbalnum)->child),
1781 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
1782 _("Display header pane above message view"));
1784 hbox1 = gtk_hbox_new (FALSE, 8);
1785 gtk_widget_show (hbox1);
1786 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1788 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
1789 _("Display short headers on message view"));
1791 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
1792 gtk_widget_show (button_edit_disphdr);
1793 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
1795 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
1796 GTK_SIGNAL_FUNC (prefs_display_header_open),
1799 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
1801 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1803 hbox1 = gtk_hbox_new (FALSE, 32);
1804 gtk_widget_show (hbox1);
1805 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1807 hbox_linespc = gtk_hbox_new (FALSE, 8);
1808 gtk_widget_show (hbox1);
1809 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
1811 label_linespc = gtk_label_new (_("Line space"));
1812 gtk_widget_show (label_linespc);
1813 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1816 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
1817 spinbtn_linespc = gtk_spin_button_new
1818 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
1819 gtk_widget_show (spinbtn_linespc);
1820 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
1822 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
1823 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
1825 label_linespc = gtk_label_new (_("pixel(s)"));
1826 gtk_widget_show (label_linespc);
1827 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1830 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Indent text"));
1832 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
1834 vbox_scr = gtk_vbox_new (FALSE, 0);
1835 gtk_widget_show (vbox_scr);
1836 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
1837 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
1839 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
1841 hbox1 = gtk_hbox_new (FALSE, 32);
1842 gtk_widget_show (hbox1);
1843 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
1845 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
1847 hbox_scr = gtk_hbox_new (FALSE, 8);
1848 gtk_widget_show (hbox_scr);
1849 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
1851 label_scr = gtk_label_new (_("Step"));
1852 gtk_widget_show (label_scr);
1853 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1855 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
1856 spinbtn_scrollstep = gtk_spin_button_new
1857 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
1858 gtk_widget_show (spinbtn_scrollstep);
1859 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
1861 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
1862 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
1865 label_scr = gtk_label_new (_("pixel(s)"));
1866 gtk_widget_show (label_scr);
1867 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1869 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
1871 vbox3 = gtk_vbox_new (FALSE, 0);
1872 gtk_widget_show (vbox3);
1873 gtk_box_pack_start (GTK_BOX (vbox1), vbox3, FALSE, FALSE, 0);
1875 PACK_CHECK_BUTTON(vbox3, chkbtn_attach_desc,
1876 _("Show attachment descriptions (rather than names)"));
1878 message.chkbtn_mbalnum = chkbtn_mbalnum;
1879 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
1880 message.chkbtn_disphdr = chkbtn_disphdr;
1881 message.spinbtn_linespc = spinbtn_linespc;
1882 message.chkbtn_headspc = chkbtn_headspc;
1884 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
1885 message.spinbtn_scrollstep = spinbtn_scrollstep;
1886 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
1887 message.chkbtn_halfpage = chkbtn_halfpage;
1889 message.chkbtn_attach_desc = chkbtn_attach_desc;
1892 static void prefs_interface_create(void)
1897 /* GtkWidget *checkbtn_emacs; */
1898 GtkWidget *checkbtn_always_show_msg;
1899 GtkWidget *checkbtn_openunread;
1900 GtkWidget *checkbtn_mark_as_read_on_newwin;
1901 GtkWidget *checkbtn_openinbox;
1902 GtkWidget *checkbtn_immedexec;
1903 GtkTooltips *immedexec_tooltip;
1907 GtkWidget *menuitem;
1909 GtkWidget *button_keybind;
1911 GtkWidget *hbox_nextunreadmsgdialog;
1912 GtkWidget *optmenu_nextunreadmsgdialog;
1914 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1915 gtk_widget_show (vbox1);
1916 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
1917 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1919 vbox2 = gtk_vbox_new (FALSE, 0);
1920 gtk_widget_show (vbox2);
1921 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1923 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
1924 _("Emulate the behavior of mouse operation of\n"
1925 "Emacs-based mailer"));
1926 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
1927 GTK_JUSTIFY_LEFT); */
1930 (vbox2, checkbtn_always_show_msg,
1931 _("Always open messages in summary when selected"));
1934 (vbox2, checkbtn_openunread,
1935 _("Open first unread message when entering a folder"));
1938 (vbox2, checkbtn_mark_as_read_on_newwin,
1939 _("Only mark message as read when opened in new window"));
1942 (vbox2, checkbtn_openinbox,
1943 _("Go to inbox after receiving new mail"));
1945 vbox3 = gtk_vbox_new (FALSE, 0);
1946 gtk_widget_show (vbox3);
1947 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
1949 immedexec_tooltip = gtk_tooltips_new();
1952 (vbox3, checkbtn_immedexec,
1953 _("Execute immediately when moving or deleting messages"));
1954 gtk_tooltips_set_tip(GTK_TOOLTIPS(immedexec_tooltip), checkbtn_immedexec,
1955 _("Messages will be marked until execution"
1956 " if this is turned off"),
1959 hbox1 = gtk_hbox_new (FALSE, 0);
1960 gtk_widget_show (hbox1);
1961 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
1963 /* Next Unread Message Dialog */
1964 hbox_nextunreadmsgdialog = gtk_hbox_new (FALSE, 8);
1965 gtk_widget_show (hbox1);
1966 gtk_box_pack_start (GTK_BOX (vbox1), hbox_nextunreadmsgdialog, FALSE, FALSE, 0);
1968 label = gtk_label_new (_("Show no-unread-message dialog"));
1969 gtk_widget_show (label);
1970 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), label, FALSE, FALSE, 8);
1972 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
1973 gtk_widget_show (optmenu_nextunreadmsgdialog);
1974 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), optmenu_nextunreadmsgdialog, FALSE, FALSE, 8);
1976 menu = gtk_menu_new ();
1977 MENUITEM_ADD (menu, menuitem, _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
1978 MENUITEM_ADD (menu, menuitem, _("Assume 'Yes'"),
1979 NEXTUNREADMSGDIALOG_ASSUME_YES);
1980 MENUITEM_ADD (menu, menuitem, _("Assume 'No'"),
1981 NEXTUNREADMSGDIALOG_ASSUME_NO);
1983 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog), menu);
1985 hbox1 = gtk_hbox_new (FALSE, 8);
1986 gtk_widget_show (hbox1);
1987 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1989 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
1990 gtk_widget_show (button_keybind);
1991 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
1992 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
1993 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
1995 /* interface.checkbtn_emacs = checkbtn_emacs; */
1996 interface.checkbtn_always_show_msg = checkbtn_always_show_msg;
1997 interface.checkbtn_openunread = checkbtn_openunread;
1998 interface.checkbtn_mark_as_read_on_newwin
1999 = checkbtn_mark_as_read_on_newwin;
2000 interface.checkbtn_openinbox = checkbtn_openinbox;
2001 interface.checkbtn_immedexec = checkbtn_immedexec;
2002 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
2005 static void prefs_other_create(void)
2010 GtkWidget *frame_addr;
2011 GtkWidget *vbox_addr;
2012 GtkWidget *checkbtn_addaddrbyclick;
2014 GtkWidget *frame_cliplog;
2015 GtkWidget *vbox_cliplog;
2016 GtkWidget *hbox_cliplog;
2017 GtkWidget *checkbtn_cliplog;
2018 GtkWidget *loglength_label;
2019 GtkWidget *loglength_entry;
2020 GtkTooltips *loglength_tooltip;
2022 GtkWidget *frame_exit;
2023 GtkWidget *vbox_exit;
2024 GtkWidget *checkbtn_confonexit;
2025 GtkWidget *checkbtn_cleanonexit;
2026 GtkWidget *checkbtn_askonclean;
2027 GtkWidget *checkbtn_warnqueued;
2029 GtkWidget *label_iotimeout;
2030 GtkWidget *spinbtn_iotimeout;
2031 GtkObject *spinbtn_iotimeout_adj;
2035 GtkWidget *frame_ssl;
2036 GtkWidget *vbox_ssl;
2037 GtkWidget *hbox_ssl;
2038 GtkWidget *checkbtn_ssl_ask_unknown_valid;
2041 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2042 gtk_widget_show (vbox1);
2043 gtk_container_add (GTK_CONTAINER (notebook), vbox1);
2044 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2046 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2048 vbox_addr = gtk_vbox_new (FALSE, 0);
2049 gtk_widget_show (vbox_addr);
2050 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2051 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2054 (vbox_addr, checkbtn_addaddrbyclick,
2055 _("Add address to destination when double-clicked"));
2058 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2060 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2061 gtk_widget_show (vbox_cliplog);
2062 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2063 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2064 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2065 _("Clip the log size"));
2066 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2067 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2068 gtk_widget_show (hbox_cliplog);
2070 loglength_label = gtk_label_new (_("Log window length"));
2071 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2073 gtk_widget_show (GTK_WIDGET (loglength_label));
2075 loglength_tooltip = gtk_tooltips_new();
2077 loglength_entry = gtk_entry_new ();
2078 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2079 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2081 gtk_widget_show (GTK_WIDGET (loglength_entry));
2082 gtk_tooltips_set_tip(GTK_TOOLTIPS(loglength_tooltip), loglength_entry,
2083 _("0 to stop logging in the log window"),
2085 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2090 PACK_FRAME (vbox1, frame_ssl, _("Security"));
2092 vbox_ssl = gtk_vbox_new (FALSE, 0);
2093 gtk_widget_show (vbox_ssl);
2094 gtk_container_add (GTK_CONTAINER (frame_ssl), vbox_ssl);
2095 gtk_container_set_border_width (GTK_CONTAINER (vbox_ssl), 8);
2096 PACK_CHECK_BUTTON (vbox_ssl, checkbtn_ssl_ask_unknown_valid,
2097 _("Ask before accepting SSL certificates"));
2098 hbox_ssl = gtk_hbox_new (FALSE, 3);
2099 gtk_container_add (GTK_CONTAINER (vbox_ssl), hbox_ssl);
2100 gtk_widget_show (hbox_ssl);
2105 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2107 vbox_exit = gtk_vbox_new (FALSE, 0);
2108 gtk_widget_show (vbox_exit);
2109 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2110 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
2112 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
2113 _("Confirm on exit"));
2115 hbox1 = gtk_hbox_new (FALSE, 32);
2116 gtk_widget_show (hbox1);
2117 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
2119 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
2120 _("Empty trash on exit"));
2121 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
2122 _("Ask before emptying"));
2123 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
2125 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
2126 _("Warn if there are queued messages"));
2128 hbox1 = gtk_hbox_new (FALSE, 8);
2129 gtk_widget_show (hbox1);
2130 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2132 label_iotimeout = gtk_label_new (_("Socket I/O timeout:"));
2133 gtk_widget_show (label_iotimeout);
2134 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2136 spinbtn_iotimeout_adj = gtk_adjustment_new (60, 0, 1000, 1, 10, 10);
2137 spinbtn_iotimeout = gtk_spin_button_new
2138 (GTK_ADJUSTMENT (spinbtn_iotimeout_adj), 1, 0);
2139 gtk_widget_show (spinbtn_iotimeout);
2140 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_iotimeout,
2142 gtk_widget_set_usize (spinbtn_iotimeout, 64, -1);
2143 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_iotimeout), TRUE);
2145 label_iotimeout = gtk_label_new (_("seconds"));
2146 gtk_widget_show (label_iotimeout);
2147 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2149 other.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2151 other.checkbtn_cliplog = checkbtn_cliplog;
2152 other.loglength_entry = loglength_entry;
2154 other.checkbtn_confonexit = checkbtn_confonexit;
2155 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
2156 other.checkbtn_askonclean = checkbtn_askonclean;
2157 other.checkbtn_warnqueued = checkbtn_warnqueued;
2159 other.spinbtn_iotimeout = spinbtn_iotimeout;
2160 other.spinbtn_iotimeout_adj = spinbtn_iotimeout_adj;
2164 other.checkbtn_ssl_ask_unknown_valid = checkbtn_ssl_ask_unknown_valid;
2169 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
2171 GtkWidget *datefmt_sample = NULL;
2174 g_return_if_fail(widget != NULL);
2175 g_return_if_fail(*widget != NULL);
2176 g_return_if_fail(display.entry_datefmt != NULL);
2178 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2179 (GTK_OBJECT(*widget), "datefmt_sample"));
2180 g_return_if_fail(datefmt_sample != NULL);
2182 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
2183 g_free(prefs_common.date_format);
2184 prefs_common.date_format = text;
2185 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
2187 gtk_widget_destroy(*widget);
2191 static void date_format_cancel_btn_clicked(GtkButton *button,
2194 g_return_if_fail(widget != NULL);
2195 g_return_if_fail(*widget != NULL);
2197 gtk_widget_destroy(*widget);
2201 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
2204 if (event && event->keyval == GDK_Escape)
2205 date_format_cancel_btn_clicked(NULL, widget);
2208 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
2209 GdkEventAny *event, GtkWidget **widget)
2211 g_return_val_if_fail(widget != NULL, FALSE);
2212 g_return_val_if_fail(*widget != NULL, FALSE);
2218 static void date_format_entry_on_change(GtkEditable *editable,
2222 struct tm *cal_time;
2226 cur_time = time(NULL);
2227 cal_time = localtime(&cur_time);
2229 text = gtk_editable_get_chars(editable, 0, -1);
2231 strftime(buffer, sizeof buffer, text, cal_time);
2233 gtk_label_set_text(example, buffer);
2236 static void date_format_select_row(GtkWidget *date_format_list, gint row,
2237 gint column, GdkEventButton *event,
2238 GtkWidget *date_format)
2244 GtkWidget *datefmt_sample;
2246 /* only on double click */
2247 if (!event || event->type != GDK_2BUTTON_PRESS) return;
2250 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2251 (GTK_OBJECT(date_format), "datefmt_sample"));
2253 g_return_if_fail(date_format_list != NULL);
2254 g_return_if_fail(date_format != NULL);
2255 g_return_if_fail(datefmt_sample != NULL);
2257 /* get format from clist */
2258 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
2260 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
2261 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
2263 /* insert the format into the text entry */
2264 new_format = g_malloc(strlen(old_format) + 3);
2266 strncpy(new_format, old_format, cur_pos);
2267 new_format[cur_pos] = '\0';
2268 strcat(new_format, format);
2269 strcat(new_format, &old_format[cur_pos]);
2271 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
2272 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
2277 static GtkWidget *date_format_create(GtkButton *button, void *data)
2279 static GtkWidget *datefmt_win = NULL;
2281 GtkWidget *scrolledwindow1;
2282 GtkWidget *datefmt_clist;
2287 GtkWidget *confirm_area;
2289 GtkWidget *cancel_btn;
2290 GtkWidget *datefmt_entry;
2319 const gint TIME_FORMAT_ELEMS =
2320 sizeof time_format / sizeof time_format[0];
2322 time_format[0].txt = _("the full abbreviated weekday name");
2323 time_format[1].txt = _("the full weekday name");
2324 time_format[2].txt = _("the abbreviated month name");
2325 time_format[3].txt = _("the full month name");
2326 time_format[4].txt = _("the preferred date and time for the current locale");
2327 time_format[5].txt = _("the century number (year/100)");
2328 time_format[6].txt = _("the day of the month as a decimal number");
2329 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
2330 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
2331 time_format[9].txt = _("the day of the year as a decimal number");
2332 time_format[10].txt = _("the month as a decimal number");
2333 time_format[11].txt = _("the minute as a decimal number");
2334 time_format[12].txt = _("either AM or PM");
2335 time_format[13].txt = _("the second as a decimal number");
2336 time_format[14].txt = _("the day of the week as a decimal number");
2337 time_format[15].txt = _("the preferred date for the current locale");
2338 time_format[16].txt = _("the last two digits of a year");
2339 time_format[17].txt = _("the year as a decimal number");
2340 time_format[18].txt = _("the time zone or name or abbreviation");
2342 if (datefmt_win) return datefmt_win;
2344 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
2345 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
2346 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
2347 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2348 gtk_widget_set_usize(datefmt_win, 440, 280);
2350 vbox1 = gtk_vbox_new(FALSE, 10);
2351 gtk_widget_show(vbox1);
2352 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
2354 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
2355 gtk_scrolled_window_set_policy
2356 (GTK_SCROLLED_WINDOW(scrolledwindow1),
2357 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
2358 gtk_widget_show(scrolledwindow1);
2359 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
2361 titles[0] = _("Specifier");
2362 titles[1] = _("Description");
2363 datefmt_clist = gtk_clist_new_with_titles(2, titles);
2364 gtk_widget_show(datefmt_clist);
2365 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
2366 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
2367 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
2368 GTK_SELECTION_BROWSE);
2370 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
2372 /* phoney casting necessary because of gtk... */
2373 text[0] = (gchar *)time_format[i].fmt;
2374 text[1] = (gchar *)time_format[i].txt;
2375 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
2378 table = gtk_table_new(2, 2, FALSE);
2379 gtk_widget_show(table);
2380 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
2381 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
2382 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
2384 label1 = gtk_label_new(_("Date format"));
2385 gtk_widget_show(label1);
2386 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
2388 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
2389 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
2391 datefmt_entry = gtk_entry_new_with_max_length(256);
2392 gtk_widget_show(datefmt_entry);
2393 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
2394 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2396 /* we need the "sample" entry box; add it as data so callbacks can
2397 * get the entry box */
2398 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
2401 label2 = gtk_label_new(_("Example"));
2402 gtk_widget_show(label2);
2403 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
2405 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
2406 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
2408 label3 = gtk_label_new("");
2409 gtk_widget_show(label3);
2410 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
2411 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2412 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
2413 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
2415 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
2416 &cancel_btn, _("Cancel"), NULL, NULL);
2417 gtk_widget_grab_default(ok_btn);
2418 gtk_widget_show(confirm_area);
2420 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
2422 /* set the current format */
2423 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
2424 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
2427 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2428 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
2430 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
2431 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
2433 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
2434 GTK_SIGNAL_FUNC(date_format_key_pressed),
2436 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
2437 GTK_SIGNAL_FUNC(date_format_on_delete),
2439 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
2440 GTK_SIGNAL_FUNC(date_format_entry_on_change),
2443 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
2444 GTK_SIGNAL_FUNC(date_format_select_row),
2447 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2448 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
2450 gtk_widget_show(datefmt_win);
2451 manage_window_set_transient(GTK_WINDOW(datefmt_win));
2453 gtk_widget_grab_focus(ok_btn);
2458 static void prefs_keybind_select(void)
2465 GtkWidget *confirm_area;
2467 GtkWidget *cancel_btn;
2469 window = gtk_window_new (GTK_WINDOW_DIALOG);
2470 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
2471 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
2472 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
2473 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
2474 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
2475 manage_window_set_transient (GTK_WINDOW (window));
2477 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2478 gtk_container_add (GTK_CONTAINER (window), vbox1);
2479 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
2481 hbox1 = gtk_hbox_new (FALSE, 8);
2482 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2484 label = gtk_label_new
2485 (_("Select preset:"));
2486 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2487 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2489 hbox1 = gtk_hbox_new (FALSE, 8);
2490 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2492 combo = gtk_combo_new ();
2493 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
2494 gtkut_combo_set_items (GTK_COMBO (combo),
2500 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
2502 hbox1 = gtk_hbox_new (FALSE, 8);
2503 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2505 label = gtk_label_new
2506 (_("You can also modify each menu shortcut by pressing\n"
2507 "any key(s) when placing the mouse pointer on the item."));
2508 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2509 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2511 hbox1 = gtk_hbox_new (FALSE, 8);
2512 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2514 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
2515 &cancel_btn, _("Cancel"), NULL, NULL);
2516 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
2517 gtk_widget_grab_default (ok_btn);
2519 MANAGE_WINDOW_SIGNALS_CONNECT(window);
2520 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
2521 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
2522 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
2523 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
2524 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
2525 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
2527 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
2528 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
2531 gtk_widget_show_all(window);
2533 keybind.window = window;
2534 keybind.combo = combo;
2537 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
2540 if (event && event->keyval == GDK_Escape)
2541 prefs_keybind_cancel();
2544 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
2547 prefs_keybind_cancel();
2551 static void prefs_keybind_cancel(void)
2553 gtk_widget_destroy(keybind.window);
2554 keybind.window = NULL;
2555 keybind.combo = NULL;
2558 static void prefs_keybind_apply_clicked(GtkWidget *widget)
2560 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
2564 static gchar *default_menurc =
2565 "(menu-path \"<Main>/File/Empty all Trash folders\" \"\")\n"
2566 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
2567 "(menu-path \"<Main>/File/Print...\" \"\")\n"
2568 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
2570 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2571 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2572 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2573 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
2575 "(menu-path \"<Main>/View/Show or hide/Message view\" \"V\")\n"
2576 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2577 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2578 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2579 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2580 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2581 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
2582 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2583 "(menu-path \"<Main>/View/Message source\" \"<control>U\")\n"
2584 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2585 "(menu-path \"<Main>/View/Update summary\" \"<control><alt>U\")\n"
2587 "(menu-path \"<Main>/Message/Receive/Get from current account\" \"<control>I\")\n"
2588 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2589 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
2590 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
2591 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><control>R\")\n"
2592 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2593 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2594 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
2595 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
2596 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
2597 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
2598 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
2599 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2600 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2601 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2602 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2604 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2605 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2606 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2608 "(menu-path \"<Compose>/Message/Close\" \"<control>W\")\n"
2609 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
2610 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
2611 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
2612 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
2613 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
2614 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
2616 static gchar *mew_wl_menurc =
2617 "(menu-path \"<Main>/File/Empty all Trash folders\" \"<shift>D\")\n"
2618 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
2619 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
2620 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
2622 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2623 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2624 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2625 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
2627 "(menu-path \"<Main>/View/Show or hide/Message view\" \"\")\n"
2628 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
2629 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2630 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2631 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2632 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2633 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
2634 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2635 "(menu-path \"<Main>/View/Message source\" \"<control>U\")\n"
2636 "(menu-path \"<Main>/View/Show all headers\" \"<shift>H\")\n"
2637 "(menu-path \"<Main>/View/Update summary\" \"<shift>S\")\n"
2639 "(menu-path \"<Main>/Message/Receive/Get from current account\" \"<control>I\")\n"
2640 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2641 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
2642 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
2643 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift>A\")\n"
2644 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2645 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2646 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
2647 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
2648 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
2649 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
2650 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
2651 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2652 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2653 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2654 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
2656 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2657 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2658 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2660 "(menu-path \"<Compose>/Message/Close\" \"<alt>W\")\n"
2661 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2662 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2663 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2664 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2665 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2666 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2668 static gchar *mutt_menurc =
2669 "(menu-path \"<Main>/File/Empty all Trash folders\" \"\")\n"
2670 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
2671 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
2672 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
2674 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2675 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2676 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2677 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
2679 "(menu-path \"<Main>/View/Show or hide/Message view\" \"V\")\n"
2680 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2681 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
2682 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
2683 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
2684 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
2685 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
2686 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
2687 "(menu-path \"<Main>/View/Message source\" \"<control>U\")\n"
2688 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2689 "(menu-path \"<Main>/View/Update summary\" \"<control><alt>U\")\n"
2691 "(menu-path \"<Main>/Message/Receive/Get from current account\" \"<control>I\")\n"
2692 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><control>I\")\n"
2693 "(menu-path \"<Main>/Message/Compose an email message\" \"M\")\n"
2694 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
2695 "(menu-path \"<Main>/Message/Reply to/all\" \"G\")\n"
2696 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
2697 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2698 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
2699 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
2700 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
2701 "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
2702 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
2703 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
2704 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2705 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
2706 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2708 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
2709 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
2710 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
2712 "(menu-path \"<Compose>/Message/Close\" \"<alt>W\")\n"
2713 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2714 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2715 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2716 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2717 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2718 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2720 static gchar *old_sylpheed_menurc =
2721 "(menu-path \"<Main>/File/Empty all Trash folders\" \"\")\n"
2722 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
2723 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
2724 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
2726 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
2727 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
2728 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
2729 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
2731 "(menu-path \"<Main>/View/Show or hide/Message view\" \"\")\n"
2732 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
2733 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
2734 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
2735 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
2736 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
2737 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
2738 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
2739 "(menu-path \"<Main>/View/Message source\" \"<control>U\")\n"
2740 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
2741 "(menu-path \"<Main>/View/Update summary\" \"<alt>U\")\n"
2743 "(menu-path \"<Main>/Message/Receive/Get from current account\" \"<alt>I\")\n"
2744 "(menu-path \"<Main>/Message/Receive/Get from all accounts\" \"<shift><alt>I\")\n"
2745 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
2746 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
2747 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><alt>R\")\n"
2748 "(menu-path \"<Main>/Message/Reply to/sender\" \"<control><alt>R\")\n"
2749 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
2750 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
2751 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
2752 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
2753 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
2754 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
2755 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
2756 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
2757 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
2758 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
2760 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
2761 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
2762 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
2764 "(menu-path \"<Compose>/Message/Close\" \"<alt>W\")\n"
2765 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
2766 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
2767 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
2768 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
2769 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
2770 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
2772 text = gtk_entry_get_text(entry);
2774 if (!strcmp(text, _("Default")))
2775 rc_str = default_menurc;
2776 else if (!strcmp(text, "Mew / Wanderlust"))
2777 rc_str = mew_wl_menurc;
2778 else if (!strcmp(text, "Mutt"))
2779 rc_str = mutt_menurc;
2780 else if (!strcmp(text, _("Old Sylpheed")))
2781 rc_str = old_sylpheed_menurc;
2785 menu_factory_clear_rc(rc_str);
2786 gtk_item_factory_parse_rc_string(rc_str);
2788 gtk_widget_destroy(keybind.window);
2789 keybind.window = NULL;
2790 keybind.combo = NULL;
2793 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
2796 GtkWidget *menuitem;
2799 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2800 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2801 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
2802 g_free(*((gchar **)pparam->data));
2803 *((gchar **)pparam->data) = g_strdup(charset);
2806 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
2808 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2811 g_return_if_fail(optmenu != NULL);
2812 g_return_if_fail(*((gchar **)pparam->data) != NULL);
2814 index = menu_find_option_menu_index(optmenu, *((gchar **)pparam->data),
2815 (GCompareFunc)strcmp);
2817 gtk_option_menu_set_history(optmenu, index);
2819 gtk_option_menu_set_history(optmenu, 0);
2820 prefs_common_charset_set_data_from_optmenu(pparam);
2824 static void prefs_common_encoding_set_data_from_optmenu(PrefParam *pparam)
2827 GtkWidget *menuitem;
2829 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2830 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2831 *((TransferEncodingMethod *)pparam->data) = GPOINTER_TO_INT
2832 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2835 static void prefs_common_encoding_set_optmenu(PrefParam *pparam)
2837 TransferEncodingMethod method =
2838 *((TransferEncodingMethod *)pparam->data);
2839 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2842 g_return_if_fail(optmenu != NULL);
2844 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(method),
2847 gtk_option_menu_set_history(optmenu, index);
2849 gtk_option_menu_set_history(optmenu, 0);
2850 prefs_common_encoding_set_data_from_optmenu(pparam);
2854 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
2857 GtkWidget *menuitem;
2859 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2860 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2861 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
2862 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2865 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
2867 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
2868 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2870 GtkWidget *menuitem;
2873 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(mode),
2876 gtk_option_menu_set_history(optmenu, index);
2878 gtk_option_menu_set_history(optmenu, 0);
2879 prefs_common_recv_dialog_set_data_from_optmenu(pparam);
2882 menu = gtk_option_menu_get_menu(optmenu);
2883 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2884 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
2887 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam)
2890 GtkWidget *menuitem;
2892 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2893 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2894 *((SendDialogMode *)pparam->data) = GPOINTER_TO_INT
2895 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2898 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam)
2900 SendDialogMode mode = *((SendDialogMode *)pparam->data);
2901 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2903 GtkWidget *menuitem;
2906 case SEND_DIALOG_ALWAYS:
2907 gtk_option_menu_set_history(optmenu, 0);
2909 case SEND_DIALOG_NEVER:
2910 gtk_option_menu_set_history(optmenu, 1);
2916 menu = gtk_option_menu_get_menu(optmenu);
2917 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2918 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
2921 static void prefs_common_apply(void)
2923 MainWindow *mainwindow;
2925 prefs_set_data_from_dialog(param);
2926 sock_set_io_timeout(prefs_common.io_timeout_secs);
2927 main_window_reflect_prefs_all_real(FALSE);
2928 prefs_common_write_config();
2930 mainwindow = mainwindow_get_mainwindow();
2931 log_window_set_clipping(mainwindow->logwin, prefs_common.cliplog,
2932 prefs_common.loglength);
2934 inc_autocheck_timer_remove();
2935 inc_autocheck_timer_set();
2938 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
2941 GtkWidget *menuitem;
2943 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2944 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2945 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
2946 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2949 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
2951 NextUnreadMsgDialogShow dialog_show;
2952 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2954 GtkWidget *menuitem;
2956 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
2958 switch (dialog_show) {
2959 case NEXTUNREADMSGDIALOG_ALWAYS:
2960 gtk_option_menu_set_history(optmenu, 0);
2962 case NEXTUNREADMSGDIALOG_ASSUME_YES:
2963 gtk_option_menu_set_history(optmenu, 1);
2965 case NEXTUNREADMSGDIALOG_ASSUME_NO:
2966 gtk_option_menu_set_history(optmenu, 2);
2970 menu = gtk_option_menu_get_menu(optmenu);
2971 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2972 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
2976 static void prefs_common_cancel(void)
2978 gtk_widget_hide(dialog.window);
2983 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
2986 GtkWidget *menuitem;
2988 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2989 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2990 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
2991 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
2994 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
2996 RecvDialogShow dialog_show;
2997 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2999 GtkWidget *menuitem;
3001 dialog_show = *((RecvDialogShow *)pparam->data);
3003 switch (dialog_show) {
3004 case RECVDIALOG_ALWAYS:
3005 gtk_option_menu_set_history(optmenu, 0);
3007 case RECVDIALOG_WINDOW_ACTIVE:
3008 gtk_option_menu_set_history(optmenu, 1);
3010 case RECVDIALOG_NEVER:
3011 gtk_option_menu_set_history(optmenu, 2);
3016 menu = gtk_option_menu_get_menu(optmenu);
3017 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3018 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));