2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2002 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>
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"
55 #include "folderview.h"
56 #include "stock_pixmap.h"
57 #include "quote_fmt.h"
60 #include "gtkaspell.h"
63 PrefsCommon prefs_common;
65 static PrefsDialog dialog;
67 static struct Receive {
68 GtkWidget *checkbtn_incext;
69 GtkWidget *entry_incext;
70 GtkWidget *button_incext;
72 GtkWidget *checkbtn_local;
73 GtkWidget *checkbtn_filter_on_inc;
74 GtkWidget *entry_spool;
76 GtkWidget *checkbtn_autochk;
77 GtkWidget *spinbtn_autochk;
78 GtkObject *spinbtn_autochk_adj;
80 GtkWidget *checkbtn_chkonstartup;
81 GtkWidget *checkbtn_scan_after_inc;
84 GtkWidget *checkbtn_newmail_auto;
85 GtkWidget *checkbtn_newmail_manu;
86 GtkWidget *entry_newmail_notify_cmd;
87 GtkWidget *hbox_newmail_notify;
89 GtkWidget *spinbtn_maxarticle;
90 GtkObject *spinbtn_maxarticle_adj;
94 GtkWidget *checkbtn_extsend;
95 GtkWidget *entry_extsend;
96 GtkWidget *button_extsend;
98 GtkWidget *checkbtn_savemsg;
99 GtkWidget *checkbtn_queuemsg;
101 GtkWidget *optmenu_charset;
104 static struct Compose {
105 GtkWidget *checkbtn_autosig;
106 GtkWidget *entry_sigsep;
108 GtkWidget *entry_fw_quotemark;
109 GtkWidget *text_fw_quotefmt;
111 GtkWidget *checkbtn_autoextedit;
112 GtkWidget *spinbtn_undolevel;
113 GtkObject *spinbtn_undolevel_adj;
114 GtkWidget *spinbtn_linewrap;
115 GtkObject *spinbtn_linewrap_adj;
116 GtkWidget *checkbtn_wrapquote;
117 GtkWidget *checkbtn_autowrap;
118 GtkWidget *checkbtn_wrapatsend;
120 GtkWidget *checkbtn_reply_account_autosel;
121 GtkWidget *checkbtn_forward_account_autosel;
122 GtkWidget *checkbtn_reedit_account_autosel;
123 GtkWidget *checkbtn_quote;
124 GtkWidget *checkbtn_default_reply_list;
125 GtkWidget *checkbtn_forward_as_attachment;
126 GtkWidget *checkbtn_redirect_keep_from;
127 GtkWidget *checkbtn_smart_wrapping;
128 GtkWidget *checkbtn_block_cursor;
129 GtkWidget *checkbtn_reply_with_quote;
131 GtkWidget *checkbtn_autosave;
132 GtkWidget *entry_autosave_length;
137 static struct Spelling {
138 GtkWidget *checkbtn_enable_aspell;
139 GtkWidget *entry_aspell_path;
140 GtkWidget *btn_aspell_path;
141 GtkWidget *optmenu_dictionary;
142 GtkWidget *optmenu_sugmode;
143 GtkWidget *misspelled_btn;
144 GtkWidget *checkbtn_use_alternate;
145 GtkWidget *checkbtn_check_while_typing;
149 static struct Quote {
150 GtkWidget *entry_quotemark;
151 GtkWidget *text_quotefmt;
153 GtkWidget *entry_fw_quotemark;
154 GtkWidget *text_fw_quotefmt;
156 GtkWidget *entry_quote_chars;
159 static struct Display {
160 GtkWidget *entry_textfont;
161 GtkWidget *button_textfont;
163 GtkWidget *entry_smallfont;
164 GtkWidget *entry_normalfont;
165 GtkWidget *entry_boldfont;
167 GtkWidget *chkbtn_folder_unread;
168 GtkWidget *entry_ng_abbrev_len;
169 GtkWidget *spinbtn_ng_abbrev_len;
170 GtkObject *spinbtn_ng_abbrev_len_adj;
172 GtkWidget *chkbtn_transhdr;
174 GtkWidget *chkbtn_swapfrom;
175 GtkWidget *chkbtn_useaddrbook;
176 GtkWidget *chkbtn_expand_thread;
177 GtkWidget *entry_datefmt;
180 static struct Message {
181 GtkWidget *chkbtn_enablecol;
182 GtkWidget *button_edit_col;
183 GtkWidget *chkbtn_mbalnum;
184 GtkWidget *chkbtn_disphdrpane;
185 GtkWidget *chkbtn_disphdr;
186 GtkWidget *spinbtn_linespc;
187 GtkObject *spinbtn_linespc_adj;
188 GtkWidget *chkbtn_headspc;
190 GtkWidget *chkbtn_smoothscroll;
191 GtkWidget *spinbtn_scrollstep;
192 GtkObject *spinbtn_scrollstep_adj;
193 GtkWidget *chkbtn_halfpage;
195 GtkWidget *chkbtn_display_img;
196 GtkWidget *chkbtn_resize_image;
200 static struct Privacy {
201 GtkWidget *checkbtn_auto_check_signatures;
202 GtkWidget *checkbtn_gpg_signature_popup;
203 GtkWidget *checkbtn_store_passphrase;
204 GtkWidget *spinbtn_store_passphrase;
205 GtkObject *spinbtn_store_passphrase_adj;
206 GtkWidget *checkbtn_passphrase_grab;
207 GtkWidget *checkbtn_gpg_warning;
211 static struct Interface {
212 /* GtkWidget *checkbtn_emacs; */
213 GtkWidget *checkbtn_show_msg_with_cursor;
214 GtkWidget *checkbtn_openunread;
215 GtkWidget *checkbtn_mark_as_read_on_newwin;
216 GtkWidget *checkbtn_openinbox;
217 GtkWidget *checkbtn_immedexec;
218 GtkWidget *optmenu_recvdialog;
219 GtkWidget *optmenu_senddialog;
220 GtkWidget *checkbtn_no_recv_err_panel;
221 GtkWidget *checkbtn_close_recv_dialog;
222 GtkWidget *optmenu_nextunreadmsgdialog;
223 GtkWidget *entry_pixmap_theme;
224 GtkWidget *combo_pixmap_theme;
227 static struct Other {
228 GtkWidget *uri_combo;
229 GtkWidget *uri_entry;
230 GtkWidget *printcmd_entry;
231 GtkWidget *exteditor_combo;
232 GtkWidget *exteditor_entry;
233 GtkWidget *checkbtn_addaddrbyclick;
234 GtkWidget *checkbtn_confonexit;
235 GtkWidget *checkbtn_cleanonexit;
236 GtkWidget *checkbtn_askonclean;
237 GtkWidget *checkbtn_warnqueued;
238 GtkWidget *checkbtn_cliplog;
239 GtkWidget *loglength_entry;
242 GtkWidget *checkbtn_ssl_ask_unknown_valid;
248 static struct MessageColorButtons {
249 GtkWidget *quote_level1_btn;
250 GtkWidget *quote_level2_btn;
251 GtkWidget *quote_level3_btn;
253 GtkWidget *tgt_folder_btn;
254 GtkWidget *signature_btn;
257 static struct KeybindDialog {
262 static GtkWidget *font_sel_win;
263 static guint font_sel_conn_id;
264 static GtkWidget *quote_color_win;
265 static GtkWidget *color_dialog;
267 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam);
268 static void prefs_common_charset_set_optmenu (PrefParam *pparam);
269 static void prefs_common_recv_dialog_newmail_notify_toggle_cb (GtkWidget *w,
271 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam);
272 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam);
273 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam);
274 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam);
275 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam);
276 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam);
279 static void prefs_dictionary_set_data_from_optmenu (PrefParam *param);
280 static void prefs_dictionary_set_optmenu (PrefParam *pparam);
281 static void prefs_speller_sugmode_set_data_from_optmenu (PrefParam *pparam);
282 static void prefs_speller_sugmode_set_optmenu (PrefParam *pparam);
287 parameter name, default value, pointer to the prefs variable, data type,
288 pointer to the widget pointer,
289 pointer to the function for data setting,
290 pointer to the function for widget setting
293 static PrefParam param[] = {
295 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
296 &receive.checkbtn_incext,
297 prefs_set_data_from_toggle, prefs_set_toggle},
298 {"ext_inc_path", DEFAULT_INC_PATH, &prefs_common.extinc_cmd, P_STRING,
299 &receive.entry_incext,
300 prefs_set_data_from_entry, prefs_set_entry},
302 {"inc_local", "TRUE", &prefs_common.inc_local, P_BOOL,
303 &receive.checkbtn_local,
304 prefs_set_data_from_toggle, prefs_set_toggle},
305 {"filter_on_inc_local", "FALSE", &prefs_common.filter_on_inc, P_BOOL,
306 &receive.checkbtn_filter_on_inc,
307 prefs_set_data_from_toggle, prefs_set_toggle},
308 {"spool_path", DEFAULT_SPOOL_PATH, &prefs_common.spool_path, P_STRING,
309 &receive.entry_spool,
310 prefs_set_data_from_entry, prefs_set_entry},
312 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
313 &receive.checkbtn_autochk,
314 prefs_set_data_from_toggle, prefs_set_toggle},
315 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
316 &receive.spinbtn_autochk,
317 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
318 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
319 &receive.checkbtn_chkonstartup,
320 prefs_set_data_from_toggle, prefs_set_toggle},
321 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
322 P_BOOL, &receive.checkbtn_scan_after_inc,
323 prefs_set_data_from_toggle, prefs_set_toggle},
324 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
325 P_BOOL, &receive.checkbtn_newmail_manu,
326 prefs_set_data_from_toggle, prefs_set_toggle},
327 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
328 P_BOOL, &receive.checkbtn_newmail_auto,
329 prefs_set_data_from_toggle, prefs_set_toggle},
330 {"newmail_notify_cmd", "", &prefs_common.newmail_notify_cmd, P_STRING,
331 &receive.entry_newmail_notify_cmd,
332 prefs_set_data_from_entry, prefs_set_entry},
334 {"max_news_articles", "300", &prefs_common.max_articles, P_INT,
335 &receive.spinbtn_maxarticle,
336 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
339 {"use_ext_sendmail", "FALSE", &prefs_common.use_extsend, P_BOOL,
340 &p_send.checkbtn_extsend,
341 prefs_set_data_from_toggle, prefs_set_toggle},
342 {"ext_sendmail_cmd", DEFAULT_SENDMAIL_CMD,
343 &prefs_common.extsend_cmd, P_STRING,
344 &p_send.entry_extsend, prefs_set_data_from_entry, prefs_set_entry},
345 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
346 &p_send.checkbtn_savemsg,
347 prefs_set_data_from_toggle, prefs_set_toggle},
348 {"queue_message", "FALSE", &prefs_common.queue_msg, P_BOOL,
349 &p_send.checkbtn_queuemsg,
350 prefs_set_data_from_toggle, prefs_set_toggle},
352 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
353 &p_send.optmenu_charset,
354 prefs_common_charset_set_data_from_optmenu,
355 prefs_common_charset_set_optmenu},
358 {"auto_signature", "TRUE", &prefs_common.auto_sig, P_BOOL,
359 &compose.checkbtn_autosig,
360 prefs_set_data_from_toggle, prefs_set_toggle},
361 {"signature_separator", "-- ", &prefs_common.sig_sep, P_STRING,
362 &compose.entry_sigsep, prefs_set_data_from_entry, prefs_set_entry},
364 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
365 &compose.checkbtn_autoextedit,
366 prefs_set_data_from_toggle, prefs_set_toggle},
367 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
368 P_BOOL, &compose.checkbtn_forward_as_attachment,
369 prefs_set_data_from_toggle, prefs_set_toggle},
370 {"redirect_keep_from", "FALSE",
371 &prefs_common.redirect_keep_from, P_BOOL,
372 &compose.checkbtn_redirect_keep_from,
373 prefs_set_data_from_toggle, prefs_set_toggle},
374 {"undo_level", "50", &prefs_common.undolevels, P_INT,
375 &compose.spinbtn_undolevel,
376 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
377 {"block_cursor", "FALSE", &prefs_common.block_cursor,
378 P_BOOL, &compose.checkbtn_block_cursor,
379 prefs_set_data_from_toggle, prefs_set_toggle},
381 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
382 &compose.spinbtn_linewrap,
383 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
384 {"linewrap_quotation", "FALSE", &prefs_common.linewrap_quote, P_BOOL,
385 &compose.checkbtn_wrapquote,
386 prefs_set_data_from_toggle, prefs_set_toggle},
387 {"linewrap_auto", "FALSE", &prefs_common.autowrap, P_BOOL,
388 &compose.checkbtn_autowrap,
389 prefs_set_data_from_toggle, prefs_set_toggle},
390 {"linewrap_before_sending", "FALSE",
391 &prefs_common.linewrap_at_send, P_BOOL,
392 &compose.checkbtn_wrapatsend,
393 prefs_set_data_from_toggle, prefs_set_toggle},
394 {"smart_wrapping", "TRUE", &prefs_common.smart_wrapping,
395 P_BOOL, &compose.checkbtn_smart_wrapping,
396 prefs_set_data_from_toggle, prefs_set_toggle},
397 {"autosave", "FALSE", &prefs_common.autosave,
398 P_BOOL, &compose.checkbtn_autosave,
399 prefs_set_data_from_toggle, prefs_set_toggle},
400 {"autosave_length", "50", &prefs_common.autosave_length,
401 P_INT, &compose.entry_autosave_length,
402 prefs_set_data_from_entry, prefs_set_entry},
404 {"enable_aspell", "TRUE", &prefs_common.enable_aspell,
405 P_BOOL, &spelling.checkbtn_enable_aspell,
406 prefs_set_data_from_toggle, prefs_set_toggle},
407 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path,
408 P_STRING, &spelling.entry_aspell_path,
409 prefs_set_data_from_entry, prefs_set_entry},
410 {"dictionary", "", &prefs_common.dictionary,
411 P_STRING, &spelling.optmenu_dictionary,
412 prefs_dictionary_set_data_from_optmenu, prefs_dictionary_set_optmenu },
413 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode,
414 P_INT, &spelling.optmenu_sugmode,
415 prefs_speller_sugmode_set_data_from_optmenu, prefs_speller_sugmode_set_optmenu },
416 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate,
417 P_BOOL, &spelling.checkbtn_use_alternate,
418 prefs_set_data_from_toggle, prefs_set_toggle},
419 {"check_while_typing", "TRUE", &prefs_common.check_while_typing,
420 P_BOOL, &spelling.checkbtn_check_while_typing,
421 prefs_set_data_from_toggle, prefs_set_toggle},
422 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_INT,
425 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
426 &compose.checkbtn_reply_with_quote, prefs_set_data_from_toggle, prefs_set_toggle},
428 /* Account autoselection */
429 {"reply_account_autoselect", "TRUE",
430 &prefs_common.reply_account_autosel, P_BOOL,
431 &compose.checkbtn_reply_account_autosel,
432 prefs_set_data_from_toggle, prefs_set_toggle},
433 {"forward_account_autoselect", "TRUE",
434 &prefs_common.forward_account_autosel, P_BOOL,
435 &compose.checkbtn_forward_account_autosel,
436 prefs_set_data_from_toggle, prefs_set_toggle},
437 {"reedit_account_autoselect", "TRUE",
438 &prefs_common.reedit_account_autosel, P_BOOL,
439 &compose.checkbtn_reedit_account_autosel,
440 prefs_set_data_from_toggle, prefs_set_toggle},
442 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
443 &compose.checkbtn_default_reply_list,
444 prefs_set_data_from_toggle, prefs_set_toggle},
446 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
450 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
451 "e.entry_quotemark, prefs_set_data_from_entry, prefs_set_entry},
452 {"reply_quote_format", "On %d\\n%f wrote:\\n\\n%Q",
453 &prefs_common.quotefmt, P_STRING, "e.text_quotefmt,
454 prefs_set_data_from_text, prefs_set_text},
456 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
457 "e.entry_fw_quotemark,
458 prefs_set_data_from_entry, prefs_set_entry},
459 {"forward_quote_format",
460 "\\n\\nBegin forwarded message:\\n\\n"
461 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
462 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M",
463 &prefs_common.fw_quotefmt, P_STRING, "e.text_fw_quotefmt,
464 prefs_set_data_from_text, prefs_set_text},
465 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
466 "e.entry_quote_chars, prefs_set_data_from_entry, prefs_set_entry},
469 {"widget_font", NULL, &prefs_common.widgetfont, P_STRING,
471 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
472 &prefs_common.textfont, P_STRING,
473 &display.entry_textfont,
474 prefs_set_data_from_entry, prefs_set_entry},
475 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
476 &prefs_common.smallfont, P_STRING,
477 &display.entry_smallfont,
478 prefs_set_data_from_entry, prefs_set_entry},
479 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
480 &prefs_common.boldfont, P_STRING,
481 &display.entry_boldfont,
482 prefs_set_data_from_entry, prefs_set_entry},
483 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
484 &prefs_common.normalfont, P_STRING,
485 &display.entry_normalfont,
486 prefs_set_data_from_entry, prefs_set_entry},
489 {"display_folder_unread_num", "TRUE",
490 &prefs_common.display_folder_unread, P_BOOL,
491 &display.chkbtn_folder_unread,
492 prefs_set_data_from_toggle, prefs_set_toggle},
493 {"newsgroup_abbrev_len", "16",
494 &prefs_common.ng_abbrev_len, P_INT,
495 &display.spinbtn_ng_abbrev_len,
496 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
498 {"translate_header", "TRUE", &prefs_common.trans_hdr, P_BOOL,
499 &display.chkbtn_transhdr,
500 prefs_set_data_from_toggle, prefs_set_toggle},
502 /* Display: Summary View */
503 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
504 &display.chkbtn_swapfrom,
505 prefs_set_data_from_toggle, prefs_set_toggle},
506 {"use_address_book", "TRUE", &prefs_common.use_addr_book, P_BOOL,
507 &display.chkbtn_useaddrbook,
508 prefs_set_data_from_toggle, prefs_set_toggle},
509 {"date_format", "%y/%m/%d(%a) %H:%M", &prefs_common.date_format,
510 P_STRING, &display.entry_datefmt,
511 prefs_set_data_from_entry, prefs_set_entry},
512 {"expand_thread", "TRUE", &prefs_common.expand_thread, P_BOOL,
513 &display.chkbtn_expand_thread,
514 prefs_set_data_from_toggle, prefs_set_toggle},
516 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
518 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
521 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
523 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
525 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
527 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
530 {"folderview_vscrollbar_policy", "0",
531 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
534 {"summary_col_show_mark", "TRUE",
535 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
536 {"summary_col_show_unread", "TRUE",
537 &prefs_common.summary_col_visible[S_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
538 {"summary_col_show_mime", "TRUE",
539 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
540 {"summary_col_show_subject", "TRUE",
541 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
542 {"summary_col_show_from", "TRUE",
543 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
544 {"summary_col_show_date", "TRUE",
545 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
546 {"summary_col_show_size", "TRUE",
547 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
548 {"summary_col_show_number", "FALSE",
549 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
550 {"summary_col_show_score", "FALSE",
551 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
552 {"summary_col_show_locked", "FALSE",
553 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
555 {"summary_col_pos_mark", "0",
556 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
557 {"summary_col_pos_unread", "1",
558 &prefs_common.summary_col_pos[S_COL_UNREAD], P_INT, NULL, NULL, NULL},
559 {"summary_col_pos_mime", "2",
560 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
561 {"summary_col_pos_subject", "3",
562 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
563 {"summary_col_pos_from", "4",
564 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
565 {"summary_col_pos_date", "5",
566 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
567 {"summary_col_pos_size", "6",
568 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
569 {"summary_col_pos_number", "7",
570 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
571 {"summary_col_pos_score", "8",
572 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
573 {"summary_col_pos_locked", "9",
574 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
576 {"summary_col_size_mark", "10",
577 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
578 {"summary_col_size_unread", "13",
579 &prefs_common.summary_col_size[S_COL_UNREAD], P_INT, NULL, NULL, NULL},
580 {"summary_col_size_mime", "10",
581 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
582 {"summary_col_size_subject", "200",
583 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
584 {"summary_col_size_from", "120",
585 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
586 {"summary_col_size_date", "118",
587 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
588 {"summary_col_size_size", "45",
589 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
590 {"summary_col_size_number", "40",
591 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
592 {"summary_col_size_score", "40",
593 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
594 {"summary_col_size_locked", "13",
595 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
598 {"folderview_width", "179", &prefs_common.folderview_width, P_INT,
600 {"folderview_height", "600", &prefs_common.folderview_height, P_INT,
602 {"folder_col_folder", "150", &prefs_common.folder_col_folder, P_INT,
604 {"folder_col_new", "32", &prefs_common.folder_col_new, P_INT,
606 {"folder_col_unread", "32", &prefs_common.folder_col_unread, P_INT,
608 {"folder_col_total", "32", &prefs_common.folder_col_total, P_INT,
611 {"summaryview_width", "600", &prefs_common.summaryview_width, P_INT,
613 {"summaryview_height", "173", &prefs_common.summaryview_height, P_INT,
616 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
618 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
620 {"mainview_width", "600", &prefs_common.mainview_width, P_INT,
622 {"mainview_height", "600", &prefs_common.mainview_height, P_INT,
624 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
626 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
628 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
630 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
632 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
634 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
636 {"compose_width", "600", &prefs_common.compose_width, P_INT,
638 {"compose_height", "560", &prefs_common.compose_height, P_INT,
642 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
643 &message.chkbtn_enablecol,
644 prefs_set_data_from_toggle, prefs_set_toggle},
646 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_INT,
648 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_INT,
650 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_INT,
652 {"uri_color", "32512", &prefs_common.uri_col, P_INT,
654 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_INT,
656 {"signature_color", "7960953", &prefs_common.signature_col, P_INT,
658 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
659 P_BOOL, NULL, NULL, NULL},
661 {"convert_mb_alnum", "FALSE", &prefs_common.conv_mb_alnum, P_BOOL,
662 &message.chkbtn_mbalnum,
663 prefs_set_data_from_toggle, prefs_set_toggle},
664 {"display_header_pane", "TRUE", &prefs_common.display_header_pane,
665 P_BOOL, &message.chkbtn_disphdrpane,
666 prefs_set_data_from_toggle, prefs_set_toggle},
667 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
668 &message.chkbtn_disphdr,
669 prefs_set_data_from_toggle, prefs_set_toggle},
670 {"line_space", "2", &prefs_common.line_space, P_INT,
671 &message.spinbtn_linespc,
672 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
673 {"enable_head_space", "FALSE", &prefs_common.head_space, P_BOOL,
674 &message.chkbtn_headspc,
675 prefs_set_data_from_toggle, prefs_set_toggle},
677 {"enable_smooth_scroll", "FALSE",
678 &prefs_common.enable_smooth_scroll, P_BOOL,
679 &message.chkbtn_smoothscroll,
680 prefs_set_data_from_toggle, prefs_set_toggle},
681 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
682 &message.spinbtn_scrollstep,
683 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
684 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
685 &message.chkbtn_halfpage,
686 prefs_set_data_from_toggle, prefs_set_toggle},
688 {"display_img", "TRUE", &prefs_common.display_img, P_BOOL,
689 &message.chkbtn_display_img,
690 prefs_set_data_from_toggle, prefs_set_toggle},
691 {"resize_image", "TRUE", &prefs_common.resize_image, P_BOOL,
692 &message.chkbtn_resize_image,
693 prefs_set_data_from_toggle, prefs_set_toggle},
695 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
699 {"mime_image_viewer", "display '%s'",
700 &prefs_common.mime_image_viewer, P_STRING, NULL, NULL, NULL},
701 {"mime_audio_player", "play '%s'",
702 &prefs_common.mime_audio_player, P_STRING, NULL, NULL, NULL},
703 {"mime_open_command", "gedit '%s'",
704 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
708 {"auto_check_signatures", "TRUE",
709 &prefs_common.auto_check_signatures, P_BOOL,
710 &privacy.checkbtn_auto_check_signatures,
711 prefs_set_data_from_toggle, prefs_set_toggle},
712 {"gpg_signature_popup", "FALSE",
713 &prefs_common.gpg_signature_popup, P_BOOL,
714 &privacy.checkbtn_gpg_signature_popup,
715 prefs_set_data_from_toggle, prefs_set_toggle},
716 {"store_passphrase", "FALSE", &prefs_common.store_passphrase, P_BOOL,
717 &privacy.checkbtn_store_passphrase,
718 prefs_set_data_from_toggle, prefs_set_toggle},
719 {"store_passphrase_timeout", "0",
720 &prefs_common.store_passphrase_timeout, P_INT,
721 &privacy.spinbtn_store_passphrase,
722 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
724 {"passphrase_grab", "FALSE", &prefs_common.passphrase_grab, P_BOOL,
725 &privacy.checkbtn_passphrase_grab,
726 prefs_set_data_from_toggle, prefs_set_toggle},
727 #endif /* __MINGW32__ */
728 {"gpg_warning", "TRUE", &prefs_common.gpg_warning, P_BOOL,
729 &privacy.checkbtn_gpg_warning,
730 prefs_set_data_from_toggle, prefs_set_toggle},
731 #endif /* USE_GPGME */
734 {"separate_folder", "FALSE", &prefs_common.sep_folder, P_BOOL,
736 {"separate_message", "FALSE", &prefs_common.sep_msg, P_BOOL,
739 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
740 NULL, NULL, NULL}, */
741 {"show_message_with_cursor_key", "FALSE",
742 &prefs_common.show_msg_with_cursor_key,
743 P_BOOL, &interface.checkbtn_show_msg_with_cursor,
744 prefs_set_data_from_toggle, prefs_set_toggle},
745 {"open_unread_on_enter", "FALSE", &prefs_common.open_unread_on_enter,
746 P_BOOL, &interface.checkbtn_openunread,
747 prefs_set_data_from_toggle, prefs_set_toggle},
748 {"mark_as_read_on_new_window", "FALSE",
749 &prefs_common.mark_as_read_on_new_window,
750 P_BOOL, &interface.checkbtn_mark_as_read_on_newwin,
751 prefs_set_data_from_toggle, prefs_set_toggle},
752 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
753 P_BOOL, &interface.checkbtn_openinbox,
754 prefs_set_data_from_toggle, prefs_set_toggle},
755 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
756 &interface.checkbtn_immedexec,
757 prefs_set_data_from_toggle, prefs_set_toggle},
758 {"receive_dialog_mode", "1", &prefs_common.recv_dialog_mode, P_ENUM,
759 &interface.optmenu_recvdialog,
760 prefs_common_recv_dialog_set_data_from_optmenu,
761 prefs_common_recv_dialog_set_optmenu},
762 {"send_dialog_mode", "0", &prefs_common.send_dialog_mode, P_ENUM,
763 &interface.optmenu_senddialog,
764 prefs_common_send_dialog_set_data_from_optmenu,
765 prefs_common_send_dialog_set_optmenu},
766 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
767 P_BOOL, &interface.checkbtn_no_recv_err_panel,
768 prefs_set_data_from_toggle, prefs_set_toggle},
769 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
770 P_BOOL, &interface.checkbtn_close_recv_dialog,
771 prefs_set_data_from_toggle, prefs_set_toggle},
772 {"nextunreadmsg_dialog", NULL, &prefs_common.next_unread_msg_dialog, P_ENUM,
773 &interface.optmenu_nextunreadmsgdialog,
774 prefs_nextunreadmsgdialog_set_data_from_optmenu,
775 prefs_nextunreadmsgdialog_set_optmenu},
777 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
778 &prefs_common.pixmap_theme_path, P_STRING,
779 &interface.entry_pixmap_theme, prefs_set_data_from_entry, prefs_set_entry},
782 {"uri_open_command", "netscape -remote 'openURL(%s,raise)'",
783 &prefs_common.uri_cmd, P_STRING,
784 &other.uri_entry, prefs_set_data_from_entry, prefs_set_entry},
785 {"print_command", "lpr %s", &prefs_common.print_cmd, P_STRING,
786 &other.printcmd_entry, prefs_set_data_from_entry, prefs_set_entry},
787 {"ext_editor_command", "gedit %s",
788 &prefs_common.ext_editor_cmd, P_STRING,
789 &other.exteditor_entry, prefs_set_data_from_entry, prefs_set_entry},
791 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
792 P_BOOL, &other.checkbtn_addaddrbyclick,
793 prefs_set_data_from_toggle, prefs_set_toggle},
795 {"confirm_on_exit", "TRUE", &prefs_common.confirm_on_exit, P_BOOL,
796 &other.checkbtn_confonexit,
797 prefs_set_data_from_toggle, prefs_set_toggle},
798 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
799 &other.checkbtn_cleanonexit,
800 prefs_set_data_from_toggle, prefs_set_toggle},
801 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
802 &other.checkbtn_askonclean,
803 prefs_set_data_from_toggle, prefs_set_toggle},
804 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
805 P_BOOL, &other.checkbtn_warnqueued,
806 prefs_set_data_from_toggle, prefs_set_toggle},
809 {"ssl_ask_unknown_valid", "TRUE", &prefs_common.ssl_ask_unknown_valid,
810 P_BOOL, &other.checkbtn_ssl_ask_unknown_valid,
811 prefs_set_data_from_toggle, prefs_set_toggle},
814 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
816 {"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
819 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
821 {"important_score", "1", &prefs_common.important_score, P_INT,
823 {"clip_log", "FALSE", &prefs_common.cliplog, P_BOOL,
824 &other.checkbtn_cliplog,
825 prefs_set_data_from_toggle, prefs_set_toggle},
826 {"log_length", "1000", &prefs_common.loglength, P_INT,
827 &other.loglength_entry,
828 prefs_set_data_from_entry, prefs_set_entry},
830 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
832 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
835 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
838 /* widget creating functions */
839 static void prefs_common_create (void);
840 static void prefs_receive_create (void);
841 static void prefs_send_create (void);
843 static void prefs_spelling_create (void);
845 static void prefs_compose_create (void);
846 static void prefs_quote_create (void);
847 static void prefs_display_create (void);
848 static void prefs_message_create (void);
850 static void prefs_privacy_create (void);
852 static void prefs_interface_create (void);
853 static void prefs_other_create (void);
855 static void date_format_ok_btn_clicked (GtkButton *button,
857 static void date_format_cancel_btn_clicked (GtkButton *button,
859 static void date_format_key_pressed (GtkWidget *keywidget,
862 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
865 static void date_format_entry_on_change (GtkEditable *editable,
867 static void date_format_select_row (GtkWidget *date_format_list,
870 GdkEventButton *event,
871 GtkWidget *date_format);
872 static GtkWidget *date_format_create (GtkButton *button,
875 static void prefs_quote_colors_dialog (void);
876 static void prefs_quote_colors_dialog_create (void);
877 static void prefs_quote_colors_key_pressed (GtkWidget *widget,
880 static void quote_color_set_dialog (GtkWidget *widget,
882 static void quote_colors_set_dialog_ok (GtkWidget *widget,
884 static void quote_colors_set_dialog_cancel (GtkWidget *widget,
886 static void quote_colors_set_dialog_key_pressed (GtkWidget *widget,
889 static void set_button_bg_color (GtkWidget *widget,
891 static void prefs_enable_message_color_toggled (void);
892 static void prefs_recycle_colors_toggled (GtkWidget *widget);
894 static void prefs_font_select (GtkButton *button, GtkEntry *entry);
896 static void prefs_font_selection_key_pressed (GtkWidget *widget,
899 static void prefs_font_selection_ok (GtkButton *button, GtkEntry *entry);
901 static void prefs_keybind_select (void);
902 static gint prefs_keybind_deleted (GtkWidget *widget,
905 static void prefs_keybind_key_pressed (GtkWidget *widget,
908 static void prefs_keybind_cancel (void);
909 static void prefs_keybind_apply_clicked (GtkWidget *widget);
911 static gint prefs_common_deleted (GtkWidget *widget,
914 static void prefs_common_key_pressed (GtkWidget *widget,
917 static void prefs_common_ok (void);
918 static void prefs_common_apply (void);
919 static void prefs_common_cancel (void);
921 void prefs_common_init() {
922 prefs_common.disphdr_list = NULL;
925 void prefs_common_read_config(void)
929 gchar buf[PREFSBUFSIZE];
931 prefs_read_config(param, "Common", COMMON_RC);
933 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
935 if ((fp = fopen(path, "rb")) == NULL) {
936 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
941 while (fgets(buf, sizeof(buf), fp) != NULL) {
943 if (buf[0] == '\0') continue;
944 prefs_common.mime_open_cmd_history =
945 add_history(prefs_common.mime_open_cmd_history, buf);
949 prefs_common.mime_open_cmd_history =
950 g_list_reverse(prefs_common.mime_open_cmd_history);
953 void prefs_common_save_config(void)
959 prefs_save_config(param, "Common", COMMON_RC);
961 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
963 if ((fp = fopen(path, "wb")) == NULL) {
964 FILE_OP_ERROR(path, "fopen");
969 for (cur = prefs_common.mime_open_cmd_history;
970 cur != NULL; cur = cur->next) {
971 fputs((gchar *)cur->data, fp);
979 void prefs_common_open(void)
981 if (prefs_rc_is_readonly(COMMON_RC))
986 if (!dialog.window) {
987 prefs_common_create();
990 manage_window_set_transient(GTK_WINDOW(dialog.window));
991 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
992 gtk_widget_grab_focus(dialog.ok_btn);
994 prefs_set_dialog(param);
996 gtk_widget_show(dialog.window);
999 static void prefs_common_create(void)
1003 debug_print("Creating common preferences window...\n");
1005 prefs_dialog_create(&dialog);
1006 gtk_window_set_title (GTK_WINDOW(dialog.window),
1007 _("Common Preferences"));
1008 gtk_signal_connect (GTK_OBJECT(dialog.window), "delete_event",
1009 GTK_SIGNAL_FUNC(prefs_common_deleted), NULL);
1010 gtk_signal_connect (GTK_OBJECT(dialog.window), "key_press_event",
1011 GTK_SIGNAL_FUNC(prefs_common_key_pressed), NULL);
1012 MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
1014 gtk_signal_connect (GTK_OBJECT(dialog.ok_btn), "clicked",
1015 GTK_SIGNAL_FUNC(prefs_common_ok), NULL);
1016 gtk_signal_connect (GTK_OBJECT(dialog.apply_btn), "clicked",
1017 GTK_SIGNAL_FUNC(prefs_common_apply), NULL);
1018 gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
1019 GTK_SIGNAL_FUNC(prefs_common_cancel),
1020 GTK_OBJECT(dialog.window));
1022 /* create all widgets on notebook */
1023 prefs_receive_create();
1024 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
1025 prefs_send_create();
1026 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
1027 prefs_compose_create();
1028 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
1030 prefs_spelling_create();
1031 SET_NOTEBOOK_LABEL(dialog.notebook, _("Spell Checker"), page++);
1033 prefs_quote_create();
1034 SET_NOTEBOOK_LABEL(dialog.notebook, _("Quote"), page++);
1035 prefs_display_create();
1036 SET_NOTEBOOK_LABEL(dialog.notebook, _("Display"), page++);
1037 prefs_message_create();
1038 SET_NOTEBOOK_LABEL(dialog.notebook, _("Message"), page++);
1040 prefs_privacy_create();
1041 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
1043 prefs_interface_create();
1044 SET_NOTEBOOK_LABEL(dialog.notebook, _("Interface"), page++);
1045 prefs_other_create();
1046 SET_NOTEBOOK_LABEL(dialog.notebook, _("Other"), page++);
1048 gtk_widget_show_all(dialog.window);
1051 static void prefs_receive_create(void)
1055 GtkWidget *frame_incext;
1056 GtkWidget *checkbtn_incext;
1058 GtkWidget *label_incext;
1059 GtkWidget *entry_incext;
1060 /* GtkWidget *button_incext; */
1062 GtkWidget *frame_spool;
1063 GtkWidget *checkbtn_local;
1064 GtkWidget *checkbtn_filter_on_inc;
1065 GtkWidget *label_spool;
1066 GtkWidget *entry_spool;
1068 GtkWidget *hbox_autochk;
1069 GtkWidget *checkbtn_autochk;
1070 GtkWidget *label_autochk1;
1071 GtkObject *spinbtn_autochk_adj;
1072 GtkWidget *spinbtn_autochk;
1073 GtkWidget *label_autochk2;
1074 GtkWidget *checkbtn_chkonstartup;
1075 GtkWidget *checkbtn_scan_after_inc;
1078 GtkWidget *frame_newmail;
1079 GtkWidget *hbox_newmail_notify;
1080 GtkWidget *checkbtn_newmail_auto;
1081 GtkWidget *checkbtn_newmail_manu;
1082 GtkWidget *entry_newmail_notify_cmd;
1083 GtkWidget *label_newmail_notify_cmd;
1085 GtkWidget *frame_news;
1086 GtkWidget *label_maxarticle;
1087 GtkWidget *spinbtn_maxarticle;
1088 GtkObject *spinbtn_maxarticle_adj;
1090 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1091 gtk_widget_show (vbox1);
1092 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1093 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1095 PACK_FRAME(vbox1, frame_incext, _("External program"));
1097 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1098 gtk_widget_show (vbox2);
1099 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
1100 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1102 /* Use of external incorporation program */
1103 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
1104 _("Use external program for incorporation"));
1106 hbox = gtk_hbox_new (FALSE, 8);
1107 gtk_widget_show (hbox);
1108 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1109 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1111 label_incext = gtk_label_new (_("Command"));
1112 gtk_widget_show (label_incext);
1113 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1115 entry_incext = gtk_entry_new ();
1116 gtk_widget_show (entry_incext);
1117 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1120 button_incext = gtk_button_new_with_label ("... ");
1121 gtk_widget_show (button_incext);
1122 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1125 PACK_FRAME(vbox1, frame_spool, _("Local spool"));
1127 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1128 gtk_widget_show (vbox2);
1129 gtk_container_add (GTK_CONTAINER (frame_spool), vbox2);
1130 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1132 hbox = gtk_hbox_new (FALSE, 32);
1133 gtk_widget_show (hbox);
1134 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1136 PACK_CHECK_BUTTON (hbox, checkbtn_local, _("Incorporate from spool"));
1137 PACK_CHECK_BUTTON (hbox, checkbtn_filter_on_inc,
1138 _("Filter on incorporation"));
1139 SET_TOGGLE_SENSITIVITY (checkbtn_local, checkbtn_filter_on_inc);
1141 hbox = gtk_hbox_new (FALSE, 8);
1142 gtk_widget_show (hbox);
1143 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1144 SET_TOGGLE_SENSITIVITY (checkbtn_local, hbox);
1146 label_spool = gtk_label_new (_("Spool directory"));
1147 gtk_widget_show (label_spool);
1148 gtk_box_pack_start (GTK_BOX (hbox), label_spool, FALSE, FALSE, 0);
1150 entry_spool = gtk_entry_new ();
1151 gtk_widget_show (entry_spool);
1152 gtk_box_pack_start (GTK_BOX (hbox), entry_spool, TRUE, TRUE, 0);
1154 vbox2 = gtk_vbox_new (FALSE, 0);
1155 gtk_widget_show (vbox2);
1156 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1159 hbox_autochk = gtk_hbox_new (FALSE, 8);
1160 gtk_widget_show (hbox_autochk);
1161 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1163 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1164 _("Auto-check new mail"));
1166 label_autochk1 = gtk_label_new (_("every"));
1167 gtk_widget_show (label_autochk1);
1168 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1170 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1171 spinbtn_autochk = gtk_spin_button_new
1172 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1173 gtk_widget_show (spinbtn_autochk);
1174 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1175 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1176 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1178 label_autochk2 = gtk_label_new (_("minute(s)"));
1179 gtk_widget_show (label_autochk2);
1180 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1182 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1183 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1184 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1186 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1187 _("Check new mail on startup"));
1188 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1189 _("Update all local folders after incorporation"));
1192 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1194 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1195 gtk_widget_show (vbox2);
1196 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1197 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1199 hbox = gtk_hbox_new (TRUE, 8);
1200 gtk_widget_show (hbox);
1201 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1202 _("after autochecking"));
1203 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1204 _("after manual checking"));
1205 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1206 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1207 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1209 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1210 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1213 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1214 gtk_widget_show (hbox);
1215 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1218 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1219 "(use %d as number of new "
1221 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1223 gtk_widget_show (label_newmail_notify_cmd);
1224 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1225 label_newmail_notify_cmd, FALSE, FALSE, 0);
1227 entry_newmail_notify_cmd = gtk_entry_new ();
1228 gtk_widget_show (entry_newmail_notify_cmd);
1229 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1230 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1232 gtk_widget_set_sensitive(hbox_newmail_notify,
1233 prefs_common.newmail_notify_auto ||
1234 prefs_common.newmail_notify_manu);
1236 PACK_FRAME(vbox1, frame_news, _("News"));
1238 hbox = gtk_hbox_new (FALSE, 8);
1239 gtk_widget_show (hbox);
1240 gtk_container_add (GTK_CONTAINER (frame_news), hbox);
1241 gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
1243 label_maxarticle = gtk_label_new
1244 (_("Maximum number of articles to download\n"
1245 "(unlimited if 0 is specified)"));
1246 gtk_widget_show (label_maxarticle);
1247 gtk_box_pack_start (GTK_BOX (hbox), label_maxarticle, FALSE, FALSE, 0);
1248 gtk_label_set_justify (GTK_LABEL (label_maxarticle), GTK_JUSTIFY_LEFT);
1250 spinbtn_maxarticle_adj =
1251 gtk_adjustment_new (300, 0, 10000, 10, 100, 100);
1252 spinbtn_maxarticle = gtk_spin_button_new
1253 (GTK_ADJUSTMENT (spinbtn_maxarticle_adj), 10, 0);
1254 gtk_widget_show (spinbtn_maxarticle);
1255 gtk_box_pack_start (GTK_BOX (hbox), spinbtn_maxarticle,
1257 gtk_widget_set_usize (spinbtn_maxarticle, 64, -1);
1258 gtk_spin_button_set_numeric
1259 (GTK_SPIN_BUTTON (spinbtn_maxarticle), TRUE);
1261 receive.checkbtn_incext = checkbtn_incext;
1262 receive.entry_incext = entry_incext;
1263 /* receive.button_incext = button_incext; */
1265 receive.checkbtn_local = checkbtn_local;
1266 receive.checkbtn_filter_on_inc = checkbtn_filter_on_inc;
1267 receive.entry_spool = entry_spool;
1269 receive.checkbtn_autochk = checkbtn_autochk;
1270 receive.spinbtn_autochk = spinbtn_autochk;
1271 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1273 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1274 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1277 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1278 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1279 receive.hbox_newmail_notify = hbox_newmail_notify;
1280 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1282 receive.spinbtn_maxarticle = spinbtn_maxarticle;
1283 receive.spinbtn_maxarticle_adj = spinbtn_maxarticle_adj;
1286 static void prefs_send_create(void)
1290 GtkWidget *frame_extsend;
1291 GtkWidget *vbox_extsend;
1292 GtkWidget *checkbtn_extsend;
1294 GtkWidget *label_extsend;
1295 GtkWidget *entry_extsend;
1296 /* GtkWidget *button_extsend; */
1297 GtkWidget *checkbtn_savemsg;
1298 GtkWidget *checkbtn_queuemsg;
1299 GtkWidget *label_outcharset;
1301 GtkWidget *optmenu_menu;
1302 GtkWidget *menuitem;
1303 GtkWidget *label_charset_desc;
1305 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1306 gtk_widget_show (vbox1);
1307 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1308 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1310 PACK_FRAME(vbox1, frame_extsend, _("External program"));
1312 vbox_extsend = gtk_vbox_new (FALSE, VSPACING_NARROW);
1313 gtk_widget_show (vbox_extsend);
1314 gtk_container_add (GTK_CONTAINER (frame_extsend), vbox_extsend);
1315 gtk_container_set_border_width (GTK_CONTAINER (vbox_extsend), 8);
1317 PACK_CHECK_BUTTON (vbox_extsend, checkbtn_extsend,
1318 _("Use external program for sending"));
1320 hbox1 = gtk_hbox_new (FALSE, 8);
1321 gtk_widget_show (hbox1);
1322 gtk_box_pack_start (GTK_BOX (vbox_extsend), hbox1, FALSE, FALSE, 0);
1323 SET_TOGGLE_SENSITIVITY(checkbtn_extsend, hbox1);
1325 label_extsend = gtk_label_new (_("Command"));
1326 gtk_widget_show (label_extsend);
1327 gtk_box_pack_start (GTK_BOX (hbox1), label_extsend, FALSE, FALSE, 0);
1329 entry_extsend = gtk_entry_new ();
1330 gtk_widget_show (entry_extsend);
1331 gtk_box_pack_start (GTK_BOX (hbox1), entry_extsend, TRUE, TRUE, 0);
1334 button_extsend = gtk_button_new_with_label ("... ");
1335 gtk_widget_show (button_extsend);
1336 gtk_box_pack_start (GTK_BOX (hbox1), button_extsend, FALSE, FALSE, 0);
1339 vbox2 = gtk_vbox_new (FALSE, 0);
1340 gtk_widget_show (vbox2);
1341 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1343 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1344 _("Save sent messages to Sent folder"));
1345 PACK_CHECK_BUTTON (vbox2, checkbtn_queuemsg,
1346 _("Queue messages that fail to send"));
1348 hbox1 = gtk_hbox_new (FALSE, 8);
1349 gtk_widget_show (hbox1);
1350 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1352 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1353 gtk_widget_show (label_outcharset);
1354 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1356 optmenu = gtk_option_menu_new ();
1357 gtk_widget_show (optmenu);
1358 gtk_box_pack_start (GTK_BOX (hbox1), optmenu, FALSE, FALSE, 0);
1360 optmenu_menu = gtk_menu_new ();
1362 #define SET_MENUITEM(str, charset) \
1364 MENUITEM_ADD(optmenu_menu, menuitem, str, charset); \
1367 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1368 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1370 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1372 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1373 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1374 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1375 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1376 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1377 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1378 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1380 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1382 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1384 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1385 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1387 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1389 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1390 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1392 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1393 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1395 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1396 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1398 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1399 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1400 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1402 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu), optmenu_menu);
1404 hbox1 = gtk_hbox_new (FALSE, 8);
1405 gtk_widget_show (hbox1);
1406 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1408 label_charset_desc = gtk_label_new
1409 (_("If `Automatic' is selected, the optimal encoding\n"
1410 "for the current locale will be used."));
1411 gtk_widget_show (label_charset_desc);
1412 gtk_box_pack_start (GTK_BOX (hbox1), label_charset_desc,
1414 gtk_label_set_justify(GTK_LABEL (label_charset_desc), GTK_JUSTIFY_LEFT);
1416 p_send.checkbtn_extsend = checkbtn_extsend;
1417 p_send.entry_extsend = entry_extsend;
1418 /* p_send.button_extsend = button_extsend; */
1420 p_send.checkbtn_savemsg = checkbtn_savemsg;
1421 p_send.checkbtn_queuemsg = checkbtn_queuemsg;
1423 p_send.optmenu_charset = optmenu;
1426 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1430 toggled = gtk_toggle_button_get_active
1431 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1432 gtk_toggle_button_get_active
1433 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1434 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1438 static void prefs_dictionary_set_data_from_optmenu(PrefParam *param)
1441 gchar *dict_fullname;
1443 g_return_if_fail(param);
1444 g_return_if_fail(param->data);
1445 g_return_if_fail(param->widget);
1446 g_return_if_fail(*(param->widget));
1448 dict_fullname = gtkaspell_get_dictionary_menu_active_item
1449 (gtk_option_menu_get_menu(GTK_OPTION_MENU(*(param->widget))));
1450 str = *((gchar **) param->data);
1453 *((gchar **) param->data) = dict_fullname;
1456 static void prefs_dictionary_set_optmenu(PrefParam *pparam)
1459 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
1461 GtkWidget *menuitem;
1465 g_return_if_fail(optmenu != NULL);
1466 g_return_if_fail(pparam->data != NULL);
1468 if (*(gchar **) pparam->data) {
1469 menu = gtk_option_menu_get_menu(optmenu);
1470 for (cur = GTK_MENU_SHELL(menu)->children;
1471 cur != NULL; cur = cur->next) {
1472 menuitem = GTK_WIDGET(cur->data);
1473 dict_name = gtk_object_get_data(GTK_OBJECT(menuitem),
1475 if (!strcmp2(dict_name, *((gchar **)pparam->data))) {
1476 gtk_option_menu_set_history(optmenu, n);
1483 gtk_option_menu_set_history(optmenu, 0);
1484 prefs_dictionary_set_data_from_optmenu(pparam);
1487 static void prefs_speller_sugmode_set_data_from_optmenu(PrefParam *param)
1490 g_return_if_fail(param);
1491 g_return_if_fail(param->data);
1492 g_return_if_fail(param->widget);
1493 g_return_if_fail(*(param->widget));
1495 sugmode = gtkaspell_get_sugmode_from_option_menu
1496 (GTK_OPTION_MENU(*(param->widget)));
1497 *((gint *) param->data) = sugmode;
1500 static void prefs_speller_sugmode_set_optmenu(PrefParam *pparam)
1502 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
1505 g_return_if_fail(optmenu != NULL);
1506 g_return_if_fail(pparam->data != NULL);
1508 sugmode = *(gint *) pparam->data;
1509 gtkaspell_sugmode_option_menu_set(optmenu, sugmode);
1513 static void prefs_spelling_checkbtn_enable_aspell_toggle_cb
1519 toggled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1521 gtk_widget_set_sensitive(spelling.entry_aspell_path, toggled);
1522 gtk_widget_set_sensitive(spelling.optmenu_dictionary, toggled);
1523 gtk_widget_set_sensitive(spelling.optmenu_sugmode, toggled);
1524 gtk_widget_set_sensitive(spelling.btn_aspell_path, toggled);
1525 gtk_widget_set_sensitive(spelling.misspelled_btn, toggled);
1526 gtk_widget_set_sensitive(spelling.checkbtn_use_alternate, toggled);
1527 gtk_widget_set_sensitive(spelling.checkbtn_check_while_typing, toggled);
1530 static void prefs_spelling_btn_aspell_path_clicked_cb(GtkWidget *widget,
1533 gchar *file_path, *tmp;
1534 GtkWidget *new_menu;
1536 file_path = filesel_select_file(_("Select dictionaries location"),
1537 prefs_common.aspell_path);
1538 if (file_path == NULL) {
1542 tmp=g_dirname(file_path);
1544 if (prefs_common.aspell_path)
1545 g_free(prefs_common.aspell_path);
1546 prefs_common.aspell_path = g_strdup_printf("%s%s",tmp,
1549 new_menu = gtkaspell_dictionary_option_menu_new(prefs_common.aspell_path);
1550 gtk_option_menu_set_menu(GTK_OPTION_MENU(spelling.optmenu_dictionary),
1553 gtk_entry_set_text(GTK_ENTRY(spelling.entry_aspell_path),
1554 prefs_common.aspell_path);
1555 /* select first one */
1556 gtk_option_menu_set_history(GTK_OPTION_MENU(
1557 spelling.optmenu_dictionary), 0);
1559 if (prefs_common.dictionary)
1560 g_free(prefs_common.dictionary);
1562 prefs_common.dictionary =
1563 gtkaspell_get_dictionary_menu_active_item(
1564 gtk_option_menu_get_menu(
1566 spelling.optmenu_dictionary)));
1572 static void prefs_spelling_create()
1575 GtkWidget *frame_spell;
1576 GtkWidget *vbox_spell;
1577 GtkWidget *hbox_aspell_path;
1578 GtkWidget *checkbtn_enable_aspell;
1579 GtkWidget *label_aspell_path;
1580 GtkWidget *entry_aspell_path;
1581 GtkWidget *btn_aspell_path;
1582 GtkWidget *spell_table;
1583 GtkWidget *label_dictionary;
1584 GtkWidget *optmenu_dictionary;
1585 GtkWidget *sugmode_label;
1586 GtkWidget *sugmode_optmenu;
1587 GtkWidget *checkbtn_use_alternate;
1588 GtkWidget *help_label;
1589 GtkWidget *checkbtn_check_while_typing;
1590 GtkWidget *color_label;
1591 GtkWidget *col_align;
1593 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1594 gtk_widget_show (vbox1);
1595 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1596 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1598 /* spell checker defaults */
1599 PACK_FRAME(vbox1, frame_spell, _("Global spelling checker settings"));
1600 vbox_spell = gtk_vbox_new(FALSE, VSPACING_NARROW);
1601 gtk_widget_show (vbox_spell);
1602 gtk_container_add(GTK_CONTAINER(frame_spell), vbox_spell);
1603 gtk_container_set_border_width(GTK_CONTAINER(vbox_spell), 8);
1605 PACK_CHECK_BUTTON(vbox_spell, checkbtn_enable_aspell,
1606 _("Enable spell checker"));
1608 gtk_signal_connect(GTK_OBJECT(checkbtn_enable_aspell), "toggled",
1609 GTK_SIGNAL_FUNC(prefs_spelling_checkbtn_enable_aspell_toggle_cb),
1612 /* Check while typing */
1613 PACK_CHECK_BUTTON(vbox_spell, checkbtn_check_while_typing,
1614 _("Check while typing"));
1616 PACK_CHECK_BUTTON(vbox_spell, checkbtn_use_alternate,
1617 _("Enable alternate dictionary"));
1619 help_label = gtk_label_new(_("Enabling an alternate dictionary makes switching\n"
1620 "with the last used dictionary faster."));
1621 gtk_misc_set_alignment (GTK_MISC (help_label), 0, 0);
1622 gtk_widget_show(help_label);
1623 gtk_box_pack_start(GTK_BOX(vbox_spell), help_label, FALSE, TRUE, 0);
1625 spell_table = gtk_table_new(4, 3, FALSE);
1626 gtk_container_set_border_width (GTK_CONTAINER (spell_table), VSPACING);
1627 gtk_table_set_row_spacings(GTK_TABLE(spell_table), 8);
1628 gtk_table_set_col_spacings(GTK_TABLE(spell_table), 8);
1630 gtk_box_pack_start(GTK_BOX(vbox_spell), spell_table, TRUE, TRUE, 0);
1632 label_aspell_path = gtk_label_new (_("Dictionaries path:"));
1633 gtk_misc_set_alignment(GTK_MISC(label_aspell_path), 1.0, 0.5);
1634 gtk_widget_show(label_aspell_path);
1635 gtk_table_attach (GTK_TABLE (spell_table), label_aspell_path, 0, 1, 0,
1636 1, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1638 hbox_aspell_path = gtk_hbox_new (FALSE, 8);
1639 gtk_table_attach (GTK_TABLE (spell_table), hbox_aspell_path, 1, 2, 0,
1640 1, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1641 gtk_widget_show(hbox_aspell_path);
1643 entry_aspell_path = gtk_entry_new();
1644 gtk_widget_show(entry_aspell_path);
1645 gtk_box_pack_start(GTK_BOX(hbox_aspell_path), entry_aspell_path, TRUE,
1648 gtk_widget_set_sensitive(entry_aspell_path, prefs_common.enable_aspell);
1650 btn_aspell_path = gtk_button_new_with_label(" ... ");
1651 gtk_widget_show(btn_aspell_path);
1652 gtk_box_pack_start(GTK_BOX(hbox_aspell_path), btn_aspell_path, FALSE, FALSE, 0);
1653 gtk_widget_set_sensitive(btn_aspell_path, prefs_common.enable_aspell);
1655 gtk_signal_connect(GTK_OBJECT(btn_aspell_path), "clicked",
1656 GTK_SIGNAL_FUNC(prefs_spelling_btn_aspell_path_clicked_cb),
1659 label_dictionary = gtk_label_new(_("Default dictionary:"));
1660 gtk_misc_set_alignment(GTK_MISC(label_dictionary), 1.0, 0.5);
1661 gtk_widget_show(label_dictionary);
1662 gtk_table_attach (GTK_TABLE (spell_table), label_dictionary, 0, 1, 1, 2,
1663 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1665 optmenu_dictionary = gtk_option_menu_new();
1666 gtk_widget_show(optmenu_dictionary);
1667 gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu_dictionary),
1668 gtkaspell_dictionary_option_menu_new(
1669 prefs_common.aspell_path));
1670 gtk_table_attach (GTK_TABLE (spell_table), optmenu_dictionary, 1, 2, 1,
1671 2, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1672 gtk_widget_set_sensitive(optmenu_dictionary, prefs_common.enable_aspell);
1674 /* Suggestion mode */
1675 sugmode_label = gtk_label_new(_("Default suggestion mode"));
1676 gtk_misc_set_alignment(GTK_MISC(sugmode_label), 1.0, 0.5);
1677 gtk_widget_show(sugmode_label);
1678 gtk_table_attach(GTK_TABLE (spell_table), sugmode_label, 0, 1, 2, 3,
1679 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1681 sugmode_optmenu = gtk_option_menu_new();
1682 gtk_widget_show(sugmode_optmenu);
1683 gtk_option_menu_set_menu(GTK_OPTION_MENU(sugmode_optmenu),
1684 gtkaspell_sugmode_option_menu_new(prefs_common.aspell_sugmode));
1685 gtk_table_attach(GTK_TABLE(spell_table), sugmode_optmenu, 1, 2, 2, 3,
1686 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1687 gtk_widget_set_sensitive(sugmode_optmenu, prefs_common.enable_aspell);
1690 color_label = gtk_label_new(_("Misspelled word color:"));
1691 gtk_misc_set_alignment(GTK_MISC(color_label), 1.0, 0.5);
1692 gtk_table_attach (GTK_TABLE (spell_table), color_label, 0, 1, 3, 4,
1693 GTK_FILL, GTK_SHRINK, 0, 0);
1694 gtk_widget_show(color_label);
1696 col_align = gtk_alignment_new(0.0, 0.5, 0, 0);
1697 gtk_widget_show(col_align);
1698 gtk_table_attach (GTK_TABLE (spell_table), col_align, 1, 2, 3, 4,
1699 GTK_FILL, GTK_SHRINK, 0, 0);
1701 spelling.misspelled_btn = gtk_button_new_with_label ("");
1702 set_button_bg_color(spelling.misspelled_btn,
1703 prefs_common.misspelled_col);
1704 gtk_widget_set_usize (spelling.misspelled_btn, 30, 20);
1705 gtk_widget_set_sensitive(spelling.misspelled_btn, prefs_common.enable_aspell);
1706 gtk_signal_connect (GTK_OBJECT (spelling.misspelled_btn), "clicked",
1707 GTK_SIGNAL_FUNC(quote_color_set_dialog), "Misspelled word");
1708 gtk_container_add(GTK_CONTAINER(col_align), spelling.misspelled_btn);
1711 spelling.checkbtn_enable_aspell = checkbtn_enable_aspell;
1712 spelling.entry_aspell_path = entry_aspell_path;
1713 spelling.btn_aspell_path = btn_aspell_path;
1714 spelling.optmenu_dictionary = optmenu_dictionary;
1715 spelling.optmenu_sugmode = sugmode_optmenu;
1716 spelling.checkbtn_use_alternate = checkbtn_use_alternate;
1717 spelling.checkbtn_check_while_typing = checkbtn_check_while_typing;
1723 static void prefs_compose_create(void)
1729 GtkWidget *frame_sig;
1730 GtkWidget *vbox_sig;
1731 GtkWidget *checkbtn_autosig;
1732 GtkWidget *label_sigsep;
1733 GtkWidget *entry_sigsep;
1735 GtkWidget *checkbtn_autoextedit;
1737 GtkWidget *frame_autosel;
1738 GtkWidget *hbox_autosel;
1739 GtkWidget *checkbtn_reply_account_autosel;
1740 GtkWidget *checkbtn_forward_account_autosel;
1741 GtkWidget *checkbtn_reedit_account_autosel;
1743 GtkWidget *hbox_undolevel;
1744 GtkWidget *label_undolevel;
1745 GtkObject *spinbtn_undolevel_adj;
1746 GtkWidget *spinbtn_undolevel;
1748 GtkWidget *vbox_linewrap;
1753 GtkWidget *label_linewrap;
1754 GtkObject *spinbtn_linewrap_adj;
1755 GtkWidget *spinbtn_linewrap;
1756 GtkWidget *checkbtn_wrapquote;
1757 GtkWidget *checkbtn_autowrap;
1758 GtkWidget *checkbtn_wrapatsend;
1760 GtkWidget *checkbtn_default_reply_list;
1762 GtkWidget *checkbtn_forward_as_attachment;
1763 GtkWidget *checkbtn_redirect_keep_from;
1764 GtkWidget *checkbtn_smart_wrapping;
1765 GtkWidget *checkbtn_block_cursor;
1766 GtkWidget *frame_msgwrap;
1768 GtkWidget *hbox_autosave;
1769 GtkWidget *checkbtn_autosave;
1770 GtkWidget *entry_autosave_length;
1771 GtkWidget *label_autosave_length;
1773 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1774 gtk_widget_show (vbox1);
1775 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1776 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1778 PACK_FRAME(vbox1, frame_sig, _("Signature"));
1780 vbox_sig = gtk_vbox_new (FALSE, VSPACING_NARROW);
1781 gtk_widget_show (vbox_sig);
1782 gtk_container_add (GTK_CONTAINER (frame_sig), vbox_sig);
1783 gtk_container_set_border_width (GTK_CONTAINER (vbox_sig), 8);
1785 PACK_CHECK_BUTTON (vbox_sig, checkbtn_autosig,
1786 _("Insert signature automatically"));
1788 hbox1 = gtk_hbox_new (FALSE, 8);
1789 gtk_widget_show (hbox1);
1790 gtk_box_pack_start (GTK_BOX (vbox_sig), hbox1, TRUE, TRUE, 0);
1791 label_sigsep = gtk_label_new (_("Signature separator"));
1792 gtk_widget_show (label_sigsep);
1793 gtk_box_pack_start (GTK_BOX (hbox1), label_sigsep, FALSE, FALSE, 0);
1795 entry_sigsep = gtk_entry_new ();
1796 gtk_widget_show (entry_sigsep);
1797 gtk_box_pack_start (GTK_BOX (hbox1), entry_sigsep, FALSE, FALSE, 0);
1799 gtk_widget_set_usize (entry_sigsep, 64, -1);
1801 /* Account autoselection */
1802 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1804 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1805 gtk_widget_show (hbox_autosel);
1806 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1807 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1809 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1810 _("when replying"));
1811 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1812 _("when forwarding"));
1813 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1814 _("when re-editing"));
1816 vbox2 = gtk_vbox_new (FALSE, 0);
1817 gtk_widget_show (vbox2);
1818 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1820 PACK_CHECK_BUTTON (vbox2, checkbtn_default_reply_list,
1821 _("Reply button invokes mailing list reply"));
1823 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1824 _("Automatically launch the external editor"));
1826 hbox5 = gtk_hbox_new (FALSE, 8);
1827 gtk_widget_show (hbox5);
1828 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1830 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1831 _("Forward as attachment"));
1833 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1836 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1837 _("Keep the original 'From' header when redirecting"));
1840 hbox_autosave = gtk_hbox_new (FALSE, 8);
1841 gtk_widget_show (hbox_autosave);
1842 gtk_box_pack_start (GTK_BOX (vbox1), hbox_autosave, FALSE, FALSE, 0);
1844 PACK_CHECK_BUTTON (hbox_autosave, checkbtn_autosave,
1845 _("Autosave to Drafts folder every "));
1847 entry_autosave_length = gtk_entry_new();
1848 gtk_widget_set_usize (entry_autosave_length, 64, -1);
1849 gtk_widget_show (entry_autosave_length);
1850 gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
1852 label_autosave_length = gtk_label_new(_("characters"));
1853 gtk_widget_show (label_autosave_length);
1854 gtk_box_pack_start (GTK_BOX (hbox_autosave), label_autosave_length, FALSE, FALSE, 0);
1856 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1857 gtk_widget_show (hbox_undolevel);
1858 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1860 label_undolevel = gtk_label_new (_("Undo level"));
1861 gtk_widget_show (label_undolevel);
1862 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1864 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1865 spinbtn_undolevel = gtk_spin_button_new
1866 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1867 gtk_widget_show (spinbtn_undolevel);
1868 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1869 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1870 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1873 PACK_FRAME(vbox1, frame_msgwrap, _("Message wrapping"));
1875 vbox_linewrap = gtk_vbox_new (FALSE, VSPACING_NARROW);
1876 gtk_widget_show (vbox_linewrap);
1877 gtk_container_add (GTK_CONTAINER (frame_msgwrap), vbox_linewrap);
1878 gtk_container_set_border_width (GTK_CONTAINER (vbox_linewrap), 8);
1880 hbox3 = gtk_hbox_new (FALSE, 8);
1881 gtk_widget_show (hbox3);
1882 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox3, FALSE, FALSE, 0);
1885 label_linewrap = gtk_label_new (_("Wrap messages at"));
1886 gtk_widget_show (label_linewrap);
1887 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1889 spinbtn_linewrap_adj = gtk_adjustment_new (72, 20, 1024, 1, 10, 10);
1890 spinbtn_linewrap = gtk_spin_button_new
1891 (GTK_ADJUSTMENT (spinbtn_linewrap_adj), 1, 0);
1892 gtk_widget_show (spinbtn_linewrap);
1893 gtk_box_pack_start (GTK_BOX (hbox3), spinbtn_linewrap, FALSE, FALSE, 0);
1894 gtk_widget_set_usize (spinbtn_linewrap, 64, -1);
1895 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linewrap), TRUE);
1897 label_linewrap = gtk_label_new (_("characters"));
1898 gtk_widget_show (label_linewrap);
1899 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1901 hbox4 = gtk_hbox_new (FALSE, VSPACING);
1902 gtk_widget_show (hbox4);
1903 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox4, FALSE, FALSE, 0);
1905 PACK_CHECK_BUTTON (hbox4, checkbtn_wrapquote, _("Wrap quotation"));
1907 PACK_CHECK_BUTTON (hbox4, checkbtn_autowrap, _("Wrap on input"));
1910 (hbox4, checkbtn_wrapatsend, _("Wrap before sending"));
1912 PACK_CHECK_BUTTON (vbox_linewrap, checkbtn_smart_wrapping,
1913 _("Smart wrapping (EXPERIMENTAL)"));
1916 compose.checkbtn_quote = checkbtn_quote;
1917 compose.entry_quotemark = entry_quotemark;
1918 compose.text_quotefmt = text_quotefmt;
1920 compose.checkbtn_autosig = checkbtn_autosig;
1921 compose.entry_sigsep = entry_sigsep;
1923 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1925 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1926 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1927 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1929 compose.spinbtn_undolevel = spinbtn_undolevel;
1930 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1932 compose.spinbtn_linewrap = spinbtn_linewrap;
1933 compose.spinbtn_linewrap_adj = spinbtn_linewrap_adj;
1934 compose.checkbtn_wrapquote = checkbtn_wrapquote;
1935 compose.checkbtn_autowrap = checkbtn_autowrap;
1936 compose.checkbtn_wrapatsend = checkbtn_wrapatsend;
1938 compose.checkbtn_autosave = checkbtn_autosave;
1939 compose.entry_autosave_length = entry_autosave_length;
1941 compose.checkbtn_forward_as_attachment =
1942 checkbtn_forward_as_attachment;
1943 compose.checkbtn_redirect_keep_from =
1944 checkbtn_redirect_keep_from;
1945 compose.checkbtn_smart_wrapping =
1946 checkbtn_smart_wrapping;
1947 compose.checkbtn_block_cursor =
1948 checkbtn_block_cursor;
1949 compose.checkbtn_default_reply_list = checkbtn_default_reply_list;
1952 static void prefs_quote_create(void)
1955 GtkWidget *frame_quote;
1956 GtkWidget *vbox_quote;
1959 GtkWidget *label_quotemark;
1960 GtkWidget *entry_quotemark;
1961 GtkWidget *scrolledwin_quotefmt;
1962 GtkWidget *text_quotefmt;
1964 GtkWidget *entry_fw_quotemark;
1965 GtkWidget *text_fw_quotefmt;
1967 GtkWidget *entry_quote_chars;
1968 GtkWidget *label_quote_chars;
1970 GtkWidget *btn_quotedesc;
1972 GtkWidget *checkbtn_reply_with_quote;
1974 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1975 gtk_widget_show (vbox1);
1976 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1977 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1981 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1983 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1985 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1986 gtk_widget_show (vbox_quote);
1987 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1988 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1990 hbox1 = gtk_hbox_new (FALSE, 32);
1991 gtk_widget_show (hbox1);
1992 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1994 hbox2 = gtk_hbox_new (FALSE, 8);
1995 gtk_widget_show (hbox2);
1996 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1998 label_quotemark = gtk_label_new (_("Quotation mark"));
1999 gtk_widget_show (label_quotemark);
2000 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
2002 entry_quotemark = gtk_entry_new ();
2003 gtk_widget_show (entry_quotemark);
2004 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
2005 gtk_widget_set_usize (entry_quotemark, 64, -1);
2007 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
2008 gtk_widget_show (scrolledwin_quotefmt);
2009 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
2010 gtk_scrolled_window_set_policy
2011 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
2012 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
2014 text_quotefmt = gtk_text_new (NULL, NULL);
2015 gtk_widget_show (text_quotefmt);
2016 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
2017 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
2018 gtk_widget_set_usize(text_quotefmt, -1, 60);
2022 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
2024 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
2025 gtk_widget_show (vbox_quote);
2026 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
2027 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
2029 hbox1 = gtk_hbox_new (FALSE, 32);
2030 gtk_widget_show (hbox1);
2031 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
2033 hbox2 = gtk_hbox_new (FALSE, 8);
2034 gtk_widget_show (hbox2);
2035 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
2037 label_quotemark = gtk_label_new (_("Quotation mark"));
2038 gtk_widget_show (label_quotemark);
2039 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
2041 entry_fw_quotemark = gtk_entry_new ();
2042 gtk_widget_show (entry_fw_quotemark);
2043 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
2045 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
2047 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
2048 gtk_widget_show (scrolledwin_quotefmt);
2049 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
2050 gtk_scrolled_window_set_policy
2051 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
2052 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
2054 text_fw_quotefmt = gtk_text_new (NULL, NULL);
2055 gtk_widget_show (text_fw_quotefmt);
2056 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
2058 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
2059 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
2061 hbox1 = gtk_hbox_new (FALSE, 32);
2062 gtk_widget_show (hbox1);
2063 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2066 gtk_button_new_with_label (_(" Description of symbols "));
2067 gtk_widget_show (btn_quotedesc);
2068 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
2069 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
2070 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
2074 PACK_FRAME (vbox1, frame_quote, _("Quotation characters"));
2076 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
2077 gtk_widget_show (vbox_quote);
2078 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
2079 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
2081 hbox1 = gtk_hbox_new (FALSE, 32);
2082 gtk_widget_show (hbox1);
2083 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
2085 hbox2 = gtk_hbox_new (FALSE, 8);
2086 gtk_widget_show (hbox2);
2087 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
2089 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
2090 gtk_widget_show (label_quote_chars);
2091 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
2093 entry_quote_chars = gtk_entry_new ();
2094 gtk_widget_show (entry_quote_chars);
2095 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
2097 gtk_widget_set_usize (entry_quote_chars, 64, -1);
2100 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
2101 quote.entry_quotemark = entry_quotemark;
2102 quote.text_quotefmt = text_quotefmt;
2103 quote.entry_fw_quotemark = entry_fw_quotemark;
2104 quote.text_fw_quotefmt = text_fw_quotefmt;
2105 quote.entry_quote_chars = entry_quote_chars;
2108 static void prefs_display_create(void)
2111 GtkWidget *frame_font;
2113 GtkWidget *label_textfont;
2114 GtkWidget *entry_textfont;
2115 GtkWidget *button_textfont;
2116 GtkWidget *chkbtn_transhdr;
2117 GtkWidget *chkbtn_folder_unread;
2119 GtkWidget *label_ng_abbrev;
2120 GtkWidget *spinbtn_ng_abbrev_len;
2121 GtkObject *spinbtn_ng_abbrev_len_adj;
2122 GtkWidget *frame_summary;
2124 GtkWidget *chkbtn_swapfrom;
2125 GtkWidget *chkbtn_useaddrbook;
2126 GtkWidget *chkbtn_expand_thread;
2128 GtkWidget *label_datefmt;
2129 GtkWidget *button_datefmt;
2130 GtkWidget *entry_datefmt;
2131 GtkWidget *button_dispitem;
2132 GtkWidget *tmplabel, *tmpbutton, *tmpentry;
2134 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2135 gtk_widget_show (vbox1);
2136 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2137 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2139 PACK_FRAME(vbox1, frame_font, _("Font"));
2141 table1 = gtk_table_new (4, 3, FALSE);
2143 gtk_widget_show (table1);
2144 gtk_container_add (GTK_CONTAINER (frame_font), table1);
2145 gtk_container_set_border_width (GTK_CONTAINER (table1), 8);
2146 gtk_table_set_row_spacings (GTK_TABLE (table1), 8);
2147 gtk_table_set_col_spacings (GTK_TABLE (table1), 8);
2149 label_textfont = gtk_label_new (_("Text"));
2150 gtk_misc_set_alignment(GTK_MISC(label_textfont), 0, 0.5);
2151 gtk_widget_show (label_textfont);
2152 gtk_table_attach (GTK_TABLE (table1), label_textfont, 0, 1, 0, 1,
2153 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2155 entry_textfont = gtk_entry_new ();
2156 gtk_widget_show (entry_textfont);
2157 gtk_table_attach (GTK_TABLE (table1), entry_textfont, 1, 2, 0, 1,
2158 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2160 button_textfont = gtk_button_new_with_label (" ... ");
2162 gtk_widget_show (button_textfont);
2163 gtk_table_attach (GTK_TABLE (table1), button_textfont, 2, 3, 0, 1,
2165 gtk_signal_connect (GTK_OBJECT (button_textfont), "clicked",
2166 GTK_SIGNAL_FUNC (prefs_font_select), entry_textfont);
2168 tmplabel = gtk_label_new (_("Small"));
2169 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
2170 gtk_widget_show (tmplabel);
2171 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 1, 2,
2172 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2174 tmpentry = gtk_entry_new ();
2175 gtk_widget_show (tmpentry);
2176 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 1, 2,
2177 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2179 tmpbutton = gtk_button_new_with_label (" ... ");
2180 gtk_widget_show (tmpbutton);
2181 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 1, 2,
2183 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
2184 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
2185 display.entry_smallfont = tmpentry;
2187 tmplabel = gtk_label_new (_("Normal"));
2188 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
2189 gtk_widget_show (tmplabel);
2190 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 2, 3,
2191 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2193 tmpentry = gtk_entry_new ();
2194 gtk_widget_show (tmpentry);
2195 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 2, 3,
2196 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2198 tmpbutton = gtk_button_new_with_label (" ... ");
2199 gtk_widget_show (tmpbutton);
2200 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 2, 3,
2202 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
2203 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
2204 display.entry_normalfont = tmpentry;
2206 tmplabel = gtk_label_new (_("Bold"));
2207 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
2208 gtk_widget_show (tmplabel);
2209 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 3, 4,
2210 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2212 tmpentry = gtk_entry_new ();
2213 gtk_widget_show (tmpentry);
2214 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 3, 4,
2215 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2217 tmpbutton = gtk_button_new_with_label (" ... ");
2218 gtk_widget_show (tmpbutton);
2219 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 3, 4,
2221 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
2222 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
2223 display.entry_boldfont = tmpentry;
2225 vbox2 = gtk_vbox_new (FALSE, 0);
2226 gtk_widget_show (vbox2);
2227 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
2230 (vbox2, chkbtn_transhdr,
2231 _("Translate header name (such as `From:', `Subject:')"));
2233 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
2234 _("Display unread number next to folder name"));
2236 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2238 hbox1 = gtk_hbox_new (FALSE, 8);
2239 gtk_widget_show (hbox1);
2240 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2242 label_ng_abbrev = gtk_label_new
2243 (_("Abbreviate newsgroup names longer than"));
2244 gtk_widget_show (label_ng_abbrev);
2245 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
2247 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
2248 spinbtn_ng_abbrev_len = gtk_spin_button_new
2249 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
2250 gtk_widget_show (spinbtn_ng_abbrev_len);
2251 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
2253 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
2254 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
2257 label_ng_abbrev = gtk_label_new
2259 gtk_widget_show (label_ng_abbrev);
2260 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
2262 /* ---- Summary ---- */
2264 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
2266 vbox2 = gtk_vbox_new (FALSE, 0);
2267 gtk_widget_show (vbox2);
2268 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
2269 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
2272 (vbox2, chkbtn_swapfrom,
2273 _("Display recipient on `From' column if sender is yourself"));
2275 (vbox2, chkbtn_useaddrbook,
2276 _("Display sender using address book"));
2278 (vbox2, chkbtn_expand_thread, _("Expand threads"));
2280 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2282 hbox1 = gtk_hbox_new (FALSE, 8);
2283 gtk_widget_show (hbox1);
2284 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2286 label_datefmt = gtk_label_new (_("Date format"));
2287 gtk_widget_show (label_datefmt);
2288 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
2290 entry_datefmt = gtk_entry_new ();
2291 gtk_widget_show (entry_datefmt);
2292 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
2294 button_datefmt = gtk_button_new_with_label (" ... ");
2296 gtk_widget_show (button_datefmt);
2297 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
2298 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
2299 GTK_SIGNAL_FUNC (date_format_create), NULL);
2301 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
2303 hbox1 = gtk_hbox_new (FALSE, 8);
2304 gtk_widget_show (hbox1);
2305 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2307 button_dispitem = gtk_button_new_with_label
2308 (_(" Set displayed items in summary... "));
2309 gtk_widget_show (button_dispitem);
2310 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
2311 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
2312 GTK_SIGNAL_FUNC (prefs_summary_column_open),
2315 display.entry_textfont = entry_textfont;
2316 display.button_textfont = button_textfont;
2318 display.chkbtn_transhdr = chkbtn_transhdr;
2319 display.chkbtn_folder_unread = chkbtn_folder_unread;
2320 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
2321 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
2323 display.chkbtn_swapfrom = chkbtn_swapfrom;
2324 display.chkbtn_expand_thread = chkbtn_expand_thread;
2325 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
2326 display.entry_datefmt = entry_datefmt;
2329 static void prefs_message_create(void)
2335 GtkWidget *chkbtn_enablecol;
2336 GtkWidget *button_edit_col;
2337 GtkWidget *chkbtn_mbalnum;
2338 GtkWidget *chkbtn_disphdrpane;
2339 GtkWidget *chkbtn_disphdr;
2340 GtkWidget *button_edit_disphdr;
2341 GtkWidget *hbox_linespc;
2342 GtkWidget *label_linespc;
2343 GtkObject *spinbtn_linespc_adj;
2344 GtkWidget *spinbtn_linespc;
2345 GtkWidget *chkbtn_headspc;
2347 GtkWidget *frame_scr;
2348 GtkWidget *vbox_scr;
2349 GtkWidget *chkbtn_smoothscroll;
2350 GtkWidget *hbox_scr;
2351 GtkWidget *label_scr;
2352 GtkObject *spinbtn_scrollstep_adj;
2353 GtkWidget *spinbtn_scrollstep;
2354 GtkWidget *chkbtn_halfpage;
2356 GtkWidget *chkbtn_display_img;
2357 GtkWidget *chkbtn_resize_image;
2359 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2360 gtk_widget_show (vbox1);
2361 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2362 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2364 vbox2 = gtk_vbox_new (FALSE, 0);
2365 gtk_widget_show (vbox2);
2366 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2368 hbox1 = gtk_hbox_new (FALSE, 8);
2369 gtk_widget_show (hbox1);
2370 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2372 PACK_CHECK_BUTTON (hbox1, chkbtn_enablecol,
2373 _("Enable coloration of message"));
2374 gtk_signal_connect (GTK_OBJECT (chkbtn_enablecol), "toggled",
2375 GTK_SIGNAL_FUNC (prefs_enable_message_color_toggled),
2378 button_edit_col = gtk_button_new_with_label (_(" Edit... "));
2379 gtk_widget_show (button_edit_col);
2380 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_col, FALSE, TRUE, 0);
2381 gtk_signal_connect (GTK_OBJECT (button_edit_col), "clicked",
2382 GTK_SIGNAL_FUNC (prefs_quote_colors_dialog), NULL);
2384 SET_TOGGLE_SENSITIVITY(chkbtn_enablecol, button_edit_col);
2387 (vbox2, chkbtn_mbalnum,
2388 _("Display multi-byte alphanumeric as\n"
2389 "ASCII character (Japanese only)"));
2390 gtk_label_set_justify (GTK_LABEL (GTK_BIN(chkbtn_mbalnum)->child),
2393 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
2394 _("Display header pane above message view"));
2396 hbox1 = gtk_hbox_new (FALSE, 8);
2397 gtk_widget_show (hbox1);
2398 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2400 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
2401 _("Display short headers on message view"));
2403 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
2404 gtk_widget_show (button_edit_disphdr);
2405 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
2407 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
2408 GTK_SIGNAL_FUNC (prefs_display_header_open),
2411 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
2413 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2415 hbox1 = gtk_hbox_new (FALSE, 32);
2416 gtk_widget_show (hbox1);
2417 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2419 hbox_linespc = gtk_hbox_new (FALSE, 8);
2420 gtk_widget_show (hbox1);
2421 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
2423 label_linespc = gtk_label_new (_("Line space"));
2424 gtk_widget_show (label_linespc);
2425 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2428 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
2429 spinbtn_linespc = gtk_spin_button_new
2430 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
2431 gtk_widget_show (spinbtn_linespc);
2432 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
2434 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
2435 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
2437 label_linespc = gtk_label_new (_("pixel(s)"));
2438 gtk_widget_show (label_linespc);
2439 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2442 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Leave space on head"));
2444 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
2446 vbox_scr = gtk_vbox_new (FALSE, 0);
2447 gtk_widget_show (vbox_scr);
2448 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
2449 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
2451 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
2453 hbox1 = gtk_hbox_new (FALSE, 32);
2454 gtk_widget_show (hbox1);
2455 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
2457 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
2459 hbox_scr = gtk_hbox_new (FALSE, 8);
2460 gtk_widget_show (hbox_scr);
2461 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
2463 label_scr = gtk_label_new (_("Step"));
2464 gtk_widget_show (label_scr);
2465 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2467 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
2468 spinbtn_scrollstep = gtk_spin_button_new
2469 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
2470 gtk_widget_show (spinbtn_scrollstep);
2471 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
2473 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
2474 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
2477 label_scr = gtk_label_new (_("pixel(s)"));
2478 gtk_widget_show (label_scr);
2479 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2481 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
2483 vbox3 = gtk_vbox_new (FALSE, 0);
2484 gtk_widget_show (vbox3);
2485 gtk_box_pack_start (GTK_BOX (vbox1), vbox3, FALSE, FALSE, 0);
2487 PACK_CHECK_BUTTON(vbox3, chkbtn_display_img,
2488 _("Automatically display attached images"));
2490 PACK_CHECK_BUTTON(vbox3, chkbtn_resize_image,
2491 _("Resize attached images"));
2493 message.chkbtn_enablecol = chkbtn_enablecol;
2494 message.button_edit_col = button_edit_col;
2495 message.chkbtn_mbalnum = chkbtn_mbalnum;
2496 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
2497 message.chkbtn_disphdr = chkbtn_disphdr;
2498 message.spinbtn_linespc = spinbtn_linespc;
2499 message.chkbtn_headspc = chkbtn_headspc;
2501 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
2502 message.spinbtn_scrollstep = spinbtn_scrollstep;
2503 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
2504 message.chkbtn_halfpage = chkbtn_halfpage;
2506 message.chkbtn_display_img = chkbtn_display_img;
2507 message.chkbtn_resize_image = chkbtn_resize_image;
2511 static void prefs_privacy_create(void)
2517 GtkWidget *hbox_spc;
2519 GtkWidget *checkbtn_auto_check_signatures;
2520 GtkWidget *checkbtn_gpg_signature_popup;
2521 GtkWidget *checkbtn_store_passphrase;
2522 GtkObject *spinbtn_store_passphrase_adj;
2523 GtkWidget *spinbtn_store_passphrase;
2524 GtkWidget *checkbtn_passphrase_grab;
2525 GtkWidget *checkbtn_gpg_warning;
2527 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2528 gtk_widget_show (vbox1);
2529 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2530 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2532 vbox2 = gtk_vbox_new (FALSE, 0);
2533 gtk_widget_show (vbox2);
2534 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2536 PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
2537 _("Automatically check signatures"));
2539 PACK_CHECK_BUTTON (vbox2, checkbtn_gpg_signature_popup,
2540 _("Show signature check result in a popup window"));
2542 PACK_CHECK_BUTTON (vbox2, checkbtn_store_passphrase,
2543 _("Store passphrase in memory temporarily"));
2545 vbox3 = gtk_vbox_new (FALSE, 0);
2546 gtk_widget_show (vbox3);
2547 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2549 hbox1 = gtk_hbox_new (FALSE, 8);
2550 gtk_widget_show (hbox1);
2551 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2553 hbox_spc = gtk_hbox_new (FALSE, 0);
2554 gtk_widget_show (hbox_spc);
2555 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2556 gtk_widget_set_usize (hbox_spc, 12, -1);
2558 label = gtk_label_new (_("Expire after"));
2559 gtk_widget_show (label);
2560 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2562 spinbtn_store_passphrase_adj = gtk_adjustment_new (0, 0, 1440, 1, 5, 5);
2563 spinbtn_store_passphrase = gtk_spin_button_new
2564 (GTK_ADJUSTMENT (spinbtn_store_passphrase_adj), 1, 0);
2565 gtk_widget_show (spinbtn_store_passphrase);
2566 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_store_passphrase, FALSE, FALSE, 0);
2567 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_store_passphrase),
2569 gtk_widget_set_usize (spinbtn_store_passphrase, 64, -1);
2571 label = gtk_label_new (_("minute(s) "));
2572 gtk_widget_show (label);
2573 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2575 hbox1 = gtk_hbox_new (FALSE, 8);
2576 gtk_widget_show (hbox1);
2577 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2579 hbox_spc = gtk_hbox_new (FALSE, 0);
2580 gtk_widget_show (hbox_spc);
2581 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2582 gtk_widget_set_usize (hbox_spc, 12, -1);
2584 label = gtk_label_new (_("(Setting to '0' will store the passphrase\n"
2585 " for the whole session)"));
2586 gtk_widget_show (label);
2587 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2588 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2590 SET_TOGGLE_SENSITIVITY (checkbtn_store_passphrase, vbox3);
2593 PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab,
2594 _("Grab input while entering a passphrase"));
2598 (vbox2, checkbtn_gpg_warning,
2599 _("Display warning on startup if GnuPG doesn't work"));
2601 hbox1 = gtk_hbox_new (FALSE, 8);
2602 gtk_widget_show (hbox1);
2603 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2605 privacy.checkbtn_auto_check_signatures
2606 = checkbtn_auto_check_signatures;
2607 privacy.checkbtn_gpg_signature_popup
2608 = checkbtn_gpg_signature_popup;
2609 privacy.checkbtn_store_passphrase = checkbtn_store_passphrase;
2610 privacy.spinbtn_store_passphrase = spinbtn_store_passphrase;
2611 privacy.spinbtn_store_passphrase_adj = spinbtn_store_passphrase_adj;
2612 privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
2613 privacy.checkbtn_gpg_warning = checkbtn_gpg_warning;
2615 #endif /* USE_GPGME */
2617 static void prefs_interface_create(void)
2622 /* GtkWidget *checkbtn_emacs; */
2623 GtkWidget *checkbtn_show_msg_with_cursor;
2624 GtkWidget *checkbtn_openunread;
2625 GtkWidget *checkbtn_mark_as_read_on_newwin;
2626 GtkWidget *checkbtn_openinbox;
2627 GtkWidget *checkbtn_immedexec;
2628 GtkWidget *frame_dialogs;
2629 GtkWidget *vbox_dialogs;
2632 GtkWidget *dialogs_table;
2633 GtkWidget *optmenu_recvdialog;
2634 GtkWidget *optmenu_senddialog;
2636 GtkWidget *menuitem;
2637 GtkWidget *checkbtn_no_recv_err_panel;
2638 GtkWidget *checkbtn_close_recv_dialog;
2640 GtkWidget *button_keybind;
2642 GtkWidget *optmenu_nextunreadmsgdialog;
2644 GtkWidget *frame_pixmap_theme;
2645 GtkWidget *vbox_pixmap_theme;
2646 GtkWidget *entry_pixmap_theme;
2647 GtkWidget *combo_pixmap_theme;
2648 GList *avail_pixmap_themes = NULL;
2650 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2651 gtk_widget_show (vbox1);
2652 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2653 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2655 vbox2 = gtk_vbox_new (FALSE, 0);
2656 gtk_widget_show (vbox2);
2657 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2659 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
2660 _("Emulate the behavior of mouse operation of\n"
2661 "Emacs-based mailer"));
2662 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
2663 GTK_JUSTIFY_LEFT); */
2666 (vbox2, checkbtn_show_msg_with_cursor,
2667 _("Open messages in summary with cursor keys"));
2670 (vbox2, checkbtn_openunread,
2671 _("Open first unread message when entering a folder"));
2674 (vbox2, checkbtn_mark_as_read_on_newwin,
2675 _("Only mark message as read when opened in new window"));
2678 (vbox2, checkbtn_openinbox,
2679 _("Go to inbox after receiving new mail"));
2681 vbox3 = gtk_vbox_new (FALSE, 0);
2682 gtk_widget_show (vbox3);
2683 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2686 (vbox3, checkbtn_immedexec,
2687 _("Execute immediately when moving or deleting messages"));
2689 hbox1 = gtk_hbox_new (FALSE, 0);
2690 gtk_widget_show (hbox1);
2691 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2693 label = gtk_label_new
2694 (_("(Messages will be marked until execution\n"
2695 " if this is turned off)"));
2696 gtk_widget_show (label);
2697 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 8);
2698 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2700 PACK_FRAME (vbox1, frame_dialogs, _("Dialogs"));
2701 vbox_dialogs = gtk_vbox_new (FALSE, 0);
2702 gtk_widget_show (vbox_dialogs);
2703 gtk_container_add (GTK_CONTAINER (frame_dialogs), vbox_dialogs);
2704 gtk_container_set_border_width (GTK_CONTAINER (vbox_dialogs), 8);
2706 dialogs_table = gtk_table_new (2, 2, FALSE);
2707 gtk_widget_show (dialogs_table);
2708 gtk_container_add (GTK_CONTAINER (vbox_dialogs), dialogs_table);
2709 gtk_container_set_border_width (GTK_CONTAINER (dialogs_table), 4);
2710 gtk_table_set_row_spacings (GTK_TABLE (dialogs_table), VSPACING_NARROW);
2711 gtk_table_set_col_spacings (GTK_TABLE (dialogs_table), 8);
2713 /* Next Unread Message Dialog */
2714 label = gtk_label_new (_("Show no-unread-message dialog"));
2715 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
2716 gtk_widget_show (label);
2717 gtk_table_attach (GTK_TABLE (dialogs_table), label, 0, 1, 0, 1,
2718 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2721 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
2722 gtk_widget_show (optmenu_nextunreadmsgdialog);
2723 gtk_table_attach (GTK_TABLE (dialogs_table),
2724 optmenu_nextunreadmsgdialog, 1, 2, 0, 1,
2725 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2727 menu = gtk_menu_new ();
2728 MENUITEM_ADD (menu, menuitem, _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
2729 MENUITEM_ADD (menu, menuitem, _("Assume 'Yes'"),
2730 NEXTUNREADMSGDIALOG_ASSUME_YES);
2731 MENUITEM_ADD (menu, menuitem, _("Assume 'No'"),
2732 NEXTUNREADMSGDIALOG_ASSUME_NO);
2734 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog), menu);
2736 label = gtk_label_new (_("Show send dialog"));
2737 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
2738 gtk_widget_show (label);
2739 gtk_table_attach (GTK_TABLE (dialogs_table), label, 0, 1, 1, 2,
2740 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2742 optmenu_senddialog = gtk_option_menu_new ();
2743 gtk_widget_show (optmenu_senddialog);
2744 gtk_table_attach (GTK_TABLE (dialogs_table),
2745 optmenu_senddialog, 1, 2, 1, 2,
2746 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2748 menu = gtk_menu_new ();
2749 MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
2750 MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
2752 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
2754 label = gtk_label_new (_("Show receive dialog"));
2755 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
2756 gtk_widget_show (label);
2757 gtk_table_attach (GTK_TABLE (dialogs_table), label, 0, 1, 2, 3,
2758 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2760 optmenu_recvdialog = gtk_option_menu_new ();
2761 gtk_widget_show (optmenu_recvdialog);
2762 gtk_table_attach (GTK_TABLE (dialogs_table), optmenu_recvdialog, 1, 2, 2, 3,
2763 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2765 menu = gtk_menu_new ();
2766 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
2767 MENUITEM_ADD (menu, menuitem, _("Only if a window is active"),
2768 RECV_DIALOG_ACTIVE);
2769 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
2771 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
2773 PACK_CHECK_BUTTON (vbox_dialogs, checkbtn_no_recv_err_panel,
2774 _("Don't popup error dialog on receive error"));
2776 PACK_CHECK_BUTTON (vbox_dialogs, checkbtn_close_recv_dialog,
2777 _("Close receive dialog when finished"));
2780 hbox1 = gtk_hbox_new (FALSE, 8);
2781 gtk_widget_show (hbox1);
2782 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2784 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
2785 gtk_widget_show (button_keybind);
2786 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
2787 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
2788 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
2790 PACK_FRAME(vbox1, frame_pixmap_theme, _("Icon theme"));
2792 vbox_pixmap_theme = gtk_vbox_new(FALSE, 0);
2793 gtk_widget_show(vbox_pixmap_theme);
2794 gtk_container_add(GTK_CONTAINER(frame_pixmap_theme), vbox_pixmap_theme);
2795 gtk_container_set_border_width(GTK_CONTAINER(vbox_pixmap_theme), 8);
2797 avail_pixmap_themes = stock_pixmap_themes_list_new();
2799 combo_pixmap_theme = gtk_combo_new ();
2800 gtk_widget_show (combo_pixmap_theme);
2801 gtk_box_pack_start (GTK_BOX (vbox_pixmap_theme), combo_pixmap_theme, TRUE, TRUE, 0);
2802 gtk_combo_set_popdown_strings(GTK_COMBO(combo_pixmap_theme), avail_pixmap_themes);
2803 entry_pixmap_theme = GTK_COMBO (combo_pixmap_theme)->entry;
2805 stock_pixmap_themes_list_free(avail_pixmap_themes);
2807 /* interface.checkbtn_emacs = checkbtn_emacs; */
2808 interface.checkbtn_show_msg_with_cursor
2809 = checkbtn_show_msg_with_cursor;
2810 interface.checkbtn_openunread = checkbtn_openunread;
2811 interface.checkbtn_mark_as_read_on_newwin
2812 = checkbtn_mark_as_read_on_newwin;
2813 interface.checkbtn_openinbox = checkbtn_openinbox;
2814 interface.checkbtn_immedexec = checkbtn_immedexec;
2815 interface.optmenu_recvdialog = optmenu_recvdialog;
2816 interface.optmenu_senddialog = optmenu_senddialog;
2817 interface.checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
2818 interface.checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
2819 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
2820 interface.combo_pixmap_theme = combo_pixmap_theme;
2821 interface.entry_pixmap_theme = entry_pixmap_theme;
2824 static void prefs_other_create(void)
2827 GtkWidget *ext_frame;
2828 GtkWidget *ext_table;
2831 GtkWidget *uri_label;
2832 GtkWidget *uri_combo;
2833 GtkWidget *uri_entry;
2835 GtkWidget *printcmd_label;
2836 GtkWidget *printcmd_entry;
2838 GtkWidget *exteditor_label;
2839 GtkWidget *exteditor_combo;
2840 GtkWidget *exteditor_entry;
2842 GtkWidget *frame_addr;
2843 GtkWidget *vbox_addr;
2844 GtkWidget *checkbtn_addaddrbyclick;
2846 GtkWidget *frame_cliplog;
2847 GtkWidget *vbox_cliplog;
2848 GtkWidget *hbox_cliplog;
2849 GtkWidget *checkbtn_cliplog;
2850 GtkWidget *loglength_label;
2851 GtkWidget *loglength_entry;
2853 GtkWidget *frame_exit;
2854 GtkWidget *vbox_exit;
2855 GtkWidget *checkbtn_confonexit;
2856 GtkWidget *checkbtn_cleanonexit;
2857 GtkWidget *checkbtn_askonclean;
2858 GtkWidget *checkbtn_warnqueued;
2861 GtkWidget *frame_ssl;
2862 GtkWidget *vbox_ssl;
2863 GtkWidget *hbox_ssl;
2864 GtkWidget *checkbtn_ssl_ask_unknown_valid;
2867 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2868 gtk_widget_show (vbox1);
2869 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2870 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2872 PACK_FRAME(vbox1, ext_frame,
2873 _("External commands (%s will be replaced with file name / URI)"));
2875 ext_table = gtk_table_new (3, 2, FALSE);
2876 gtk_widget_show (ext_table);
2877 gtk_container_add (GTK_CONTAINER (ext_frame), ext_table);
2878 gtk_container_set_border_width (GTK_CONTAINER (ext_table), 8);
2879 gtk_table_set_row_spacings (GTK_TABLE (ext_table), VSPACING_NARROW);
2880 gtk_table_set_col_spacings (GTK_TABLE (ext_table), 8);
2882 uri_label = gtk_label_new (_("Web browser"));
2883 gtk_widget_show(uri_label);
2884 gtk_table_attach (GTK_TABLE (ext_table), uri_label, 0, 1, 0, 1,
2885 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2886 gtk_misc_set_alignment (GTK_MISC (uri_label), 1, 0.5);
2888 uri_combo = gtk_combo_new ();
2889 gtk_widget_show (uri_combo);
2890 gtk_table_attach (GTK_TABLE (ext_table), uri_combo, 1, 2, 0, 1,
2891 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2892 gtkut_combo_set_items (GTK_COMBO (uri_combo),
2894 "mozilla -remote 'openurl(%s,new-window)'",
2895 "netscape -remote 'openURL(%s,raise)'",
2897 "gnome-moz-remote --raise --newwin '%s'",
2898 "kfmclient openURL '%s'",
2899 "opera -newwindow '%s'",
2900 "kterm -e w3m '%s'",
2901 "kterm -e lynx '%s'",
2903 uri_entry = GTK_COMBO (uri_combo)->entry;
2905 printcmd_label = gtk_label_new (_("Print"));
2906 gtk_widget_show (printcmd_label);
2907 gtk_table_attach (GTK_TABLE (ext_table), printcmd_label, 0, 1, 1, 2,
2908 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2909 gtk_misc_set_alignment (GTK_MISC (printcmd_label), 1, 0.5);
2911 printcmd_entry = gtk_entry_new ();
2912 gtk_widget_show (printcmd_entry);
2913 gtk_table_attach (GTK_TABLE (ext_table), printcmd_entry, 1, 2, 1, 2,
2914 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2916 exteditor_label = gtk_label_new (_("Editor"));
2917 gtk_widget_show (exteditor_label);
2918 gtk_table_attach (GTK_TABLE (ext_table), exteditor_label, 0, 1, 2, 3,
2919 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2920 gtk_misc_set_alignment (GTK_MISC (exteditor_label), 1, 0.5);
2922 exteditor_combo = gtk_combo_new ();
2923 gtk_widget_show (exteditor_combo);
2924 gtk_table_attach (GTK_TABLE (ext_table), exteditor_combo, 1, 2, 2, 3,
2925 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2926 gtkut_combo_set_items (GTK_COMBO (exteditor_combo),
2929 "mgedit --no-fork %s",
2935 exteditor_entry = GTK_COMBO (exteditor_combo)->entry;
2937 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2939 vbox_addr = gtk_vbox_new (FALSE, 0);
2940 gtk_widget_show (vbox_addr);
2941 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2942 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2945 (vbox_addr, checkbtn_addaddrbyclick,
2946 _("Add address to destination when double-clicked"));
2949 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2951 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2952 gtk_widget_show (vbox_cliplog);
2953 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2954 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2955 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2956 _("Clip the log size"));
2957 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2958 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2959 gtk_widget_show (hbox_cliplog);
2961 loglength_label = gtk_label_new (_("Log window length"));
2962 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2964 gtk_widget_show (GTK_WIDGET (loglength_label));
2965 loglength_entry = gtk_entry_new ();
2966 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2967 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2969 gtk_widget_show (GTK_WIDGET (loglength_entry));
2970 loglength_label = gtk_label_new (_("(0 to stop logging in the log window)"));
2971 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2973 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2978 PACK_FRAME (vbox1, frame_ssl, _("Security"));
2980 vbox_ssl = gtk_vbox_new (FALSE, 0);
2981 gtk_widget_show (vbox_ssl);
2982 gtk_container_add (GTK_CONTAINER (frame_ssl), vbox_ssl);
2983 gtk_container_set_border_width (GTK_CONTAINER (vbox_ssl), 8);
2984 PACK_CHECK_BUTTON (vbox_ssl, checkbtn_ssl_ask_unknown_valid,
2985 _("Ask before accepting SSL certificates"));
2986 hbox_ssl = gtk_hbox_new (FALSE, 3);
2987 gtk_container_add (GTK_CONTAINER (vbox_ssl), hbox_ssl);
2988 gtk_widget_show (hbox_ssl);
2993 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2995 vbox_exit = gtk_vbox_new (FALSE, 0);
2996 gtk_widget_show (vbox_exit);
2997 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2998 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
3000 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
3001 _("Confirm on exit"));
3003 hbox1 = gtk_hbox_new (FALSE, 32);
3004 gtk_widget_show (hbox1);
3005 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
3007 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
3008 _("Empty trash on exit"));
3009 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
3010 _("Ask before emptying"));
3011 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
3013 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
3014 _("Warn if there are queued messages"));
3016 other.uri_combo = uri_combo;
3017 other.uri_entry = uri_entry;
3018 other.printcmd_entry = printcmd_entry;
3020 other.exteditor_combo = exteditor_combo;
3021 other.exteditor_entry = exteditor_entry;
3023 other.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
3025 other.checkbtn_cliplog = checkbtn_cliplog;
3026 other.loglength_entry = loglength_entry;
3028 other.checkbtn_confonexit = checkbtn_confonexit;
3029 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
3030 other.checkbtn_askonclean = checkbtn_askonclean;
3031 other.checkbtn_warnqueued = checkbtn_warnqueued;
3035 other.checkbtn_ssl_ask_unknown_valid = checkbtn_ssl_ask_unknown_valid;
3040 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
3042 GtkWidget *datefmt_sample = NULL;
3045 g_return_if_fail(widget != NULL);
3046 g_return_if_fail(*widget != NULL);
3047 g_return_if_fail(display.entry_datefmt != NULL);
3049 datefmt_sample = GTK_WIDGET(gtk_object_get_data
3050 (GTK_OBJECT(*widget), "datefmt_sample"));
3051 g_return_if_fail(datefmt_sample != NULL);
3053 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
3054 g_free(prefs_common.date_format);
3055 prefs_common.date_format = text;
3056 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
3058 gtk_widget_destroy(*widget);
3062 static void date_format_cancel_btn_clicked(GtkButton *button,
3065 g_return_if_fail(widget != NULL);
3066 g_return_if_fail(*widget != NULL);
3068 gtk_widget_destroy(*widget);
3072 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
3075 if (event && event->keyval == GDK_Escape)
3076 date_format_cancel_btn_clicked(NULL, widget);
3079 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
3080 GdkEventAny *event, GtkWidget **widget)
3082 g_return_val_if_fail(widget != NULL, FALSE);
3083 g_return_val_if_fail(*widget != NULL, FALSE);
3089 static void date_format_entry_on_change(GtkEditable *editable,
3093 struct tm *cal_time;
3097 cur_time = time(NULL);
3098 cal_time = localtime(&cur_time);
3100 text = gtk_editable_get_chars(editable, 0, -1);
3102 strftime(buffer, sizeof buffer, text, cal_time);
3104 gtk_label_set_text(example, buffer);
3107 static void date_format_select_row(GtkWidget *date_format_list, gint row,
3108 gint column, GdkEventButton *event,
3109 GtkWidget *date_format)
3115 GtkWidget *datefmt_sample;
3117 /* only on double click */
3118 if (!event || event->type != GDK_2BUTTON_PRESS) return;
3121 datefmt_sample = GTK_WIDGET(gtk_object_get_data
3122 (GTK_OBJECT(date_format), "datefmt_sample"));
3124 g_return_if_fail(date_format_list != NULL);
3125 g_return_if_fail(date_format != NULL);
3126 g_return_if_fail(datefmt_sample != NULL);
3128 /* get format from clist */
3129 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
3131 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
3132 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
3134 /* insert the format into the text entry */
3135 new_format = g_malloc(strlen(old_format) + 3);
3137 strncpy(new_format, old_format, cur_pos);
3138 new_format[cur_pos] = '\0';
3139 strcat(new_format, format);
3140 strcat(new_format, &old_format[cur_pos]);
3142 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
3143 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
3148 static GtkWidget *date_format_create(GtkButton *button, void *data)
3150 static GtkWidget *datefmt_win = NULL;
3152 GtkWidget *scrolledwindow1;
3153 GtkWidget *datefmt_clist;
3158 GtkWidget *confirm_area;
3160 GtkWidget *cancel_btn;
3161 GtkWidget *datefmt_entry;
3190 const gint TIME_FORMAT_ELEMS =
3191 sizeof time_format / sizeof time_format[0];
3193 time_format[0].txt = _("the full abbreviated weekday name");
3194 time_format[1].txt = _("the full weekday name");
3195 time_format[2].txt = _("the abbreviated month name");
3196 time_format[3].txt = _("the full month name");
3197 time_format[4].txt = _("the preferred date and time for the current locale");
3198 time_format[5].txt = _("the century number (year/100)");
3199 time_format[6].txt = _("the day of the month as a decimal number");
3200 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
3201 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
3202 time_format[9].txt = _("the day of the year as a decimal number");
3203 time_format[10].txt = _("the month as a decimal number");
3204 time_format[11].txt = _("the minute as a decimal number");
3205 time_format[12].txt = _("either AM or PM");
3206 time_format[13].txt = _("the second as a decimal number");
3207 time_format[14].txt = _("the day of the week as a decimal number");
3208 time_format[15].txt = _("the preferred date for the current locale");
3209 time_format[16].txt = _("the last two digits of a year");
3210 time_format[17].txt = _("the year as a decimal number");
3211 time_format[18].txt = _("the time zone or name or abbreviation");
3213 if (datefmt_win) return datefmt_win;
3215 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
3216 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
3217 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
3218 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
3219 gtk_widget_set_usize(datefmt_win, 440, 280);
3221 vbox1 = gtk_vbox_new(FALSE, 10);
3222 gtk_widget_show(vbox1);
3223 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
3225 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
3226 gtk_scrolled_window_set_policy
3227 (GTK_SCROLLED_WINDOW(scrolledwindow1),
3228 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
3229 gtk_widget_show(scrolledwindow1);
3230 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
3232 titles[0] = _("Specifier");
3233 titles[1] = _("Description");
3234 datefmt_clist = gtk_clist_new_with_titles(2, titles);
3235 gtk_widget_show(datefmt_clist);
3236 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
3237 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
3238 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
3239 GTK_SELECTION_BROWSE);
3241 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
3243 /* phoney casting necessary because of gtk... */
3244 text[0] = (gchar *)time_format[i].fmt;
3245 text[1] = (gchar *)time_format[i].txt;
3246 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
3249 table = gtk_table_new(2, 2, FALSE);
3250 gtk_widget_show(table);
3251 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
3252 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
3253 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
3255 label1 = gtk_label_new(_("Date format"));
3256 gtk_widget_show(label1);
3257 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
3259 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
3260 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
3262 datefmt_entry = gtk_entry_new_with_max_length(256);
3263 gtk_widget_show(datefmt_entry);
3264 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
3265 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3267 /* we need the "sample" entry box; add it as data so callbacks can
3268 * get the entry box */
3269 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
3272 label2 = gtk_label_new(_("Example"));
3273 gtk_widget_show(label2);
3274 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
3276 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
3277 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
3279 label3 = gtk_label_new("");
3280 gtk_widget_show(label3);
3281 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
3282 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3283 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
3284 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
3286 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
3287 &cancel_btn, _("Cancel"), NULL, NULL);
3288 gtk_widget_grab_default(ok_btn);
3289 gtk_widget_show(confirm_area);
3291 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
3293 /* set the current format */
3294 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
3295 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
3298 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
3299 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
3301 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
3302 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
3304 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
3305 GTK_SIGNAL_FUNC(date_format_key_pressed),
3307 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
3308 GTK_SIGNAL_FUNC(date_format_on_delete),
3310 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
3311 GTK_SIGNAL_FUNC(date_format_entry_on_change),
3314 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
3315 GTK_SIGNAL_FUNC(date_format_select_row),
3318 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
3319 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
3321 gtk_widget_show(datefmt_win);
3322 manage_window_set_transient(GTK_WINDOW(datefmt_win));
3324 gtk_widget_grab_focus(ok_btn);
3329 void prefs_quote_colors_dialog(void)
3331 if (!quote_color_win)
3332 prefs_quote_colors_dialog_create();
3333 gtk_widget_show(quote_color_win);
3334 manage_window_set_transient(GTK_WINDOW(quote_color_win));
3337 gtk_widget_hide(quote_color_win);
3339 textview_update_message_colors();
3340 main_window_reflect_prefs_all();
3343 static void prefs_quote_colors_dialog_create(void)
3348 GtkWidget *quotelevel1_label;
3349 GtkWidget *quotelevel2_label;
3350 GtkWidget *quotelevel3_label;
3351 GtkWidget *uri_label;
3352 GtkWidget *signature_label;
3353 GtkWidget *tgt_folder_label;
3356 GtkWidget *recycle_colors_btn;
3357 GtkWidget *frame_colors;
3359 window = gtk_window_new(GTK_WINDOW_DIALOG);
3360 gtk_container_set_border_width(GTK_CONTAINER(window), 2);
3361 gtk_window_set_title(GTK_WINDOW(window), _("Set message colors"));
3362 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
3363 gtk_window_set_modal(GTK_WINDOW(window), TRUE);
3364 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
3366 vbox = gtk_vbox_new (FALSE, VSPACING);
3367 gtk_container_add (GTK_CONTAINER (window), vbox);
3368 gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
3369 PACK_FRAME(vbox, frame_colors, _("Colors"));
3371 table = gtk_table_new (5, 2, FALSE);
3372 gtk_container_add (GTK_CONTAINER (frame_colors), table);
3373 gtk_container_set_border_width (GTK_CONTAINER (table), 8);
3374 gtk_table_set_row_spacings (GTK_TABLE (table), 2);
3375 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
3378 color_buttons.quote_level1_btn = gtk_button_new();
3379 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level1_btn,
3380 0, 1, 0, 1, 0, 0, 0, 0);
3381 gtk_widget_set_usize (color_buttons.quote_level1_btn, 40, 30);
3382 gtk_container_set_border_width
3383 (GTK_CONTAINER (color_buttons.quote_level1_btn), 5);
3385 color_buttons.quote_level2_btn = gtk_button_new();
3386 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level2_btn,
3387 0, 1, 1, 2, 0, 0, 0, 0);
3388 gtk_widget_set_usize (color_buttons.quote_level2_btn, 40, 30);
3389 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.quote_level2_btn), 5);
3391 color_buttons.quote_level3_btn = gtk_button_new_with_label ("");
3392 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level3_btn,
3393 0, 1, 2, 3, 0, 0, 0, 0);
3394 gtk_widget_set_usize (color_buttons.quote_level3_btn, 40, 30);
3395 gtk_container_set_border_width
3396 (GTK_CONTAINER (color_buttons.quote_level3_btn), 5);
3398 color_buttons.uri_btn = gtk_button_new_with_label ("");
3399 gtk_table_attach (GTK_TABLE (table), color_buttons.uri_btn,
3400 0, 1, 3, 4, 0, 0, 0, 0);
3401 gtk_widget_set_usize (color_buttons.uri_btn, 40, 30);
3402 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.uri_btn), 5);
3404 color_buttons.tgt_folder_btn = gtk_button_new_with_label ("");
3405 gtk_table_attach (GTK_TABLE (table), color_buttons.tgt_folder_btn,
3406 0, 1, 4, 5, 0, 0, 0, 0);
3407 gtk_widget_set_usize (color_buttons.tgt_folder_btn, 40, 30);
3408 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.tgt_folder_btn), 5);
3410 color_buttons.signature_btn = gtk_button_new_with_label ("");
3411 gtk_table_attach (GTK_TABLE (table), color_buttons.signature_btn,
3412 0, 1, 5, 6, 0, 0, 0, 0);
3413 gtk_widget_set_usize (color_buttons.signature_btn, 40, 30);
3414 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.signature_btn), 5);
3416 quotelevel1_label = gtk_label_new (_("Quoted Text - First Level"));
3417 gtk_table_attach (GTK_TABLE (table), quotelevel1_label, 1, 2, 0, 1,
3418 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3419 gtk_label_set_justify (GTK_LABEL (quotelevel1_label), GTK_JUSTIFY_LEFT);
3420 gtk_misc_set_alignment (GTK_MISC (quotelevel1_label), 0, 0.5);
3422 quotelevel2_label = gtk_label_new (_("Quoted Text - Second Level"));
3423 gtk_table_attach (GTK_TABLE (table), quotelevel2_label, 1, 2, 1, 2,
3424 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3425 gtk_label_set_justify (GTK_LABEL (quotelevel2_label), GTK_JUSTIFY_LEFT);
3426 gtk_misc_set_alignment (GTK_MISC (quotelevel2_label), 0, 0.5);
3428 quotelevel3_label = gtk_label_new (_("Quoted Text - Third Level"));
3429 gtk_table_attach (GTK_TABLE (table), quotelevel3_label, 1, 2, 2, 3,
3430 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3431 gtk_label_set_justify (GTK_LABEL (quotelevel3_label), GTK_JUSTIFY_LEFT);
3432 gtk_misc_set_alignment (GTK_MISC (quotelevel3_label), 0, 0.5);
3434 uri_label = gtk_label_new (_("URI link"));
3435 gtk_table_attach (GTK_TABLE (table), uri_label, 1, 2, 3, 4,
3436 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3437 gtk_label_set_justify (GTK_LABEL (uri_label), GTK_JUSTIFY_LEFT);
3438 gtk_misc_set_alignment (GTK_MISC (uri_label), 0, 0.5);
3440 tgt_folder_label = gtk_label_new (_("Target folder"));
3441 gtk_table_attach (GTK_TABLE (table), tgt_folder_label, 1, 2, 4, 5,
3442 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3443 gtk_label_set_justify (GTK_LABEL (tgt_folder_label), GTK_JUSTIFY_LEFT);
3444 gtk_misc_set_alignment (GTK_MISC (tgt_folder_label), 0, 0.5);
3446 signature_label = gtk_label_new (_("Signatures"));
3447 gtk_table_attach (GTK_TABLE (table), signature_label, 1, 2, 5, 6,
3448 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3449 gtk_label_set_justify (GTK_LABEL (signature_label), GTK_JUSTIFY_LEFT);
3450 gtk_misc_set_alignment (GTK_MISC (signature_label), 0, 0.5);
3452 PACK_CHECK_BUTTON (vbox, recycle_colors_btn,
3453 _("Recycle quote colors"));
3455 gtkut_button_set_create(&hbbox, &ok_btn, _("OK"),
3456 NULL, NULL, NULL, NULL);
3457 gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
3459 gtk_widget_grab_default(ok_btn);
3460 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3461 gtk_signal_connect(GTK_OBJECT(window), "delete_event",
3462 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3463 gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
3464 GTK_SIGNAL_FUNC(prefs_quote_colors_key_pressed),
3467 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level1_btn), "clicked",
3468 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL1");
3469 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level2_btn), "clicked",
3470 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL2");
3471 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level3_btn), "clicked",
3472 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL3");
3473 gtk_signal_connect(GTK_OBJECT(color_buttons.uri_btn), "clicked",
3474 GTK_SIGNAL_FUNC(quote_color_set_dialog), "URI");
3475 gtk_signal_connect(GTK_OBJECT(color_buttons.tgt_folder_btn), "clicked",
3476 GTK_SIGNAL_FUNC(quote_color_set_dialog), "TGTFLD");
3477 gtk_signal_connect(GTK_OBJECT(color_buttons.signature_btn), "clicked",
3478 GTK_SIGNAL_FUNC(quote_color_set_dialog), "SIGNATURE");
3479 gtk_signal_connect(GTK_OBJECT(recycle_colors_btn), "toggled",
3480 GTK_SIGNAL_FUNC(prefs_recycle_colors_toggled), NULL);
3481 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
3482 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3484 /* show message button colors and recycle options */
3485 set_button_bg_color(color_buttons.quote_level1_btn,
3486 prefs_common.quote_level1_col);
3487 set_button_bg_color(color_buttons.quote_level2_btn,
3488 prefs_common.quote_level2_col);
3489 set_button_bg_color(color_buttons.quote_level3_btn,
3490 prefs_common.quote_level3_col);
3491 set_button_bg_color(color_buttons.uri_btn,
3492 prefs_common.uri_col);
3493 set_button_bg_color(color_buttons.tgt_folder_btn,
3494 prefs_common.tgt_folder_col);
3495 set_button_bg_color(color_buttons.signature_btn,
3496 prefs_common.signature_col);
3497 gtk_toggle_button_set_active((GtkToggleButton *)recycle_colors_btn,
3498 prefs_common.recycle_quote_colors);
3500 gtk_widget_show_all(vbox);
3501 quote_color_win = window;
3504 static void prefs_quote_colors_key_pressed(GtkWidget *widget,
3505 GdkEventKey *event, gpointer data)
3507 if (event && event->keyval == GDK_Escape)
3511 static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
3513 gchar *type = (gchar *)data;
3514 gchar *title = NULL;
3515 gdouble color[4] = {0.0, 0.0, 0.0, 0.0};
3517 GtkColorSelectionDialog *dialog;
3519 if(g_strcasecmp(type, "LEVEL1") == 0) {
3520 title = _("Pick color for quotation level 1");
3521 rgbvalue = prefs_common.quote_level1_col;
3522 } else if(g_strcasecmp(type, "LEVEL2") == 0) {
3523 title = _("Pick color for quotation level 2");
3524 rgbvalue = prefs_common.quote_level2_col;
3525 } else if(g_strcasecmp(type, "LEVEL3") == 0) {
3526 title = _("Pick color for quotation level 3");
3527 rgbvalue = prefs_common.quote_level3_col;
3528 } else if(g_strcasecmp(type, "URI") == 0) {
3529 title = _("Pick color for URI");
3530 rgbvalue = prefs_common.uri_col;
3531 } else if(g_strcasecmp(type, "TGTFLD") == 0) {
3532 title = _("Pick color for target folder");
3533 rgbvalue = prefs_common.tgt_folder_col;
3534 } else if(g_strcasecmp(type, "SIGNATURE") == 0) {
3535 title = _("Pick color for signatures");
3536 rgbvalue = prefs_common.signature_col;
3538 } else if(g_strcasecmp(type, "Misspelled word") == 0) {
3539 title = _("Pick color for misspelled word");
3540 rgbvalue = prefs_common.misspelled_col;
3542 } else { /* Should never be called */
3543 g_warning("Unrecognized datatype '%s' in quote_color_set_dialog\n", type);
3547 color_dialog = gtk_color_selection_dialog_new(title);
3548 gtk_window_set_position(GTK_WINDOW(color_dialog), GTK_WIN_POS_CENTER);
3549 gtk_window_set_modal(GTK_WINDOW(color_dialog), TRUE);
3550 gtk_window_set_policy(GTK_WINDOW(color_dialog), FALSE, FALSE, FALSE);
3551 manage_window_set_transient(GTK_WINDOW(color_dialog));
3553 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->ok_button),
3554 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_ok), data);
3555 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->cancel_button),
3556 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_cancel), data);
3557 gtk_signal_connect(GTK_OBJECT(color_dialog), "key_press_event",
3558 GTK_SIGNAL_FUNC(quote_colors_set_dialog_key_pressed),
3561 /* preselect the previous color in the color selection dialog */
3562 color[0] = (gdouble) ((rgbvalue & 0xff0000) >> 16) / 255.0;
3563 color[1] = (gdouble) ((rgbvalue & 0x00ff00) >> 8) / 255.0;
3564 color[2] = (gdouble) (rgbvalue & 0x0000ff) / 255.0;
3565 dialog = GTK_COLOR_SELECTION_DIALOG(color_dialog);
3566 gtk_color_selection_set_color
3567 (GTK_COLOR_SELECTION(dialog->colorsel), color);
3569 gtk_widget_show(color_dialog);
3572 static void quote_colors_set_dialog_ok(GtkWidget *widget, gpointer data)
3574 GtkColorSelection *colorsel = (GtkColorSelection *)
3575 ((GtkColorSelectionDialog *)color_dialog)->colorsel;
3577 gint red, green, blue, rgbvalue;
3578 gchar *type = (gchar *)data;
3580 gtk_color_selection_get_color(colorsel, color);
3582 red = (gint) (color[0] * 255.0);
3583 green = (gint) (color[1] * 255.0);
3584 blue = (gint) (color[2] * 255.0);
3585 rgbvalue = (gint) ((red * 0x10000) | (green * 0x100) | blue);
3588 fprintf(stderr, "redc = %f, greenc = %f, bluec = %f\n", color[0], color[1], color[2]);
3589 fprintf(stderr, "red = %d, green = %d, blue = %d\n", red, green, blue);
3590 fprintf(stderr, "Color is %x\n", rgbvalue);
3593 if (g_strcasecmp(type, "LEVEL1") == 0) {
3594 prefs_common.quote_level1_col = rgbvalue;
3595 set_button_bg_color(color_buttons.quote_level1_btn, rgbvalue);
3596 } else if (g_strcasecmp(type, "LEVEL2") == 0) {
3597 prefs_common.quote_level2_col = rgbvalue;
3598 set_button_bg_color(color_buttons.quote_level2_btn, rgbvalue);
3599 } else if (g_strcasecmp(type, "LEVEL3") == 0) {
3600 prefs_common.quote_level3_col = rgbvalue;
3601 set_button_bg_color(color_buttons.quote_level3_btn, rgbvalue);
3602 } else if (g_strcasecmp(type, "URI") == 0) {
3603 prefs_common.uri_col = rgbvalue;
3604 set_button_bg_color(color_buttons.uri_btn, rgbvalue);
3605 } else if (g_strcasecmp(type, "TGTFLD") == 0) {
3606 prefs_common.tgt_folder_col = rgbvalue;
3607 set_button_bg_color(color_buttons.tgt_folder_btn, rgbvalue);
3608 folderview_set_target_folder_color(prefs_common.tgt_folder_col);
3609 } else if (g_strcasecmp(type, "SIGNATURE") == 0) {
3610 prefs_common.signature_col = rgbvalue;
3611 set_button_bg_color(color_buttons.signature_btn, rgbvalue);
3613 } else if (g_strcasecmp(type, "Misspelled word") == 0) {
3614 prefs_common.misspelled_col = rgbvalue;
3615 set_button_bg_color(spelling.misspelled_btn, rgbvalue);
3618 fprintf( stderr, "Unrecognized datatype '%s' in quote_color_set_dialog_ok\n", type );
3620 gtk_widget_destroy(color_dialog);
3623 static void quote_colors_set_dialog_cancel(GtkWidget *widget, gpointer data)
3625 gtk_widget_destroy(color_dialog);
3628 static void quote_colors_set_dialog_key_pressed(GtkWidget *widget,
3632 gtk_widget_destroy(color_dialog);
3635 static void set_button_bg_color(GtkWidget *widget, gint rgbvalue)
3640 gtkut_convert_int_to_gdk_color(rgbvalue, &color);
3641 newstyle = gtk_style_copy(gtk_widget_get_default_style());
3642 newstyle->bg[GTK_STATE_NORMAL] = color;
3643 newstyle->bg[GTK_STATE_PRELIGHT] = color;
3644 newstyle->bg[GTK_STATE_ACTIVE] = color;
3646 gtk_widget_set_style(GTK_WIDGET(widget), newstyle);
3649 static void prefs_enable_message_color_toggled(void)
3653 is_active = gtk_toggle_button_get_active
3654 (GTK_TOGGLE_BUTTON(message.chkbtn_enablecol));
3655 gtk_widget_set_sensitive(message.button_edit_col, is_active);
3656 prefs_common.enable_color = is_active;
3659 static void prefs_recycle_colors_toggled(GtkWidget *widget)
3663 is_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
3664 prefs_common.recycle_quote_colors = is_active;
3667 static void prefs_font_select(GtkButton *button, GtkEntry *entry)
3671 g_return_if_fail(entry != NULL);
3673 if (!font_sel_win) {
3674 font_sel_win = gtk_font_selection_dialog_new
3675 (_("Font selection"));
3676 gtk_window_position(GTK_WINDOW(font_sel_win),
3677 GTK_WIN_POS_CENTER);
3678 gtk_signal_connect(GTK_OBJECT(font_sel_win), "delete_event",
3679 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3682 (GTK_OBJECT(font_sel_win), "key_press_event",
3683 GTK_SIGNAL_FUNC(prefs_font_selection_key_pressed),
3685 gtk_signal_connect_object
3686 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->cancel_button),
3688 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3689 GTK_OBJECT(font_sel_win));
3692 if(font_sel_conn_id) {
3693 gtk_signal_disconnect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button), font_sel_conn_id);
3695 font_sel_conn_id = gtk_signal_connect
3696 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button),
3698 GTK_SIGNAL_FUNC(prefs_font_selection_ok),
3700 printf("%i\n", font_sel_conn_id);
3702 font_name = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
3703 gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(font_sel_win), font_name);
3705 manage_window_set_transient(GTK_WINDOW(font_sel_win));
3706 gtk_window_set_modal(GTK_WINDOW(font_sel_win), TRUE);
3707 gtk_widget_grab_focus
3708 (GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button);
3709 gtk_widget_show(font_sel_win);
3712 static void prefs_font_selection_key_pressed(GtkWidget *widget,
3716 if (event && event->keyval == GDK_Escape)
3717 gtk_widget_hide(font_sel_win);
3720 static void prefs_font_selection_ok(GtkButton *button, GtkEntry *entry)
3724 fontname = gtk_font_selection_dialog_get_font_name
3725 (GTK_FONT_SELECTION_DIALOG(font_sel_win));
3728 gtk_entry_set_text(entry, fontname);
3733 gtk_widget_hide(font_sel_win);
3736 static void prefs_keybind_select(void)
3743 GtkWidget *confirm_area;
3745 GtkWidget *cancel_btn;
3747 window = gtk_window_new (GTK_WINDOW_DIALOG);
3748 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
3749 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
3750 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
3751 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
3752 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
3753 manage_window_set_transient (GTK_WINDOW (window));
3755 vbox1 = gtk_vbox_new (FALSE, VSPACING);
3756 gtk_container_add (GTK_CONTAINER (window), vbox1);
3757 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
3759 hbox1 = gtk_hbox_new (FALSE, 8);
3760 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3762 label = gtk_label_new
3763 (_("Select preset:"));
3764 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3765 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3767 hbox1 = gtk_hbox_new (FALSE, 8);
3768 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3770 combo = gtk_combo_new ();
3771 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
3772 gtkut_combo_set_items (GTK_COMBO (combo),
3778 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
3780 hbox1 = gtk_hbox_new (FALSE, 8);
3781 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3783 label = gtk_label_new
3784 (_("You can also modify each menu shortcut by pressing\n"
3785 "any key(s) when placing the mouse pointer on the item."));
3786 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3787 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3789 hbox1 = gtk_hbox_new (FALSE, 8);
3790 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3792 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
3793 &cancel_btn, _("Cancel"), NULL, NULL);
3794 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
3795 gtk_widget_grab_default (ok_btn);
3797 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3798 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3799 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
3800 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
3801 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
3802 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
3803 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
3805 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
3806 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
3809 gtk_widget_show_all(window);
3811 keybind.window = window;
3812 keybind.combo = combo;
3815 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
3818 if (event && event->keyval == GDK_Escape)
3819 prefs_keybind_cancel();
3822 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
3825 prefs_keybind_cancel();
3829 static void prefs_keybind_cancel(void)
3831 gtk_widget_destroy(keybind.window);
3832 keybind.window = NULL;
3833 keybind.combo = NULL;
3836 static void prefs_keybind_apply_clicked(GtkWidget *widget)
3838 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
3842 static gchar *default_menurc =
3843 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3844 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
3845 "(menu-path \"<Main>/File/Print...\" \"\")\n"
3846 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
3848 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3849 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3850 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3851 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
3853 "(menu-path \"<Main>/View/Expand Summary View\" \"V\")\n"
3854 "(menu-path \"<Main>/View/Expand Message View\" \"<shift>V\")\n"
3855 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3856 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3857 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3858 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3859 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3860 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3861 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3862 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3863 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3864 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3866 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3867 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3868 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
3869 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3870 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><control>R\")\n"
3871 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3872 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3873 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
3874 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
3875 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3876 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
3877 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
3878 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3879 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3880 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3881 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3883 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3884 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3885 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3887 "(menu-path \"<Compose>/File/Close\" \"<control>W\")\n"
3888 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
3889 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
3890 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
3891 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
3892 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
3893 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
3895 static gchar *mew_wl_menurc =
3896 "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
3897 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
3898 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
3899 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
3901 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3902 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3903 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3904 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3906 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3907 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3908 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
3909 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3910 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3911 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3912 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3913 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3914 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3915 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3916 "(menu-path \"<Main>/View/Show all headers\" \"<shift>H\")\n"
3917 "(menu-path \"<Main>/View/Update\" \"<shift>S\")\n"
3919 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3920 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3921 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
3922 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3923 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift>A\")\n"
3924 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3925 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3926 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3927 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
3928 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
3929 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
3930 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3931 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3932 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3933 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3934 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
3936 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3937 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3938 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3940 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3941 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3942 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3943 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3944 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3945 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3946 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3948 static gchar *mutt_menurc =
3949 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3950 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
3951 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
3952 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
3954 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3955 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3956 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3957 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
3959 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
3960 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3961 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
3962 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
3963 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
3964 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
3965 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
3966 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3967 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3968 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3969 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3971 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3972 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3973 "(menu-path \"<Main>/Message/Compose new message\" \"M\")\n"
3974 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
3975 "(menu-path \"<Main>/Message/Reply to/all\" \"G\")\n"
3976 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3977 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3978 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3979 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
3980 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3981 "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
3982 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3983 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
3984 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3985 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
3986 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3988 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3989 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3990 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3992 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3993 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3994 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3995 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3996 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3997 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3998 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
4000 static gchar *old_sylpheed_menurc =
4001 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
4002 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
4003 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
4004 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
4006 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
4007 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
4008 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
4009 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
4011 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
4012 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
4013 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
4014 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
4015 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
4016 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
4017 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
4018 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
4019 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
4020 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
4021 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
4022 "(menu-path \"<Main>/View/Update\" \"<alt>U\")\n"
4024 "(menu-path \"<Main>/Message/Get new mail\" \"<alt>I\")\n"
4025 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><alt>I\")\n"
4026 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
4027 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
4028 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><alt>R\")\n"
4029 "(menu-path \"<Main>/Message/Reply to/sender\" \"<control><alt>R\")\n"
4030 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
4031 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
4032 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
4033 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
4034 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
4035 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
4036 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
4037 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
4038 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
4039 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
4041 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
4042 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
4043 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
4045 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
4046 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
4047 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
4048 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
4049 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
4050 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
4051 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
4053 static gchar *empty_menurc =
4054 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
4055 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
4056 "(menu-path \"<Main>/File/Print...\" \"\")\n"
4057 "(menu-path \"<Main>/File/Exit\" \"\")\n"
4059 "(menu-path \"<Main>/Edit/Copy\" \"\")\n"
4060 "(menu-path \"<Main>/Edit/Select all\" \"\")\n"
4061 "(menu-path \"<Main>/Edit/Find in current message...\" \"\")\n"
4062 "(menu-path \"<Main>/Edit/Search folder...\" \"\")\n"
4064 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
4065 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
4066 "(menu-path \"<Main>/View/Thread view\" \"\")\n"
4067 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
4068 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
4069 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
4070 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
4071 "(menu-path \"<Main>/View/Go to/Other folder...\" \"\")\n"
4072 "(menu-path \"<Main>/View/Open in new window\" \"\")\n"
4073 "(menu-path \"<Main>/View/View source\" \"\")\n"
4074 "(menu-path \"<Main>/View/Show all headers\" \"\")\n"
4075 "(menu-path \"<Main>/View/Update\" \"\")\n"
4077 "(menu-path \"<Main>/Message/Get new mail\" \"\")\n"
4078 "(menu-path \"<Main>/Message/Get from all accounts\" \"\")\n"
4079 "(menu-path \"<Main>/Message/Compose an email message\" \"\")\n"
4080 "(menu-path \"<Main>/Message/Reply\" \"\")\n"
4081 "(menu-path \"<Main>/Message/Reply to/all\" \"\")\n"
4082 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
4083 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"\")\n"
4084 "(menu-path \"<Main>/Message/Forward\" \"\")\n"
4085 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
4086 "(menu-path \"<Main>/Message/Move...\" \"\")\n"
4087 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
4088 "(menu-path \"<Main>/Message/Delete\" \"\")\n"
4089 "(menu-path \"<Main>/Message/Mark/Mark\" \"\")\n"
4090 "(menu-path \"<Main>/Message/Mark/Unmark\" \"\")\n"
4091 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"\")\n"
4092 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
4094 "(menu-path \"<Main>/Tools/Address book\" \"\")\n"
4095 "(menu-path \"<Main>/Tools/Execute\" \"\")\n"
4096 "(menu-path \"<Main>/Tools/Log window\" \"\")\n"
4098 "(menu-path \"<Compose>/File/Close\" \"\")\n"
4099 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
4100 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
4101 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
4102 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
4103 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
4104 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
4106 text = gtk_entry_get_text(entry);
4108 if (!strcmp(text, _("Default")))
4109 rc_str = default_menurc;
4110 else if (!strcmp(text, "Mew / Wanderlust"))
4111 rc_str = mew_wl_menurc;
4112 else if (!strcmp(text, "Mutt"))
4113 rc_str = mutt_menurc;
4114 else if (!strcmp(text, _("Old Sylpheed")))
4115 rc_str = old_sylpheed_menurc;
4119 gtk_item_factory_parse_rc_string(empty_menurc);
4120 gtk_item_factory_parse_rc_string(rc_str);
4122 gtk_widget_destroy(keybind.window);
4123 keybind.window = NULL;
4124 keybind.combo = NULL;
4127 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
4130 GtkWidget *menuitem;
4133 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4134 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4135 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
4136 g_free(*((gchar **)pparam->data));
4137 *((gchar **)pparam->data) = g_strdup(charset);
4140 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
4142 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4145 g_return_if_fail(optmenu != NULL);
4146 g_return_if_fail(*((gchar **)pparam->data) != NULL);
4148 index = menu_find_option_menu_index(optmenu, *((gchar **)pparam->data),
4149 (GCompareFunc)strcmp);
4151 gtk_option_menu_set_history(optmenu, index);
4153 gtk_option_menu_set_history(optmenu, 0);
4154 prefs_common_charset_set_data_from_optmenu(pparam);
4158 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
4161 GtkWidget *menuitem;
4163 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4164 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4165 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
4166 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4169 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
4171 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
4172 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4174 GtkWidget *menuitem;
4177 case RECV_DIALOG_ALWAYS:
4178 gtk_option_menu_set_history(optmenu, 0);
4180 case RECV_DIALOG_ACTIVE:
4181 gtk_option_menu_set_history(optmenu, 1);
4183 case RECV_DIALOG_NEVER:
4184 gtk_option_menu_set_history(optmenu, 2);
4190 menu = gtk_option_menu_get_menu(optmenu);
4191 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4192 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
4195 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam)
4198 GtkWidget *menuitem;
4200 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4201 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4202 *((SendDialogMode *)pparam->data) = GPOINTER_TO_INT
4203 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4206 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam)
4208 SendDialogMode mode = *((SendDialogMode *)pparam->data);
4209 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4211 GtkWidget *menuitem;
4214 case SEND_DIALOG_ALWAYS:
4215 gtk_option_menu_set_history(optmenu, 0);
4217 case SEND_DIALOG_NEVER:
4218 gtk_option_menu_set_history(optmenu, 1);
4224 menu = gtk_option_menu_get_menu(optmenu);
4225 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4226 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
4229 static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
4232 prefs_common_cancel();
4236 static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
4239 if (event && event->keyval == GDK_Escape)
4240 prefs_common_cancel();
4243 static void prefs_common_ok(void)
4245 prefs_common_apply();
4246 gtk_widget_hide(dialog.window);
4251 static void prefs_common_apply(void)
4253 gchar *entry_pixmap_theme_str;
4254 gboolean update_pixmap_theme;
4256 entry_pixmap_theme_str = gtk_entry_get_text(GTK_ENTRY(interface.entry_pixmap_theme));
4257 if (entry_pixmap_theme_str &&
4258 (strcmp(prefs_common.pixmap_theme_path, entry_pixmap_theme_str) != 0) )
4259 update_pixmap_theme = TRUE;
4261 update_pixmap_theme = FALSE;
4263 prefs_set_data_from_dialog(param);
4265 if (update_pixmap_theme)
4267 main_window_reflect_prefs_all_real(TRUE);
4268 compose_reflect_prefs_pixmap_theme();
4270 main_window_reflect_prefs_all_real(FALSE);
4272 prefs_common_save_config();
4274 inc_autocheck_timer_remove();
4275 inc_autocheck_timer_set();
4278 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
4281 GtkWidget *menuitem;
4283 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4284 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4285 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
4286 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4289 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
4291 NextUnreadMsgDialogShow dialog_show;
4292 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4294 GtkWidget *menuitem;
4296 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
4298 switch (dialog_show) {
4299 case NEXTUNREADMSGDIALOG_ALWAYS:
4300 gtk_option_menu_set_history(optmenu, 0);
4302 case NEXTUNREADMSGDIALOG_ASSUME_YES:
4303 gtk_option_menu_set_history(optmenu, 1);
4305 case NEXTUNREADMSGDIALOG_ASSUME_NO:
4306 gtk_option_menu_set_history(optmenu, 2);
4310 menu = gtk_option_menu_get_menu(optmenu);
4311 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4312 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
4315 static void prefs_common_cancel(void)
4317 gtk_widget_hide(dialog.window);
4322 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
4325 GtkWidget *menuitem;
4327 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4328 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4329 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
4330 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4333 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
4335 RecvDialogShow dialog_show;
4336 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4338 GtkWidget *menuitem;
4340 dialog_show = *((RecvDialogShow *)pparam->data);
4342 switch (dialog_show) {
4343 case RECVDIALOG_ALWAYS:
4344 gtk_option_menu_set_history(optmenu, 0);
4346 case RECVDIALOG_WINDOW_ACTIVE:
4347 gtk_option_menu_set_history(optmenu, 1);
4349 case RECVDIALOG_NEVER:
4350 gtk_option_menu_set_history(optmenu, 2);
4355 menu = gtk_option_menu_get_menu(optmenu);
4356 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4357 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));