2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2003 Hiroyuki Yamamoto
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
28 #include <gdk/gdkkeysyms.h>
33 #include <sys/types.h>
39 #include "prefs_gtk.h"
40 #include "prefs_common.h"
41 #include "prefs_display_header.h"
42 #include "prefs_summary_column.h"
43 #include "mainwindow.h"
44 #include "summaryview.h"
45 #include "messageview.h"
46 #include "manage_window.h"
52 #include "alertpanel.h"
56 #include "folderview.h"
57 #include "stock_pixmap.h"
58 #include "quote_fmt.h"
60 PrefsCommon prefs_common;
62 static PrefsDialog dialog;
64 static struct Receive {
65 GtkWidget *checkbtn_incext;
66 GtkWidget *entry_incext;
67 GtkWidget *button_incext;
69 GtkWidget *checkbtn_autochk;
70 GtkWidget *spinbtn_autochk;
71 GtkObject *spinbtn_autochk_adj;
73 GtkWidget *checkbtn_chkonstartup;
74 GtkWidget *checkbtn_scan_after_inc;
77 GtkWidget *checkbtn_newmail_auto;
78 GtkWidget *checkbtn_newmail_manu;
79 GtkWidget *entry_newmail_notify_cmd;
80 GtkWidget *hbox_newmail_notify;
81 GtkWidget *optmenu_recvdialog;
82 GtkWidget *checkbtn_no_recv_err_panel;
83 GtkWidget *checkbtn_close_recv_dialog;
87 GtkWidget *checkbtn_savemsg;
88 GtkWidget *checkbtn_queuemsg;
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;
102 GtkWidget *spinbtn_linewrap;
103 GtkObject *spinbtn_linewrap_adj;
104 GtkWidget *checkbtn_wrapquote;
105 GtkWidget *checkbtn_autowrap;
106 GtkWidget *checkbtn_wrapatsend;
108 GtkWidget *checkbtn_reply_account_autosel;
109 GtkWidget *checkbtn_forward_account_autosel;
110 GtkWidget *checkbtn_reedit_account_autosel;
111 GtkWidget *checkbtn_quote;
112 GtkWidget *checkbtn_default_reply_list;
113 GtkWidget *checkbtn_forward_as_attachment;
114 GtkWidget *checkbtn_redirect_keep_from;
115 GtkWidget *checkbtn_smart_wrapping;
116 GtkWidget *checkbtn_block_cursor;
117 GtkWidget *checkbtn_reply_with_quote;
119 GtkWidget *checkbtn_autosave;
120 GtkWidget *entry_autosave_length;
123 static struct Quote {
124 GtkWidget *entry_quotemark;
125 GtkWidget *text_quotefmt;
127 GtkWidget *entry_fw_quotemark;
128 GtkWidget *text_fw_quotefmt;
130 GtkWidget *entry_quote_chars;
133 static struct Display {
134 GtkWidget *chkbtn_folder_unread;
135 GtkWidget *entry_ng_abbrev_len;
136 GtkWidget *spinbtn_ng_abbrev_len;
137 GtkObject *spinbtn_ng_abbrev_len_adj;
139 GtkWidget *chkbtn_transhdr;
141 GtkWidget *chkbtn_swapfrom;
142 GtkWidget *chkbtn_useaddrbook;
143 GtkWidget *chkbtn_threadsubj;
144 GtkWidget *entry_datefmt;
147 static struct Message {
148 GtkWidget *chkbtn_enablecol;
149 GtkWidget *button_edit_col;
150 GtkWidget *chkbtn_mbalnum;
151 GtkWidget *chkbtn_disphdrpane;
152 GtkWidget *chkbtn_disphdr;
153 GtkWidget *spinbtn_linespc;
154 GtkObject *spinbtn_linespc_adj;
155 GtkWidget *chkbtn_headspc;
157 GtkWidget *chkbtn_smoothscroll;
158 GtkWidget *spinbtn_scrollstep;
159 GtkObject *spinbtn_scrollstep_adj;
160 GtkWidget *chkbtn_halfpage;
162 GtkWidget *chkbtn_attach_desc;
166 static struct Privacy {
167 GtkWidget *checkbtn_auto_check_signatures;
168 GtkWidget *checkbtn_gpg_signature_popup;
169 GtkWidget *checkbtn_store_passphrase;
170 GtkWidget *spinbtn_store_passphrase;
171 GtkObject *spinbtn_store_passphrase_adj;
172 GtkWidget *checkbtn_passphrase_grab;
173 GtkWidget *checkbtn_gpg_warning;
177 static struct Interface {
178 /* GtkWidget *checkbtn_emacs; */
179 GtkWidget *checkbtn_always_show_msg;
180 GtkWidget *checkbtn_openunread;
181 GtkWidget *checkbtn_mark_as_read_on_newwin;
182 GtkWidget *checkbtn_openinbox;
183 GtkWidget *checkbtn_immedexec;
184 GtkWidget *optmenu_nextunreadmsgdialog;
185 GtkWidget *entry_pixmap_theme;
186 GtkWidget *combo_pixmap_theme;
189 static struct Other {
190 GtkWidget *uri_combo;
191 GtkWidget *uri_entry;
192 GtkWidget *printcmd_entry;
193 GtkWidget *exteditor_combo;
194 GtkWidget *exteditor_entry;
196 GtkWidget *checkbtn_addaddrbyclick;
197 GtkWidget *checkbtn_confonexit;
198 GtkWidget *checkbtn_cleanonexit;
199 GtkWidget *checkbtn_askonclean;
200 GtkWidget *checkbtn_warnqueued;
201 GtkWidget *checkbtn_cliplog;
202 GtkWidget *loglength_entry;
205 GtkWidget *checkbtn_ssl_ask_unknown_valid;
209 GtkWidget *spinbtn_iotimeout;
210 GtkObject *spinbtn_iotimeout_adj;
213 static struct MessageColorButtons {
214 GtkWidget *quote_level1_btn;
215 GtkWidget *quote_level2_btn;
216 GtkWidget *quote_level3_btn;
218 GtkWidget *tgt_folder_btn;
219 GtkWidget *signature_btn;
222 static struct KeybindDialog {
227 static GtkWidget *quote_color_win;
228 static GtkWidget *color_dialog;
230 static void prefs_common_charset_set_data_from_optmenu (PrefParam *pparam);
231 static void prefs_common_charset_set_optmenu (PrefParam *pparam);
232 static void prefs_common_encoding_set_data_from_optmenu (PrefParam *pparam);
233 static void prefs_common_encoding_set_optmenu (PrefParam *pparam);
234 static void prefs_common_recv_dialog_set_data_from_optmenu (PrefParam *pparam);
235 static void prefs_common_recv_dialog_set_optmenu (PrefParam *pparam);
236 static void prefs_common_recv_dialog_newmail_notify_toggle_cb (GtkWidget *w,
238 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam);
239 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam);
240 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam);
241 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam);
242 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam);
243 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam);
246 parameter name, default value, pointer to the prefs variable, data type,
247 pointer to the widget pointer,
248 pointer to the function for data setting,
249 pointer to the function for widget setting
252 static PrefParam param[] = {
254 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
255 &receive.checkbtn_incext,
256 prefs_set_data_from_toggle, prefs_set_toggle},
257 {"ext_inc_path", DEFAULT_INC_PATH, &prefs_common.extinc_cmd, P_STRING,
258 &receive.entry_incext,
259 prefs_set_data_from_entry, prefs_set_entry},
261 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
262 &receive.checkbtn_autochk,
263 prefs_set_data_from_toggle, prefs_set_toggle},
264 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
265 &receive.spinbtn_autochk,
266 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
267 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
268 &receive.checkbtn_chkonstartup,
269 prefs_set_data_from_toggle, prefs_set_toggle},
270 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
271 P_BOOL, &receive.checkbtn_scan_after_inc,
272 prefs_set_data_from_toggle, prefs_set_toggle},
273 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
274 P_BOOL, &receive.checkbtn_newmail_manu,
275 prefs_set_data_from_toggle, prefs_set_toggle},
276 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
277 P_BOOL, &receive.checkbtn_newmail_auto,
278 prefs_set_data_from_toggle, prefs_set_toggle},
279 {"newmail_notify_cmd", "", &prefs_common.newmail_notify_cmd, P_STRING,
280 &receive.entry_newmail_notify_cmd,
281 prefs_set_data_from_entry, prefs_set_entry},
282 {"receive_dialog_mode", "1", &prefs_common.recv_dialog_mode, P_ENUM,
283 &receive.optmenu_recvdialog,
284 prefs_common_recv_dialog_set_data_from_optmenu,
285 prefs_common_recv_dialog_set_optmenu},
286 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
287 P_BOOL, &receive.checkbtn_no_recv_err_panel,
288 prefs_set_data_from_toggle, prefs_set_toggle},
289 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
290 P_BOOL, &receive.checkbtn_close_recv_dialog,
291 prefs_set_data_from_toggle, prefs_set_toggle},
294 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
295 &p_send.checkbtn_savemsg,
296 prefs_set_data_from_toggle, prefs_set_toggle},
297 {"queue_message", "FALSE", &prefs_common.queue_msg, P_BOOL,
298 &p_send.checkbtn_queuemsg,
299 prefs_set_data_from_toggle, prefs_set_toggle},
300 {"send_dialog_mode", "0", &prefs_common.send_dialog_mode, P_ENUM,
301 &p_send.optmenu_senddialog,
302 prefs_common_send_dialog_set_data_from_optmenu,
303 prefs_common_send_dialog_set_optmenu},
305 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
306 &p_send.optmenu_charset,
307 prefs_common_charset_set_data_from_optmenu,
308 prefs_common_charset_set_optmenu},
309 {"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
310 &p_send.optmenu_encoding_method,
311 prefs_common_encoding_set_data_from_optmenu,
312 prefs_common_encoding_set_optmenu},
315 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
316 &compose.checkbtn_autoextedit,
317 prefs_set_data_from_toggle, prefs_set_toggle},
318 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
319 P_BOOL, &compose.checkbtn_forward_as_attachment,
320 prefs_set_data_from_toggle, prefs_set_toggle},
321 {"redirect_keep_from", "FALSE",
322 &prefs_common.redirect_keep_from, P_BOOL,
323 &compose.checkbtn_redirect_keep_from,
324 prefs_set_data_from_toggle, prefs_set_toggle},
325 {"undo_level", "50", &prefs_common.undolevels, P_INT,
326 &compose.spinbtn_undolevel,
327 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
328 {"block_cursor", "FALSE", &prefs_common.block_cursor,
329 P_BOOL, &compose.checkbtn_block_cursor,
330 prefs_set_data_from_toggle, prefs_set_toggle},
332 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
333 &compose.spinbtn_linewrap,
334 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
335 {"linewrap_quotation", "FALSE", &prefs_common.linewrap_quote, P_BOOL,
336 &compose.checkbtn_wrapquote,
337 prefs_set_data_from_toggle, prefs_set_toggle},
338 {"linewrap_auto", "FALSE", &prefs_common.autowrap, P_BOOL,
339 &compose.checkbtn_autowrap,
340 prefs_set_data_from_toggle, prefs_set_toggle},
341 {"linewrap_before_sending", "FALSE",
342 &prefs_common.linewrap_at_send, P_BOOL,
343 &compose.checkbtn_wrapatsend,
344 prefs_set_data_from_toggle, prefs_set_toggle},
345 {"smart_wrapping", "TRUE", &prefs_common.smart_wrapping,
346 P_BOOL, &compose.checkbtn_smart_wrapping,
347 prefs_set_data_from_toggle, prefs_set_toggle},
348 {"autosave", "FALSE", &prefs_common.autosave,
349 P_BOOL, &compose.checkbtn_autosave,
350 prefs_set_data_from_toggle, prefs_set_toggle},
351 {"autosave_length", "50", &prefs_common.autosave_length,
352 P_INT, &compose.entry_autosave_length,
353 prefs_set_data_from_entry, prefs_set_entry},
355 {"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
357 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path, P_STRING,
359 {"dictionary", "", &prefs_common.dictionary, P_STRING,
361 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode, P_INT,
363 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
365 {"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
367 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_COLOR,
370 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
371 &compose.checkbtn_reply_with_quote, prefs_set_data_from_toggle, prefs_set_toggle},
373 /* Account autoselection */
374 {"reply_account_autoselect", "TRUE",
375 &prefs_common.reply_account_autosel, P_BOOL,
376 &compose.checkbtn_reply_account_autosel,
377 prefs_set_data_from_toggle, prefs_set_toggle},
378 {"forward_account_autoselect", "TRUE",
379 &prefs_common.forward_account_autosel, P_BOOL,
380 &compose.checkbtn_forward_account_autosel,
381 prefs_set_data_from_toggle, prefs_set_toggle},
382 {"reedit_account_autoselect", "TRUE",
383 &prefs_common.reedit_account_autosel, P_BOOL,
384 &compose.checkbtn_reedit_account_autosel,
385 prefs_set_data_from_toggle, prefs_set_toggle},
387 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
388 &compose.checkbtn_default_reply_list,
389 prefs_set_data_from_toggle, prefs_set_toggle},
391 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
395 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
396 "e.entry_quotemark, prefs_set_data_from_entry, prefs_set_entry},
397 {"reply_quote_format", "On %d\\n%f wrote:\\n\\n%Q",
398 &prefs_common.quotefmt, P_STRING, "e.text_quotefmt,
399 prefs_set_data_from_text, prefs_set_text},
401 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
402 "e.entry_fw_quotemark,
403 prefs_set_data_from_entry, prefs_set_entry},
404 {"forward_quote_format",
405 "\\n\\nBegin forwarded message:\\n\\n"
406 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
407 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M",
408 &prefs_common.fw_quotefmt, P_STRING, "e.text_fw_quotefmt,
409 prefs_set_data_from_text, prefs_set_text},
410 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
411 "e.entry_quote_chars, prefs_set_data_from_entry, prefs_set_entry},
414 {"widget_font", NULL, &prefs_common.widgetfont, P_STRING,
416 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
417 &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
418 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
419 &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
420 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
421 &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
422 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
423 &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
426 {"display_folder_unread_num", "TRUE",
427 &prefs_common.display_folder_unread, P_BOOL,
428 &display.chkbtn_folder_unread,
429 prefs_set_data_from_toggle, prefs_set_toggle},
430 {"newsgroup_abbrev_len", "16",
431 &prefs_common.ng_abbrev_len, P_INT,
432 &display.spinbtn_ng_abbrev_len,
433 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
435 {"translate_header", "TRUE", &prefs_common.trans_hdr, P_BOOL,
436 &display.chkbtn_transhdr,
437 prefs_set_data_from_toggle, prefs_set_toggle},
439 /* Display: Summary View */
440 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
441 &display.chkbtn_swapfrom,
442 prefs_set_data_from_toggle, prefs_set_toggle},
443 {"use_address_book", "TRUE", &prefs_common.use_addr_book, P_BOOL,
444 &display.chkbtn_useaddrbook,
445 prefs_set_data_from_toggle, prefs_set_toggle},
446 {"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
447 &display.chkbtn_threadsubj,
448 prefs_set_data_from_toggle, prefs_set_toggle},
449 {"date_format", "%y/%m/%d(%a) %H:%M", &prefs_common.date_format,
450 P_STRING, &display.entry_datefmt,
451 prefs_set_data_from_entry, prefs_set_entry},
453 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
455 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
457 {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
458 P_INT, NULL, NULL, NULL },
460 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
462 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
464 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
466 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
469 {"folderview_vscrollbar_policy", "0",
470 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
473 {"summary_col_show_mark", "TRUE",
474 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
475 {"summary_col_show_unread", "TRUE",
476 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_show_mime", "TRUE",
478 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
479 {"summary_col_show_subject", "TRUE",
480 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
481 {"summary_col_show_from", "TRUE",
482 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
483 {"summary_col_show_date", "TRUE",
484 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
485 {"summary_col_show_size", "TRUE",
486 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
487 {"summary_col_show_number", "FALSE",
488 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
489 {"summary_col_show_score", "FALSE",
490 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
491 {"summary_col_show_locked", "FALSE",
492 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
494 {"summary_col_pos_mark", "0",
495 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
496 {"summary_col_pos_unread", "1",
497 &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
498 {"summary_col_pos_mime", "2",
499 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
500 {"summary_col_pos_subject", "3",
501 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
502 {"summary_col_pos_from", "4",
503 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
504 {"summary_col_pos_date", "5",
505 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
506 {"summary_col_pos_size", "6",
507 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
508 {"summary_col_pos_number", "7",
509 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
510 {"summary_col_pos_score", "8",
511 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
512 {"summary_col_pos_locked", "9",
513 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
515 {"summary_col_size_mark", "10",
516 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
517 {"summary_col_size_unread", "13",
518 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
519 {"summary_col_size_mime", "10",
520 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
521 {"summary_col_size_subject", "200",
522 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
523 {"summary_col_size_from", "120",
524 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
525 {"summary_col_size_date", "118",
526 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
527 {"summary_col_size_size", "45",
528 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
529 {"summary_col_size_number", "40",
530 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
531 {"summary_col_size_score", "40",
532 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
533 {"summary_col_size_locked", "13",
534 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
537 {"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
539 {"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
541 {"folderview_width", "179", &prefs_common.folderview_width, P_INT,
543 {"folderview_height", "600", &prefs_common.folderview_height, P_INT,
545 {"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
548 {"folder_col_folder", "150", &prefs_common.folder_col_folder, P_INT,
550 {"folder_col_new", "32", &prefs_common.folder_col_new, P_INT,
552 {"folder_col_unread", "32", &prefs_common.folder_col_unread, P_INT,
554 {"folder_col_total", "32", &prefs_common.folder_col_total, P_INT,
557 {"summaryview_width", "600", &prefs_common.summaryview_width, P_INT,
559 {"summaryview_height", "173", &prefs_common.summaryview_height, P_INT,
562 {"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
564 {"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
566 {"messageview_width", "600", &prefs_common.msgview_width, P_INT,
568 {"messageview_height", "540", &prefs_common.msgview_height, P_INT,
570 {"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
573 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
575 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
577 {"mainview_width", "600", &prefs_common.mainview_width, P_INT,
579 {"mainview_height", "600", &prefs_common.mainview_height, P_INT,
581 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
583 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
585 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
587 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
589 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
591 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
593 {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
595 {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
597 {"compose_width", "600", &prefs_common.compose_width, P_INT,
599 {"compose_height", "560", &prefs_common.compose_height, P_INT,
603 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
604 &message.chkbtn_enablecol,
605 prefs_set_data_from_toggle, prefs_set_toggle},
607 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_COLOR,
609 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_COLOR,
611 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_COLOR,
613 {"uri_color", "32512", &prefs_common.uri_col, P_COLOR,
615 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_COLOR,
617 {"signature_color", "7960953", &prefs_common.signature_col, P_COLOR,
619 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
620 P_BOOL, NULL, NULL, NULL},
622 {"convert_mb_alnum", "FALSE", &prefs_common.conv_mb_alnum, P_BOOL,
623 &message.chkbtn_mbalnum,
624 prefs_set_data_from_toggle, prefs_set_toggle},
625 {"display_header_pane", "TRUE", &prefs_common.display_header_pane,
626 P_BOOL, &message.chkbtn_disphdrpane,
627 prefs_set_data_from_toggle, prefs_set_toggle},
628 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
629 &message.chkbtn_disphdr,
630 prefs_set_data_from_toggle, prefs_set_toggle},
631 {"line_space", "2", &prefs_common.line_space, P_INT,
632 &message.spinbtn_linespc,
633 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
634 {"enable_head_space", "FALSE", &prefs_common.head_space, P_BOOL,
635 &message.chkbtn_headspc,
636 prefs_set_data_from_toggle, prefs_set_toggle},
638 {"enable_smooth_scroll", "FALSE",
639 &prefs_common.enable_smooth_scroll, P_BOOL,
640 &message.chkbtn_smoothscroll,
641 prefs_set_data_from_toggle, prefs_set_toggle},
642 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
643 &message.spinbtn_scrollstep,
644 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
645 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
646 &message.chkbtn_halfpage,
647 prefs_set_data_from_toggle, prefs_set_toggle},
649 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
652 {"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
653 &message.chkbtn_attach_desc,
654 prefs_set_data_from_toggle, prefs_set_toggle},
657 {"mime_image_viewer", "display '%s'",
658 &prefs_common.mime_image_viewer, P_STRING, NULL, NULL, NULL},
659 {"mime_audio_player", "play '%s'",
660 &prefs_common.mime_audio_player, P_STRING, NULL, NULL, NULL},
661 {"mime_open_command", "gedit '%s'",
662 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
666 {"auto_check_signatures", "TRUE",
667 &prefs_common.auto_check_signatures, P_BOOL,
668 &privacy.checkbtn_auto_check_signatures,
669 prefs_set_data_from_toggle, prefs_set_toggle},
670 {"gpg_signature_popup", "FALSE",
671 &prefs_common.gpg_signature_popup, P_BOOL,
672 &privacy.checkbtn_gpg_signature_popup,
673 prefs_set_data_from_toggle, prefs_set_toggle},
674 {"store_passphrase", "FALSE", &prefs_common.store_passphrase, P_BOOL,
675 &privacy.checkbtn_store_passphrase,
676 prefs_set_data_from_toggle, prefs_set_toggle},
677 {"store_passphrase_timeout", "0",
678 &prefs_common.store_passphrase_timeout, P_INT,
679 &privacy.spinbtn_store_passphrase,
680 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
682 {"passphrase_grab", "FALSE", &prefs_common.passphrase_grab, P_BOOL,
683 &privacy.checkbtn_passphrase_grab,
684 prefs_set_data_from_toggle, prefs_set_toggle},
685 #endif /* __MINGW32__ */
686 {"gpg_warning", "TRUE", &prefs_common.gpg_warning, P_BOOL,
687 &privacy.checkbtn_gpg_warning,
688 prefs_set_data_from_toggle, prefs_set_toggle},
689 #endif /* USE_GPGME */
692 {"separate_folder", "FALSE", &prefs_common.sep_folder, P_BOOL,
694 {"separate_message", "FALSE", &prefs_common.sep_msg, P_BOOL,
697 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
698 NULL, NULL, NULL}, */
699 {"always_show_message_when_selected", "FALSE",
700 &prefs_common.always_show_msg,
701 P_BOOL, &interface.checkbtn_always_show_msg,
702 prefs_set_data_from_toggle, prefs_set_toggle},
703 {"open_unread_on_enter", "FALSE", &prefs_common.open_unread_on_enter,
704 P_BOOL, &interface.checkbtn_openunread,
705 prefs_set_data_from_toggle, prefs_set_toggle},
706 {"mark_as_read_on_new_window", "FALSE",
707 &prefs_common.mark_as_read_on_new_window,
708 P_BOOL, &interface.checkbtn_mark_as_read_on_newwin,
709 prefs_set_data_from_toggle, prefs_set_toggle},
710 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
711 P_BOOL, &interface.checkbtn_openinbox,
712 prefs_set_data_from_toggle, prefs_set_toggle},
713 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
714 &interface.checkbtn_immedexec,
715 prefs_set_data_from_toggle, prefs_set_toggle},
716 {"nextunreadmsg_dialog", NULL, &prefs_common.next_unread_msg_dialog, P_ENUM,
717 &interface.optmenu_nextunreadmsgdialog,
718 prefs_nextunreadmsgdialog_set_data_from_optmenu,
719 prefs_nextunreadmsgdialog_set_optmenu},
721 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
722 &prefs_common.pixmap_theme_path, P_STRING,
723 &interface.entry_pixmap_theme, prefs_set_data_from_entry, prefs_set_entry},
725 {"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
729 {"uri_open_command", DEFAULT_BROWSER_CMD,
730 &prefs_common.uri_cmd, P_STRING,
731 &other.uri_entry, prefs_set_data_from_entry, prefs_set_entry},
732 {"print_command", "lpr %s", &prefs_common.print_cmd, P_STRING,
733 &other.printcmd_entry, prefs_set_data_from_entry, prefs_set_entry},
734 {"ext_editor_command", "gedit %s",
735 &prefs_common.ext_editor_cmd, P_STRING,
736 &other.exteditor_entry, prefs_set_data_from_entry, prefs_set_entry},
738 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
739 P_BOOL, &other.checkbtn_addaddrbyclick,
740 prefs_set_data_from_toggle, prefs_set_toggle},
742 {"confirm_on_exit", "TRUE", &prefs_common.confirm_on_exit, P_BOOL,
743 &other.checkbtn_confonexit,
744 prefs_set_data_from_toggle, prefs_set_toggle},
745 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
746 &other.checkbtn_cleanonexit,
747 prefs_set_data_from_toggle, prefs_set_toggle},
748 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
749 &other.checkbtn_askonclean,
750 prefs_set_data_from_toggle, prefs_set_toggle},
751 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
752 P_BOOL, &other.checkbtn_warnqueued,
753 prefs_set_data_from_toggle, prefs_set_toggle},
756 {"ssl_ask_unknown_valid", "TRUE", &prefs_common.ssl_ask_unknown_valid,
757 P_BOOL, &other.checkbtn_ssl_ask_unknown_valid,
758 prefs_set_data_from_toggle, prefs_set_toggle},
761 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
763 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
766 {"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
767 P_INT, &other.spinbtn_iotimeout,
768 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
769 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
771 {"important_score", "1", &prefs_common.important_score, P_INT,
773 {"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
774 &other.checkbtn_cliplog,
775 prefs_set_data_from_toggle, prefs_set_toggle},
776 {"log_length", "500", &prefs_common.loglength, P_INT,
777 &other.loglength_entry,
778 prefs_set_data_from_entry, prefs_set_entry},
780 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
782 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
785 {"color_new", "179", &prefs_common.color_new, P_COLOR,
788 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
791 /* widget creating functions */
792 static void prefs_common_create (void);
793 static void prefs_receive_create (void);
794 static void prefs_send_create (void);
795 static void prefs_compose_create (void);
796 static void prefs_quote_create (void);
797 static void prefs_display_create (void);
798 static void prefs_message_create (void);
800 static void prefs_privacy_create (void);
802 static void prefs_interface_create (void);
803 static void prefs_other_create (void);
805 static void date_format_ok_btn_clicked (GtkButton *button,
807 static void date_format_cancel_btn_clicked (GtkButton *button,
809 static void date_format_key_pressed (GtkWidget *keywidget,
812 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
815 static void date_format_entry_on_change (GtkEditable *editable,
817 static void date_format_select_row (GtkWidget *date_format_list,
820 GdkEventButton *event,
821 GtkWidget *date_format);
822 static GtkWidget *date_format_create (GtkButton *button,
825 static void prefs_quote_colors_dialog (void);
826 static void prefs_quote_colors_dialog_create (void);
827 static void prefs_quote_colors_key_pressed (GtkWidget *widget,
830 static void quote_color_set_dialog (GtkWidget *widget,
832 static void quote_colors_set_dialog_ok (GtkWidget *widget,
834 static void quote_colors_set_dialog_cancel (GtkWidget *widget,
836 static void quote_colors_set_dialog_key_pressed (GtkWidget *widget,
839 static void set_button_bg_color (GtkWidget *widget,
841 static void prefs_enable_message_color_toggled (void);
842 static void prefs_recycle_colors_toggled (GtkWidget *widget);
844 static void prefs_keybind_select (void);
845 static gint prefs_keybind_deleted (GtkWidget *widget,
848 static void prefs_keybind_key_pressed (GtkWidget *widget,
851 static void prefs_keybind_cancel (void);
852 static void prefs_keybind_apply_clicked (GtkWidget *widget);
854 static gint prefs_common_deleted (GtkWidget *widget,
857 static void prefs_common_key_pressed (GtkWidget *widget,
860 static void prefs_common_ok (void);
861 static void prefs_common_apply (void);
862 static void prefs_common_cancel (void);
864 void prefs_common_init(void)
866 prefs_common.disphdr_list = NULL;
869 PrefsCommon *prefs_common_get(void)
871 return &prefs_common;
874 void prefs_common_read_config(void)
878 gchar buf[PREFSBUFSIZE];
880 prefs_read_config(param, "Common", COMMON_RC);
882 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
884 if ((fp = fopen(path, "rb")) == NULL) {
885 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
890 while (fgets(buf, sizeof(buf), fp) != NULL) {
892 if (buf[0] == '\0') continue;
893 prefs_common.mime_open_cmd_history =
894 add_history(prefs_common.mime_open_cmd_history, buf);
898 prefs_common.mime_open_cmd_history =
899 g_list_reverse(prefs_common.mime_open_cmd_history);
902 void prefs_common_save_config(void)
908 prefs_save_config(param, "Common", COMMON_RC);
910 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
912 if ((fp = fopen(path, "wb")) == NULL) {
913 FILE_OP_ERROR(path, "fopen");
918 for (cur = prefs_common.mime_open_cmd_history;
919 cur != NULL; cur = cur->next) {
920 fputs((gchar *)cur->data, fp);
928 void prefs_common_open(void)
930 if (prefs_rc_is_readonly(COMMON_RC))
935 if (!dialog.window) {
936 prefs_common_create();
939 manage_window_set_transient(GTK_WINDOW(dialog.window));
940 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
941 gtk_widget_grab_focus(dialog.ok_btn);
943 prefs_set_dialog(param);
945 gtk_widget_show(dialog.window);
948 static void prefs_common_create(void)
952 debug_print("Creating common preferences window...\n");
954 prefs_dialog_create(&dialog);
955 gtk_window_set_title (GTK_WINDOW(dialog.window),
956 _("Common Preferences"));
957 gtk_signal_connect (GTK_OBJECT(dialog.window), "delete_event",
958 GTK_SIGNAL_FUNC(prefs_common_deleted), NULL);
959 gtk_signal_connect (GTK_OBJECT(dialog.window), "key_press_event",
960 GTK_SIGNAL_FUNC(prefs_common_key_pressed), NULL);
961 MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
963 gtk_signal_connect (GTK_OBJECT(dialog.ok_btn), "clicked",
964 GTK_SIGNAL_FUNC(prefs_common_ok), NULL);
965 gtk_signal_connect (GTK_OBJECT(dialog.apply_btn), "clicked",
966 GTK_SIGNAL_FUNC(prefs_common_apply), NULL);
967 gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
968 GTK_SIGNAL_FUNC(prefs_common_cancel),
969 GTK_OBJECT(dialog.window));
971 /* create all widgets on notebook */
972 prefs_receive_create();
973 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
975 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
976 prefs_compose_create();
977 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
978 prefs_quote_create();
979 SET_NOTEBOOK_LABEL(dialog.notebook, _("Quote"), page++);
980 prefs_display_create();
981 SET_NOTEBOOK_LABEL(dialog.notebook, _("Display"), page++);
982 prefs_message_create();
983 SET_NOTEBOOK_LABEL(dialog.notebook, _("Message"), page++);
985 prefs_privacy_create();
986 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
988 prefs_interface_create();
989 SET_NOTEBOOK_LABEL(dialog.notebook, _("Interface"), page++);
990 prefs_other_create();
991 SET_NOTEBOOK_LABEL(dialog.notebook, _("Other"), page++);
993 gtk_widget_show_all(dialog.window);
996 static void prefs_receive_create(void)
1000 GtkWidget *frame_incext;
1001 GtkWidget *checkbtn_incext;
1003 GtkWidget *label_incext;
1004 GtkWidget *entry_incext;
1005 /* GtkWidget *button_incext; */
1007 GtkWidget *hbox_autochk;
1008 GtkWidget *checkbtn_autochk;
1009 GtkWidget *label_autochk1;
1010 GtkObject *spinbtn_autochk_adj;
1011 GtkWidget *spinbtn_autochk;
1012 GtkWidget *label_autochk2;
1013 GtkWidget *checkbtn_chkonstartup;
1014 GtkWidget *checkbtn_scan_after_inc;
1017 GtkWidget *frame_newmail;
1018 GtkWidget *hbox_newmail_notify;
1019 GtkWidget *checkbtn_newmail_auto;
1020 GtkWidget *checkbtn_newmail_manu;
1021 GtkWidget *entry_newmail_notify_cmd;
1022 GtkWidget *label_newmail_notify_cmd;
1024 GtkWidget *hbox_recvdialog;
1025 GtkWidget *label_recvdialog;
1027 GtkWidget *menuitem;
1028 GtkWidget *optmenu_recvdialog;
1029 GtkWidget *checkbtn_no_recv_err_panel;
1030 GtkWidget *checkbtn_close_recv_dialog;
1032 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1033 gtk_widget_show (vbox1);
1034 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1035 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1037 PACK_FRAME(vbox1, frame_incext, _("External program"));
1039 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1040 gtk_widget_show (vbox2);
1041 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
1042 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1044 /* Use of external incorporation program */
1045 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
1046 _("Use external program for incorporation"));
1048 hbox = gtk_hbox_new (FALSE, 8);
1049 gtk_widget_show (hbox);
1050 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1051 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1053 label_incext = gtk_label_new (_("Command"));
1054 gtk_widget_show (label_incext);
1055 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1057 entry_incext = gtk_entry_new ();
1058 gtk_widget_show (entry_incext);
1059 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1062 button_incext = gtk_button_new_with_label ("... ");
1063 gtk_widget_show (button_incext);
1064 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1067 vbox2 = gtk_vbox_new (FALSE, 0);
1068 gtk_widget_show (vbox2);
1069 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1072 hbox_autochk = gtk_hbox_new (FALSE, 8);
1073 gtk_widget_show (hbox_autochk);
1074 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1076 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1077 _("Auto-check new mail"));
1079 label_autochk1 = gtk_label_new (_("every"));
1080 gtk_widget_show (label_autochk1);
1081 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1083 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1084 spinbtn_autochk = gtk_spin_button_new
1085 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1086 gtk_widget_show (spinbtn_autochk);
1087 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1088 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1089 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1091 label_autochk2 = gtk_label_new (_("minute(s)"));
1092 gtk_widget_show (label_autochk2);
1093 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1095 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1096 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1097 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1099 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1100 _("Check new mail on startup"));
1101 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1102 _("Update all local folders after incorporation"));
1105 /* receive dialog */
1106 hbox_recvdialog = gtk_hbox_new (FALSE, 8);
1107 gtk_widget_show (hbox_recvdialog);
1108 gtk_box_pack_start (GTK_BOX (vbox2), hbox_recvdialog, FALSE, FALSE, 0);
1110 label_recvdialog = gtk_label_new (_("Show receive dialog"));
1111 gtk_misc_set_alignment(GTK_MISC(label_recvdialog), 0, 0.5);
1112 gtk_widget_show (label_recvdialog);
1113 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), label_recvdialog, FALSE, FALSE, 0);
1115 optmenu_recvdialog = gtk_option_menu_new ();
1116 gtk_widget_show (optmenu_recvdialog);
1117 gtk_box_pack_start (GTK_BOX (hbox_recvdialog), optmenu_recvdialog, FALSE, FALSE, 0);
1119 menu = gtk_menu_new ();
1120 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
1121 MENUITEM_ADD (menu, menuitem, _("Only on manual receiving"),
1122 RECV_DIALOG_MANUAL);
1123 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
1125 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
1127 PACK_CHECK_BUTTON (vbox2, checkbtn_no_recv_err_panel,
1128 _("Don't popup error dialog on receive error"));
1130 PACK_CHECK_BUTTON (vbox2, checkbtn_close_recv_dialog,
1131 _("Close receive dialog when finished"));
1133 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1135 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1136 gtk_widget_show (vbox2);
1137 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1138 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1140 hbox = gtk_hbox_new (TRUE, 8);
1141 gtk_widget_show (hbox);
1142 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1143 _("after autochecking"));
1144 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1145 _("after manual checking"));
1146 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1147 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1148 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1150 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1151 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1154 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1155 gtk_widget_show (hbox);
1156 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1159 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1160 "(use %d as number of new "
1162 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1164 gtk_widget_show (label_newmail_notify_cmd);
1165 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1166 label_newmail_notify_cmd, FALSE, FALSE, 0);
1168 entry_newmail_notify_cmd = gtk_entry_new ();
1169 gtk_widget_show (entry_newmail_notify_cmd);
1170 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1171 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1173 gtk_widget_set_sensitive(hbox_newmail_notify,
1174 prefs_common.newmail_notify_auto ||
1175 prefs_common.newmail_notify_manu);
1177 receive.checkbtn_incext = checkbtn_incext;
1178 receive.entry_incext = entry_incext;
1179 /* receive.button_incext = button_incext; */
1181 receive.checkbtn_autochk = checkbtn_autochk;
1182 receive.spinbtn_autochk = spinbtn_autochk;
1183 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1185 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1186 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1189 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1190 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1191 receive.hbox_newmail_notify = hbox_newmail_notify;
1192 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1193 receive.optmenu_recvdialog = optmenu_recvdialog;
1194 receive.checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
1195 receive.checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
1198 static void prefs_send_create(void)
1203 GtkWidget *checkbtn_savemsg;
1204 GtkWidget *checkbtn_queuemsg;
1205 GtkWidget *label_outcharset;
1206 GtkWidget *optmenu_charset;
1207 GtkWidget *optmenu_menu;
1208 GtkWidget *menuitem;
1209 GtkTooltips *charset_tooltip;
1210 GtkWidget *optmenu_encoding;
1211 GtkWidget *label_encoding;
1212 GtkTooltips *encoding_tooltip;
1213 GtkWidget *label_senddialog;
1215 GtkWidget *optmenu_senddialog;
1216 GtkWidget *hbox_senddialog;
1218 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1219 gtk_widget_show (vbox1);
1220 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1221 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1223 vbox2 = gtk_vbox_new (FALSE, 0);
1224 gtk_widget_show (vbox2);
1225 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1227 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1228 _("Save sent messages to Sent folder"));
1229 PACK_CHECK_BUTTON (vbox2, checkbtn_queuemsg,
1230 _("Queue messages that fail to send"));
1232 hbox_senddialog = gtk_hbox_new (FALSE, 8);
1233 gtk_box_pack_start (GTK_BOX (vbox1), hbox_senddialog, FALSE, FALSE, 0);
1235 label_senddialog = gtk_label_new (_("Show send dialog"));
1236 gtk_widget_show (label_senddialog);
1237 gtk_box_pack_start (GTK_BOX (hbox_senddialog), label_senddialog, FALSE, FALSE, 0);
1239 optmenu_senddialog = gtk_option_menu_new ();
1240 gtk_widget_show (optmenu_senddialog);
1241 gtk_box_pack_start (GTK_BOX (hbox_senddialog), optmenu_senddialog, FALSE, FALSE, 0);
1243 menu = gtk_menu_new ();
1244 MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
1245 MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
1247 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
1249 hbox1 = gtk_hbox_new (FALSE, 8);
1250 gtk_widget_show (hbox1);
1251 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1253 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1254 gtk_widget_show (label_outcharset);
1255 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1257 charset_tooltip = gtk_tooltips_new();
1259 optmenu_charset = gtk_option_menu_new ();
1260 gtk_widget_show (optmenu_charset);
1261 gtk_tooltips_set_tip(GTK_TOOLTIPS(charset_tooltip), optmenu_charset,
1262 _("If `Automatic' is selected, the optimal encoding"
1263 " for the current locale will be used"),
1265 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_charset, FALSE, FALSE, 0);
1267 optmenu_menu = gtk_menu_new ();
1269 #define SET_MENUITEM(str, data) \
1271 MENUITEM_ADD(optmenu_menu, menuitem, str, data); \
1274 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1275 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1277 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1279 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1280 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1281 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1282 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1283 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1284 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1285 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1287 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1289 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1291 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1292 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1294 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1296 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1297 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1299 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1300 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1302 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1303 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1305 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1306 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1307 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1309 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_charset),
1312 hbox1 = gtk_hbox_new (FALSE, 8);
1313 gtk_widget_show (hbox1);
1314 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1316 hbox1 = gtk_hbox_new (FALSE, 8);
1317 gtk_widget_show (hbox1);
1318 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1320 label_encoding = gtk_label_new (_("Transfer encoding"));
1321 gtk_widget_show (label_encoding);
1322 gtk_box_pack_start (GTK_BOX (hbox1), label_encoding, FALSE, FALSE, 0);
1324 encoding_tooltip = gtk_tooltips_new();
1326 optmenu_encoding = gtk_option_menu_new ();
1327 gtk_widget_show (optmenu_encoding);
1328 gtk_tooltips_set_tip(GTK_TOOLTIPS(encoding_tooltip), optmenu_encoding,
1329 _("Specify Content-Transfer-Encoding used when"
1330 " message body contains non-ASCII characters"),
1332 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_encoding, FALSE, FALSE, 0);
1334 optmenu_menu = gtk_menu_new ();
1336 SET_MENUITEM(_("Automatic"), CTE_AUTO);
1337 SET_MENUITEM("base64", CTE_BASE64);
1338 SET_MENUITEM("quoted-printable", CTE_QUOTED_PRINTABLE);
1339 SET_MENUITEM("8bit", CTE_8BIT);
1341 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_encoding),
1344 hbox1 = gtk_hbox_new (FALSE, 8);
1345 gtk_widget_show (hbox1);
1346 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1348 p_send.checkbtn_savemsg = checkbtn_savemsg;
1349 p_send.checkbtn_queuemsg = checkbtn_queuemsg;
1350 p_send.optmenu_senddialog = optmenu_senddialog;
1352 p_send.optmenu_charset = optmenu_charset;
1353 p_send.optmenu_encoding_method = optmenu_encoding;
1356 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1360 toggled = gtk_toggle_button_get_active
1361 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1362 gtk_toggle_button_get_active
1363 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1364 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1367 static void prefs_compose_create(void)
1372 GtkWidget *checkbtn_autoextedit;
1374 GtkWidget *frame_autosel;
1375 GtkWidget *hbox_autosel;
1376 GtkWidget *checkbtn_reply_account_autosel;
1377 GtkWidget *checkbtn_forward_account_autosel;
1378 GtkWidget *checkbtn_reedit_account_autosel;
1380 GtkWidget *hbox_undolevel;
1381 GtkWidget *label_undolevel;
1382 GtkObject *spinbtn_undolevel_adj;
1383 GtkWidget *spinbtn_undolevel;
1385 GtkWidget *vbox_linewrap;
1390 GtkWidget *label_linewrap;
1391 GtkObject *spinbtn_linewrap_adj;
1392 GtkWidget *spinbtn_linewrap;
1393 GtkWidget *checkbtn_wrapquote;
1394 GtkWidget *checkbtn_autowrap;
1395 GtkWidget *checkbtn_wrapatsend;
1397 GtkWidget *checkbtn_default_reply_list;
1399 GtkWidget *checkbtn_forward_as_attachment;
1400 GtkWidget *checkbtn_redirect_keep_from;
1401 GtkWidget *checkbtn_smart_wrapping;
1402 GtkWidget *checkbtn_block_cursor;
1403 GtkWidget *frame_msgwrap;
1405 GtkWidget *hbox_autosave;
1406 GtkWidget *checkbtn_autosave;
1407 GtkWidget *entry_autosave_length;
1408 GtkWidget *label_autosave_length;
1410 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1411 gtk_widget_show (vbox1);
1412 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1413 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1415 /* Account autoselection */
1416 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1418 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1419 gtk_widget_show (hbox_autosel);
1420 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1421 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1423 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1424 _("when replying"));
1425 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1426 _("when forwarding"));
1427 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1428 _("when re-editing"));
1430 vbox2 = gtk_vbox_new (FALSE, 0);
1431 gtk_widget_show (vbox2);
1432 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1434 PACK_CHECK_BUTTON (vbox2, checkbtn_default_reply_list,
1435 _("Reply button invokes mailing list reply"));
1437 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1438 _("Automatically launch the external editor"));
1440 hbox5 = gtk_hbox_new (FALSE, 8);
1441 gtk_widget_show (hbox5);
1442 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1444 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1445 _("Forward as attachment"));
1447 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1450 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1451 _("Keep the original 'From' header when redirecting"));
1454 hbox_autosave = gtk_hbox_new (FALSE, 8);
1455 gtk_widget_show (hbox_autosave);
1456 gtk_box_pack_start (GTK_BOX (vbox1), hbox_autosave, FALSE, FALSE, 0);
1458 PACK_CHECK_BUTTON (hbox_autosave, checkbtn_autosave,
1459 _("Autosave to Drafts folder every "));
1461 entry_autosave_length = gtk_entry_new();
1462 gtk_widget_set_usize (entry_autosave_length, 64, -1);
1463 gtk_widget_show (entry_autosave_length);
1464 gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
1466 label_autosave_length = gtk_label_new(_("characters"));
1467 gtk_widget_show (label_autosave_length);
1468 gtk_box_pack_start (GTK_BOX (hbox_autosave), label_autosave_length, FALSE, FALSE, 0);
1470 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1471 gtk_widget_show (hbox_undolevel);
1472 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1474 label_undolevel = gtk_label_new (_("Undo level"));
1475 gtk_widget_show (label_undolevel);
1476 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1478 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1479 spinbtn_undolevel = gtk_spin_button_new
1480 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1481 gtk_widget_show (spinbtn_undolevel);
1482 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1483 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1484 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1487 PACK_FRAME(vbox1, frame_msgwrap, _("Message wrapping"));
1489 vbox_linewrap = gtk_vbox_new (FALSE, VSPACING_NARROW);
1490 gtk_widget_show (vbox_linewrap);
1491 gtk_container_add (GTK_CONTAINER (frame_msgwrap), vbox_linewrap);
1492 gtk_container_set_border_width (GTK_CONTAINER (vbox_linewrap), 8);
1494 hbox3 = gtk_hbox_new (FALSE, 8);
1495 gtk_widget_show (hbox3);
1496 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox3, FALSE, FALSE, 0);
1499 label_linewrap = gtk_label_new (_("Wrap messages at"));
1500 gtk_widget_show (label_linewrap);
1501 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1503 spinbtn_linewrap_adj = gtk_adjustment_new (72, 20, 1024, 1, 10, 10);
1504 spinbtn_linewrap = gtk_spin_button_new
1505 (GTK_ADJUSTMENT (spinbtn_linewrap_adj), 1, 0);
1506 gtk_widget_show (spinbtn_linewrap);
1507 gtk_box_pack_start (GTK_BOX (hbox3), spinbtn_linewrap, FALSE, FALSE, 0);
1508 gtk_widget_set_usize (spinbtn_linewrap, 64, -1);
1509 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linewrap), TRUE);
1511 label_linewrap = gtk_label_new (_("characters"));
1512 gtk_widget_show (label_linewrap);
1513 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1515 hbox4 = gtk_hbox_new (FALSE, VSPACING);
1516 gtk_widget_show (hbox4);
1517 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox4, FALSE, FALSE, 0);
1519 PACK_CHECK_BUTTON (hbox4, checkbtn_wrapquote, _("Wrap quotation"));
1521 PACK_CHECK_BUTTON (hbox4, checkbtn_autowrap, _("Wrap on input"));
1524 (hbox4, checkbtn_wrapatsend, _("Wrap before sending"));
1526 PACK_CHECK_BUTTON (vbox_linewrap, checkbtn_smart_wrapping,
1527 _("Smart wrapping (EXPERIMENTAL)"));
1530 compose.checkbtn_quote = checkbtn_quote;
1531 compose.entry_quotemark = entry_quotemark;
1532 compose.text_quotefmt = text_quotefmt;
1535 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1537 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1538 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1539 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1541 compose.spinbtn_undolevel = spinbtn_undolevel;
1542 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1544 compose.spinbtn_linewrap = spinbtn_linewrap;
1545 compose.spinbtn_linewrap_adj = spinbtn_linewrap_adj;
1546 compose.checkbtn_wrapquote = checkbtn_wrapquote;
1547 compose.checkbtn_autowrap = checkbtn_autowrap;
1548 compose.checkbtn_wrapatsend = checkbtn_wrapatsend;
1550 compose.checkbtn_autosave = checkbtn_autosave;
1551 compose.entry_autosave_length = entry_autosave_length;
1553 compose.checkbtn_forward_as_attachment =
1554 checkbtn_forward_as_attachment;
1555 compose.checkbtn_redirect_keep_from =
1556 checkbtn_redirect_keep_from;
1557 compose.checkbtn_smart_wrapping =
1558 checkbtn_smart_wrapping;
1559 compose.checkbtn_block_cursor =
1560 checkbtn_block_cursor;
1561 compose.checkbtn_default_reply_list = checkbtn_default_reply_list;
1564 static void prefs_quote_create(void)
1567 GtkWidget *frame_quote;
1568 GtkWidget *vbox_quote;
1571 GtkWidget *label_quotemark;
1572 GtkWidget *entry_quotemark;
1573 GtkWidget *scrolledwin_quotefmt;
1574 GtkWidget *text_quotefmt;
1576 GtkWidget *entry_fw_quotemark;
1577 GtkWidget *text_fw_quotefmt;
1579 GtkWidget *entry_quote_chars;
1580 GtkWidget *label_quote_chars;
1582 GtkWidget *btn_quotedesc;
1584 GtkWidget *checkbtn_reply_with_quote;
1586 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1587 gtk_widget_show (vbox1);
1588 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1589 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1593 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1595 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1597 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1598 gtk_widget_show (vbox_quote);
1599 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1600 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1602 hbox1 = gtk_hbox_new (FALSE, 32);
1603 gtk_widget_show (hbox1);
1604 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1606 hbox2 = gtk_hbox_new (FALSE, 8);
1607 gtk_widget_show (hbox2);
1608 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1610 label_quotemark = gtk_label_new (_("Quotation mark"));
1611 gtk_widget_show (label_quotemark);
1612 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1614 entry_quotemark = gtk_entry_new ();
1615 gtk_widget_show (entry_quotemark);
1616 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
1617 gtk_widget_set_usize (entry_quotemark, 64, -1);
1619 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1620 gtk_widget_show (scrolledwin_quotefmt);
1621 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1622 gtk_scrolled_window_set_policy
1623 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1624 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1626 text_quotefmt = gtk_text_new (NULL, NULL);
1627 gtk_widget_show (text_quotefmt);
1628 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
1629 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
1630 gtk_widget_set_usize(text_quotefmt, -1, 60);
1634 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
1636 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1637 gtk_widget_show (vbox_quote);
1638 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1639 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1641 hbox1 = gtk_hbox_new (FALSE, 32);
1642 gtk_widget_show (hbox1);
1643 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1645 hbox2 = gtk_hbox_new (FALSE, 8);
1646 gtk_widget_show (hbox2);
1647 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1649 label_quotemark = gtk_label_new (_("Quotation mark"));
1650 gtk_widget_show (label_quotemark);
1651 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1653 entry_fw_quotemark = gtk_entry_new ();
1654 gtk_widget_show (entry_fw_quotemark);
1655 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
1657 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
1659 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1660 gtk_widget_show (scrolledwin_quotefmt);
1661 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1662 gtk_scrolled_window_set_policy
1663 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1664 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1666 text_fw_quotefmt = gtk_text_new (NULL, NULL);
1667 gtk_widget_show (text_fw_quotefmt);
1668 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
1670 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
1671 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
1673 hbox1 = gtk_hbox_new (FALSE, 32);
1674 gtk_widget_show (hbox1);
1675 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1678 gtk_button_new_with_label (_(" Description of symbols "));
1679 gtk_widget_show (btn_quotedesc);
1680 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
1681 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
1682 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
1686 PACK_FRAME (vbox1, frame_quote, _("Quotation characters"));
1688 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1689 gtk_widget_show (vbox_quote);
1690 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1691 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1693 hbox1 = gtk_hbox_new (FALSE, 32);
1694 gtk_widget_show (hbox1);
1695 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1697 hbox2 = gtk_hbox_new (FALSE, 8);
1698 gtk_widget_show (hbox2);
1699 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1701 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
1702 gtk_widget_show (label_quote_chars);
1703 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
1705 entry_quote_chars = gtk_entry_new ();
1706 gtk_widget_show (entry_quote_chars);
1707 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
1709 gtk_widget_set_usize (entry_quote_chars, 64, -1);
1712 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
1713 quote.entry_quotemark = entry_quotemark;
1714 quote.text_quotefmt = text_quotefmt;
1715 quote.entry_fw_quotemark = entry_fw_quotemark;
1716 quote.text_fw_quotefmt = text_fw_quotefmt;
1717 quote.entry_quote_chars = entry_quote_chars;
1720 static void prefs_display_create(void)
1723 GtkWidget *chkbtn_transhdr;
1724 GtkWidget *chkbtn_folder_unread;
1726 GtkWidget *label_ng_abbrev;
1727 GtkWidget *spinbtn_ng_abbrev_len;
1728 GtkObject *spinbtn_ng_abbrev_len_adj;
1729 GtkWidget *frame_summary;
1731 GtkWidget *chkbtn_swapfrom;
1732 GtkWidget *chkbtn_useaddrbook;
1733 GtkWidget *chkbtn_threadsubj;
1735 GtkWidget *label_datefmt;
1736 GtkWidget *button_datefmt;
1737 GtkWidget *entry_datefmt;
1738 GtkWidget *button_dispitem;
1740 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1741 gtk_widget_show (vbox1);
1742 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1743 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1745 vbox2 = gtk_vbox_new (FALSE, 0);
1746 gtk_widget_show (vbox2);
1747 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
1750 (vbox2, chkbtn_transhdr,
1751 _("Translate header name (such as `From:', `Subject:')"));
1753 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
1754 _("Display unread number next to folder name"));
1756 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1758 hbox1 = gtk_hbox_new (FALSE, 8);
1759 gtk_widget_show (hbox1);
1760 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1762 label_ng_abbrev = gtk_label_new
1763 (_("Abbreviate newsgroup names longer than"));
1764 gtk_widget_show (label_ng_abbrev);
1765 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1767 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
1768 spinbtn_ng_abbrev_len = gtk_spin_button_new
1769 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
1770 gtk_widget_show (spinbtn_ng_abbrev_len);
1771 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
1773 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
1774 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
1777 label_ng_abbrev = gtk_label_new
1779 gtk_widget_show (label_ng_abbrev);
1780 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
1782 /* ---- Summary ---- */
1784 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
1786 vbox2 = gtk_vbox_new (FALSE, 0);
1787 gtk_widget_show (vbox2);
1788 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
1789 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1792 (vbox2, chkbtn_swapfrom,
1793 _("Display recipient in `From' column if sender is yourself"));
1795 (vbox2, chkbtn_useaddrbook,
1796 _("Display sender using address book"));
1798 (vbox2, chkbtn_threadsubj,
1799 _("Thread using subject in addition to standard headers"));
1801 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1803 hbox1 = gtk_hbox_new (FALSE, 8);
1804 gtk_widget_show (hbox1);
1805 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1807 label_datefmt = gtk_label_new (_("Date format"));
1808 gtk_widget_show (label_datefmt);
1809 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
1811 entry_datefmt = gtk_entry_new ();
1812 gtk_widget_show (entry_datefmt);
1813 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
1815 button_datefmt = gtk_button_new_with_label (" ... ");
1817 gtk_widget_show (button_datefmt);
1818 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
1819 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
1820 GTK_SIGNAL_FUNC (date_format_create), NULL);
1822 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
1824 hbox1 = gtk_hbox_new (FALSE, 8);
1825 gtk_widget_show (hbox1);
1826 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1828 button_dispitem = gtk_button_new_with_label
1829 (_(" Set displayed items in summary... "));
1830 gtk_widget_show (button_dispitem);
1831 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
1832 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
1833 GTK_SIGNAL_FUNC (prefs_summary_column_open),
1836 display.chkbtn_transhdr = chkbtn_transhdr;
1837 display.chkbtn_folder_unread = chkbtn_folder_unread;
1838 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
1839 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
1841 display.chkbtn_swapfrom = chkbtn_swapfrom;
1842 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
1843 display.chkbtn_threadsubj = chkbtn_threadsubj;
1844 display.entry_datefmt = entry_datefmt;
1847 static void prefs_message_create(void)
1853 GtkWidget *chkbtn_enablecol;
1854 GtkWidget *button_edit_col;
1855 GtkWidget *chkbtn_mbalnum;
1856 GtkWidget *chkbtn_disphdrpane;
1857 GtkWidget *chkbtn_disphdr;
1858 GtkWidget *button_edit_disphdr;
1859 GtkWidget *hbox_linespc;
1860 GtkWidget *label_linespc;
1861 GtkObject *spinbtn_linespc_adj;
1862 GtkWidget *spinbtn_linespc;
1863 GtkWidget *chkbtn_headspc;
1865 GtkWidget *frame_scr;
1866 GtkWidget *vbox_scr;
1867 GtkWidget *chkbtn_smoothscroll;
1868 GtkWidget *hbox_scr;
1869 GtkWidget *label_scr;
1870 GtkObject *spinbtn_scrollstep_adj;
1871 GtkWidget *spinbtn_scrollstep;
1872 GtkWidget *chkbtn_halfpage;
1874 GtkWidget *chkbtn_attach_desc;
1876 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1877 gtk_widget_show (vbox1);
1878 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1879 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1881 vbox2 = gtk_vbox_new (FALSE, 0);
1882 gtk_widget_show (vbox2);
1883 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1885 hbox1 = gtk_hbox_new (FALSE, 8);
1886 gtk_widget_show (hbox1);
1887 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1889 PACK_CHECK_BUTTON (hbox1, chkbtn_enablecol,
1890 _("Enable coloration of message"));
1891 gtk_signal_connect(GTK_OBJECT(chkbtn_enablecol), "toggled",
1892 GTK_SIGNAL_FUNC(prefs_enable_message_color_toggled),
1895 button_edit_col = gtk_button_new_with_label (_(" Edit... "));
1896 gtk_widget_show (button_edit_col);
1897 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_col, FALSE, TRUE, 0);
1898 gtk_signal_connect (GTK_OBJECT (button_edit_col), "clicked",
1899 GTK_SIGNAL_FUNC (prefs_quote_colors_dialog), NULL);
1901 SET_TOGGLE_SENSITIVITY(chkbtn_enablecol, button_edit_col);
1904 (vbox2, chkbtn_mbalnum,
1905 _("Display multi-byte alphanumeric as\n"
1906 "ASCII character (Japanese only)"));
1907 gtk_label_set_justify (GTK_LABEL (GTK_BIN(chkbtn_mbalnum)->child),
1910 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
1911 _("Display header pane above message view"));
1913 hbox1 = gtk_hbox_new (FALSE, 8);
1914 gtk_widget_show (hbox1);
1915 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1917 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
1918 _("Display short headers on message view"));
1920 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
1921 gtk_widget_show (button_edit_disphdr);
1922 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
1924 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
1925 GTK_SIGNAL_FUNC (prefs_display_header_open),
1928 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
1930 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1932 hbox1 = gtk_hbox_new (FALSE, 32);
1933 gtk_widget_show (hbox1);
1934 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1936 hbox_linespc = gtk_hbox_new (FALSE, 8);
1937 gtk_widget_show (hbox1);
1938 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
1940 label_linespc = gtk_label_new (_("Line space"));
1941 gtk_widget_show (label_linespc);
1942 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1945 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
1946 spinbtn_linespc = gtk_spin_button_new
1947 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
1948 gtk_widget_show (spinbtn_linespc);
1949 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
1951 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
1952 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
1954 label_linespc = gtk_label_new (_("pixel(s)"));
1955 gtk_widget_show (label_linespc);
1956 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
1959 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Leave space on head"));
1961 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
1963 vbox_scr = gtk_vbox_new (FALSE, 0);
1964 gtk_widget_show (vbox_scr);
1965 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
1966 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
1968 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
1970 hbox1 = gtk_hbox_new (FALSE, 32);
1971 gtk_widget_show (hbox1);
1972 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
1974 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
1976 hbox_scr = gtk_hbox_new (FALSE, 8);
1977 gtk_widget_show (hbox_scr);
1978 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
1980 label_scr = gtk_label_new (_("Step"));
1981 gtk_widget_show (label_scr);
1982 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1984 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
1985 spinbtn_scrollstep = gtk_spin_button_new
1986 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
1987 gtk_widget_show (spinbtn_scrollstep);
1988 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
1990 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
1991 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
1994 label_scr = gtk_label_new (_("pixel(s)"));
1995 gtk_widget_show (label_scr);
1996 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
1998 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
2000 vbox3 = gtk_vbox_new (FALSE, 0);
2001 gtk_widget_show (vbox3);
2002 gtk_box_pack_start (GTK_BOX (vbox1), vbox3, FALSE, FALSE, 0);
2004 PACK_CHECK_BUTTON(vbox3, chkbtn_attach_desc,
2005 _("Show attachment descriptions (rather than names)"));
2008 message.chkbtn_enablecol = chkbtn_enablecol;
2009 message.button_edit_col = button_edit_col;
2010 message.chkbtn_mbalnum = chkbtn_mbalnum;
2011 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
2012 message.chkbtn_disphdr = chkbtn_disphdr;
2013 message.spinbtn_linespc = spinbtn_linespc;
2014 message.chkbtn_headspc = chkbtn_headspc;
2016 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
2017 message.spinbtn_scrollstep = spinbtn_scrollstep;
2018 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
2019 message.chkbtn_halfpage = chkbtn_halfpage;
2021 message.chkbtn_attach_desc = chkbtn_attach_desc;
2025 static void prefs_privacy_create(void)
2031 GtkWidget *hbox_spc;
2033 GtkWidget *checkbtn_auto_check_signatures;
2034 GtkWidget *checkbtn_gpg_signature_popup;
2035 GtkWidget *checkbtn_store_passphrase;
2036 GtkObject *spinbtn_store_passphrase_adj;
2037 GtkWidget *spinbtn_store_passphrase;
2038 GtkTooltips *store_tooltip;
2039 GtkWidget *checkbtn_passphrase_grab;
2040 GtkWidget *checkbtn_gpg_warning;
2042 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2043 gtk_widget_show (vbox1);
2044 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2045 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2047 vbox2 = gtk_vbox_new (FALSE, 0);
2048 gtk_widget_show (vbox2);
2049 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2051 PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
2052 _("Automatically check signatures"));
2054 PACK_CHECK_BUTTON (vbox2, checkbtn_gpg_signature_popup,
2055 _("Show signature check result in a popup window"));
2057 PACK_CHECK_BUTTON (vbox2, checkbtn_store_passphrase,
2058 _("Store passphrase in memory temporarily"));
2060 vbox3 = gtk_vbox_new (FALSE, 0);
2061 gtk_widget_show (vbox3);
2062 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2064 hbox1 = gtk_hbox_new (FALSE, 8);
2065 gtk_widget_show (hbox1);
2066 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2068 hbox_spc = gtk_hbox_new (FALSE, 0);
2069 gtk_widget_show (hbox_spc);
2070 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2071 gtk_widget_set_usize (hbox_spc, 12, -1);
2073 label = gtk_label_new (_("Expire after"));
2074 gtk_widget_show (label);
2075 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2077 store_tooltip = gtk_tooltips_new();
2079 spinbtn_store_passphrase_adj = gtk_adjustment_new (0, 0, 1440, 1, 5, 5);
2080 spinbtn_store_passphrase = gtk_spin_button_new
2081 (GTK_ADJUSTMENT (spinbtn_store_passphrase_adj), 1, 0);
2082 gtk_widget_show (spinbtn_store_passphrase);
2083 gtk_tooltips_set_tip(GTK_TOOLTIPS(store_tooltip), spinbtn_store_passphrase,
2084 _("Setting to '0' will store the passphrase"
2085 " for the whole session"),
2087 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_store_passphrase, FALSE, FALSE, 0);
2088 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_store_passphrase),
2090 gtk_widget_set_usize (spinbtn_store_passphrase, 64, -1);
2092 label = gtk_label_new (_("minute(s) "));
2093 gtk_widget_show (label);
2094 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2096 hbox1 = gtk_hbox_new (FALSE, 8);
2097 gtk_widget_show (hbox1);
2098 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2100 hbox_spc = gtk_hbox_new (FALSE, 0);
2101 gtk_widget_show (hbox_spc);
2102 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2103 gtk_widget_set_usize (hbox_spc, 12, -1);
2105 SET_TOGGLE_SENSITIVITY (checkbtn_store_passphrase, vbox3);
2108 PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab,
2109 _("Grab input while entering a passphrase"));
2113 (vbox2, checkbtn_gpg_warning,
2114 _("Display warning on startup if GnuPG doesn't work"));
2116 hbox1 = gtk_hbox_new (FALSE, 8);
2117 gtk_widget_show (hbox1);
2118 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2120 privacy.checkbtn_auto_check_signatures
2121 = checkbtn_auto_check_signatures;
2122 privacy.checkbtn_gpg_signature_popup
2123 = checkbtn_gpg_signature_popup;
2124 privacy.checkbtn_store_passphrase = checkbtn_store_passphrase;
2125 privacy.spinbtn_store_passphrase = spinbtn_store_passphrase;
2126 privacy.spinbtn_store_passphrase_adj = spinbtn_store_passphrase_adj;
2127 privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
2128 privacy.checkbtn_gpg_warning = checkbtn_gpg_warning;
2130 #endif /* USE_GPGME */
2132 static void prefs_interface_create(void)
2137 /* GtkWidget *checkbtn_emacs; */
2138 GtkWidget *checkbtn_always_show_msg;
2139 GtkWidget *checkbtn_openunread;
2140 GtkWidget *checkbtn_mark_as_read_on_newwin;
2141 GtkWidget *checkbtn_openinbox;
2142 GtkWidget *checkbtn_immedexec;
2143 GtkTooltips *immedexec_tooltip;
2147 GtkWidget *menuitem;
2149 GtkWidget *button_keybind;
2151 GtkWidget *hbox_nextunreadmsgdialog;
2152 GtkWidget *optmenu_nextunreadmsgdialog;
2154 GtkWidget *frame_pixmap_theme;
2155 GtkWidget *vbox_pixmap_theme;
2156 GtkWidget *entry_pixmap_theme;
2157 GtkWidget *combo_pixmap_theme;
2158 GList *avail_pixmap_themes = NULL;
2160 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2161 gtk_widget_show (vbox1);
2162 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2163 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2165 vbox2 = gtk_vbox_new (FALSE, 0);
2166 gtk_widget_show (vbox2);
2167 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2169 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
2170 _("Emulate the behavior of mouse operation of\n"
2171 "Emacs-based mailer"));
2172 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
2173 GTK_JUSTIFY_LEFT); */
2176 (vbox2, checkbtn_always_show_msg,
2177 _("Always open messages in summary when selected"));
2180 (vbox2, checkbtn_openunread,
2181 _("Open first unread message when entering a folder"));
2184 (vbox2, checkbtn_mark_as_read_on_newwin,
2185 _("Only mark message as read when opened in new window"));
2188 (vbox2, checkbtn_openinbox,
2189 _("Go to inbox after receiving new mail"));
2191 vbox3 = gtk_vbox_new (FALSE, 0);
2192 gtk_widget_show (vbox3);
2193 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2195 immedexec_tooltip = gtk_tooltips_new();
2198 (vbox3, checkbtn_immedexec,
2199 _("Execute immediately when moving or deleting messages"));
2200 gtk_tooltips_set_tip(GTK_TOOLTIPS(immedexec_tooltip), checkbtn_immedexec,
2201 _("Messages will be marked until execution"
2202 " if this is turned off"),
2205 hbox1 = gtk_hbox_new (FALSE, 0);
2206 gtk_widget_show (hbox1);
2207 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2209 /* Next Unread Message Dialog */
2210 hbox_nextunreadmsgdialog = gtk_hbox_new (FALSE, 8);
2211 gtk_widget_show (hbox1);
2212 gtk_box_pack_start (GTK_BOX (vbox1), hbox_nextunreadmsgdialog, FALSE, FALSE, 0);
2214 label = gtk_label_new (_("Show no-unread-message dialog"));
2215 gtk_widget_show (label);
2216 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), label, FALSE, FALSE, 8);
2218 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
2219 gtk_widget_show (optmenu_nextunreadmsgdialog);
2220 gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), optmenu_nextunreadmsgdialog, FALSE, FALSE, 8);
2222 menu = gtk_menu_new ();
2223 MENUITEM_ADD (menu, menuitem, _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
2224 MENUITEM_ADD (menu, menuitem, _("Assume 'Yes'"),
2225 NEXTUNREADMSGDIALOG_ASSUME_YES);
2226 MENUITEM_ADD (menu, menuitem, _("Assume 'No'"),
2227 NEXTUNREADMSGDIALOG_ASSUME_NO);
2229 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog), menu);
2231 hbox1 = gtk_hbox_new (FALSE, 8);
2232 gtk_widget_show (hbox1);
2233 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2235 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
2236 gtk_widget_show (button_keybind);
2237 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
2238 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
2239 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
2241 PACK_FRAME(vbox1, frame_pixmap_theme, _("Icon theme"));
2243 vbox_pixmap_theme = gtk_vbox_new(FALSE, 0);
2244 gtk_widget_show(vbox_pixmap_theme);
2245 gtk_container_add(GTK_CONTAINER(frame_pixmap_theme), vbox_pixmap_theme);
2246 gtk_container_set_border_width(GTK_CONTAINER(vbox_pixmap_theme), 8);
2248 avail_pixmap_themes = stock_pixmap_themes_list_new();
2250 combo_pixmap_theme = gtk_combo_new ();
2251 gtk_widget_show (combo_pixmap_theme);
2252 gtk_box_pack_start (GTK_BOX (vbox_pixmap_theme), combo_pixmap_theme, TRUE, TRUE, 0);
2253 gtk_combo_set_popdown_strings(GTK_COMBO(combo_pixmap_theme), avail_pixmap_themes);
2254 entry_pixmap_theme = GTK_COMBO (combo_pixmap_theme)->entry;
2256 stock_pixmap_themes_list_free(avail_pixmap_themes);
2258 /* interface.checkbtn_emacs = checkbtn_emacs; */
2259 interface.checkbtn_always_show_msg = checkbtn_always_show_msg;
2260 interface.checkbtn_openunread = checkbtn_openunread;
2261 interface.checkbtn_mark_as_read_on_newwin
2262 = checkbtn_mark_as_read_on_newwin;
2263 interface.checkbtn_openinbox = checkbtn_openinbox;
2264 interface.checkbtn_immedexec = checkbtn_immedexec;
2265 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
2266 interface.combo_pixmap_theme = combo_pixmap_theme;
2267 interface.entry_pixmap_theme = entry_pixmap_theme;
2270 static void prefs_other_create(void)
2273 GtkWidget *ext_frame;
2274 GtkWidget *ext_table;
2277 GtkWidget *uri_label;
2278 GtkWidget *uri_combo;
2279 GtkWidget *uri_entry;
2281 GtkWidget *printcmd_label;
2282 GtkWidget *printcmd_entry;
2284 GtkWidget *exteditor_label;
2285 GtkWidget *exteditor_combo;
2286 GtkWidget *exteditor_entry;
2288 GtkWidget *frame_addr;
2289 GtkWidget *vbox_addr;
2290 GtkWidget *checkbtn_addaddrbyclick;
2292 GtkWidget *frame_cliplog;
2293 GtkWidget *vbox_cliplog;
2294 GtkWidget *hbox_cliplog;
2295 GtkWidget *checkbtn_cliplog;
2296 GtkWidget *loglength_label;
2297 GtkWidget *loglength_entry;
2298 GtkTooltips *loglength_tooltip;
2300 GtkWidget *frame_exit;
2301 GtkWidget *vbox_exit;
2302 GtkWidget *checkbtn_confonexit;
2303 GtkWidget *checkbtn_cleanonexit;
2304 GtkWidget *checkbtn_askonclean;
2305 GtkWidget *checkbtn_warnqueued;
2307 GtkWidget *label_iotimeout;
2308 GtkWidget *spinbtn_iotimeout;
2309 GtkObject *spinbtn_iotimeout_adj;
2313 GtkWidget *frame_ssl;
2314 GtkWidget *vbox_ssl;
2315 GtkWidget *hbox_ssl;
2316 GtkWidget *checkbtn_ssl_ask_unknown_valid;
2319 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2320 gtk_widget_show (vbox1);
2321 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2322 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2324 PACK_FRAME(vbox1, ext_frame,
2325 _("External commands (%s will be replaced with file name / URI)"));
2327 ext_table = gtk_table_new (3, 2, FALSE);
2328 gtk_widget_show (ext_table);
2329 gtk_container_add (GTK_CONTAINER (ext_frame), ext_table);
2330 gtk_container_set_border_width (GTK_CONTAINER (ext_table), 8);
2331 gtk_table_set_row_spacings (GTK_TABLE (ext_table), VSPACING_NARROW);
2332 gtk_table_set_col_spacings (GTK_TABLE (ext_table), 8);
2334 uri_label = gtk_label_new (_("Web browser"));
2335 gtk_widget_show(uri_label);
2336 gtk_table_attach (GTK_TABLE (ext_table), uri_label, 0, 1, 0, 1,
2337 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2338 gtk_misc_set_alignment (GTK_MISC (uri_label), 1, 0.5);
2340 uri_combo = gtk_combo_new ();
2341 gtk_widget_show (uri_combo);
2342 gtk_table_attach (GTK_TABLE (ext_table), uri_combo, 1, 2, 0, 1,
2343 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2344 gtkut_combo_set_items (GTK_COMBO (uri_combo),
2345 DEFAULT_BROWSER_CMD,
2346 "galeon --new-tab '%s'",
2348 "mozilla -remote 'openurl(%s,new-window)'",
2349 "netscape -remote 'openURL(%s, new-window)'",
2351 "gnome-moz-remote --newwin '%s'",
2352 "kfmclient openURL '%s'",
2353 "opera -newwindow '%s'",
2354 "kterm -e w3m '%s'",
2355 "kterm -e lynx '%s'",
2357 uri_entry = GTK_COMBO (uri_combo)->entry;
2359 printcmd_label = gtk_label_new (_("Print"));
2360 gtk_widget_show (printcmd_label);
2361 gtk_table_attach (GTK_TABLE (ext_table), printcmd_label, 0, 1, 1, 2,
2362 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2363 gtk_misc_set_alignment (GTK_MISC (printcmd_label), 1, 0.5);
2365 printcmd_entry = gtk_entry_new ();
2366 gtk_widget_show (printcmd_entry);
2367 gtk_table_attach (GTK_TABLE (ext_table), printcmd_entry, 1, 2, 1, 2,
2368 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2370 exteditor_label = gtk_label_new (_("Editor"));
2371 gtk_widget_show (exteditor_label);
2372 gtk_table_attach (GTK_TABLE (ext_table), exteditor_label, 0, 1, 2, 3,
2373 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2374 gtk_misc_set_alignment (GTK_MISC (exteditor_label), 1, 0.5);
2376 exteditor_combo = gtk_combo_new ();
2377 gtk_widget_show (exteditor_combo);
2378 gtk_table_attach (GTK_TABLE (ext_table), exteditor_combo, 1, 2, 2, 3,
2379 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2380 gtkut_combo_set_items (GTK_COMBO (exteditor_combo),
2383 "mgedit --no-fork %s",
2389 exteditor_entry = GTK_COMBO (exteditor_combo)->entry;
2391 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2393 vbox_addr = gtk_vbox_new (FALSE, 0);
2394 gtk_widget_show (vbox_addr);
2395 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2396 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2399 (vbox_addr, checkbtn_addaddrbyclick,
2400 _("Add address to destination when double-clicked"));
2403 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2405 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2406 gtk_widget_show (vbox_cliplog);
2407 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2408 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2409 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2410 _("Clip the log size"));
2411 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2412 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2413 gtk_widget_show (hbox_cliplog);
2415 loglength_label = gtk_label_new (_("Log window length"));
2416 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2418 gtk_widget_show (GTK_WIDGET (loglength_label));
2420 loglength_tooltip = gtk_tooltips_new();
2422 loglength_entry = gtk_entry_new ();
2423 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2424 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2426 gtk_widget_show (GTK_WIDGET (loglength_entry));
2427 gtk_tooltips_set_tip(GTK_TOOLTIPS(loglength_tooltip), loglength_entry,
2428 _("0 to stop logging in the log window"),
2430 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2432 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2437 PACK_FRAME (vbox1, frame_ssl, _("Security"));
2439 vbox_ssl = gtk_vbox_new (FALSE, 0);
2440 gtk_widget_show (vbox_ssl);
2441 gtk_container_add (GTK_CONTAINER (frame_ssl), vbox_ssl);
2442 gtk_container_set_border_width (GTK_CONTAINER (vbox_ssl), 8);
2443 PACK_CHECK_BUTTON (vbox_ssl, checkbtn_ssl_ask_unknown_valid,
2444 _("Ask before accepting SSL certificates"));
2445 hbox_ssl = gtk_hbox_new (FALSE, 3);
2446 gtk_container_add (GTK_CONTAINER (vbox_ssl), hbox_ssl);
2447 gtk_widget_show (hbox_ssl);
2452 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2454 vbox_exit = gtk_vbox_new (FALSE, 0);
2455 gtk_widget_show (vbox_exit);
2456 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2457 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
2459 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
2460 _("Confirm on exit"));
2462 hbox1 = gtk_hbox_new (FALSE, 32);
2463 gtk_widget_show (hbox1);
2464 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
2466 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
2467 _("Empty trash on exit"));
2468 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
2469 _("Ask before emptying"));
2470 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
2472 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
2473 _("Warn if there are queued messages"));
2475 hbox1 = gtk_hbox_new (FALSE, 8);
2476 gtk_widget_show (hbox1);
2477 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2479 label_iotimeout = gtk_label_new (_("Socket I/O timeout:"));
2480 gtk_widget_show (label_iotimeout);
2481 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2483 spinbtn_iotimeout_adj = gtk_adjustment_new (60, 0, 1000, 1, 10, 10);
2484 spinbtn_iotimeout = gtk_spin_button_new
2485 (GTK_ADJUSTMENT (spinbtn_iotimeout_adj), 1, 0);
2486 gtk_widget_show (spinbtn_iotimeout);
2487 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_iotimeout,
2489 gtk_widget_set_usize (spinbtn_iotimeout, 64, -1);
2490 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_iotimeout), TRUE);
2492 label_iotimeout = gtk_label_new (_("seconds"));
2493 gtk_widget_show (label_iotimeout);
2494 gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0);
2496 other.uri_combo = uri_combo;
2497 other.uri_entry = uri_entry;
2498 other.printcmd_entry = printcmd_entry;
2500 other.exteditor_combo = exteditor_combo;
2501 other.exteditor_entry = exteditor_entry;
2503 other.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2505 other.checkbtn_cliplog = checkbtn_cliplog;
2506 other.loglength_entry = loglength_entry;
2508 other.checkbtn_confonexit = checkbtn_confonexit;
2509 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
2510 other.checkbtn_askonclean = checkbtn_askonclean;
2511 other.checkbtn_warnqueued = checkbtn_warnqueued;
2513 other.spinbtn_iotimeout = spinbtn_iotimeout;
2514 other.spinbtn_iotimeout_adj = spinbtn_iotimeout_adj;
2518 other.checkbtn_ssl_ask_unknown_valid = checkbtn_ssl_ask_unknown_valid;
2523 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
2525 GtkWidget *datefmt_sample = NULL;
2528 g_return_if_fail(widget != NULL);
2529 g_return_if_fail(*widget != NULL);
2530 g_return_if_fail(display.entry_datefmt != NULL);
2532 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2533 (GTK_OBJECT(*widget), "datefmt_sample"));
2534 g_return_if_fail(datefmt_sample != NULL);
2536 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
2537 g_free(prefs_common.date_format);
2538 prefs_common.date_format = text;
2539 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
2541 gtk_widget_destroy(*widget);
2545 static void date_format_cancel_btn_clicked(GtkButton *button,
2548 g_return_if_fail(widget != NULL);
2549 g_return_if_fail(*widget != NULL);
2551 gtk_widget_destroy(*widget);
2555 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
2558 if (event && event->keyval == GDK_Escape)
2559 date_format_cancel_btn_clicked(NULL, widget);
2562 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
2563 GdkEventAny *event, GtkWidget **widget)
2565 g_return_val_if_fail(widget != NULL, FALSE);
2566 g_return_val_if_fail(*widget != NULL, FALSE);
2572 static void date_format_entry_on_change(GtkEditable *editable,
2576 struct tm *cal_time;
2580 cur_time = time(NULL);
2581 cal_time = localtime(&cur_time);
2583 text = gtk_editable_get_chars(editable, 0, -1);
2585 strftime(buffer, sizeof buffer, text, cal_time);
2587 gtk_label_set_text(example, buffer);
2590 static void date_format_select_row(GtkWidget *date_format_list, gint row,
2591 gint column, GdkEventButton *event,
2592 GtkWidget *date_format)
2598 GtkWidget *datefmt_sample;
2600 /* only on double click */
2601 if (!event || event->type != GDK_2BUTTON_PRESS) return;
2604 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2605 (GTK_OBJECT(date_format), "datefmt_sample"));
2607 g_return_if_fail(date_format_list != NULL);
2608 g_return_if_fail(date_format != NULL);
2609 g_return_if_fail(datefmt_sample != NULL);
2611 /* get format from clist */
2612 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
2614 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
2615 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
2617 /* insert the format into the text entry */
2618 new_format = g_malloc(strlen(old_format) + 3);
2620 strncpy(new_format, old_format, cur_pos);
2621 new_format[cur_pos] = '\0';
2622 strcat(new_format, format);
2623 strcat(new_format, &old_format[cur_pos]);
2625 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
2626 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
2631 static GtkWidget *date_format_create(GtkButton *button, void *data)
2633 static GtkWidget *datefmt_win = NULL;
2635 GtkWidget *scrolledwindow1;
2636 GtkWidget *datefmt_clist;
2641 GtkWidget *confirm_area;
2643 GtkWidget *cancel_btn;
2644 GtkWidget *datefmt_entry;
2673 const gint TIME_FORMAT_ELEMS =
2674 sizeof time_format / sizeof time_format[0];
2676 time_format[0].txt = _("the full abbreviated weekday name");
2677 time_format[1].txt = _("the full weekday name");
2678 time_format[2].txt = _("the abbreviated month name");
2679 time_format[3].txt = _("the full month name");
2680 time_format[4].txt = _("the preferred date and time for the current locale");
2681 time_format[5].txt = _("the century number (year/100)");
2682 time_format[6].txt = _("the day of the month as a decimal number");
2683 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
2684 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
2685 time_format[9].txt = _("the day of the year as a decimal number");
2686 time_format[10].txt = _("the month as a decimal number");
2687 time_format[11].txt = _("the minute as a decimal number");
2688 time_format[12].txt = _("either AM or PM");
2689 time_format[13].txt = _("the second as a decimal number");
2690 time_format[14].txt = _("the day of the week as a decimal number");
2691 time_format[15].txt = _("the preferred date for the current locale");
2692 time_format[16].txt = _("the last two digits of a year");
2693 time_format[17].txt = _("the year as a decimal number");
2694 time_format[18].txt = _("the time zone or name or abbreviation");
2696 if (datefmt_win) return datefmt_win;
2698 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
2699 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
2700 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
2701 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2702 gtk_widget_set_usize(datefmt_win, 440, 280);
2704 vbox1 = gtk_vbox_new(FALSE, 10);
2705 gtk_widget_show(vbox1);
2706 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
2708 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
2709 gtk_scrolled_window_set_policy
2710 (GTK_SCROLLED_WINDOW(scrolledwindow1),
2711 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
2712 gtk_widget_show(scrolledwindow1);
2713 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
2715 titles[0] = _("Specifier");
2716 titles[1] = _("Description");
2717 datefmt_clist = gtk_clist_new_with_titles(2, titles);
2718 gtk_widget_show(datefmt_clist);
2719 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
2720 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
2721 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
2722 GTK_SELECTION_BROWSE);
2724 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
2726 /* phoney casting necessary because of gtk... */
2727 text[0] = (gchar *)time_format[i].fmt;
2728 text[1] = (gchar *)time_format[i].txt;
2729 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
2732 table = gtk_table_new(2, 2, FALSE);
2733 gtk_widget_show(table);
2734 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
2735 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
2736 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
2738 label1 = gtk_label_new(_("Date format"));
2739 gtk_widget_show(label1);
2740 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
2742 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
2743 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
2745 datefmt_entry = gtk_entry_new_with_max_length(256);
2746 gtk_widget_show(datefmt_entry);
2747 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
2748 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2750 /* we need the "sample" entry box; add it as data so callbacks can
2751 * get the entry box */
2752 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
2755 label2 = gtk_label_new(_("Example"));
2756 gtk_widget_show(label2);
2757 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
2759 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
2760 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
2762 label3 = gtk_label_new("");
2763 gtk_widget_show(label3);
2764 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
2765 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2766 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
2767 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
2769 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
2770 &cancel_btn, _("Cancel"), NULL, NULL);
2771 gtk_widget_grab_default(ok_btn);
2772 gtk_widget_show(confirm_area);
2774 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
2776 /* set the current format */
2777 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
2778 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
2781 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2782 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
2784 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
2785 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
2787 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
2788 GTK_SIGNAL_FUNC(date_format_key_pressed),
2790 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
2791 GTK_SIGNAL_FUNC(date_format_on_delete),
2793 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
2794 GTK_SIGNAL_FUNC(date_format_entry_on_change),
2797 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
2798 GTK_SIGNAL_FUNC(date_format_select_row),
2801 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2802 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
2804 gtk_widget_show(datefmt_win);
2805 manage_window_set_transient(GTK_WINDOW(datefmt_win));
2807 gtk_widget_grab_focus(ok_btn);
2812 void prefs_quote_colors_dialog(void)
2814 if (!quote_color_win)
2815 prefs_quote_colors_dialog_create();
2816 gtk_widget_show(quote_color_win);
2817 manage_window_set_transient(GTK_WINDOW(quote_color_win));
2820 gtk_widget_hide(quote_color_win);
2822 textview_update_message_colors();
2823 main_window_reflect_prefs_all();
2826 static void prefs_quote_colors_dialog_create(void)
2831 GtkWidget *quotelevel1_label;
2832 GtkWidget *quotelevel2_label;
2833 GtkWidget *quotelevel3_label;
2834 GtkWidget *uri_label;
2835 GtkWidget *signature_label;
2836 GtkWidget *tgt_folder_label;
2839 GtkWidget *recycle_colors_btn;
2840 GtkWidget *frame_colors;
2842 window = gtk_window_new(GTK_WINDOW_DIALOG);
2843 gtk_container_set_border_width(GTK_CONTAINER(window), 2);
2844 gtk_window_set_title(GTK_WINDOW(window), _("Set message colors"));
2845 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
2846 gtk_window_set_modal(GTK_WINDOW(window), TRUE);
2847 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
2849 vbox = gtk_vbox_new (FALSE, VSPACING);
2850 gtk_container_add (GTK_CONTAINER (window), vbox);
2851 gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
2852 PACK_FRAME(vbox, frame_colors, _("Colors"));
2854 table = gtk_table_new (5, 2, FALSE);
2855 gtk_container_add (GTK_CONTAINER (frame_colors), table);
2856 gtk_container_set_border_width (GTK_CONTAINER (table), 8);
2857 gtk_table_set_row_spacings (GTK_TABLE (table), 2);
2858 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
2861 color_buttons.quote_level1_btn = gtk_button_new();
2862 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level1_btn,
2863 0, 1, 0, 1, 0, 0, 0, 0);
2864 gtk_widget_set_usize (color_buttons.quote_level1_btn, 40, 30);
2865 gtk_container_set_border_width
2866 (GTK_CONTAINER (color_buttons.quote_level1_btn), 5);
2868 color_buttons.quote_level2_btn = gtk_button_new();
2869 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level2_btn,
2870 0, 1, 1, 2, 0, 0, 0, 0);
2871 gtk_widget_set_usize (color_buttons.quote_level2_btn, 40, 30);
2872 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.quote_level2_btn), 5);
2874 color_buttons.quote_level3_btn = gtk_button_new_with_label ("");
2875 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level3_btn,
2876 0, 1, 2, 3, 0, 0, 0, 0);
2877 gtk_widget_set_usize (color_buttons.quote_level3_btn, 40, 30);
2878 gtk_container_set_border_width
2879 (GTK_CONTAINER (color_buttons.quote_level3_btn), 5);
2881 color_buttons.uri_btn = gtk_button_new_with_label ("");
2882 gtk_table_attach (GTK_TABLE (table), color_buttons.uri_btn,
2883 0, 1, 3, 4, 0, 0, 0, 0);
2884 gtk_widget_set_usize (color_buttons.uri_btn, 40, 30);
2885 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.uri_btn), 5);
2887 color_buttons.tgt_folder_btn = gtk_button_new_with_label ("");
2888 gtk_table_attach (GTK_TABLE (table), color_buttons.tgt_folder_btn,
2889 0, 1, 4, 5, 0, 0, 0, 0);
2890 gtk_widget_set_usize (color_buttons.tgt_folder_btn, 40, 30);
2891 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.tgt_folder_btn), 5);
2893 color_buttons.signature_btn = gtk_button_new_with_label ("");
2894 gtk_table_attach (GTK_TABLE (table), color_buttons.signature_btn,
2895 0, 1, 5, 6, 0, 0, 0, 0);
2896 gtk_widget_set_usize (color_buttons.signature_btn, 40, 30);
2897 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.signature_btn), 5);
2899 quotelevel1_label = gtk_label_new (_("Quoted Text - First Level"));
2900 gtk_table_attach (GTK_TABLE (table), quotelevel1_label, 1, 2, 0, 1,
2901 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2902 gtk_label_set_justify (GTK_LABEL (quotelevel1_label), GTK_JUSTIFY_LEFT);
2903 gtk_misc_set_alignment (GTK_MISC (quotelevel1_label), 0, 0.5);
2905 quotelevel2_label = gtk_label_new (_("Quoted Text - Second Level"));
2906 gtk_table_attach (GTK_TABLE (table), quotelevel2_label, 1, 2, 1, 2,
2907 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2908 gtk_label_set_justify (GTK_LABEL (quotelevel2_label), GTK_JUSTIFY_LEFT);
2909 gtk_misc_set_alignment (GTK_MISC (quotelevel2_label), 0, 0.5);
2911 quotelevel3_label = gtk_label_new (_("Quoted Text - Third Level"));
2912 gtk_table_attach (GTK_TABLE (table), quotelevel3_label, 1, 2, 2, 3,
2913 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2914 gtk_label_set_justify (GTK_LABEL (quotelevel3_label), GTK_JUSTIFY_LEFT);
2915 gtk_misc_set_alignment (GTK_MISC (quotelevel3_label), 0, 0.5);
2917 uri_label = gtk_label_new (_("URI link"));
2918 gtk_table_attach (GTK_TABLE (table), uri_label, 1, 2, 3, 4,
2919 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2920 gtk_label_set_justify (GTK_LABEL (uri_label), GTK_JUSTIFY_LEFT);
2921 gtk_misc_set_alignment (GTK_MISC (uri_label), 0, 0.5);
2923 tgt_folder_label = gtk_label_new (_("Target folder"));
2924 gtk_table_attach (GTK_TABLE (table), tgt_folder_label, 1, 2, 4, 5,
2925 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2926 gtk_label_set_justify (GTK_LABEL (tgt_folder_label), GTK_JUSTIFY_LEFT);
2927 gtk_misc_set_alignment (GTK_MISC (tgt_folder_label), 0, 0.5);
2929 signature_label = gtk_label_new (_("Signatures"));
2930 gtk_table_attach (GTK_TABLE (table), signature_label, 1, 2, 5, 6,
2931 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2932 gtk_label_set_justify (GTK_LABEL (signature_label), GTK_JUSTIFY_LEFT);
2933 gtk_misc_set_alignment (GTK_MISC (signature_label), 0, 0.5);
2935 PACK_CHECK_BUTTON (vbox, recycle_colors_btn,
2936 _("Recycle quote colors"));
2938 gtkut_button_set_create(&hbbox, &ok_btn, _("OK"),
2939 NULL, NULL, NULL, NULL);
2940 gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
2942 gtk_widget_grab_default(ok_btn);
2943 MANAGE_WINDOW_SIGNALS_CONNECT(window);
2944 gtk_signal_connect(GTK_OBJECT(window), "delete_event",
2945 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
2946 gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
2947 GTK_SIGNAL_FUNC(prefs_quote_colors_key_pressed),
2950 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level1_btn), "clicked",
2951 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL1");
2952 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level2_btn), "clicked",
2953 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL2");
2954 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level3_btn), "clicked",
2955 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL3");
2956 gtk_signal_connect(GTK_OBJECT(color_buttons.uri_btn), "clicked",
2957 GTK_SIGNAL_FUNC(quote_color_set_dialog), "URI");
2958 gtk_signal_connect(GTK_OBJECT(color_buttons.tgt_folder_btn), "clicked",
2959 GTK_SIGNAL_FUNC(quote_color_set_dialog), "TGTFLD");
2960 gtk_signal_connect(GTK_OBJECT(color_buttons.signature_btn), "clicked",
2961 GTK_SIGNAL_FUNC(quote_color_set_dialog), "SIGNATURE");
2962 gtk_signal_connect(GTK_OBJECT(recycle_colors_btn), "toggled",
2963 GTK_SIGNAL_FUNC(prefs_recycle_colors_toggled), NULL);
2964 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2965 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
2967 /* show message button colors and recycle options */
2968 set_button_bg_color(color_buttons.quote_level1_btn,
2969 prefs_common.quote_level1_col);
2970 set_button_bg_color(color_buttons.quote_level2_btn,
2971 prefs_common.quote_level2_col);
2972 set_button_bg_color(color_buttons.quote_level3_btn,
2973 prefs_common.quote_level3_col);
2974 set_button_bg_color(color_buttons.uri_btn,
2975 prefs_common.uri_col);
2976 set_button_bg_color(color_buttons.tgt_folder_btn,
2977 prefs_common.tgt_folder_col);
2978 set_button_bg_color(color_buttons.signature_btn,
2979 prefs_common.signature_col);
2980 gtk_toggle_button_set_active((GtkToggleButton *)recycle_colors_btn,
2981 prefs_common.recycle_quote_colors);
2983 gtk_widget_show_all(vbox);
2984 quote_color_win = window;
2987 static void prefs_quote_colors_key_pressed(GtkWidget *widget,
2988 GdkEventKey *event, gpointer data)
2990 if (event && event->keyval == GDK_Escape)
2994 static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
2996 gchar *type = (gchar *)data;
2997 gchar *title = NULL;
2998 gdouble color[4] = {0.0, 0.0, 0.0, 0.0};
3000 GtkColorSelectionDialog *dialog;
3002 if(g_strcasecmp(type, "LEVEL1") == 0) {
3003 title = _("Pick color for quotation level 1");
3004 rgbvalue = prefs_common.quote_level1_col;
3005 } else if(g_strcasecmp(type, "LEVEL2") == 0) {
3006 title = _("Pick color for quotation level 2");
3007 rgbvalue = prefs_common.quote_level2_col;
3008 } else if(g_strcasecmp(type, "LEVEL3") == 0) {
3009 title = _("Pick color for quotation level 3");
3010 rgbvalue = prefs_common.quote_level3_col;
3011 } else if(g_strcasecmp(type, "URI") == 0) {
3012 title = _("Pick color for URI");
3013 rgbvalue = prefs_common.uri_col;
3014 } else if(g_strcasecmp(type, "TGTFLD") == 0) {
3015 title = _("Pick color for target folder");
3016 rgbvalue = prefs_common.tgt_folder_col;
3017 } else if(g_strcasecmp(type, "SIGNATURE") == 0) {
3018 title = _("Pick color for signatures");
3019 rgbvalue = prefs_common.signature_col;
3020 } else { /* Should never be called */
3021 g_warning("Unrecognized datatype '%s' in quote_color_set_dialog\n", type);
3025 color_dialog = gtk_color_selection_dialog_new(title);
3026 gtk_window_set_position(GTK_WINDOW(color_dialog), GTK_WIN_POS_CENTER);
3027 gtk_window_set_modal(GTK_WINDOW(color_dialog), TRUE);
3028 gtk_window_set_policy(GTK_WINDOW(color_dialog), FALSE, FALSE, FALSE);
3029 manage_window_set_transient(GTK_WINDOW(color_dialog));
3031 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->ok_button),
3032 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_ok), data);
3033 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->cancel_button),
3034 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_cancel), data);
3035 gtk_signal_connect(GTK_OBJECT(color_dialog), "key_press_event",
3036 GTK_SIGNAL_FUNC(quote_colors_set_dialog_key_pressed),
3039 /* preselect the previous color in the color selection dialog */
3040 color[0] = (gdouble) ((rgbvalue & 0xff0000) >> 16) / 255.0;
3041 color[1] = (gdouble) ((rgbvalue & 0x00ff00) >> 8) / 255.0;
3042 color[2] = (gdouble) (rgbvalue & 0x0000ff) / 255.0;
3043 dialog = GTK_COLOR_SELECTION_DIALOG(color_dialog);
3044 gtk_color_selection_set_color
3045 (GTK_COLOR_SELECTION(dialog->colorsel), color);
3047 gtk_widget_show(color_dialog);
3050 static void quote_colors_set_dialog_ok(GtkWidget *widget, gpointer data)
3052 GtkColorSelection *colorsel = (GtkColorSelection *)
3053 ((GtkColorSelectionDialog *)color_dialog)->colorsel;
3055 gint red, green, blue, rgbvalue;
3056 gchar *type = (gchar *)data;
3058 gtk_color_selection_get_color(colorsel, color);
3060 red = (gint) (color[0] * 255.0);
3061 green = (gint) (color[1] * 255.0);
3062 blue = (gint) (color[2] * 255.0);
3063 rgbvalue = (gint) ((red * 0x10000) | (green * 0x100) | blue);
3066 fprintf(stderr, "redc = %f, greenc = %f, bluec = %f\n", color[0], color[1], color[2]);
3067 fprintf(stderr, "red = %d, green = %d, blue = %d\n", red, green, blue);
3068 fprintf(stderr, "Color is %x\n", rgbvalue);
3071 if (g_strcasecmp(type, "LEVEL1") == 0) {
3072 prefs_common.quote_level1_col = rgbvalue;
3073 set_button_bg_color(color_buttons.quote_level1_btn, rgbvalue);
3074 } else if (g_strcasecmp(type, "LEVEL2") == 0) {
3075 prefs_common.quote_level2_col = rgbvalue;
3076 set_button_bg_color(color_buttons.quote_level2_btn, rgbvalue);
3077 } else if (g_strcasecmp(type, "LEVEL3") == 0) {
3078 prefs_common.quote_level3_col = rgbvalue;
3079 set_button_bg_color(color_buttons.quote_level3_btn, rgbvalue);
3080 } else if (g_strcasecmp(type, "URI") == 0) {
3081 prefs_common.uri_col = rgbvalue;
3082 set_button_bg_color(color_buttons.uri_btn, rgbvalue);
3083 } else if (g_strcasecmp(type, "TGTFLD") == 0) {
3084 prefs_common.tgt_folder_col = rgbvalue;
3085 set_button_bg_color(color_buttons.tgt_folder_btn, rgbvalue);
3086 folderview_set_target_folder_color(prefs_common.tgt_folder_col);
3087 } else if (g_strcasecmp(type, "SIGNATURE") == 0) {
3088 prefs_common.signature_col = rgbvalue;
3089 set_button_bg_color(color_buttons.signature_btn, rgbvalue);
3091 fprintf( stderr, "Unrecognized datatype '%s' in quote_color_set_dialog_ok\n", type );
3093 gtk_widget_destroy(color_dialog);
3096 static void quote_colors_set_dialog_cancel(GtkWidget *widget, gpointer data)
3098 gtk_widget_destroy(color_dialog);
3101 static void quote_colors_set_dialog_key_pressed(GtkWidget *widget,
3105 gtk_widget_destroy(color_dialog);
3108 static void set_button_bg_color(GtkWidget *widget, gint rgbvalue)
3113 gtkut_convert_int_to_gdk_color(rgbvalue, &color);
3114 newstyle = gtk_style_copy(gtk_widget_get_default_style());
3115 newstyle->bg[GTK_STATE_NORMAL] = color;
3116 newstyle->bg[GTK_STATE_PRELIGHT] = color;
3117 newstyle->bg[GTK_STATE_ACTIVE] = color;
3119 gtk_widget_set_style(GTK_WIDGET(widget), newstyle);
3122 static void prefs_enable_message_color_toggled(void)
3126 is_active = gtk_toggle_button_get_active
3127 (GTK_TOGGLE_BUTTON(message.chkbtn_enablecol));
3128 gtk_widget_set_sensitive(message.button_edit_col, is_active);
3129 prefs_common.enable_color = is_active;
3132 static void prefs_recycle_colors_toggled(GtkWidget *widget)
3136 is_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
3137 prefs_common.recycle_quote_colors = is_active;
3140 static void prefs_keybind_select(void)
3147 GtkWidget *confirm_area;
3149 GtkWidget *cancel_btn;
3151 window = gtk_window_new (GTK_WINDOW_DIALOG);
3152 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
3153 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
3154 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
3155 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
3156 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
3157 manage_window_set_transient (GTK_WINDOW (window));
3159 vbox1 = gtk_vbox_new (FALSE, VSPACING);
3160 gtk_container_add (GTK_CONTAINER (window), vbox1);
3161 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
3163 hbox1 = gtk_hbox_new (FALSE, 8);
3164 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3166 label = gtk_label_new
3167 (_("Select preset:"));
3168 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3169 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3171 hbox1 = gtk_hbox_new (FALSE, 8);
3172 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3174 combo = gtk_combo_new ();
3175 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
3176 gtkut_combo_set_items (GTK_COMBO (combo),
3182 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
3184 hbox1 = gtk_hbox_new (FALSE, 8);
3185 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3187 label = gtk_label_new
3188 (_("You can also modify each menu shortcut by pressing\n"
3189 "any key(s) when placing the mouse pointer on the item."));
3190 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3191 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3193 hbox1 = gtk_hbox_new (FALSE, 8);
3194 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3196 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
3197 &cancel_btn, _("Cancel"), NULL, NULL);
3198 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
3199 gtk_widget_grab_default (ok_btn);
3201 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3202 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3203 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
3204 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
3205 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
3206 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
3207 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
3209 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
3210 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
3213 gtk_widget_show_all(window);
3215 keybind.window = window;
3216 keybind.combo = combo;
3219 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
3222 if (event && event->keyval == GDK_Escape)
3223 prefs_keybind_cancel();
3226 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
3229 prefs_keybind_cancel();
3233 static void prefs_keybind_cancel(void)
3235 gtk_widget_destroy(keybind.window);
3236 keybind.window = NULL;
3237 keybind.combo = NULL;
3240 static void prefs_keybind_apply_clicked(GtkWidget *widget)
3242 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
3246 static gchar *default_menurc =
3247 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3248 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
3249 "(menu-path \"<Main>/File/Print...\" \"\")\n"
3250 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
3252 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3253 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3254 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3255 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
3257 "(menu-path \"<Main>/View/Expand Summary View\" \"V\")\n"
3258 "(menu-path \"<Main>/View/Expand Message View\" \"<shift>V\")\n"
3259 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3260 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3261 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3262 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3263 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3264 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3265 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3266 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3267 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3268 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3270 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3271 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3272 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
3273 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3274 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><control>R\")\n"
3275 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3276 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3277 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
3278 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
3279 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3280 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
3281 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
3282 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3283 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3284 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3285 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3287 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3288 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3289 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3291 "(menu-path \"<Compose>/File/Close\" \"<control>W\")\n"
3292 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
3293 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
3294 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
3295 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
3296 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
3297 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
3299 static gchar *mew_wl_menurc =
3300 "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
3301 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
3302 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
3303 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
3305 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3306 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3307 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3308 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3310 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3311 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3312 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
3313 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3314 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3315 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3316 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3317 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3318 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3319 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3320 "(menu-path \"<Main>/View/Show all headers\" \"<shift>H\")\n"
3321 "(menu-path \"<Main>/View/Update\" \"<shift>S\")\n"
3323 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3324 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3325 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
3326 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3327 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift>A\")\n"
3328 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3329 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3330 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3331 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
3332 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
3333 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
3334 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3335 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3336 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3337 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3338 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
3340 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3341 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3342 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3344 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3345 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3346 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3347 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3348 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3349 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3350 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3352 static gchar *mutt_menurc =
3353 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3354 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
3355 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
3356 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
3358 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3359 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3360 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3361 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
3363 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
3364 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3365 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
3366 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
3367 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
3368 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
3369 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
3370 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3371 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3372 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3373 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3375 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3376 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3377 "(menu-path \"<Main>/Message/Compose new message\" \"M\")\n"
3378 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
3379 "(menu-path \"<Main>/Message/Reply to/all\" \"G\")\n"
3380 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3381 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3382 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3383 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
3384 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3385 "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
3386 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3387 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
3388 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3389 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
3390 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3392 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3393 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3394 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3396 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3397 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3398 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3399 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3400 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3401 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3402 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3404 static gchar *old_sylpheed_menurc =
3405 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3406 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
3407 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
3408 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
3410 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3411 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3412 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3413 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3415 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3416 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3417 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3418 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3419 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3420 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3421 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3422 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
3423 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
3424 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3425 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3426 "(menu-path \"<Main>/View/Update\" \"<alt>U\")\n"
3428 "(menu-path \"<Main>/Message/Get new mail\" \"<alt>I\")\n"
3429 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><alt>I\")\n"
3430 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
3431 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
3432 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><alt>R\")\n"
3433 "(menu-path \"<Main>/Message/Reply to/sender\" \"<control><alt>R\")\n"
3434 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3435 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
3436 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
3437 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
3438 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
3439 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
3440 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3441 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3442 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3443 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3445 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
3446 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
3447 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
3449 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3450 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3451 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3452 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3453 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3454 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3455 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3457 text = gtk_entry_get_text(entry);
3459 if (!strcmp(text, _("Default")))
3460 rc_str = default_menurc;
3461 else if (!strcmp(text, "Mew / Wanderlust"))
3462 rc_str = mew_wl_menurc;
3463 else if (!strcmp(text, "Mutt"))
3464 rc_str = mutt_menurc;
3465 else if (!strcmp(text, _("Old Sylpheed")))
3466 rc_str = old_sylpheed_menurc;
3470 menu_factory_clear_rc(rc_str);
3471 gtk_item_factory_parse_rc_string(rc_str);
3473 gtk_widget_destroy(keybind.window);
3474 keybind.window = NULL;
3475 keybind.combo = NULL;
3478 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
3481 GtkWidget *menuitem;
3484 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3485 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3486 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
3487 g_free(*((gchar **)pparam->data));
3488 *((gchar **)pparam->data) = g_strdup(charset);
3491 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
3493 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3496 g_return_if_fail(optmenu != NULL);
3497 g_return_if_fail(*((gchar **)pparam->data) != NULL);
3499 index = menu_find_option_menu_index(optmenu, *((gchar **)pparam->data),
3500 (GCompareFunc)strcmp);
3502 gtk_option_menu_set_history(optmenu, index);
3504 gtk_option_menu_set_history(optmenu, 0);
3505 prefs_common_charset_set_data_from_optmenu(pparam);
3509 static void prefs_common_encoding_set_data_from_optmenu(PrefParam *pparam)
3512 GtkWidget *menuitem;
3514 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3515 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3516 *((TransferEncodingMethod *)pparam->data) = GPOINTER_TO_INT
3517 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3520 static void prefs_common_encoding_set_optmenu(PrefParam *pparam)
3522 TransferEncodingMethod method =
3523 *((TransferEncodingMethod *)pparam->data);
3524 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3527 g_return_if_fail(optmenu != NULL);
3529 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(method),
3532 gtk_option_menu_set_history(optmenu, index);
3534 gtk_option_menu_set_history(optmenu, 0);
3535 prefs_common_encoding_set_data_from_optmenu(pparam);
3539 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
3542 GtkWidget *menuitem;
3544 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3545 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3546 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
3547 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3550 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
3552 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
3553 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3555 GtkWidget *menuitem;
3558 index = menu_find_option_menu_index(optmenu, GINT_TO_POINTER(mode),
3561 gtk_option_menu_set_history(optmenu, index);
3563 gtk_option_menu_set_history(optmenu, 0);
3564 prefs_common_recv_dialog_set_data_from_optmenu(pparam);
3567 menu = gtk_option_menu_get_menu(optmenu);
3568 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3569 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3572 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam)
3575 GtkWidget *menuitem;
3577 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3578 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3579 *((SendDialogMode *)pparam->data) = GPOINTER_TO_INT
3580 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3583 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam)
3585 SendDialogMode mode = *((SendDialogMode *)pparam->data);
3586 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3588 GtkWidget *menuitem;
3591 case SEND_DIALOG_ALWAYS:
3592 gtk_option_menu_set_history(optmenu, 0);
3594 case SEND_DIALOG_NEVER:
3595 gtk_option_menu_set_history(optmenu, 1);
3601 menu = gtk_option_menu_get_menu(optmenu);
3602 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3603 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3606 static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
3609 prefs_common_cancel();
3613 static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
3616 if (event && event->keyval == GDK_Escape)
3617 prefs_common_cancel();
3620 static void prefs_common_ok(void)
3622 prefs_common_apply();
3623 gtk_widget_hide(dialog.window);
3628 static void prefs_common_apply(void)
3630 gchar *entry_pixmap_theme_str;
3631 gboolean update_pixmap_theme;
3632 gchar *backup_theme_path;
3633 MainWindow *mainwindow;
3635 entry_pixmap_theme_str = gtk_entry_get_text(GTK_ENTRY(interface.entry_pixmap_theme));
3636 if (entry_pixmap_theme_str &&
3637 (strcmp(prefs_common.pixmap_theme_path, entry_pixmap_theme_str) != 0) )
3638 update_pixmap_theme = TRUE;
3640 update_pixmap_theme = FALSE;
3642 /*!< FIXME: prefs_set_data_from_dialog() clears and frees all strings,
3643 * but prefs_common.pixmap_theme_path is stored in the StockPixmapData
3644 * in stock_pixmap.c::pixmaps[].icon_path, and used when reflecting
3645 * the pixmap changes. Work around by saving the old one and freeing
3647 backup_theme_path = prefs_common.pixmap_theme_path;
3648 prefs_common.pixmap_theme_path = g_strdup(backup_theme_path);
3649 prefs_set_data_from_dialog(param);
3650 sock_set_io_timeout(prefs_common.io_timeout_secs);
3652 if (update_pixmap_theme) {
3653 main_window_reflect_prefs_all_real(TRUE);
3654 compose_reflect_prefs_pixmap_theme();
3656 main_window_reflect_prefs_all_real(FALSE);
3658 /*!< FIXME: Now it's safe to delete the backup path */
3659 g_free(backup_theme_path);
3661 prefs_common_save_config();
3663 mainwindow = mainwindow_get_mainwindow();
3664 log_window_set_clipping(mainwindow->logwin, prefs_common.cliplog,
3665 prefs_common.loglength);
3667 inc_autocheck_timer_remove();
3668 inc_autocheck_timer_set();
3671 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
3674 GtkWidget *menuitem;
3676 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3677 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3678 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
3679 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3682 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
3684 NextUnreadMsgDialogShow dialog_show;
3685 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3687 GtkWidget *menuitem;
3689 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
3691 switch (dialog_show) {
3692 case NEXTUNREADMSGDIALOG_ALWAYS:
3693 gtk_option_menu_set_history(optmenu, 0);
3695 case NEXTUNREADMSGDIALOG_ASSUME_YES:
3696 gtk_option_menu_set_history(optmenu, 1);
3698 case NEXTUNREADMSGDIALOG_ASSUME_NO:
3699 gtk_option_menu_set_history(optmenu, 2);
3703 menu = gtk_option_menu_get_menu(optmenu);
3704 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3705 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3708 static void prefs_common_cancel(void)
3710 gtk_widget_hide(dialog.window);
3715 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
3718 GtkWidget *menuitem;
3720 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3721 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3722 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
3723 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3726 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
3728 RecvDialogShow dialog_show;
3729 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3731 GtkWidget *menuitem;
3733 dialog_show = *((RecvDialogShow *)pparam->data);
3735 switch (dialog_show) {
3736 case RECVDIALOG_ALWAYS:
3737 gtk_option_menu_set_history(optmenu, 0);
3739 case RECVDIALOG_WINDOW_ACTIVE:
3740 gtk_option_menu_set_history(optmenu, 1);
3742 case RECVDIALOG_NEVER:
3743 gtk_option_menu_set_history(optmenu, 2);
3748 menu = gtk_option_menu_get_menu(optmenu);
3749 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3750 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));