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_hscrollbar;
176 GtkWidget *chkbtn_useaddrbook;
177 GtkWidget *chkbtn_expand_thread;
178 GtkWidget *chkbtn_bold_unread;
179 GtkWidget *entry_datefmt;
182 static struct Message {
183 GtkWidget *chkbtn_enablecol;
184 GtkWidget *button_edit_col;
185 GtkWidget *chkbtn_mbalnum;
186 GtkWidget *chkbtn_disphdrpane;
187 GtkWidget *chkbtn_disphdr;
188 GtkWidget *spinbtn_linespc;
189 GtkObject *spinbtn_linespc_adj;
190 GtkWidget *chkbtn_headspc;
192 GtkWidget *chkbtn_smoothscroll;
193 GtkWidget *spinbtn_scrollstep;
194 GtkObject *spinbtn_scrollstep_adj;
195 GtkWidget *chkbtn_halfpage;
197 GtkWidget *chkbtn_display_img;
198 GtkWidget *chkbtn_resize_image;
202 static struct Privacy {
203 GtkWidget *checkbtn_auto_check_signatures;
204 GtkWidget *checkbtn_gpg_signature_popup;
205 GtkWidget *checkbtn_store_passphrase;
206 GtkWidget *spinbtn_store_passphrase;
207 GtkObject *spinbtn_store_passphrase_adj;
208 GtkWidget *checkbtn_passphrase_grab;
209 GtkWidget *checkbtn_gpg_warning;
213 static struct Interface {
214 /* GtkWidget *checkbtn_emacs; */
215 GtkWidget *checkbtn_show_msg_with_cursor;
216 GtkWidget *checkbtn_openunread;
217 GtkWidget *checkbtn_mark_as_read_on_newwin;
218 GtkWidget *checkbtn_openinbox;
219 GtkWidget *checkbtn_immedexec;
220 GtkWidget *checkbtn_addaddrbyclick;
221 GtkWidget *optmenu_recvdialog;
222 GtkWidget *optmenu_senddialog;
223 GtkWidget *checkbtn_no_recv_err_panel;
224 GtkWidget *checkbtn_close_recv_dialog;
225 GtkWidget *optmenu_nextunreadmsgdialog;
226 GtkWidget *entry_pixmap_theme;
227 GtkWidget *combo_pixmap_theme;
230 static struct Other {
231 GtkWidget *uri_combo;
232 GtkWidget *uri_entry;
233 GtkWidget *printcmd_entry;
234 GtkWidget *exteditor_combo;
235 GtkWidget *exteditor_entry;
236 GtkWidget *checkbtn_confonexit;
237 GtkWidget *checkbtn_cleanonexit;
238 GtkWidget *checkbtn_askonclean;
239 GtkWidget *checkbtn_warnqueued;
240 GtkWidget *checkbtn_cliplog;
241 GtkWidget *loglength_entry;
243 GtkWidget *checkbtn_ssl_ask_unknown_valid;
247 static struct MessageColorButtons {
248 GtkWidget *quote_level1_btn;
249 GtkWidget *quote_level2_btn;
250 GtkWidget *quote_level3_btn;
252 GtkWidget *tgt_folder_btn;
253 GtkWidget *signature_btn;
256 static struct KeybindDialog {
261 static GtkWidget *font_sel_win;
262 static guint font_sel_conn_id;
263 static GtkWidget *quote_color_win;
264 static GtkWidget *color_dialog;
266 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam);
267 static void prefs_common_charset_set_optmenu (PrefParam *pparam);
268 static void prefs_common_recv_dialog_newmail_notify_toggle_cb (GtkWidget *w,
270 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam);
271 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam);
272 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam);
273 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam);
274 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam);
275 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam);
278 static void prefs_dictionary_set_data_from_optmenu (PrefParam *param);
279 static void prefs_dictionary_set_optmenu (PrefParam *pparam);
280 static void prefs_speller_sugmode_set_data_from_optmenu (PrefParam *pparam);
281 static void prefs_speller_sugmode_set_optmenu (PrefParam *pparam);
286 parameter name, default value, pointer to the prefs variable, data type,
287 pointer to the widget pointer,
288 pointer to the function for data setting,
289 pointer to the function for widget setting
292 static PrefParam param[] = {
294 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
295 &receive.checkbtn_incext,
296 prefs_set_data_from_toggle, prefs_set_toggle},
297 {"ext_inc_path", DEFAULT_INC_PATH, &prefs_common.extinc_cmd, P_STRING,
298 &receive.entry_incext,
299 prefs_set_data_from_entry, prefs_set_entry},
301 {"inc_local", "TRUE", &prefs_common.inc_local, P_BOOL,
302 &receive.checkbtn_local,
303 prefs_set_data_from_toggle, prefs_set_toggle},
304 {"filter_on_inc_local", "FALSE", &prefs_common.filter_on_inc, P_BOOL,
305 &receive.checkbtn_filter_on_inc,
306 prefs_set_data_from_toggle, prefs_set_toggle},
307 {"spool_path", DEFAULT_SPOOL_PATH, &prefs_common.spool_path, P_STRING,
308 &receive.entry_spool,
309 prefs_set_data_from_entry, prefs_set_entry},
311 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
312 &receive.checkbtn_autochk,
313 prefs_set_data_from_toggle, prefs_set_toggle},
314 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
315 &receive.spinbtn_autochk,
316 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
317 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
318 &receive.checkbtn_chkonstartup,
319 prefs_set_data_from_toggle, prefs_set_toggle},
320 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
321 P_BOOL, &receive.checkbtn_scan_after_inc,
322 prefs_set_data_from_toggle, prefs_set_toggle},
323 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
324 P_BOOL, &receive.checkbtn_newmail_manu,
325 prefs_set_data_from_toggle, prefs_set_toggle},
326 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
327 P_BOOL, &receive.checkbtn_newmail_auto,
328 prefs_set_data_from_toggle, prefs_set_toggle},
329 {"newmail_notify_cmd", "", &prefs_common.newmail_notify_cmd, P_STRING,
330 &receive.entry_newmail_notify_cmd,
331 prefs_set_data_from_entry, prefs_set_entry},
333 {"max_news_articles", "300", &prefs_common.max_articles, P_INT,
334 &receive.spinbtn_maxarticle,
335 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
338 {"use_ext_sendmail", "FALSE", &prefs_common.use_extsend, P_BOOL,
339 &p_send.checkbtn_extsend,
340 prefs_set_data_from_toggle, prefs_set_toggle},
341 {"ext_sendmail_cmd", DEFAULT_SENDMAIL_CMD,
342 &prefs_common.extsend_cmd, P_STRING,
343 &p_send.entry_extsend, prefs_set_data_from_entry, prefs_set_entry},
344 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
345 &p_send.checkbtn_savemsg,
346 prefs_set_data_from_toggle, prefs_set_toggle},
347 {"queue_message", "FALSE", &prefs_common.queue_msg, P_BOOL,
348 &p_send.checkbtn_queuemsg,
349 prefs_set_data_from_toggle, prefs_set_toggle},
351 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
352 &p_send.optmenu_charset,
353 prefs_common_charset_set_data_from_optmenu,
354 prefs_common_charset_set_optmenu},
357 {"auto_signature", "TRUE", &prefs_common.auto_sig, P_BOOL,
358 &compose.checkbtn_autosig,
359 prefs_set_data_from_toggle, prefs_set_toggle},
360 {"signature_separator", "-- ", &prefs_common.sig_sep, P_STRING,
361 &compose.entry_sigsep, prefs_set_data_from_entry, prefs_set_entry},
363 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
364 &compose.checkbtn_autoextedit,
365 prefs_set_data_from_toggle, prefs_set_toggle},
366 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
367 P_BOOL, &compose.checkbtn_forward_as_attachment,
368 prefs_set_data_from_toggle, prefs_set_toggle},
369 {"redirect_keep_from", "FALSE",
370 &prefs_common.redirect_keep_from, P_BOOL,
371 &compose.checkbtn_redirect_keep_from,
372 prefs_set_data_from_toggle, prefs_set_toggle},
373 {"undo_level", "50", &prefs_common.undolevels, P_INT,
374 &compose.spinbtn_undolevel,
375 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
376 {"block_cursor", "FALSE", &prefs_common.block_cursor,
377 P_BOOL, &compose.checkbtn_block_cursor,
378 prefs_set_data_from_toggle, prefs_set_toggle},
380 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
381 &compose.spinbtn_linewrap,
382 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
383 {"linewrap_quotation", "FALSE", &prefs_common.linewrap_quote, P_BOOL,
384 &compose.checkbtn_wrapquote,
385 prefs_set_data_from_toggle, prefs_set_toggle},
386 {"linewrap_auto", "FALSE", &prefs_common.autowrap, P_BOOL,
387 &compose.checkbtn_autowrap,
388 prefs_set_data_from_toggle, prefs_set_toggle},
389 {"linewrap_before_sending", "FALSE",
390 &prefs_common.linewrap_at_send, P_BOOL,
391 &compose.checkbtn_wrapatsend,
392 prefs_set_data_from_toggle, prefs_set_toggle},
393 {"smart_wrapping", "TRUE", &prefs_common.smart_wrapping,
394 P_BOOL, &compose.checkbtn_smart_wrapping,
395 prefs_set_data_from_toggle, prefs_set_toggle},
396 {"autosave", "FALSE", &prefs_common.autosave,
397 P_BOOL, &compose.checkbtn_autosave,
398 prefs_set_data_from_toggle, prefs_set_toggle},
399 {"autosave_length", "50", &prefs_common.autosave_length,
400 P_INT, &compose.entry_autosave_length,
401 prefs_set_data_from_entry, prefs_set_entry},
403 {"enable_aspell", "TRUE", &prefs_common.enable_aspell,
404 P_BOOL, &spelling.checkbtn_enable_aspell,
405 prefs_set_data_from_toggle, prefs_set_toggle},
406 {"aspell_path", ASPELL_PATH, &prefs_common.aspell_path,
407 P_STRING, &spelling.entry_aspell_path,
408 prefs_set_data_from_entry, prefs_set_entry},
409 {"dictionary", "", &prefs_common.dictionary,
410 P_STRING, &spelling.optmenu_dictionary,
411 prefs_dictionary_set_data_from_optmenu, prefs_dictionary_set_optmenu },
412 {"aspell_sugmode", "1", &prefs_common.aspell_sugmode,
413 P_INT, &spelling.optmenu_sugmode,
414 prefs_speller_sugmode_set_data_from_optmenu, prefs_speller_sugmode_set_optmenu },
415 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate,
416 P_BOOL, &spelling.checkbtn_use_alternate,
417 prefs_set_data_from_toggle, prefs_set_toggle},
418 {"check_while_typing", "TRUE", &prefs_common.check_while_typing,
419 P_BOOL, &spelling.checkbtn_check_while_typing,
420 prefs_set_data_from_toggle, prefs_set_toggle},
421 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_INT,
424 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
425 &compose.checkbtn_reply_with_quote, prefs_set_data_from_toggle, prefs_set_toggle},
427 /* Account autoselection */
428 {"reply_account_autoselect", "TRUE",
429 &prefs_common.reply_account_autosel, P_BOOL,
430 &compose.checkbtn_reply_account_autosel,
431 prefs_set_data_from_toggle, prefs_set_toggle},
432 {"forward_account_autoselect", "TRUE",
433 &prefs_common.forward_account_autosel, P_BOOL,
434 &compose.checkbtn_forward_account_autosel,
435 prefs_set_data_from_toggle, prefs_set_toggle},
436 {"reedit_account_autoselect", "TRUE",
437 &prefs_common.reedit_account_autosel, P_BOOL,
438 &compose.checkbtn_reedit_account_autosel,
439 prefs_set_data_from_toggle, prefs_set_toggle},
441 {"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
442 &compose.checkbtn_default_reply_list,
443 prefs_set_data_from_toggle, prefs_set_toggle},
445 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
449 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
450 "e.entry_quotemark, prefs_set_data_from_entry, prefs_set_entry},
451 {"reply_quote_format", "On %d\\n%f wrote:\\n\\n%Q",
452 &prefs_common.quotefmt, P_STRING, "e.text_quotefmt,
453 prefs_set_data_from_text, prefs_set_text},
455 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
456 "e.entry_fw_quotemark,
457 prefs_set_data_from_entry, prefs_set_entry},
458 {"forward_quote_format",
459 "\\n\\nBegin forwarded message:\\n\\n"
460 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
461 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M",
462 &prefs_common.fw_quotefmt, P_STRING, "e.text_fw_quotefmt,
463 prefs_set_data_from_text, prefs_set_text},
464 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
465 "e.entry_quote_chars, prefs_set_data_from_entry, prefs_set_entry},
468 {"widget_font", NULL, &prefs_common.widgetfont, P_STRING,
470 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
471 &prefs_common.textfont, P_STRING,
472 &display.entry_textfont,
473 prefs_set_data_from_entry, prefs_set_entry},
474 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
475 &prefs_common.smallfont, P_STRING,
476 &display.entry_smallfont,
477 prefs_set_data_from_entry, prefs_set_entry},
478 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
479 &prefs_common.boldfont, P_STRING,
480 &display.entry_boldfont,
481 prefs_set_data_from_entry, prefs_set_entry},
482 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
483 &prefs_common.normalfont, P_STRING,
484 &display.entry_normalfont,
485 prefs_set_data_from_entry, prefs_set_entry},
488 {"display_folder_unread_num", "TRUE",
489 &prefs_common.display_folder_unread, P_BOOL,
490 &display.chkbtn_folder_unread,
491 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 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
507 &display.chkbtn_hscrollbar,
508 prefs_set_data_from_toggle, prefs_set_toggle},
509 {"use_address_book", "TRUE", &prefs_common.use_addr_book, P_BOOL,
510 &display.chkbtn_useaddrbook,
511 prefs_set_data_from_toggle, prefs_set_toggle},
512 {"date_format", "%y/%m/%d(%a) %H:%M", &prefs_common.date_format,
513 P_STRING, &display.entry_datefmt,
514 prefs_set_data_from_entry, prefs_set_entry},
515 {"expand_thread", "TRUE", &prefs_common.expand_thread, P_BOOL,
516 &display.chkbtn_expand_thread,
517 prefs_set_data_from_toggle, prefs_set_toggle},
518 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
519 &display.chkbtn_bold_unread,
520 prefs_set_data_from_toggle, prefs_set_toggle},
522 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
524 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
526 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
528 {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
531 {"folderview_vscrollbar_policy", "0",
532 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
535 {"summary_col_show_mark", "TRUE",
536 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
537 {"summary_col_show_unread", "TRUE",
538 &prefs_common.summary_col_visible[S_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
539 {"summary_col_show_mime", "TRUE",
540 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
541 {"summary_col_show_subject", "TRUE",
542 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
543 {"summary_col_show_from", "TRUE",
544 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
545 {"summary_col_show_date", "TRUE",
546 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
547 {"summary_col_show_size", "TRUE",
548 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
549 {"summary_col_show_number", "FALSE",
550 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
551 {"summary_col_show_score", "FALSE",
552 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
553 {"summary_col_show_locked", "FALSE",
554 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
556 {"summary_col_pos_mark", "0",
557 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
558 {"summary_col_pos_unread", "1",
559 &prefs_common.summary_col_pos[S_COL_UNREAD], P_INT, NULL, NULL, NULL},
560 {"summary_col_pos_mime", "2",
561 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
562 {"summary_col_pos_subject", "3",
563 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
564 {"summary_col_pos_from", "4",
565 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
566 {"summary_col_pos_date", "5",
567 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
568 {"summary_col_pos_size", "6",
569 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
570 {"summary_col_pos_number", "7",
571 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
572 {"summary_col_pos_score", "8",
573 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
574 {"summary_col_pos_locked", "9",
575 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
577 {"summary_col_size_mark", "10",
578 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
579 {"summary_col_size_unread", "13",
580 &prefs_common.summary_col_size[S_COL_UNREAD], P_INT, NULL, NULL, NULL},
581 {"summary_col_size_mime", "10",
582 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
583 {"summary_col_size_subject", "200",
584 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
585 {"summary_col_size_from", "120",
586 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
587 {"summary_col_size_date", "118",
588 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
589 {"summary_col_size_size", "45",
590 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
591 {"summary_col_size_number", "40",
592 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
593 {"summary_col_size_score", "40",
594 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
595 {"summary_col_size_locked", "13",
596 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
599 {"folderview_width", "179", &prefs_common.folderview_width, P_INT,
601 {"folderview_height", "600", &prefs_common.folderview_height, P_INT,
603 {"folder_col_folder", "150", &prefs_common.folder_col_folder, P_INT,
605 {"folder_col_new", "32", &prefs_common.folder_col_new, P_INT,
607 {"folder_col_unread", "32", &prefs_common.folder_col_unread, P_INT,
609 {"folder_col_total", "32", &prefs_common.folder_col_total, P_INT,
612 {"summaryview_width", "600", &prefs_common.summaryview_width, P_INT,
614 {"summaryview_height", "173", &prefs_common.summaryview_height, P_INT,
617 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
619 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
621 {"mainview_width", "600", &prefs_common.mainview_width, P_INT,
623 {"mainview_height", "600", &prefs_common.mainview_height, P_INT,
625 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
627 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
629 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
631 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
633 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
635 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
637 {"compose_width", "600", &prefs_common.compose_width, P_INT,
639 {"compose_height", "560", &prefs_common.compose_height, P_INT,
643 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
644 &message.chkbtn_enablecol,
645 prefs_set_data_from_toggle, prefs_set_toggle},
647 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_INT,
649 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_INT,
651 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_INT,
653 {"uri_color", "32512", &prefs_common.uri_col, P_INT,
655 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_INT,
657 {"signature_color", "7960953", &prefs_common.signature_col, P_INT,
659 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
660 P_BOOL, NULL, NULL, NULL},
662 {"convert_mb_alnum", "FALSE", &prefs_common.conv_mb_alnum, P_BOOL,
663 &message.chkbtn_mbalnum,
664 prefs_set_data_from_toggle, prefs_set_toggle},
665 {"display_header_pane", "TRUE", &prefs_common.display_header_pane,
666 P_BOOL, &message.chkbtn_disphdrpane,
667 prefs_set_data_from_toggle, prefs_set_toggle},
668 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
669 &message.chkbtn_disphdr,
670 prefs_set_data_from_toggle, prefs_set_toggle},
671 {"line_space", "2", &prefs_common.line_space, P_INT,
672 &message.spinbtn_linespc,
673 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
674 {"enable_head_space", "FALSE", &prefs_common.head_space, P_BOOL,
675 &message.chkbtn_headspc,
676 prefs_set_data_from_toggle, prefs_set_toggle},
678 {"enable_smooth_scroll", "FALSE",
679 &prefs_common.enable_smooth_scroll, P_BOOL,
680 &message.chkbtn_smoothscroll,
681 prefs_set_data_from_toggle, prefs_set_toggle},
682 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
683 &message.spinbtn_scrollstep,
684 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
685 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
686 &message.chkbtn_halfpage,
687 prefs_set_data_from_toggle, prefs_set_toggle},
689 {"display_img", "TRUE", &prefs_common.display_img, P_BOOL,
690 &message.chkbtn_display_img,
691 prefs_set_data_from_toggle, prefs_set_toggle},
692 {"resize_image", "TRUE", &prefs_common.resize_image, P_BOOL,
693 &message.chkbtn_resize_image,
694 prefs_set_data_from_toggle, prefs_set_toggle},
696 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
700 {"mime_image_viewer", "display '%s'",
701 &prefs_common.mime_image_viewer, P_STRING, NULL, NULL, NULL},
702 {"mime_audio_player", "play '%s'",
703 &prefs_common.mime_audio_player, P_STRING, NULL, NULL, NULL},
704 {"mime_open_command", "gedit '%s'",
705 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
709 {"auto_check_signatures", "TRUE",
710 &prefs_common.auto_check_signatures, P_BOOL,
711 &privacy.checkbtn_auto_check_signatures,
712 prefs_set_data_from_toggle, prefs_set_toggle},
713 {"gpg_signature_popup", "FALSE",
714 &prefs_common.gpg_signature_popup, P_BOOL,
715 &privacy.checkbtn_gpg_signature_popup,
716 prefs_set_data_from_toggle, prefs_set_toggle},
717 {"store_passphrase", "FALSE", &prefs_common.store_passphrase, P_BOOL,
718 &privacy.checkbtn_store_passphrase,
719 prefs_set_data_from_toggle, prefs_set_toggle},
720 {"store_passphrase_timeout", "0",
721 &prefs_common.store_passphrase_timeout, P_INT,
722 &privacy.spinbtn_store_passphrase,
723 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
725 {"passphrase_grab", "FALSE", &prefs_common.passphrase_grab, P_BOOL,
726 &privacy.checkbtn_passphrase_grab,
727 prefs_set_data_from_toggle, prefs_set_toggle},
728 #endif /* __MINGW32__ */
729 {"gpg_warning", "TRUE", &prefs_common.gpg_warning, P_BOOL,
730 &privacy.checkbtn_gpg_warning,
731 prefs_set_data_from_toggle, prefs_set_toggle},
732 #endif /* USE_GPGME */
735 {"separate_folder", "FALSE", &prefs_common.sep_folder, P_BOOL,
737 {"separate_message", "FALSE", &prefs_common.sep_msg, P_BOOL,
740 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
741 NULL, NULL, NULL}, */
742 {"show_message_with_cursor_key", "FALSE",
743 &prefs_common.show_msg_with_cursor_key,
744 P_BOOL, &interface.checkbtn_show_msg_with_cursor,
745 prefs_set_data_from_toggle, prefs_set_toggle},
746 {"open_unread_on_enter", "FALSE", &prefs_common.open_unread_on_enter,
747 P_BOOL, &interface.checkbtn_openunread,
748 prefs_set_data_from_toggle, prefs_set_toggle},
749 {"mark_as_read_on_new_window", "FALSE",
750 &prefs_common.mark_as_read_on_new_window,
751 P_BOOL, &interface.checkbtn_mark_as_read_on_newwin,
752 prefs_set_data_from_toggle, prefs_set_toggle},
753 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
754 P_BOOL, &interface.checkbtn_openinbox,
755 prefs_set_data_from_toggle, prefs_set_toggle},
756 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
757 &interface.checkbtn_immedexec,
758 prefs_set_data_from_toggle, prefs_set_toggle},
759 {"receive_dialog_mode", "1", &prefs_common.recv_dialog_mode, P_ENUM,
760 &interface.optmenu_recvdialog,
761 prefs_common_recv_dialog_set_data_from_optmenu,
762 prefs_common_recv_dialog_set_optmenu},
763 {"send_dialog_mode", "0", &prefs_common.send_dialog_mode, P_ENUM,
764 &interface.optmenu_senddialog,
765 prefs_common_send_dialog_set_data_from_optmenu,
766 prefs_common_send_dialog_set_optmenu},
767 {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
768 P_BOOL, &interface.checkbtn_no_recv_err_panel,
769 prefs_set_data_from_toggle, prefs_set_toggle},
770 {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
771 P_BOOL, &interface.checkbtn_close_recv_dialog,
772 prefs_set_data_from_toggle, prefs_set_toggle},
773 {"nextunreadmsg_dialog", NULL, &prefs_common.next_unread_msg_dialog, P_ENUM,
774 &interface.optmenu_nextunreadmsgdialog,
775 prefs_nextunreadmsgdialog_set_data_from_optmenu,
776 prefs_nextunreadmsgdialog_set_optmenu},
778 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
779 P_BOOL, &interface.checkbtn_addaddrbyclick,
780 prefs_set_data_from_toggle, prefs_set_toggle},
781 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
782 &prefs_common.pixmap_theme_path, P_STRING,
783 &interface.entry_pixmap_theme, prefs_set_data_from_entry, prefs_set_entry},
786 {"uri_open_command", "netscape -remote 'openURL(%s,raise)'",
787 &prefs_common.uri_cmd, P_STRING,
788 &other.uri_entry, prefs_set_data_from_entry, prefs_set_entry},
789 {"print_command", "lpr %s", &prefs_common.print_cmd, P_STRING,
790 &other.printcmd_entry, prefs_set_data_from_entry, prefs_set_entry},
791 {"ext_editor_command", "gedit %s",
792 &prefs_common.ext_editor_cmd, P_STRING,
793 &other.exteditor_entry, prefs_set_data_from_entry, prefs_set_entry},
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},
808 {"ssl_ask_unknown_valid", "TRUE", &prefs_common.ssl_ask_unknown_valid,
809 P_BOOL, &other.checkbtn_ssl_ask_unknown_valid,
810 prefs_set_data_from_toggle, prefs_set_toggle},
812 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
815 {"hide_score", "-9999", &prefs_common.kill_score, P_INT,
817 {"important_score", "1", &prefs_common.important_score, P_INT,
819 {"clip_log", "FALSE", &prefs_common.cliplog, P_BOOL,
820 &other.checkbtn_cliplog,
821 prefs_set_data_from_toggle, prefs_set_toggle},
822 {"log_length", "1000", &prefs_common.loglength, P_INT,
823 &other.loglength_entry,
824 prefs_set_data_from_entry, prefs_set_entry},
826 {"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
828 {"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
831 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
834 /* widget creating functions */
835 static void prefs_common_create (void);
836 static void prefs_receive_create (void);
837 static void prefs_send_create (void);
839 static void prefs_spelling_create (void);
841 static void prefs_compose_create (void);
842 static void prefs_quote_create (void);
843 static void prefs_display_create (void);
844 static void prefs_message_create (void);
846 static void prefs_privacy_create (void);
848 static void prefs_interface_create (void);
849 static void prefs_other_create (void);
851 static void date_format_ok_btn_clicked (GtkButton *button,
853 static void date_format_cancel_btn_clicked (GtkButton *button,
855 static void date_format_key_pressed (GtkWidget *keywidget,
858 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
861 static void date_format_entry_on_change (GtkEditable *editable,
863 static void date_format_select_row (GtkWidget *date_format_list,
866 GdkEventButton *event,
867 GtkWidget *date_format);
868 static GtkWidget *date_format_create (GtkButton *button,
871 static void prefs_quote_colors_dialog (void);
872 static void prefs_quote_colors_dialog_create (void);
873 static void prefs_quote_colors_key_pressed (GtkWidget *widget,
876 static void quote_color_set_dialog (GtkWidget *widget,
878 static void quote_colors_set_dialog_ok (GtkWidget *widget,
880 static void quote_colors_set_dialog_cancel (GtkWidget *widget,
882 static void quote_colors_set_dialog_key_pressed (GtkWidget *widget,
885 static void set_button_bg_color (GtkWidget *widget,
887 static void prefs_enable_message_color_toggled (void);
888 static void prefs_recycle_colors_toggled (GtkWidget *widget);
890 static void prefs_font_select (GtkButton *button, GtkEntry *entry);
892 static void prefs_font_selection_key_pressed (GtkWidget *widget,
895 static void prefs_font_selection_ok (GtkButton *button, GtkEntry *entry);
897 static void prefs_keybind_select (void);
898 static gint prefs_keybind_deleted (GtkWidget *widget,
901 static void prefs_keybind_key_pressed (GtkWidget *widget,
904 static void prefs_keybind_cancel (void);
905 static void prefs_keybind_apply_clicked (GtkWidget *widget);
907 static gint prefs_common_deleted (GtkWidget *widget,
910 static void prefs_common_key_pressed (GtkWidget *widget,
913 static void prefs_common_ok (void);
914 static void prefs_common_apply (void);
915 static void prefs_common_cancel (void);
917 void prefs_common_init() {
918 prefs_common.disphdr_list = NULL;
921 void prefs_common_read_config(void)
925 gchar buf[PREFSBUFSIZE];
927 prefs_read_config(param, "Common", COMMON_RC);
929 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
931 if ((fp = fopen(path, "rb")) == NULL) {
932 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
937 while (fgets(buf, sizeof(buf), fp) != NULL) {
939 if (buf[0] == '\0') continue;
940 prefs_common.mime_open_cmd_history =
941 add_history(prefs_common.mime_open_cmd_history, buf);
945 prefs_common.mime_open_cmd_history =
946 g_list_reverse(prefs_common.mime_open_cmd_history);
949 void prefs_common_save_config(void)
955 prefs_save_config(param, "Common", COMMON_RC);
957 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
959 if ((fp = fopen(path, "wb")) == NULL) {
960 FILE_OP_ERROR(path, "fopen");
965 for (cur = prefs_common.mime_open_cmd_history;
966 cur != NULL; cur = cur->next) {
967 fputs((gchar *)cur->data, fp);
975 void prefs_common_open(void)
977 if (prefs_rc_is_readonly(COMMON_RC))
982 if (!dialog.window) {
983 prefs_common_create();
986 manage_window_set_transient(GTK_WINDOW(dialog.window));
987 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
988 gtk_widget_grab_focus(dialog.ok_btn);
990 prefs_set_dialog(param);
992 gtk_widget_show(dialog.window);
995 static void prefs_common_create(void)
999 debug_print("Creating common preferences window...\n");
1001 prefs_dialog_create(&dialog);
1002 gtk_window_set_title (GTK_WINDOW(dialog.window),
1003 _("Common Preferences"));
1004 gtk_signal_connect (GTK_OBJECT(dialog.window), "delete_event",
1005 GTK_SIGNAL_FUNC(prefs_common_deleted), NULL);
1006 gtk_signal_connect (GTK_OBJECT(dialog.window), "key_press_event",
1007 GTK_SIGNAL_FUNC(prefs_common_key_pressed), NULL);
1008 MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
1010 gtk_signal_connect (GTK_OBJECT(dialog.ok_btn), "clicked",
1011 GTK_SIGNAL_FUNC(prefs_common_ok), NULL);
1012 gtk_signal_connect (GTK_OBJECT(dialog.apply_btn), "clicked",
1013 GTK_SIGNAL_FUNC(prefs_common_apply), NULL);
1014 gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
1015 GTK_SIGNAL_FUNC(prefs_common_cancel),
1016 GTK_OBJECT(dialog.window));
1018 /* create all widgets on notebook */
1019 prefs_receive_create();
1020 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
1021 prefs_send_create();
1022 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
1023 prefs_compose_create();
1024 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
1026 prefs_spelling_create();
1027 SET_NOTEBOOK_LABEL(dialog.notebook, _("Spell Checker"), page++);
1029 prefs_quote_create();
1030 SET_NOTEBOOK_LABEL(dialog.notebook, _("Quote"), page++);
1031 prefs_display_create();
1032 SET_NOTEBOOK_LABEL(dialog.notebook, _("Display"), page++);
1033 prefs_message_create();
1034 SET_NOTEBOOK_LABEL(dialog.notebook, _("Message"), page++);
1036 prefs_privacy_create();
1037 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
1039 prefs_interface_create();
1040 SET_NOTEBOOK_LABEL(dialog.notebook, _("Interface"), page++);
1041 prefs_other_create();
1042 SET_NOTEBOOK_LABEL(dialog.notebook, _("Other"), page++);
1044 gtk_widget_show_all(dialog.window);
1047 static void prefs_receive_create(void)
1051 GtkWidget *frame_incext;
1052 GtkWidget *checkbtn_incext;
1054 GtkWidget *label_incext;
1055 GtkWidget *entry_incext;
1056 /* GtkWidget *button_incext; */
1058 GtkWidget *frame_spool;
1059 GtkWidget *checkbtn_local;
1060 GtkWidget *checkbtn_filter_on_inc;
1061 GtkWidget *label_spool;
1062 GtkWidget *entry_spool;
1064 GtkWidget *hbox_autochk;
1065 GtkWidget *checkbtn_autochk;
1066 GtkWidget *label_autochk1;
1067 GtkObject *spinbtn_autochk_adj;
1068 GtkWidget *spinbtn_autochk;
1069 GtkWidget *label_autochk2;
1070 GtkWidget *checkbtn_chkonstartup;
1071 GtkWidget *checkbtn_scan_after_inc;
1074 GtkWidget *frame_newmail;
1075 GtkWidget *hbox_newmail_notify;
1076 GtkWidget *checkbtn_newmail_auto;
1077 GtkWidget *checkbtn_newmail_manu;
1078 GtkWidget *entry_newmail_notify_cmd;
1079 GtkWidget *label_newmail_notify_cmd;
1081 GtkWidget *frame_news;
1082 GtkWidget *label_maxarticle;
1083 GtkWidget *spinbtn_maxarticle;
1084 GtkObject *spinbtn_maxarticle_adj;
1086 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1087 gtk_widget_show (vbox1);
1088 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1089 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1091 PACK_FRAME(vbox1, frame_incext, _("External program"));
1093 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1094 gtk_widget_show (vbox2);
1095 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
1096 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1098 /* Use of external incorporation program */
1099 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
1100 _("Use external program for incorporation"));
1102 hbox = gtk_hbox_new (FALSE, 8);
1103 gtk_widget_show (hbox);
1104 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1105 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1107 label_incext = gtk_label_new (_("Command"));
1108 gtk_widget_show (label_incext);
1109 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1111 entry_incext = gtk_entry_new ();
1112 gtk_widget_show (entry_incext);
1113 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1116 button_incext = gtk_button_new_with_label ("... ");
1117 gtk_widget_show (button_incext);
1118 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1121 PACK_FRAME(vbox1, frame_spool, _("Local spool"));
1123 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1124 gtk_widget_show (vbox2);
1125 gtk_container_add (GTK_CONTAINER (frame_spool), vbox2);
1126 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1128 hbox = gtk_hbox_new (FALSE, 32);
1129 gtk_widget_show (hbox);
1130 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1132 PACK_CHECK_BUTTON (hbox, checkbtn_local, _("Incorporate from spool"));
1133 PACK_CHECK_BUTTON (hbox, checkbtn_filter_on_inc,
1134 _("Filter on incorporation"));
1135 SET_TOGGLE_SENSITIVITY (checkbtn_local, checkbtn_filter_on_inc);
1137 hbox = gtk_hbox_new (FALSE, 8);
1138 gtk_widget_show (hbox);
1139 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1140 SET_TOGGLE_SENSITIVITY (checkbtn_local, hbox);
1142 label_spool = gtk_label_new (_("Spool directory"));
1143 gtk_widget_show (label_spool);
1144 gtk_box_pack_start (GTK_BOX (hbox), label_spool, FALSE, FALSE, 0);
1146 entry_spool = gtk_entry_new ();
1147 gtk_widget_show (entry_spool);
1148 gtk_box_pack_start (GTK_BOX (hbox), entry_spool, TRUE, TRUE, 0);
1150 vbox2 = gtk_vbox_new (FALSE, 0);
1151 gtk_widget_show (vbox2);
1152 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1155 hbox_autochk = gtk_hbox_new (FALSE, 8);
1156 gtk_widget_show (hbox_autochk);
1157 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1159 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1160 _("Auto-check new mail"));
1162 label_autochk1 = gtk_label_new (_("every"));
1163 gtk_widget_show (label_autochk1);
1164 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1166 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1167 spinbtn_autochk = gtk_spin_button_new
1168 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1169 gtk_widget_show (spinbtn_autochk);
1170 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1171 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1172 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1174 label_autochk2 = gtk_label_new (_("minute(s)"));
1175 gtk_widget_show (label_autochk2);
1176 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1178 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1179 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1180 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1182 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1183 _("Check new mail on startup"));
1184 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1185 _("Update all local folders after incorporation"));
1188 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1190 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1191 gtk_widget_show (vbox2);
1192 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1193 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1195 hbox = gtk_hbox_new (TRUE, 8);
1196 gtk_widget_show (hbox);
1197 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1198 _("after autochecking"));
1199 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1200 _("after manual checking"));
1201 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1202 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1203 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1205 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1206 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1209 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1210 gtk_widget_show (hbox);
1211 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1214 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1215 "(use %d as number of new "
1217 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1219 gtk_widget_show (label_newmail_notify_cmd);
1220 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1221 label_newmail_notify_cmd, FALSE, FALSE, 0);
1223 entry_newmail_notify_cmd = gtk_entry_new ();
1224 gtk_widget_show (entry_newmail_notify_cmd);
1225 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1226 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1228 gtk_widget_set_sensitive(hbox_newmail_notify,
1229 prefs_common.newmail_notify_auto ||
1230 prefs_common.newmail_notify_manu);
1232 PACK_FRAME(vbox1, frame_news, _("News"));
1234 hbox = gtk_hbox_new (FALSE, 8);
1235 gtk_widget_show (hbox);
1236 gtk_container_add (GTK_CONTAINER (frame_news), hbox);
1237 gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
1239 label_maxarticle = gtk_label_new
1240 (_("Maximum number of articles to download\n"
1241 "(unlimited if 0 is specified)"));
1242 gtk_widget_show (label_maxarticle);
1243 gtk_box_pack_start (GTK_BOX (hbox), label_maxarticle, FALSE, FALSE, 0);
1244 gtk_label_set_justify (GTK_LABEL (label_maxarticle), GTK_JUSTIFY_LEFT);
1246 spinbtn_maxarticle_adj =
1247 gtk_adjustment_new (300, 0, 10000, 10, 100, 100);
1248 spinbtn_maxarticle = gtk_spin_button_new
1249 (GTK_ADJUSTMENT (spinbtn_maxarticle_adj), 10, 0);
1250 gtk_widget_show (spinbtn_maxarticle);
1251 gtk_box_pack_start (GTK_BOX (hbox), spinbtn_maxarticle,
1253 gtk_widget_set_usize (spinbtn_maxarticle, 64, -1);
1254 gtk_spin_button_set_numeric
1255 (GTK_SPIN_BUTTON (spinbtn_maxarticle), TRUE);
1257 receive.checkbtn_incext = checkbtn_incext;
1258 receive.entry_incext = entry_incext;
1259 /* receive.button_incext = button_incext; */
1261 receive.checkbtn_local = checkbtn_local;
1262 receive.checkbtn_filter_on_inc = checkbtn_filter_on_inc;
1263 receive.entry_spool = entry_spool;
1265 receive.checkbtn_autochk = checkbtn_autochk;
1266 receive.spinbtn_autochk = spinbtn_autochk;
1267 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1269 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1270 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1273 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1274 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1275 receive.hbox_newmail_notify = hbox_newmail_notify;
1276 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1278 receive.spinbtn_maxarticle = spinbtn_maxarticle;
1279 receive.spinbtn_maxarticle_adj = spinbtn_maxarticle_adj;
1282 static void prefs_send_create(void)
1286 GtkWidget *frame_extsend;
1287 GtkWidget *vbox_extsend;
1288 GtkWidget *checkbtn_extsend;
1290 GtkWidget *label_extsend;
1291 GtkWidget *entry_extsend;
1292 /* GtkWidget *button_extsend; */
1293 GtkWidget *checkbtn_savemsg;
1294 GtkWidget *checkbtn_queuemsg;
1295 GtkWidget *label_outcharset;
1297 GtkWidget *optmenu_menu;
1298 GtkWidget *menuitem;
1299 GtkWidget *label_charset_desc;
1301 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1302 gtk_widget_show (vbox1);
1303 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1304 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1306 PACK_FRAME(vbox1, frame_extsend, _("External program"));
1308 vbox_extsend = gtk_vbox_new (FALSE, VSPACING_NARROW);
1309 gtk_widget_show (vbox_extsend);
1310 gtk_container_add (GTK_CONTAINER (frame_extsend), vbox_extsend);
1311 gtk_container_set_border_width (GTK_CONTAINER (vbox_extsend), 8);
1313 PACK_CHECK_BUTTON (vbox_extsend, checkbtn_extsend,
1314 _("Use external program for sending"));
1316 hbox1 = gtk_hbox_new (FALSE, 8);
1317 gtk_widget_show (hbox1);
1318 gtk_box_pack_start (GTK_BOX (vbox_extsend), hbox1, FALSE, FALSE, 0);
1319 SET_TOGGLE_SENSITIVITY(checkbtn_extsend, hbox1);
1321 label_extsend = gtk_label_new (_("Command"));
1322 gtk_widget_show (label_extsend);
1323 gtk_box_pack_start (GTK_BOX (hbox1), label_extsend, FALSE, FALSE, 0);
1325 entry_extsend = gtk_entry_new ();
1326 gtk_widget_show (entry_extsend);
1327 gtk_box_pack_start (GTK_BOX (hbox1), entry_extsend, TRUE, TRUE, 0);
1330 button_extsend = gtk_button_new_with_label ("... ");
1331 gtk_widget_show (button_extsend);
1332 gtk_box_pack_start (GTK_BOX (hbox1), button_extsend, FALSE, FALSE, 0);
1335 vbox2 = gtk_vbox_new (FALSE, 0);
1336 gtk_widget_show (vbox2);
1337 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1339 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1340 _("Save sent messages to Sent"));
1341 PACK_CHECK_BUTTON (vbox2, checkbtn_queuemsg,
1342 _("Queue messages that fail to send"));
1344 hbox1 = gtk_hbox_new (FALSE, 8);
1345 gtk_widget_show (hbox1);
1346 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1348 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1349 gtk_widget_show (label_outcharset);
1350 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1352 optmenu = gtk_option_menu_new ();
1353 gtk_widget_show (optmenu);
1354 gtk_box_pack_start (GTK_BOX (hbox1), optmenu, FALSE, FALSE, 0);
1356 optmenu_menu = gtk_menu_new ();
1358 #define SET_MENUITEM(str, charset) \
1360 MENUITEM_ADD(optmenu_menu, menuitem, str, charset); \
1363 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1364 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1366 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1368 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1369 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1370 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1371 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1372 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1373 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1374 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1376 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1378 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1380 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1381 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1383 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1385 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1386 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1388 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1389 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1391 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1392 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1394 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1395 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1396 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1398 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu), optmenu_menu);
1400 hbox1 = gtk_hbox_new (FALSE, 8);
1401 gtk_widget_show (hbox1);
1402 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1404 label_charset_desc = gtk_label_new
1405 (_("If `Automatic' is selected, the optimal encoding\n"
1406 "for the current locale will be used."));
1407 gtk_widget_show (label_charset_desc);
1408 gtk_box_pack_start (GTK_BOX (hbox1), label_charset_desc,
1410 gtk_label_set_justify(GTK_LABEL (label_charset_desc), GTK_JUSTIFY_LEFT);
1412 p_send.checkbtn_extsend = checkbtn_extsend;
1413 p_send.entry_extsend = entry_extsend;
1414 /* p_send.button_extsend = button_extsend; */
1416 p_send.checkbtn_savemsg = checkbtn_savemsg;
1417 p_send.checkbtn_queuemsg = checkbtn_queuemsg;
1419 p_send.optmenu_charset = optmenu;
1422 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1426 toggled = gtk_toggle_button_get_active
1427 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1428 gtk_toggle_button_get_active
1429 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1430 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1434 static void prefs_dictionary_set_data_from_optmenu(PrefParam *param)
1437 gchar *dict_fullname;
1439 g_return_if_fail(param);
1440 g_return_if_fail(param->data);
1441 g_return_if_fail(param->widget);
1442 g_return_if_fail(*(param->widget));
1444 dict_fullname = gtkaspell_get_dictionary_menu_active_item
1445 (gtk_option_menu_get_menu(GTK_OPTION_MENU(*(param->widget))));
1446 str = *((gchar **) param->data);
1449 *((gchar **) param->data) = dict_fullname;
1452 static void prefs_dictionary_set_optmenu(PrefParam *pparam)
1455 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
1457 GtkWidget *menuitem;
1461 g_return_if_fail(optmenu != NULL);
1462 g_return_if_fail(pparam->data != NULL);
1464 if (*(gchar **) pparam->data) {
1465 menu = gtk_option_menu_get_menu(optmenu);
1466 for (cur = GTK_MENU_SHELL(menu)->children;
1467 cur != NULL; cur = cur->next) {
1468 menuitem = GTK_WIDGET(cur->data);
1469 dict_name = gtk_object_get_data(GTK_OBJECT(menuitem),
1471 if (!strcmp2(dict_name, *((gchar **)pparam->data))) {
1472 gtk_option_menu_set_history(optmenu, n);
1479 gtk_option_menu_set_history(optmenu, 0);
1480 prefs_dictionary_set_data_from_optmenu(pparam);
1483 static void prefs_speller_sugmode_set_data_from_optmenu(PrefParam *param)
1486 g_return_if_fail(param);
1487 g_return_if_fail(param->data);
1488 g_return_if_fail(param->widget);
1489 g_return_if_fail(*(param->widget));
1491 sugmode = gtkaspell_get_sugmode_from_option_menu
1492 (GTK_OPTION_MENU(*(param->widget)));
1493 *((gint *) param->data) = sugmode;
1496 static void prefs_speller_sugmode_set_optmenu(PrefParam *pparam)
1498 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
1501 g_return_if_fail(optmenu != NULL);
1502 g_return_if_fail(pparam->data != NULL);
1504 sugmode = *(gint *) pparam->data;
1505 gtkaspell_sugmode_option_menu_set(optmenu, sugmode);
1509 static void prefs_spelling_checkbtn_enable_aspell_toggle_cb
1515 toggled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1517 gtk_widget_set_sensitive(spelling.entry_aspell_path, toggled);
1518 gtk_widget_set_sensitive(spelling.optmenu_dictionary, toggled);
1519 gtk_widget_set_sensitive(spelling.optmenu_sugmode, toggled);
1520 gtk_widget_set_sensitive(spelling.btn_aspell_path, toggled);
1521 gtk_widget_set_sensitive(spelling.misspelled_btn, toggled);
1522 gtk_widget_set_sensitive(spelling.checkbtn_use_alternate, toggled);
1523 gtk_widget_set_sensitive(spelling.checkbtn_check_while_typing, toggled);
1526 static void prefs_spelling_btn_aspell_path_clicked_cb(GtkWidget *widget,
1529 gchar *file_path, *tmp;
1530 GtkWidget *new_menu;
1532 file_path = filesel_select_file(_("Select dictionaries location"),
1533 prefs_common.aspell_path);
1534 if (file_path == NULL) {
1538 tmp=g_dirname(file_path);
1540 if (prefs_common.aspell_path)
1541 g_free(prefs_common.aspell_path);
1542 prefs_common.aspell_path = g_strdup_printf("%s%s",tmp,
1545 new_menu = gtkaspell_dictionary_option_menu_new(prefs_common.aspell_path);
1546 gtk_option_menu_set_menu(GTK_OPTION_MENU(spelling.optmenu_dictionary),
1549 gtk_entry_set_text(GTK_ENTRY(spelling.entry_aspell_path),
1550 prefs_common.aspell_path);
1551 /* select first one */
1552 gtk_option_menu_set_history(GTK_OPTION_MENU(
1553 spelling.optmenu_dictionary), 0);
1555 if (prefs_common.dictionary)
1556 g_free(prefs_common.dictionary);
1558 prefs_common.dictionary =
1559 gtkaspell_get_dictionary_menu_active_item(
1560 gtk_option_menu_get_menu(
1562 spelling.optmenu_dictionary)));
1568 static void prefs_spelling_create()
1571 GtkWidget *frame_spell;
1572 GtkWidget *vbox_spell;
1573 GtkWidget *hbox_aspell_path;
1574 GtkWidget *checkbtn_enable_aspell;
1575 GtkWidget *label_aspell_path;
1576 GtkWidget *entry_aspell_path;
1577 GtkWidget *btn_aspell_path;
1578 GtkWidget *spell_table;
1579 GtkWidget *label_dictionary;
1580 GtkWidget *optmenu_dictionary;
1581 GtkWidget *sugmode_label;
1582 GtkWidget *sugmode_optmenu;
1583 GtkWidget *checkbtn_use_alternate;
1584 GtkWidget *help_label;
1585 GtkWidget *checkbtn_check_while_typing;
1586 GtkWidget *color_label;
1587 GtkWidget *col_align;
1589 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1590 gtk_widget_show (vbox1);
1591 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1592 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1594 /* spell checker defaults */
1595 PACK_FRAME(vbox1, frame_spell, _("Global spelling checker settings"));
1596 vbox_spell = gtk_vbox_new(FALSE, VSPACING_NARROW);
1597 gtk_widget_show (vbox_spell);
1598 gtk_container_add(GTK_CONTAINER(frame_spell), vbox_spell);
1599 gtk_container_set_border_width(GTK_CONTAINER(vbox_spell), 8);
1601 PACK_CHECK_BUTTON(vbox_spell, checkbtn_enable_aspell,
1602 _("Enable spell checker"));
1604 gtk_signal_connect(GTK_OBJECT(checkbtn_enable_aspell), "toggled",
1605 GTK_SIGNAL_FUNC(prefs_spelling_checkbtn_enable_aspell_toggle_cb),
1608 /* Check while typing */
1609 PACK_CHECK_BUTTON(vbox_spell, checkbtn_check_while_typing,
1610 _("Check while typing"));
1612 PACK_CHECK_BUTTON(vbox_spell, checkbtn_use_alternate,
1613 _("Enable alternate dictionary"));
1615 help_label = gtk_label_new(_("Enabling alternate dictionary makes switching\nwith the last used dictionary faster."));
1616 gtk_widget_show(help_label);
1617 gtk_box_pack_start(GTK_BOX(vbox_spell), help_label, FALSE, TRUE, 0);
1619 spell_table = gtk_table_new(4, 3, FALSE);
1620 gtk_container_set_border_width (GTK_CONTAINER (spell_table), VSPACING);
1621 gtk_table_set_row_spacings(GTK_TABLE(spell_table), 8);
1622 gtk_table_set_col_spacings(GTK_TABLE(spell_table), 8);
1624 gtk_box_pack_start(GTK_BOX(vbox_spell), spell_table, TRUE, TRUE, 0);
1626 label_aspell_path = gtk_label_new (_("Dictionaries path:"));
1627 gtk_misc_set_alignment(GTK_MISC(label_aspell_path), 1.0, 0.5);
1628 gtk_widget_show(label_aspell_path);
1629 gtk_table_attach (GTK_TABLE (spell_table), label_aspell_path, 0, 1, 0,
1630 1, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1632 hbox_aspell_path = gtk_hbox_new (FALSE, 8);
1633 gtk_table_attach (GTK_TABLE (spell_table), hbox_aspell_path, 1, 2, 0,
1634 1, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1635 gtk_widget_show(hbox_aspell_path);
1637 entry_aspell_path = gtk_entry_new();
1638 gtk_widget_show(entry_aspell_path);
1639 gtk_box_pack_start(GTK_BOX(hbox_aspell_path), entry_aspell_path, TRUE,
1642 gtk_widget_set_sensitive(entry_aspell_path, prefs_common.enable_aspell);
1644 btn_aspell_path = gtk_button_new_with_label(" ... ");
1645 gtk_widget_show(btn_aspell_path);
1646 gtk_box_pack_start(GTK_BOX(hbox_aspell_path), btn_aspell_path, FALSE, FALSE, 0);
1647 gtk_widget_set_sensitive(btn_aspell_path, prefs_common.enable_aspell);
1649 gtk_signal_connect(GTK_OBJECT(btn_aspell_path), "clicked",
1650 GTK_SIGNAL_FUNC(prefs_spelling_btn_aspell_path_clicked_cb),
1653 label_dictionary = gtk_label_new(_("Default dictionary:"));
1654 gtk_misc_set_alignment(GTK_MISC(label_dictionary), 1.0, 0.5);
1655 gtk_widget_show(label_dictionary);
1656 gtk_table_attach (GTK_TABLE (spell_table), label_dictionary, 0, 1, 1, 2,
1657 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1659 optmenu_dictionary = gtk_option_menu_new();
1660 gtk_widget_show(optmenu_dictionary);
1661 gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu_dictionary),
1662 gtkaspell_dictionary_option_menu_new(
1663 prefs_common.aspell_path));
1664 gtk_table_attach (GTK_TABLE (spell_table), optmenu_dictionary, 1, 2, 1,
1665 2, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1666 gtk_widget_set_sensitive(optmenu_dictionary, prefs_common.enable_aspell);
1668 /* Suggestion mode */
1669 sugmode_label = gtk_label_new(_("Default suggestion mode"));
1670 gtk_misc_set_alignment(GTK_MISC(sugmode_label), 1.0, 0.5);
1671 gtk_widget_show(sugmode_label);
1672 gtk_table_attach(GTK_TABLE (spell_table), sugmode_label, 0, 1, 2, 3,
1673 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1675 sugmode_optmenu = gtk_option_menu_new();
1676 gtk_widget_show(sugmode_optmenu);
1677 gtk_option_menu_set_menu(GTK_OPTION_MENU(sugmode_optmenu),
1678 gtkaspell_sugmode_option_menu_new(prefs_common.aspell_sugmode));
1679 gtk_table_attach(GTK_TABLE(spell_table), sugmode_optmenu, 1, 2, 2, 3,
1680 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1681 gtk_widget_set_sensitive(sugmode_optmenu, prefs_common.enable_aspell);
1684 color_label = gtk_label_new(_("Misspelled word color:"));
1685 gtk_misc_set_alignment(GTK_MISC(color_label), 1.0, 0.5);
1686 gtk_table_attach (GTK_TABLE (spell_table), color_label, 0, 1, 3, 4,
1687 GTK_FILL, GTK_SHRINK, 0, 0);
1688 gtk_widget_show(color_label);
1690 col_align = gtk_alignment_new(0.0, 0.5, 0, 0);
1691 gtk_widget_show(col_align);
1692 gtk_table_attach (GTK_TABLE (spell_table), col_align, 1, 2, 3, 4,
1693 GTK_FILL, GTK_SHRINK, 0, 0);
1695 spelling.misspelled_btn = gtk_button_new_with_label ("");
1696 set_button_bg_color(spelling.misspelled_btn,
1697 prefs_common.misspelled_col);
1698 gtk_widget_set_usize (spelling.misspelled_btn, 30, 20);
1699 gtk_widget_set_sensitive(spelling.misspelled_btn, prefs_common.enable_aspell);
1700 gtk_signal_connect (GTK_OBJECT (spelling.misspelled_btn), "clicked",
1701 GTK_SIGNAL_FUNC(quote_color_set_dialog), "Misspelled word");
1702 gtk_container_add(GTK_CONTAINER(col_align), spelling.misspelled_btn);
1705 spelling.checkbtn_enable_aspell = checkbtn_enable_aspell;
1706 spelling.entry_aspell_path = entry_aspell_path;
1707 spelling.btn_aspell_path = btn_aspell_path;
1708 spelling.optmenu_dictionary = optmenu_dictionary;
1709 spelling.optmenu_sugmode = sugmode_optmenu;
1710 spelling.checkbtn_use_alternate = checkbtn_use_alternate;
1711 spelling.checkbtn_check_while_typing = checkbtn_check_while_typing;
1717 static void prefs_compose_create(void)
1723 GtkWidget *frame_sig;
1724 GtkWidget *vbox_sig;
1725 GtkWidget *checkbtn_autosig;
1726 GtkWidget *label_sigsep;
1727 GtkWidget *entry_sigsep;
1729 GtkWidget *checkbtn_autoextedit;
1731 GtkWidget *frame_autosel;
1732 GtkWidget *hbox_autosel;
1733 GtkWidget *checkbtn_reply_account_autosel;
1734 GtkWidget *checkbtn_forward_account_autosel;
1735 GtkWidget *checkbtn_reedit_account_autosel;
1737 GtkWidget *hbox_undolevel;
1738 GtkWidget *label_undolevel;
1739 GtkObject *spinbtn_undolevel_adj;
1740 GtkWidget *spinbtn_undolevel;
1742 GtkWidget *vbox_linewrap;
1747 GtkWidget *label_linewrap;
1748 GtkObject *spinbtn_linewrap_adj;
1749 GtkWidget *spinbtn_linewrap;
1750 GtkWidget *checkbtn_wrapquote;
1751 GtkWidget *checkbtn_autowrap;
1752 GtkWidget *checkbtn_wrapatsend;
1754 GtkWidget *checkbtn_default_reply_list;
1756 GtkWidget *checkbtn_forward_as_attachment;
1757 GtkWidget *checkbtn_redirect_keep_from;
1758 GtkWidget *checkbtn_smart_wrapping;
1759 GtkWidget *checkbtn_block_cursor;
1760 GtkWidget *frame_msgwrap;
1762 GtkWidget *hbox_autosave;
1763 GtkWidget *checkbtn_autosave;
1764 GtkWidget *entry_autosave_length;
1765 GtkWidget *label_autosave_length;
1767 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1768 gtk_widget_show (vbox1);
1769 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1770 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1772 PACK_FRAME(vbox1, frame_sig, _("Signature"));
1774 vbox_sig = gtk_vbox_new (FALSE, VSPACING_NARROW);
1775 gtk_widget_show (vbox_sig);
1776 gtk_container_add (GTK_CONTAINER (frame_sig), vbox_sig);
1777 gtk_container_set_border_width (GTK_CONTAINER (vbox_sig), 8);
1779 PACK_CHECK_BUTTON (vbox_sig, checkbtn_autosig,
1780 _("Insert signature automatically"));
1782 hbox1 = gtk_hbox_new (FALSE, 8);
1783 gtk_widget_show (hbox1);
1784 gtk_box_pack_start (GTK_BOX (vbox_sig), hbox1, TRUE, TRUE, 0);
1785 label_sigsep = gtk_label_new (_("Signature separator"));
1786 gtk_widget_show (label_sigsep);
1787 gtk_box_pack_start (GTK_BOX (hbox1), label_sigsep, FALSE, FALSE, 0);
1789 entry_sigsep = gtk_entry_new ();
1790 gtk_widget_show (entry_sigsep);
1791 gtk_box_pack_start (GTK_BOX (hbox1), entry_sigsep, FALSE, FALSE, 0);
1793 gtk_widget_set_usize (entry_sigsep, 64, -1);
1795 /* Account autoselection */
1796 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1798 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1799 gtk_widget_show (hbox_autosel);
1800 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1801 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1803 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1804 _("when replying"));
1805 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1806 _("when forwarding"));
1807 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1808 _("when re-editing"));
1810 vbox2 = gtk_vbox_new (FALSE, 0);
1811 gtk_widget_show (vbox2);
1812 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1814 PACK_CHECK_BUTTON (vbox2, checkbtn_default_reply_list,
1815 _("Reply button invokes mailing list reply"));
1817 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1818 _("Automatically launch the external editor"));
1820 hbox5 = gtk_hbox_new (FALSE, 8);
1821 gtk_widget_show (hbox5);
1822 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1824 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1825 _("Forward as attachment"));
1827 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1830 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1831 _("Keep the original 'From' header when redirecting"));
1834 hbox_autosave = gtk_hbox_new (FALSE, 8);
1835 gtk_widget_show (hbox_autosave);
1836 gtk_box_pack_start (GTK_BOX (vbox1), hbox_autosave, FALSE, FALSE, 0);
1838 PACK_CHECK_BUTTON (hbox_autosave, checkbtn_autosave,
1839 _("Autosave to drafts every "));
1841 entry_autosave_length = gtk_entry_new();
1842 gtk_widget_set_usize (entry_autosave_length, 64, -1);
1843 gtk_widget_show (entry_autosave_length);
1844 gtk_box_pack_start (GTK_BOX (hbox_autosave), entry_autosave_length, FALSE, FALSE, 0);
1846 label_autosave_length = gtk_label_new(_("characters"));
1847 gtk_widget_show (label_autosave_length);
1848 gtk_box_pack_start (GTK_BOX (hbox_autosave), label_autosave_length, FALSE, FALSE, 0);
1850 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1851 gtk_widget_show (hbox_undolevel);
1852 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1854 label_undolevel = gtk_label_new (_("Undo level"));
1855 gtk_widget_show (label_undolevel);
1856 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1858 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1859 spinbtn_undolevel = gtk_spin_button_new
1860 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1861 gtk_widget_show (spinbtn_undolevel);
1862 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1863 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1864 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1867 PACK_FRAME(vbox1, frame_msgwrap, _("Message wrapping"));
1869 vbox_linewrap = gtk_vbox_new (FALSE, VSPACING_NARROW);
1870 gtk_widget_show (vbox_linewrap);
1871 gtk_container_add (GTK_CONTAINER (frame_msgwrap), vbox_linewrap);
1872 gtk_container_set_border_width (GTK_CONTAINER (vbox_linewrap), 8);
1874 hbox3 = gtk_hbox_new (FALSE, 8);
1875 gtk_widget_show (hbox3);
1876 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox3, FALSE, FALSE, 0);
1879 label_linewrap = gtk_label_new (_("Wrap messages at"));
1880 gtk_widget_show (label_linewrap);
1881 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1883 spinbtn_linewrap_adj = gtk_adjustment_new (72, 20, 1024, 1, 10, 10);
1884 spinbtn_linewrap = gtk_spin_button_new
1885 (GTK_ADJUSTMENT (spinbtn_linewrap_adj), 1, 0);
1886 gtk_widget_show (spinbtn_linewrap);
1887 gtk_box_pack_start (GTK_BOX (hbox3), spinbtn_linewrap, FALSE, FALSE, 0);
1888 gtk_widget_set_usize (spinbtn_linewrap, 64, -1);
1889 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linewrap), TRUE);
1891 label_linewrap = gtk_label_new (_("characters"));
1892 gtk_widget_show (label_linewrap);
1893 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1895 hbox4 = gtk_hbox_new (FALSE, VSPACING);
1896 gtk_widget_show (hbox4);
1897 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox4, FALSE, FALSE, 0);
1899 PACK_CHECK_BUTTON (hbox4, checkbtn_wrapquote, _("Wrap quotation"));
1901 PACK_CHECK_BUTTON (hbox4, checkbtn_autowrap, _("Wrap on input"));
1904 (hbox4, checkbtn_wrapatsend, _("Wrap before sending"));
1906 PACK_CHECK_BUTTON (vbox_linewrap, checkbtn_smart_wrapping,
1907 _("Smart wrapping (EXPERIMENTAL)"));
1910 compose.checkbtn_quote = checkbtn_quote;
1911 compose.entry_quotemark = entry_quotemark;
1912 compose.text_quotefmt = text_quotefmt;
1914 compose.checkbtn_autosig = checkbtn_autosig;
1915 compose.entry_sigsep = entry_sigsep;
1917 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1919 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1920 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1921 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1923 compose.spinbtn_undolevel = spinbtn_undolevel;
1924 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1926 compose.spinbtn_linewrap = spinbtn_linewrap;
1927 compose.spinbtn_linewrap_adj = spinbtn_linewrap_adj;
1928 compose.checkbtn_wrapquote = checkbtn_wrapquote;
1929 compose.checkbtn_autowrap = checkbtn_autowrap;
1930 compose.checkbtn_wrapatsend = checkbtn_wrapatsend;
1932 compose.checkbtn_autosave = checkbtn_autosave;
1933 compose.entry_autosave_length = entry_autosave_length;
1935 compose.checkbtn_forward_as_attachment =
1936 checkbtn_forward_as_attachment;
1937 compose.checkbtn_redirect_keep_from =
1938 checkbtn_redirect_keep_from;
1939 compose.checkbtn_smart_wrapping =
1940 checkbtn_smart_wrapping;
1941 compose.checkbtn_block_cursor =
1942 checkbtn_block_cursor;
1943 compose.checkbtn_default_reply_list = checkbtn_default_reply_list;
1946 static void prefs_quote_create(void)
1949 GtkWidget *frame_quote;
1950 GtkWidget *vbox_quote;
1953 GtkWidget *label_quotemark;
1954 GtkWidget *entry_quotemark;
1955 GtkWidget *scrolledwin_quotefmt;
1956 GtkWidget *text_quotefmt;
1958 GtkWidget *entry_fw_quotemark;
1959 GtkWidget *text_fw_quotefmt;
1961 GtkWidget *entry_quote_chars;
1962 GtkWidget *label_quote_chars;
1964 GtkWidget *btn_quotedesc;
1966 GtkWidget *checkbtn_reply_with_quote;
1968 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1969 gtk_widget_show (vbox1);
1970 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1971 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1975 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1977 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1979 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1980 gtk_widget_show (vbox_quote);
1981 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1982 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1984 hbox1 = gtk_hbox_new (FALSE, 32);
1985 gtk_widget_show (hbox1);
1986 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1988 hbox2 = gtk_hbox_new (FALSE, 8);
1989 gtk_widget_show (hbox2);
1990 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1992 label_quotemark = gtk_label_new (_("Quotation mark"));
1993 gtk_widget_show (label_quotemark);
1994 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1996 entry_quotemark = gtk_entry_new ();
1997 gtk_widget_show (entry_quotemark);
1998 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
1999 gtk_widget_set_usize (entry_quotemark, 64, -1);
2001 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
2002 gtk_widget_show (scrolledwin_quotefmt);
2003 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
2004 gtk_scrolled_window_set_policy
2005 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
2006 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
2008 text_quotefmt = gtk_text_new (NULL, NULL);
2009 gtk_widget_show (text_quotefmt);
2010 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
2011 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
2012 gtk_widget_set_usize(text_quotefmt, -1, 60);
2016 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
2018 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
2019 gtk_widget_show (vbox_quote);
2020 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
2021 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
2023 hbox1 = gtk_hbox_new (FALSE, 32);
2024 gtk_widget_show (hbox1);
2025 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
2027 hbox2 = gtk_hbox_new (FALSE, 8);
2028 gtk_widget_show (hbox2);
2029 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
2031 label_quotemark = gtk_label_new (_("Quotation mark"));
2032 gtk_widget_show (label_quotemark);
2033 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
2035 entry_fw_quotemark = gtk_entry_new ();
2036 gtk_widget_show (entry_fw_quotemark);
2037 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
2039 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
2041 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
2042 gtk_widget_show (scrolledwin_quotefmt);
2043 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
2044 gtk_scrolled_window_set_policy
2045 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
2046 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
2048 text_fw_quotefmt = gtk_text_new (NULL, NULL);
2049 gtk_widget_show (text_fw_quotefmt);
2050 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
2052 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
2053 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
2055 hbox1 = gtk_hbox_new (FALSE, 32);
2056 gtk_widget_show (hbox1);
2057 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2060 gtk_button_new_with_label (_(" Description of symbols "));
2061 gtk_widget_show (btn_quotedesc);
2062 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
2063 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
2064 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
2068 PACK_FRAME (vbox1, frame_quote, _("Quoting characters"));
2070 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
2071 gtk_widget_show (vbox_quote);
2072 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
2073 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
2075 hbox1 = gtk_hbox_new (FALSE, 32);
2076 gtk_widget_show (hbox1);
2077 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
2079 hbox2 = gtk_hbox_new (FALSE, 8);
2080 gtk_widget_show (hbox2);
2081 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
2083 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
2084 gtk_widget_show (label_quote_chars);
2085 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
2087 entry_quote_chars = gtk_entry_new ();
2088 gtk_widget_show (entry_quote_chars);
2089 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
2091 gtk_widget_set_usize (entry_quote_chars, 64, -1);
2094 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
2095 quote.entry_quotemark = entry_quotemark;
2096 quote.text_quotefmt = text_quotefmt;
2097 quote.entry_fw_quotemark = entry_fw_quotemark;
2098 quote.text_fw_quotefmt = text_fw_quotefmt;
2099 quote.entry_quote_chars = entry_quote_chars;
2102 static void prefs_display_create(void)
2105 GtkWidget *frame_font;
2107 GtkWidget *label_textfont;
2108 GtkWidget *entry_textfont;
2109 GtkWidget *button_textfont;
2110 GtkWidget *chkbtn_transhdr;
2111 GtkWidget *chkbtn_folder_unread;
2113 GtkWidget *label_ng_abbrev;
2114 GtkWidget *spinbtn_ng_abbrev_len;
2115 GtkObject *spinbtn_ng_abbrev_len_adj;
2116 GtkWidget *frame_summary;
2118 GtkWidget *chkbtn_swapfrom;
2119 GtkWidget *chkbtn_hscrollbar;
2120 GtkWidget *chkbtn_useaddrbook;
2121 GtkWidget *chkbtn_expand_thread;
2122 GtkWidget *chkbtn_bold_unread;
2124 GtkWidget *label_datefmt;
2125 GtkWidget *button_datefmt;
2126 GtkWidget *entry_datefmt;
2127 GtkWidget *button_dispitem;
2128 GtkWidget *tmplabel, *tmpbutton, *tmpentry;
2130 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2131 gtk_widget_show (vbox1);
2132 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2133 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2135 PACK_FRAME(vbox1, frame_font, _("Font"));
2137 table1 = gtk_table_new (4, 3, FALSE);
2139 gtk_widget_show (table1);
2140 gtk_container_add (GTK_CONTAINER (frame_font), table1);
2141 gtk_container_set_border_width (GTK_CONTAINER (table1), 8);
2142 gtk_table_set_row_spacings (GTK_TABLE (table1), 8);
2143 gtk_table_set_col_spacings (GTK_TABLE (table1), 8);
2145 label_textfont = gtk_label_new (_("Text"));
2146 gtk_misc_set_alignment(GTK_MISC(label_textfont), 0, 0.5);
2147 gtk_widget_show (label_textfont);
2148 gtk_table_attach (GTK_TABLE (table1), label_textfont, 0, 1, 0, 1,
2149 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2151 entry_textfont = gtk_entry_new ();
2152 gtk_widget_show (entry_textfont);
2153 gtk_table_attach (GTK_TABLE (table1), entry_textfont, 1, 2, 0, 1,
2154 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2156 button_textfont = gtk_button_new_with_label (" ... ");
2158 gtk_widget_show (button_textfont);
2159 gtk_table_attach (GTK_TABLE (table1), button_textfont, 2, 3, 0, 1,
2161 gtk_signal_connect (GTK_OBJECT (button_textfont), "clicked",
2162 GTK_SIGNAL_FUNC (prefs_font_select), entry_textfont);
2164 tmplabel = gtk_label_new (_("Small"));
2165 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
2166 gtk_widget_show (tmplabel);
2167 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 1, 2,
2168 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2170 tmpentry = gtk_entry_new ();
2171 gtk_widget_show (tmpentry);
2172 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 1, 2,
2173 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2175 tmpbutton = gtk_button_new_with_label (" ... ");
2176 gtk_widget_show (tmpbutton);
2177 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 1, 2,
2179 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
2180 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
2181 display.entry_smallfont = tmpentry;
2183 tmplabel = gtk_label_new (_("Normal"));
2184 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
2185 gtk_widget_show (tmplabel);
2186 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 2, 3,
2187 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2189 tmpentry = gtk_entry_new ();
2190 gtk_widget_show (tmpentry);
2191 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 2, 3,
2192 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2194 tmpbutton = gtk_button_new_with_label (" ... ");
2195 gtk_widget_show (tmpbutton);
2196 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 2, 3,
2198 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
2199 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
2200 display.entry_normalfont = tmpentry;
2202 tmplabel = gtk_label_new (_("Bold"));
2203 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
2204 gtk_widget_show (tmplabel);
2205 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 3, 4,
2206 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2208 tmpentry = gtk_entry_new ();
2209 gtk_widget_show (tmpentry);
2210 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 3, 4,
2211 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2213 tmpbutton = gtk_button_new_with_label (" ... ");
2214 gtk_widget_show (tmpbutton);
2215 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 3, 4,
2217 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
2218 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
2219 display.entry_boldfont = tmpentry;
2221 vbox2 = gtk_vbox_new (FALSE, 0);
2222 gtk_widget_show (vbox2);
2223 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
2226 (vbox2, chkbtn_transhdr,
2227 _("Translate header name (such as `From:', `Subject:')"));
2229 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
2230 _("Display unread number next to folder name"));
2232 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2234 hbox1 = gtk_hbox_new (FALSE, 8);
2235 gtk_widget_show (hbox1);
2236 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2238 label_ng_abbrev = gtk_label_new
2239 (_("Abbreviate newsgroups longer than"));
2240 gtk_widget_show (label_ng_abbrev);
2241 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
2243 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
2244 spinbtn_ng_abbrev_len = gtk_spin_button_new
2245 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
2246 gtk_widget_show (spinbtn_ng_abbrev_len);
2247 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
2249 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
2250 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
2253 label_ng_abbrev = gtk_label_new
2255 gtk_widget_show (label_ng_abbrev);
2256 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
2258 /* ---- Summary ---- */
2260 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
2262 vbox2 = gtk_vbox_new (FALSE, 0);
2263 gtk_widget_show (vbox2);
2264 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
2265 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
2268 (vbox2, chkbtn_swapfrom,
2269 _("Display recipient on `From' column if sender is yourself"));
2271 (vbox2, chkbtn_useaddrbook,
2272 _("Display sender using address book"));
2274 (vbox2, chkbtn_hscrollbar, _("Enable horizontal scroll bar"));
2276 (vbox2, chkbtn_expand_thread, _("Expand threads"));
2278 (vbox2, chkbtn_bold_unread,
2279 _("Display unread messages with bold font"));
2281 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2283 hbox1 = gtk_hbox_new (FALSE, 8);
2284 gtk_widget_show (hbox1);
2285 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2287 label_datefmt = gtk_label_new (_("Date format"));
2288 gtk_widget_show (label_datefmt);
2289 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
2291 entry_datefmt = gtk_entry_new ();
2292 gtk_widget_show (entry_datefmt);
2293 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
2295 button_datefmt = gtk_button_new_with_label (" ... ");
2297 gtk_widget_show (button_datefmt);
2298 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
2299 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
2300 GTK_SIGNAL_FUNC (date_format_create), NULL);
2302 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
2304 hbox1 = gtk_hbox_new (FALSE, 8);
2305 gtk_widget_show (hbox1);
2306 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2308 button_dispitem = gtk_button_new_with_label
2309 (_(" Set displayed items of summary... "));
2310 gtk_widget_show (button_dispitem);
2311 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
2312 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
2313 GTK_SIGNAL_FUNC (prefs_summary_column_open),
2316 display.entry_textfont = entry_textfont;
2317 display.button_textfont = button_textfont;
2319 display.chkbtn_transhdr = chkbtn_transhdr;
2320 display.chkbtn_folder_unread = chkbtn_folder_unread;
2321 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
2322 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
2324 display.chkbtn_swapfrom = chkbtn_swapfrom;
2325 display.chkbtn_hscrollbar = chkbtn_hscrollbar;
2326 display.chkbtn_expand_thread = chkbtn_expand_thread;
2327 display.chkbtn_bold_unread = chkbtn_bold_unread;
2328 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
2329 display.entry_datefmt = entry_datefmt;
2332 static void prefs_message_create(void)
2338 GtkWidget *chkbtn_enablecol;
2339 GtkWidget *button_edit_col;
2340 GtkWidget *chkbtn_mbalnum;
2341 GtkWidget *chkbtn_disphdrpane;
2342 GtkWidget *chkbtn_disphdr;
2343 GtkWidget *button_edit_disphdr;
2344 GtkWidget *hbox_linespc;
2345 GtkWidget *label_linespc;
2346 GtkObject *spinbtn_linespc_adj;
2347 GtkWidget *spinbtn_linespc;
2348 GtkWidget *chkbtn_headspc;
2350 GtkWidget *frame_scr;
2351 GtkWidget *vbox_scr;
2352 GtkWidget *chkbtn_smoothscroll;
2353 GtkWidget *hbox_scr;
2354 GtkWidget *label_scr;
2355 GtkObject *spinbtn_scrollstep_adj;
2356 GtkWidget *spinbtn_scrollstep;
2357 GtkWidget *chkbtn_halfpage;
2359 GtkWidget *chkbtn_display_img;
2360 GtkWidget *chkbtn_resize_image;
2362 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2363 gtk_widget_show (vbox1);
2364 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2365 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2367 hbox1 = gtk_hbox_new (FALSE, 8);
2368 gtk_widget_show (hbox1);
2369 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, TRUE, 0);
2371 PACK_CHECK_BUTTON (hbox1, chkbtn_enablecol,
2372 _("Enable coloration of message"));
2373 gtk_signal_connect (GTK_OBJECT (chkbtn_enablecol), "toggled",
2374 GTK_SIGNAL_FUNC (prefs_enable_message_color_toggled),
2377 button_edit_col = gtk_button_new_with_label (_(" Edit... "));
2378 gtk_widget_show (button_edit_col);
2379 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_col, FALSE, TRUE, 0);
2380 gtk_signal_connect (GTK_OBJECT (button_edit_col), "clicked",
2381 GTK_SIGNAL_FUNC (prefs_quote_colors_dialog), NULL);
2383 SET_TOGGLE_SENSITIVITY(chkbtn_enablecol, button_edit_col);
2385 vbox2 = gtk_vbox_new (FALSE, 0);
2386 gtk_widget_show (vbox2);
2387 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2390 (vbox2, chkbtn_mbalnum,
2391 _("Display 2-byte alphabet and numeric with 1-byte character"));
2392 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
2393 _("Display header pane above message view"));
2395 hbox1 = gtk_hbox_new (FALSE, 8);
2396 gtk_widget_show (hbox1);
2397 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2399 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
2400 _("Display short headers on message view"));
2402 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
2403 gtk_widget_show (button_edit_disphdr);
2404 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
2406 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
2407 GTK_SIGNAL_FUNC (prefs_display_header_open),
2410 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
2412 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2414 hbox1 = gtk_hbox_new (FALSE, 32);
2415 gtk_widget_show (hbox1);
2416 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2418 hbox_linespc = gtk_hbox_new (FALSE, 8);
2419 gtk_widget_show (hbox1);
2420 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
2422 label_linespc = gtk_label_new (_("Line space"));
2423 gtk_widget_show (label_linespc);
2424 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2427 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
2428 spinbtn_linespc = gtk_spin_button_new
2429 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
2430 gtk_widget_show (spinbtn_linespc);
2431 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
2433 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
2434 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
2436 label_linespc = gtk_label_new (_("pixel(s)"));
2437 gtk_widget_show (label_linespc);
2438 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2441 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Leave space on head"));
2443 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
2445 vbox_scr = gtk_vbox_new (FALSE, 0);
2446 gtk_widget_show (vbox_scr);
2447 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
2448 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
2450 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
2452 hbox1 = gtk_hbox_new (FALSE, 32);
2453 gtk_widget_show (hbox1);
2454 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
2456 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
2458 hbox_scr = gtk_hbox_new (FALSE, 8);
2459 gtk_widget_show (hbox_scr);
2460 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
2462 label_scr = gtk_label_new (_("Step"));
2463 gtk_widget_show (label_scr);
2464 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2466 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
2467 spinbtn_scrollstep = gtk_spin_button_new
2468 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
2469 gtk_widget_show (spinbtn_scrollstep);
2470 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
2472 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
2473 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
2476 label_scr = gtk_label_new (_("pixel(s)"));
2477 gtk_widget_show (label_scr);
2478 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2480 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
2482 vbox3 = gtk_vbox_new (FALSE, 0);
2483 gtk_widget_show (vbox3);
2484 gtk_box_pack_start (GTK_BOX (vbox1), vbox3, FALSE, FALSE, 0);
2486 PACK_CHECK_BUTTON(vbox3, chkbtn_display_img,
2487 _("Automatically display attached images"));
2489 PACK_CHECK_BUTTON(vbox3, chkbtn_resize_image,
2490 _("Resize attached images"));
2492 message.chkbtn_enablecol = chkbtn_enablecol;
2493 message.button_edit_col = button_edit_col;
2494 message.chkbtn_mbalnum = chkbtn_mbalnum;
2495 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
2496 message.chkbtn_disphdr = chkbtn_disphdr;
2497 message.spinbtn_linespc = spinbtn_linespc;
2498 message.chkbtn_headspc = chkbtn_headspc;
2500 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
2501 message.spinbtn_scrollstep = spinbtn_scrollstep;
2502 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
2503 message.chkbtn_halfpage = chkbtn_halfpage;
2505 message.chkbtn_display_img = chkbtn_display_img;
2506 message.chkbtn_resize_image = chkbtn_resize_image;
2510 static void prefs_privacy_create(void)
2516 GtkWidget *hbox_spc;
2518 GtkWidget *checkbtn_auto_check_signatures;
2519 GtkWidget *checkbtn_gpg_signature_popup;
2520 GtkWidget *checkbtn_store_passphrase;
2521 GtkObject *spinbtn_store_passphrase_adj;
2522 GtkWidget *spinbtn_store_passphrase;
2523 GtkWidget *checkbtn_passphrase_grab;
2524 GtkWidget *checkbtn_gpg_warning;
2526 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2527 gtk_widget_show (vbox1);
2528 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2529 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2531 vbox2 = gtk_vbox_new (FALSE, 0);
2532 gtk_widget_show (vbox2);
2533 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2535 PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
2536 _("Automatically check signatures"));
2538 PACK_CHECK_BUTTON (vbox2, checkbtn_gpg_signature_popup,
2539 _("Show signature check result in a popup window"));
2541 PACK_CHECK_BUTTON (vbox2, checkbtn_store_passphrase,
2542 _("Store passphrase in memory temporarily"));
2544 vbox3 = gtk_vbox_new (FALSE, 0);
2545 gtk_widget_show (vbox3);
2546 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2548 hbox1 = gtk_hbox_new (FALSE, 8);
2549 gtk_widget_show (hbox1);
2550 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2552 hbox_spc = gtk_hbox_new (FALSE, 0);
2553 gtk_widget_show (hbox_spc);
2554 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2555 gtk_widget_set_usize (hbox_spc, 12, -1);
2557 label = gtk_label_new (_("Expire after"));
2558 gtk_widget_show (label);
2559 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2561 spinbtn_store_passphrase_adj = gtk_adjustment_new (0, 0, 1440, 1, 5, 5);
2562 spinbtn_store_passphrase = gtk_spin_button_new
2563 (GTK_ADJUSTMENT (spinbtn_store_passphrase_adj), 1, 0);
2564 gtk_widget_show (spinbtn_store_passphrase);
2565 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_store_passphrase, FALSE, FALSE, 0);
2566 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_store_passphrase),
2568 gtk_widget_set_usize (spinbtn_store_passphrase, 64, -1);
2570 label = gtk_label_new (_("minute(s) "));
2571 gtk_widget_show (label);
2572 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2574 hbox1 = gtk_hbox_new (FALSE, 8);
2575 gtk_widget_show (hbox1);
2576 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2578 hbox_spc = gtk_hbox_new (FALSE, 0);
2579 gtk_widget_show (hbox_spc);
2580 gtk_box_pack_start (GTK_BOX (hbox1), hbox_spc, FALSE, FALSE, 0);
2581 gtk_widget_set_usize (hbox_spc, 12, -1);
2583 label = gtk_label_new (_("(Setting to '0' will store the passphrase\n"
2584 " for the whole session)"));
2585 gtk_widget_show (label);
2586 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2587 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2589 SET_TOGGLE_SENSITIVITY (checkbtn_store_passphrase, vbox3);
2592 PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab,
2593 _("Grab input while entering a passphrase"));
2597 (vbox2, checkbtn_gpg_warning,
2598 _("Display warning on startup if GnuPG doesn't work"));
2600 hbox1 = gtk_hbox_new (FALSE, 8);
2601 gtk_widget_show (hbox1);
2602 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2604 privacy.checkbtn_auto_check_signatures
2605 = checkbtn_auto_check_signatures;
2606 privacy.checkbtn_gpg_signature_popup
2607 = checkbtn_gpg_signature_popup;
2608 privacy.checkbtn_store_passphrase = checkbtn_store_passphrase;
2609 privacy.spinbtn_store_passphrase = spinbtn_store_passphrase;
2610 privacy.spinbtn_store_passphrase_adj = spinbtn_store_passphrase_adj;
2611 privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
2612 privacy.checkbtn_gpg_warning = checkbtn_gpg_warning;
2614 #endif /* USE_GPGME */
2616 static void prefs_interface_create(void)
2621 /* GtkWidget *checkbtn_emacs; */
2622 GtkWidget *checkbtn_show_msg_with_cursor;
2623 GtkWidget *checkbtn_openunread;
2624 GtkWidget *checkbtn_mark_as_read_on_newwin;
2625 GtkWidget *checkbtn_openinbox;
2626 GtkWidget *checkbtn_immedexec;
2629 GtkWidget *dialogs_table;
2630 GtkWidget *optmenu_recvdialog;
2631 GtkWidget *optmenu_senddialog;
2633 GtkWidget *menuitem;
2634 GtkWidget *checkbtn_no_recv_err_panel;
2635 GtkWidget *checkbtn_close_recv_dialog;
2637 GtkWidget *frame_addr;
2638 GtkWidget *vbox_addr;
2639 GtkWidget *checkbtn_addaddrbyclick;
2641 GtkWidget *button_keybind;
2644 GtkWidget *optmenu_nextunreadmsgdialog;
2645 GtkWidget *optmenu_nextunreadmsgdialog_menu;
2646 GtkWidget *nextunreadmsgdialog_menuitem;
2648 GtkWidget *frame_pixmap_theme;
2649 GtkWidget *vbox_pixmap_theme;
2650 GtkWidget *entry_pixmap_theme;
2651 GtkWidget *combo_pixmap_theme;
2652 GList *avail_pixmap_themes = NULL;
2654 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2655 gtk_widget_show (vbox1);
2656 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2657 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2659 vbox2 = gtk_vbox_new (FALSE, 0);
2660 gtk_widget_show (vbox2);
2661 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2663 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
2664 _("Emulate the behavior of mouse operation of\n"
2665 "Emacs-based mailer"));
2666 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
2667 GTK_JUSTIFY_LEFT); */
2670 (vbox2, checkbtn_show_msg_with_cursor,
2671 _("Open message when cursor keys are pressed on summary"));
2674 (vbox2, checkbtn_openunread,
2675 _("Open first unread message when entering a folder"));
2678 (vbox2, checkbtn_mark_as_read_on_newwin,
2679 _("Only mark message as read when opened in new window"));
2682 (vbox2, checkbtn_openinbox,
2683 _("Go to inbox after receiving new mail"));
2685 vbox3 = gtk_vbox_new (FALSE, 0);
2686 gtk_widget_show (vbox3);
2687 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2690 (vbox3, checkbtn_immedexec,
2691 _("Execute immediately when moving or deleting messages"));
2693 hbox1 = gtk_hbox_new (FALSE, 0);
2694 gtk_widget_show (hbox1);
2695 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2697 label = gtk_label_new
2698 (_("(Messages will be marked until execution\n"
2699 " if this is turned off)"));
2700 gtk_widget_show (label);
2701 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 8);
2702 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2704 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
2706 dialogs_table = gtk_table_new (2, 2, FALSE);
2707 gtk_widget_show (dialogs_table);
2708 gtk_container_add (GTK_CONTAINER (vbox2), dialogs_table);
2709 gtk_container_set_border_width (GTK_CONTAINER (dialogs_table), 8);
2710 gtk_table_set_row_spacings (GTK_TABLE (dialogs_table), VSPACING_NARROW);
2711 gtk_table_set_col_spacings (GTK_TABLE (dialogs_table), 8);
2713 label = gtk_label_new (_("Show send dialog"));
2714 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
2715 gtk_widget_show (label);
2716 gtk_table_attach (GTK_TABLE (dialogs_table), label, 0, 1, 0, 1,
2717 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2720 optmenu_senddialog = gtk_option_menu_new ();
2721 gtk_widget_show (optmenu_senddialog);
2722 gtk_table_attach (GTK_TABLE (dialogs_table), optmenu_senddialog, 1, 2, 0, 1,
2723 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2725 menu = gtk_menu_new ();
2726 MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
2727 MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
2729 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
2731 label = gtk_label_new (_("Show receive dialog"));
2732 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
2733 gtk_widget_show (label);
2734 gtk_table_attach (GTK_TABLE (dialogs_table), label, 0, 1, 1, 2,
2735 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2737 optmenu_recvdialog = gtk_option_menu_new ();
2738 gtk_widget_show (optmenu_recvdialog);
2739 gtk_table_attach (GTK_TABLE (dialogs_table), optmenu_recvdialog, 1, 2, 1, 2,
2740 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2742 menu = gtk_menu_new ();
2743 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
2744 MENUITEM_ADD (menu, menuitem, _("Only if a window is active"),
2745 RECV_DIALOG_ACTIVE);
2746 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
2748 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
2750 PACK_CHECK_BUTTON (vbox2, checkbtn_no_recv_err_panel,
2751 _("Don't popup error dialog on receive error"));
2753 PACK_CHECK_BUTTON (vbox2, checkbtn_close_recv_dialog,
2754 _("Close receive dialog when finished"));
2756 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2758 vbox_addr = gtk_vbox_new (FALSE, 0);
2759 gtk_widget_show (vbox_addr);
2760 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2761 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2764 (vbox_addr, checkbtn_addaddrbyclick,
2765 _("Add address to destination when double-clicked"));
2767 /* Next Unread Message Dialog */
2768 hbox2 = gtk_hbox_new (FALSE, 8);
2769 gtk_widget_show (hbox2);
2770 gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 0);
2772 label = gtk_label_new (_("Show no-unread-message dialog"));
2773 gtk_widget_show (label);
2774 gtk_box_pack_start (GTK_BOX (hbox2), label, FALSE, FALSE, 0);
2776 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
2777 gtk_widget_show (optmenu_nextunreadmsgdialog);
2778 gtk_box_pack_start (GTK_BOX (hbox2), optmenu_nextunreadmsgdialog,
2781 optmenu_nextunreadmsgdialog_menu = gtk_menu_new ();
2782 MENUITEM_ADD (optmenu_nextunreadmsgdialog_menu, nextunreadmsgdialog_menuitem,
2783 _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
2784 MENUITEM_ADD (optmenu_nextunreadmsgdialog_menu, nextunreadmsgdialog_menuitem,
2785 _("Assume 'Yes'"), NEXTUNREADMSGDIALOG_ASSUME_YES);
2786 MENUITEM_ADD (optmenu_nextunreadmsgdialog_menu, nextunreadmsgdialog_menuitem,
2787 _("Assume 'No'"), NEXTUNREADMSGDIALOG_ASSUME_NO);
2789 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog),
2790 optmenu_nextunreadmsgdialog_menu);
2793 /* Receive Dialog */
2794 /* hbox = gtk_hbox_new (FALSE, 8);
2795 gtk_widget_show (hbox);
2796 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
2798 label = gtk_label_new (_("Show receive Dialog"));
2799 gtk_widget_show (label);
2800 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
2802 recvdialog_optmenu = gtk_option_menu_new ();
2803 gtk_widget_show (recvdialog_optmenu);
2804 gtk_box_pack_start (GTK_BOX (hbox), recvdialog_optmenu, FALSE, FALSE, 0);
2806 recvdialog_optmenu_menu = gtk_menu_new ();
2808 MENUITEM_ADD (recvdialog_optmenu_menu, recvdialog_menuitem, _("Always"), RECVDIALOG_ALWAYS);
2809 MENUITEM_ADD (recvdialog_optmenu_menu, recvdialog_menuitem, _("Only if a sylpheed window is active"), RECVDIALOG_WINDOW_ACTIVE);
2810 MENUITEM_ADD (recvdialog_optmenu_menu, recvdialog_menuitem, _("Never"), RECVDIALOG_NEVER);
2812 gtk_option_menu_set_menu (GTK_OPTION_MENU (recvdialog_optmenu), recvdialog_optmenu_menu); */
2814 hbox1 = gtk_hbox_new (FALSE, 8);
2815 gtk_widget_show (hbox1);
2816 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2818 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
2819 gtk_widget_show (button_keybind);
2820 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
2821 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
2822 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
2824 PACK_FRAME(vbox1, frame_pixmap_theme, _("Icon theme"));
2826 vbox_pixmap_theme = gtk_vbox_new(FALSE, 0);
2827 gtk_widget_show(vbox_pixmap_theme);
2828 gtk_container_add(GTK_CONTAINER(frame_pixmap_theme), vbox_pixmap_theme);
2829 gtk_container_set_border_width(GTK_CONTAINER(vbox_pixmap_theme), 8);
2831 avail_pixmap_themes = stock_pixmap_themes_list_new();
2833 combo_pixmap_theme = gtk_combo_new ();
2834 gtk_widget_show (combo_pixmap_theme);
2835 gtk_box_pack_start (GTK_BOX (vbox_pixmap_theme), combo_pixmap_theme, TRUE, TRUE, 0);
2836 gtk_combo_set_popdown_strings(GTK_COMBO(combo_pixmap_theme), avail_pixmap_themes);
2837 entry_pixmap_theme = GTK_COMBO (combo_pixmap_theme)->entry;
2839 stock_pixmap_themes_list_free(avail_pixmap_themes);
2841 /* interface.checkbtn_emacs = checkbtn_emacs; */
2842 interface.checkbtn_show_msg_with_cursor
2843 = checkbtn_show_msg_with_cursor;
2844 interface.checkbtn_openunread = checkbtn_openunread;
2845 interface.checkbtn_mark_as_read_on_newwin
2846 = checkbtn_mark_as_read_on_newwin;
2847 interface.checkbtn_openinbox = checkbtn_openinbox;
2848 interface.checkbtn_immedexec = checkbtn_immedexec;
2849 interface.optmenu_recvdialog = optmenu_recvdialog;
2850 interface.optmenu_senddialog = optmenu_senddialog;
2851 interface.checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
2852 interface.checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
2853 interface.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2854 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
2855 interface.combo_pixmap_theme = combo_pixmap_theme;
2856 interface.entry_pixmap_theme = entry_pixmap_theme;
2859 static void prefs_other_create(void)
2862 GtkWidget *ext_frame;
2863 GtkWidget *ext_table;
2866 GtkWidget *uri_label;
2867 GtkWidget *uri_combo;
2868 GtkWidget *uri_entry;
2870 GtkWidget *printcmd_label;
2871 GtkWidget *printcmd_entry;
2873 GtkWidget *exteditor_label;
2874 GtkWidget *exteditor_combo;
2875 GtkWidget *exteditor_entry;
2877 GtkWidget *frame_cliplog;
2878 GtkWidget *vbox_cliplog;
2879 GtkWidget *hbox_cliplog;
2880 GtkWidget *checkbtn_cliplog;
2881 GtkWidget *loglength_label;
2882 GtkWidget *loglength_entry;
2884 GtkWidget *frame_exit;
2885 GtkWidget *vbox_exit;
2886 GtkWidget *checkbtn_confonexit;
2887 GtkWidget *checkbtn_cleanonexit;
2888 GtkWidget *checkbtn_askonclean;
2889 GtkWidget *checkbtn_warnqueued;
2891 GtkWidget *frame_ssl;
2892 GtkWidget *vbox_ssl;
2893 GtkWidget *hbox_ssl;
2894 GtkWidget *checkbtn_ssl_ask_unknown_valid;
2896 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2897 gtk_widget_show (vbox1);
2898 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2899 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2901 PACK_FRAME(vbox1, ext_frame,
2902 _("External commands (%s will be replaced with file name / URI)"));
2904 ext_table = gtk_table_new (3, 2, FALSE);
2905 gtk_widget_show (ext_table);
2906 gtk_container_add (GTK_CONTAINER (ext_frame), ext_table);
2907 gtk_container_set_border_width (GTK_CONTAINER (ext_table), 8);
2908 gtk_table_set_row_spacings (GTK_TABLE (ext_table), VSPACING_NARROW);
2909 gtk_table_set_col_spacings (GTK_TABLE (ext_table), 8);
2911 uri_label = gtk_label_new (_("Web browser"));
2912 gtk_widget_show(uri_label);
2913 gtk_table_attach (GTK_TABLE (ext_table), uri_label, 0, 1, 0, 1,
2914 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2915 gtk_misc_set_alignment (GTK_MISC (uri_label), 1, 0.5);
2917 uri_combo = gtk_combo_new ();
2918 gtk_widget_show (uri_combo);
2919 gtk_table_attach (GTK_TABLE (ext_table), uri_combo, 1, 2, 0, 1,
2920 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2921 gtkut_combo_set_items (GTK_COMBO (uri_combo),
2923 "mozilla -remote 'openurl(%s,new-window)'",
2924 "netscape -remote 'openURL(%s,raise)'",
2926 "gnome-moz-remote --raise --newwin '%s'",
2927 "kfmclient openURL '%s'",
2928 "opera -newwindow '%s'",
2929 "kterm -e w3m '%s'",
2930 "kterm -e lynx '%s'",
2932 uri_entry = GTK_COMBO (uri_combo)->entry;
2934 printcmd_label = gtk_label_new (_("Print"));
2935 gtk_widget_show (printcmd_label);
2936 gtk_table_attach (GTK_TABLE (ext_table), printcmd_label, 0, 1, 1, 2,
2937 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2938 gtk_misc_set_alignment (GTK_MISC (printcmd_label), 1, 0.5);
2940 printcmd_entry = gtk_entry_new ();
2941 gtk_widget_show (printcmd_entry);
2942 gtk_table_attach (GTK_TABLE (ext_table), printcmd_entry, 1, 2, 1, 2,
2943 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2945 exteditor_label = gtk_label_new (_("Editor"));
2946 gtk_widget_show (exteditor_label);
2947 gtk_table_attach (GTK_TABLE (ext_table), exteditor_label, 0, 1, 2, 3,
2948 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2949 gtk_misc_set_alignment (GTK_MISC (exteditor_label), 1, 0.5);
2951 exteditor_combo = gtk_combo_new ();
2952 gtk_widget_show (exteditor_combo);
2953 gtk_table_attach (GTK_TABLE (ext_table), exteditor_combo, 1, 2, 2, 3,
2954 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2955 gtkut_combo_set_items (GTK_COMBO (exteditor_combo),
2958 "mgedit --no-fork %s",
2964 exteditor_entry = GTK_COMBO (exteditor_combo)->entry;
2967 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2969 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2970 gtk_widget_show (vbox_cliplog);
2971 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2972 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2973 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2974 _("Clip the log size"));
2975 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2976 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2977 gtk_widget_show (hbox_cliplog);
2979 loglength_label = gtk_label_new (_("Log window length"));
2980 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2982 gtk_widget_show (GTK_WIDGET (loglength_label));
2983 loglength_entry = gtk_entry_new ();
2984 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2985 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2987 gtk_widget_show (GTK_WIDGET (loglength_entry));
2988 loglength_label = gtk_label_new (_("(0 to stop logging in the log window)"));
2989 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2991 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2995 PACK_FRAME (vbox1, frame_ssl, _("Security"));
2997 vbox_ssl = gtk_vbox_new (FALSE, 0);
2998 gtk_widget_show (vbox_ssl);
2999 gtk_container_add (GTK_CONTAINER (frame_ssl), vbox_ssl);
3000 gtk_container_set_border_width (GTK_CONTAINER (vbox_ssl), 8);
3001 PACK_CHECK_BUTTON (vbox_ssl, checkbtn_ssl_ask_unknown_valid,
3002 _("Confirm acception of all SSL certificates"));
3003 hbox_ssl = gtk_hbox_new (FALSE, 3);
3004 gtk_container_add (GTK_CONTAINER (vbox_ssl), hbox_ssl);
3005 gtk_widget_show (hbox_ssl);
3009 PACK_FRAME (vbox1, frame_exit, _("On exit"));
3011 vbox_exit = gtk_vbox_new (FALSE, 0);
3012 gtk_widget_show (vbox_exit);
3013 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
3014 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
3016 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
3017 _("Confirm on exit"));
3019 hbox1 = gtk_hbox_new (FALSE, 32);
3020 gtk_widget_show (hbox1);
3021 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
3023 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
3024 _("Empty trash on exit"));
3025 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
3026 _("Ask before emptying"));
3027 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
3029 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
3030 _("Warn if there are queued messages"));
3032 other.uri_combo = uri_combo;
3033 other.uri_entry = uri_entry;
3034 other.printcmd_entry = printcmd_entry;
3036 other.exteditor_combo = exteditor_combo;
3037 other.exteditor_entry = exteditor_entry;
3039 other.checkbtn_cliplog = checkbtn_cliplog;
3040 other.loglength_entry = loglength_entry;
3042 other.checkbtn_confonexit = checkbtn_confonexit;
3043 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
3044 other.checkbtn_askonclean = checkbtn_askonclean;
3045 other.checkbtn_warnqueued = checkbtn_warnqueued;
3048 other.checkbtn_ssl_ask_unknown_valid = checkbtn_ssl_ask_unknown_valid;
3052 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
3054 GtkWidget *datefmt_sample = NULL;
3057 g_return_if_fail(widget != NULL);
3058 g_return_if_fail(*widget != NULL);
3059 g_return_if_fail(display.entry_datefmt != NULL);
3061 datefmt_sample = GTK_WIDGET(gtk_object_get_data
3062 (GTK_OBJECT(*widget), "datefmt_sample"));
3063 g_return_if_fail(datefmt_sample != NULL);
3065 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
3066 g_free(prefs_common.date_format);
3067 prefs_common.date_format = text;
3068 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
3070 gtk_widget_destroy(*widget);
3074 static void date_format_cancel_btn_clicked(GtkButton *button,
3077 g_return_if_fail(widget != NULL);
3078 g_return_if_fail(*widget != NULL);
3080 gtk_widget_destroy(*widget);
3084 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
3087 if (event && event->keyval == GDK_Escape)
3088 date_format_cancel_btn_clicked(NULL, widget);
3091 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
3092 GdkEventAny *event, GtkWidget **widget)
3094 g_return_val_if_fail(widget != NULL, FALSE);
3095 g_return_val_if_fail(*widget != NULL, FALSE);
3101 static void date_format_entry_on_change(GtkEditable *editable,
3105 struct tm *cal_time;
3109 cur_time = time(NULL);
3110 cal_time = localtime(&cur_time);
3112 text = gtk_editable_get_chars(editable, 0, -1);
3114 strftime(buffer, sizeof buffer, text, cal_time);
3116 gtk_label_set_text(example, buffer);
3119 static void date_format_select_row(GtkWidget *date_format_list, gint row,
3120 gint column, GdkEventButton *event,
3121 GtkWidget *date_format)
3127 GtkWidget *datefmt_sample;
3129 /* only on double click */
3130 if (!event || event->type != GDK_2BUTTON_PRESS) return;
3133 datefmt_sample = GTK_WIDGET(gtk_object_get_data
3134 (GTK_OBJECT(date_format), "datefmt_sample"));
3136 g_return_if_fail(date_format_list != NULL);
3137 g_return_if_fail(date_format != NULL);
3138 g_return_if_fail(datefmt_sample != NULL);
3140 /* get format from clist */
3141 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
3143 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
3144 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
3146 /* insert the format into the text entry */
3147 new_format = g_malloc(strlen(old_format) + 3);
3149 strncpy(new_format, old_format, cur_pos);
3150 new_format[cur_pos] = '\0';
3151 strcat(new_format, format);
3152 strcat(new_format, &old_format[cur_pos]);
3154 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
3155 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
3160 static GtkWidget *date_format_create(GtkButton *button, void *data)
3162 static GtkWidget *datefmt_win = NULL;
3164 GtkWidget *scrolledwindow1;
3165 GtkWidget *datefmt_clist;
3170 GtkWidget *confirm_area;
3172 GtkWidget *cancel_btn;
3173 GtkWidget *datefmt_entry;
3202 const gint TIME_FORMAT_ELEMS =
3203 sizeof time_format / sizeof time_format[0];
3205 time_format[0].txt = _("the full abbreviated weekday name");
3206 time_format[1].txt = _("the full weekday name");
3207 time_format[2].txt = _("the abbreviated month name");
3208 time_format[3].txt = _("the full month name");
3209 time_format[4].txt = _("the preferred date and time for the current locale");
3210 time_format[5].txt = _("the century number (year/100)");
3211 time_format[6].txt = _("the day of the month as a decimal number");
3212 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
3213 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
3214 time_format[9].txt = _("the day of the year as a decimal number");
3215 time_format[10].txt = _("the month as a decimal number");
3216 time_format[11].txt = _("the minute as a decimal number");
3217 time_format[12].txt = _("either AM or PM");
3218 time_format[13].txt = _("the second as a decimal number");
3219 time_format[14].txt = _("the day of the week as a decimal number");
3220 time_format[15].txt = _("the preferred date for the current locale");
3221 time_format[16].txt = _("the last two digits of a year");
3222 time_format[17].txt = _("the year as a decimal number");
3223 time_format[18].txt = _("the time zone or name or abbreviation");
3225 if (datefmt_win) return datefmt_win;
3227 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
3228 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
3229 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
3230 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
3231 gtk_widget_set_usize(datefmt_win, 440, 280);
3233 vbox1 = gtk_vbox_new(FALSE, 10);
3234 gtk_widget_show(vbox1);
3235 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
3237 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
3238 gtk_scrolled_window_set_policy
3239 (GTK_SCROLLED_WINDOW(scrolledwindow1),
3240 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
3241 gtk_widget_show(scrolledwindow1);
3242 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
3244 titles[0] = _("Specifier");
3245 titles[1] = _("Description");
3246 datefmt_clist = gtk_clist_new_with_titles(2, titles);
3247 gtk_widget_show(datefmt_clist);
3248 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
3249 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
3250 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
3251 GTK_SELECTION_BROWSE);
3253 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
3255 /* phoney casting necessary because of gtk... */
3256 text[0] = (gchar *)time_format[i].fmt;
3257 text[1] = (gchar *)time_format[i].txt;
3258 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
3261 table = gtk_table_new(2, 2, FALSE);
3262 gtk_widget_show(table);
3263 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
3264 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
3265 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
3267 label1 = gtk_label_new(_("Date format"));
3268 gtk_widget_show(label1);
3269 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
3271 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
3272 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
3274 datefmt_entry = gtk_entry_new_with_max_length(256);
3275 gtk_widget_show(datefmt_entry);
3276 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
3277 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3279 /* we need the "sample" entry box; add it as data so callbacks can
3280 * get the entry box */
3281 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
3284 label2 = gtk_label_new(_("Example"));
3285 gtk_widget_show(label2);
3286 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
3288 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
3289 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
3291 label3 = gtk_label_new("");
3292 gtk_widget_show(label3);
3293 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
3294 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3295 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
3296 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
3298 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
3299 &cancel_btn, _("Cancel"), NULL, NULL);
3300 gtk_widget_grab_default(ok_btn);
3301 gtk_widget_show(confirm_area);
3303 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
3305 /* set the current format */
3306 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
3307 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
3310 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
3311 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
3313 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
3314 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
3316 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
3317 GTK_SIGNAL_FUNC(date_format_key_pressed),
3319 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
3320 GTK_SIGNAL_FUNC(date_format_on_delete),
3322 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
3323 GTK_SIGNAL_FUNC(date_format_entry_on_change),
3326 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
3327 GTK_SIGNAL_FUNC(date_format_select_row),
3330 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
3331 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
3333 gtk_widget_show(datefmt_win);
3334 manage_window_set_transient(GTK_WINDOW(datefmt_win));
3336 gtk_widget_grab_focus(ok_btn);
3341 void prefs_quote_colors_dialog(void)
3343 if (!quote_color_win)
3344 prefs_quote_colors_dialog_create();
3345 gtk_widget_show(quote_color_win);
3346 manage_window_set_transient(GTK_WINDOW(quote_color_win));
3349 gtk_widget_hide(quote_color_win);
3351 textview_update_message_colors();
3352 main_window_reflect_prefs_all();
3355 static void prefs_quote_colors_dialog_create(void)
3360 GtkWidget *quotelevel1_label;
3361 GtkWidget *quotelevel2_label;
3362 GtkWidget *quotelevel3_label;
3363 GtkWidget *uri_label;
3364 GtkWidget *signature_label;
3365 GtkWidget *tgt_folder_label;
3368 GtkWidget *recycle_colors_btn;
3369 GtkWidget *frame_colors;
3371 window = gtk_window_new(GTK_WINDOW_DIALOG);
3372 gtk_container_set_border_width(GTK_CONTAINER(window), 2);
3373 gtk_window_set_title(GTK_WINDOW(window), _("Set message colors"));
3374 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
3375 gtk_window_set_modal(GTK_WINDOW(window), TRUE);
3376 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
3378 vbox = gtk_vbox_new (FALSE, VSPACING);
3379 gtk_container_add (GTK_CONTAINER (window), vbox);
3380 gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
3381 PACK_FRAME(vbox, frame_colors, _("Colors"));
3383 table = gtk_table_new (5, 2, FALSE);
3384 gtk_container_add (GTK_CONTAINER (frame_colors), table);
3385 gtk_container_set_border_width (GTK_CONTAINER (table), 8);
3386 gtk_table_set_row_spacings (GTK_TABLE (table), 2);
3387 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
3390 color_buttons.quote_level1_btn = gtk_button_new();
3391 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level1_btn,
3392 0, 1, 0, 1, 0, 0, 0, 0);
3393 gtk_widget_set_usize (color_buttons.quote_level1_btn, 40, 30);
3394 gtk_container_set_border_width
3395 (GTK_CONTAINER (color_buttons.quote_level1_btn), 5);
3397 color_buttons.quote_level2_btn = gtk_button_new();
3398 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level2_btn,
3399 0, 1, 1, 2, 0, 0, 0, 0);
3400 gtk_widget_set_usize (color_buttons.quote_level2_btn, 40, 30);
3401 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.quote_level2_btn), 5);
3403 color_buttons.quote_level3_btn = gtk_button_new_with_label ("");
3404 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level3_btn,
3405 0, 1, 2, 3, 0, 0, 0, 0);
3406 gtk_widget_set_usize (color_buttons.quote_level3_btn, 40, 30);
3407 gtk_container_set_border_width
3408 (GTK_CONTAINER (color_buttons.quote_level3_btn), 5);
3410 color_buttons.uri_btn = gtk_button_new_with_label ("");
3411 gtk_table_attach (GTK_TABLE (table), color_buttons.uri_btn,
3412 0, 1, 3, 4, 0, 0, 0, 0);
3413 gtk_widget_set_usize (color_buttons.uri_btn, 40, 30);
3414 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.uri_btn), 5);
3416 color_buttons.tgt_folder_btn = gtk_button_new_with_label ("");
3417 gtk_table_attach (GTK_TABLE (table), color_buttons.tgt_folder_btn,
3418 0, 1, 4, 5, 0, 0, 0, 0);
3419 gtk_widget_set_usize (color_buttons.tgt_folder_btn, 40, 30);
3420 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.tgt_folder_btn), 5);
3422 color_buttons.signature_btn = gtk_button_new_with_label ("");
3423 gtk_table_attach (GTK_TABLE (table), color_buttons.signature_btn,
3424 0, 1, 5, 6, 0, 0, 0, 0);
3425 gtk_widget_set_usize (color_buttons.signature_btn, 40, 30);
3426 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.signature_btn), 5);
3428 quotelevel1_label = gtk_label_new (_("Quoted Text - First Level"));
3429 gtk_table_attach (GTK_TABLE (table), quotelevel1_label, 1, 2, 0, 1,
3430 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3431 gtk_label_set_justify (GTK_LABEL (quotelevel1_label), GTK_JUSTIFY_LEFT);
3432 gtk_misc_set_alignment (GTK_MISC (quotelevel1_label), 0, 0.5);
3434 quotelevel2_label = gtk_label_new (_("Quoted Text - Second Level"));
3435 gtk_table_attach (GTK_TABLE (table), quotelevel2_label, 1, 2, 1, 2,
3436 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3437 gtk_label_set_justify (GTK_LABEL (quotelevel2_label), GTK_JUSTIFY_LEFT);
3438 gtk_misc_set_alignment (GTK_MISC (quotelevel2_label), 0, 0.5);
3440 quotelevel3_label = gtk_label_new (_("Quoted Text - Third Level"));
3441 gtk_table_attach (GTK_TABLE (table), quotelevel3_label, 1, 2, 2, 3,
3442 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3443 gtk_label_set_justify (GTK_LABEL (quotelevel3_label), GTK_JUSTIFY_LEFT);
3444 gtk_misc_set_alignment (GTK_MISC (quotelevel3_label), 0, 0.5);
3446 uri_label = gtk_label_new (_("URI link"));
3447 gtk_table_attach (GTK_TABLE (table), uri_label, 1, 2, 3, 4,
3448 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3449 gtk_label_set_justify (GTK_LABEL (uri_label), GTK_JUSTIFY_LEFT);
3450 gtk_misc_set_alignment (GTK_MISC (uri_label), 0, 0.5);
3452 tgt_folder_label = gtk_label_new (_("Target folder"));
3453 gtk_table_attach (GTK_TABLE (table), tgt_folder_label, 1, 2, 4, 5,
3454 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3455 gtk_label_set_justify (GTK_LABEL (tgt_folder_label), GTK_JUSTIFY_LEFT);
3456 gtk_misc_set_alignment (GTK_MISC (tgt_folder_label), 0, 0.5);
3458 signature_label = gtk_label_new (_("Signatures"));
3459 gtk_table_attach (GTK_TABLE (table), signature_label, 1, 2, 5, 6,
3460 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3461 gtk_label_set_justify (GTK_LABEL (signature_label), GTK_JUSTIFY_LEFT);
3462 gtk_misc_set_alignment (GTK_MISC (signature_label), 0, 0.5);
3464 PACK_CHECK_BUTTON (vbox, recycle_colors_btn,
3465 _("Recycle quote colors"));
3467 gtkut_button_set_create(&hbbox, &ok_btn, _("OK"),
3468 NULL, NULL, NULL, NULL);
3469 gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
3471 gtk_widget_grab_default(ok_btn);
3472 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3473 gtk_signal_connect(GTK_OBJECT(window), "delete_event",
3474 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3475 gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
3476 GTK_SIGNAL_FUNC(prefs_quote_colors_key_pressed),
3479 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level1_btn), "clicked",
3480 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL1");
3481 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level2_btn), "clicked",
3482 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL2");
3483 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level3_btn), "clicked",
3484 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL3");
3485 gtk_signal_connect(GTK_OBJECT(color_buttons.uri_btn), "clicked",
3486 GTK_SIGNAL_FUNC(quote_color_set_dialog), "URI");
3487 gtk_signal_connect(GTK_OBJECT(color_buttons.tgt_folder_btn), "clicked",
3488 GTK_SIGNAL_FUNC(quote_color_set_dialog), "TGTFLD");
3489 gtk_signal_connect(GTK_OBJECT(color_buttons.signature_btn), "clicked",
3490 GTK_SIGNAL_FUNC(quote_color_set_dialog), "SIGNATURE");
3491 gtk_signal_connect(GTK_OBJECT(recycle_colors_btn), "toggled",
3492 GTK_SIGNAL_FUNC(prefs_recycle_colors_toggled), NULL);
3493 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
3494 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3496 /* show message button colors and recycle options */
3497 set_button_bg_color(color_buttons.quote_level1_btn,
3498 prefs_common.quote_level1_col);
3499 set_button_bg_color(color_buttons.quote_level2_btn,
3500 prefs_common.quote_level2_col);
3501 set_button_bg_color(color_buttons.quote_level3_btn,
3502 prefs_common.quote_level3_col);
3503 set_button_bg_color(color_buttons.uri_btn,
3504 prefs_common.uri_col);
3505 set_button_bg_color(color_buttons.tgt_folder_btn,
3506 prefs_common.tgt_folder_col);
3507 set_button_bg_color(color_buttons.signature_btn,
3508 prefs_common.signature_col);
3509 gtk_toggle_button_set_active((GtkToggleButton *)recycle_colors_btn,
3510 prefs_common.recycle_quote_colors);
3512 gtk_widget_show_all(vbox);
3513 quote_color_win = window;
3516 static void prefs_quote_colors_key_pressed(GtkWidget *widget,
3517 GdkEventKey *event, gpointer data)
3519 if (event && event->keyval == GDK_Escape)
3523 static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
3525 gchar *type = (gchar *)data;
3526 gchar *title = NULL;
3527 gdouble color[4] = {0.0, 0.0, 0.0, 0.0};
3529 GtkColorSelectionDialog *dialog;
3531 if(g_strcasecmp(type, "LEVEL1") == 0) {
3532 title = _("Pick color for quotation level 1");
3533 rgbvalue = prefs_common.quote_level1_col;
3534 } else if(g_strcasecmp(type, "LEVEL2") == 0) {
3535 title = _("Pick color for quotation level 2");
3536 rgbvalue = prefs_common.quote_level2_col;
3537 } else if(g_strcasecmp(type, "LEVEL3") == 0) {
3538 title = _("Pick color for quotation level 3");
3539 rgbvalue = prefs_common.quote_level3_col;
3540 } else if(g_strcasecmp(type, "URI") == 0) {
3541 title = _("Pick color for URI");
3542 rgbvalue = prefs_common.uri_col;
3543 } else if(g_strcasecmp(type, "TGTFLD") == 0) {
3544 title = _("Pick color for target folder");
3545 rgbvalue = prefs_common.tgt_folder_col;
3546 } else if(g_strcasecmp(type, "SIGNATURE") == 0) {
3547 title = _("Pick color for signatures");
3548 rgbvalue = prefs_common.signature_col;
3550 } else if(g_strcasecmp(type, "Misspelled word") == 0) {
3551 title = _("Pick color for misspelled word");
3552 rgbvalue = prefs_common.misspelled_col;
3554 } else { /* Should never be called */
3555 g_warning("Unrecognized datatype '%s' in quote_color_set_dialog\n", type);
3559 color_dialog = gtk_color_selection_dialog_new(title);
3560 gtk_window_set_position(GTK_WINDOW(color_dialog), GTK_WIN_POS_CENTER);
3561 gtk_window_set_modal(GTK_WINDOW(color_dialog), TRUE);
3562 gtk_window_set_policy(GTK_WINDOW(color_dialog), FALSE, FALSE, FALSE);
3563 manage_window_set_transient(GTK_WINDOW(color_dialog));
3565 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->ok_button),
3566 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_ok), data);
3567 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->cancel_button),
3568 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_cancel), data);
3569 gtk_signal_connect(GTK_OBJECT(color_dialog), "key_press_event",
3570 GTK_SIGNAL_FUNC(quote_colors_set_dialog_key_pressed),
3573 /* preselect the previous color in the color selection dialog */
3574 color[0] = (gdouble) ((rgbvalue & 0xff0000) >> 16) / 255.0;
3575 color[1] = (gdouble) ((rgbvalue & 0x00ff00) >> 8) / 255.0;
3576 color[2] = (gdouble) (rgbvalue & 0x0000ff) / 255.0;
3577 dialog = GTK_COLOR_SELECTION_DIALOG(color_dialog);
3578 gtk_color_selection_set_color
3579 (GTK_COLOR_SELECTION(dialog->colorsel), color);
3581 gtk_widget_show(color_dialog);
3584 static void quote_colors_set_dialog_ok(GtkWidget *widget, gpointer data)
3586 GtkColorSelection *colorsel = (GtkColorSelection *)
3587 ((GtkColorSelectionDialog *)color_dialog)->colorsel;
3589 gint red, green, blue, rgbvalue;
3590 gchar *type = (gchar *)data;
3592 gtk_color_selection_get_color(colorsel, color);
3594 red = (gint) (color[0] * 255.0);
3595 green = (gint) (color[1] * 255.0);
3596 blue = (gint) (color[2] * 255.0);
3597 rgbvalue = (gint) ((red * 0x10000) | (green * 0x100) | blue);
3600 fprintf(stderr, "redc = %f, greenc = %f, bluec = %f\n", color[0], color[1], color[2]);
3601 fprintf(stderr, "red = %d, green = %d, blue = %d\n", red, green, blue);
3602 fprintf(stderr, "Color is %x\n", rgbvalue);
3605 if (g_strcasecmp(type, "LEVEL1") == 0) {
3606 prefs_common.quote_level1_col = rgbvalue;
3607 set_button_bg_color(color_buttons.quote_level1_btn, rgbvalue);
3608 } else if (g_strcasecmp(type, "LEVEL2") == 0) {
3609 prefs_common.quote_level2_col = rgbvalue;
3610 set_button_bg_color(color_buttons.quote_level2_btn, rgbvalue);
3611 } else if (g_strcasecmp(type, "LEVEL3") == 0) {
3612 prefs_common.quote_level3_col = rgbvalue;
3613 set_button_bg_color(color_buttons.quote_level3_btn, rgbvalue);
3614 } else if (g_strcasecmp(type, "URI") == 0) {
3615 prefs_common.uri_col = rgbvalue;
3616 set_button_bg_color(color_buttons.uri_btn, rgbvalue);
3617 } else if (g_strcasecmp(type, "TGTFLD") == 0) {
3618 prefs_common.tgt_folder_col = rgbvalue;
3619 set_button_bg_color(color_buttons.tgt_folder_btn, rgbvalue);
3620 folderview_set_target_folder_color(prefs_common.tgt_folder_col);
3621 } else if (g_strcasecmp(type, "SIGNATURE") == 0) {
3622 prefs_common.signature_col = rgbvalue;
3623 set_button_bg_color(color_buttons.signature_btn, rgbvalue);
3625 } else if (g_strcasecmp(type, "Misspelled word") == 0) {
3626 prefs_common.misspelled_col = rgbvalue;
3627 set_button_bg_color(spelling.misspelled_btn, rgbvalue);
3630 fprintf( stderr, "Unrecognized datatype '%s' in quote_color_set_dialog_ok\n", type );
3632 gtk_widget_destroy(color_dialog);
3635 static void quote_colors_set_dialog_cancel(GtkWidget *widget, gpointer data)
3637 gtk_widget_destroy(color_dialog);
3640 static void quote_colors_set_dialog_key_pressed(GtkWidget *widget,
3644 gtk_widget_destroy(color_dialog);
3647 static void set_button_bg_color(GtkWidget *widget, gint rgbvalue)
3652 gtkut_convert_int_to_gdk_color(rgbvalue, &color);
3653 newstyle = gtk_style_copy(gtk_widget_get_default_style());
3654 newstyle->bg[GTK_STATE_NORMAL] = color;
3655 newstyle->bg[GTK_STATE_PRELIGHT] = color;
3656 newstyle->bg[GTK_STATE_ACTIVE] = color;
3658 gtk_widget_set_style(GTK_WIDGET(widget), newstyle);
3661 static void prefs_enable_message_color_toggled(void)
3665 is_active = gtk_toggle_button_get_active
3666 (GTK_TOGGLE_BUTTON(message.chkbtn_enablecol));
3667 gtk_widget_set_sensitive(message.button_edit_col, is_active);
3668 prefs_common.enable_color = is_active;
3671 static void prefs_recycle_colors_toggled(GtkWidget *widget)
3675 is_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
3676 prefs_common.recycle_quote_colors = is_active;
3679 static void prefs_font_select(GtkButton *button, GtkEntry *entry)
3683 g_return_if_fail(entry != NULL);
3685 if (!font_sel_win) {
3686 font_sel_win = gtk_font_selection_dialog_new
3687 (_("Font selection"));
3688 gtk_window_position(GTK_WINDOW(font_sel_win),
3689 GTK_WIN_POS_CENTER);
3690 gtk_signal_connect(GTK_OBJECT(font_sel_win), "delete_event",
3691 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3694 (GTK_OBJECT(font_sel_win), "key_press_event",
3695 GTK_SIGNAL_FUNC(prefs_font_selection_key_pressed),
3697 gtk_signal_connect_object
3698 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->cancel_button),
3700 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3701 GTK_OBJECT(font_sel_win));
3704 if(font_sel_conn_id) {
3705 gtk_signal_disconnect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button), font_sel_conn_id);
3707 font_sel_conn_id = gtk_signal_connect
3708 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button),
3710 GTK_SIGNAL_FUNC(prefs_font_selection_ok),
3712 printf("%i\n", font_sel_conn_id);
3714 font_name = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
3715 gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(font_sel_win), font_name);
3717 manage_window_set_transient(GTK_WINDOW(font_sel_win));
3718 gtk_window_set_modal(GTK_WINDOW(font_sel_win), TRUE);
3719 gtk_widget_grab_focus
3720 (GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button);
3721 gtk_widget_show(font_sel_win);
3724 static void prefs_font_selection_key_pressed(GtkWidget *widget,
3728 if (event && event->keyval == GDK_Escape)
3729 gtk_widget_hide(font_sel_win);
3732 static void prefs_font_selection_ok(GtkButton *button, GtkEntry *entry)
3736 fontname = gtk_font_selection_dialog_get_font_name
3737 (GTK_FONT_SELECTION_DIALOG(font_sel_win));
3740 gtk_entry_set_text(entry, fontname);
3745 gtk_widget_hide(font_sel_win);
3748 static void prefs_keybind_select(void)
3755 GtkWidget *confirm_area;
3757 GtkWidget *cancel_btn;
3759 window = gtk_window_new (GTK_WINDOW_DIALOG);
3760 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
3761 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
3762 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
3763 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
3764 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
3765 manage_window_set_transient (GTK_WINDOW (window));
3767 vbox1 = gtk_vbox_new (FALSE, VSPACING);
3768 gtk_container_add (GTK_CONTAINER (window), vbox1);
3769 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
3771 hbox1 = gtk_hbox_new (FALSE, 8);
3772 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3774 label = gtk_label_new
3775 (_("Select the preset of key bindings.\n"
3776 "You can also modify each menu's shortcuts by pressing\n"
3777 "any key(s) when placing the mouse pointer on the item."));
3778 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3779 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3781 hbox1 = gtk_hbox_new (FALSE, 8);
3782 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3784 combo = gtk_combo_new ();
3785 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
3786 gtkut_combo_set_items (GTK_COMBO (combo),
3792 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
3794 hbox1 = gtk_hbox_new (FALSE, 8);
3795 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3797 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
3798 &cancel_btn, _("Cancel"), NULL, NULL);
3799 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
3800 gtk_widget_grab_default (ok_btn);
3802 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3803 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3804 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
3805 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
3806 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
3807 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
3808 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
3810 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
3811 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
3814 gtk_widget_show_all(window);
3816 keybind.window = window;
3817 keybind.combo = combo;
3820 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
3823 if (event && event->keyval == GDK_Escape)
3824 prefs_keybind_cancel();
3827 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
3830 prefs_keybind_cancel();
3834 static void prefs_keybind_cancel(void)
3836 gtk_widget_destroy(keybind.window);
3837 keybind.window = NULL;
3838 keybind.combo = NULL;
3841 static void prefs_keybind_apply_clicked(GtkWidget *widget)
3843 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
3847 static gchar *default_menurc =
3848 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3849 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
3850 "(menu-path \"<Main>/File/Print...\" \"\")\n"
3851 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
3853 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3854 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3855 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3856 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
3858 "(menu-path \"<Main>/View/Expand Summary View\" \"V\")\n"
3859 "(menu-path \"<Main>/View/Expand Message View\" \"<shift>V\")\n"
3860 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3861 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3862 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3863 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3864 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3865 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3866 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3867 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3868 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3869 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3871 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3872 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3873 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
3874 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3875 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><control>R\")\n"
3876 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3877 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3878 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
3879 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
3880 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3881 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
3882 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
3883 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3884 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3885 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3886 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3888 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3889 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3890 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3892 "(menu-path \"<Compose>/File/Close\" \"<control>W\")\n"
3893 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
3894 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
3895 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
3896 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
3897 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
3898 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
3900 static gchar *mew_wl_menurc =
3901 "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
3902 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
3903 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
3904 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
3906 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3907 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3908 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3909 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3911 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3912 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3913 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
3914 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3915 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3916 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3917 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3918 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3919 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3920 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3921 "(menu-path \"<Main>/View/Show all headers\" \"<shift>H\")\n"
3922 "(menu-path \"<Main>/View/Update\" \"<shift>S\")\n"
3924 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3925 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3926 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
3927 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3928 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift>A\")\n"
3929 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3930 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3931 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3932 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
3933 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
3934 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
3935 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3936 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3937 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3938 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3939 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
3941 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3942 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3943 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3945 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3946 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3947 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3948 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3949 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3950 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3951 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3953 static gchar *mutt_menurc =
3954 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3955 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
3956 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
3957 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
3959 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3960 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3961 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3962 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
3964 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
3965 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3966 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
3967 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
3968 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
3969 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
3970 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
3971 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3972 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3973 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
3974 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3976 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3977 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3978 "(menu-path \"<Main>/Message/Compose new message\" \"M\")\n"
3979 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
3980 "(menu-path \"<Main>/Message/Reply to/all\" \"G\")\n"
3981 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
3982 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
3983 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3984 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
3985 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3986 "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
3987 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3988 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
3989 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3990 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
3991 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3993 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3994 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3995 "(menu-path \"<Main>/Tools/Log window\" \"<shift><control>L\")\n"
3997 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3998 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3999 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
4000 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
4001 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
4002 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
4003 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
4005 static gchar *old_sylpheed_menurc =
4006 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
4007 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
4008 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
4009 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
4011 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
4012 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
4013 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
4014 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
4016 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
4017 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
4018 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
4019 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
4020 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
4021 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
4022 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
4023 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
4024 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
4025 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
4026 "(menu-path \"<Main>/View/Show all headers\" \"<control>H\")\n"
4027 "(menu-path \"<Main>/View/Update\" \"<alt>U\")\n"
4029 "(menu-path \"<Main>/Message/Get new mail\" \"<alt>I\")\n"
4030 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><alt>I\")\n"
4031 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
4032 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
4033 "(menu-path \"<Main>/Message/Reply to/all\" \"<shift><alt>R\")\n"
4034 "(menu-path \"<Main>/Message/Reply to/sender\" \"<control><alt>R\")\n"
4035 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"<control>L\")\n"
4036 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
4037 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
4038 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
4039 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
4040 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
4041 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
4042 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
4043 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
4044 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
4046 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
4047 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
4048 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
4050 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
4051 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
4052 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
4053 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
4054 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
4055 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
4056 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
4058 static gchar *empty_menurc =
4059 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
4060 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
4061 "(menu-path \"<Main>/File/Print...\" \"\")\n"
4062 "(menu-path \"<Main>/File/Exit\" \"\")\n"
4064 "(menu-path \"<Main>/Edit/Copy\" \"\")\n"
4065 "(menu-path \"<Main>/Edit/Select all\" \"\")\n"
4066 "(menu-path \"<Main>/Edit/Find in current message...\" \"\")\n"
4067 "(menu-path \"<Main>/Edit/Search folder...\" \"\")\n"
4069 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
4070 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
4071 "(menu-path \"<Main>/View/Thread view\" \"\")\n"
4072 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
4073 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
4074 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
4075 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
4076 "(menu-path \"<Main>/View/Go to/Other folder...\" \"\")\n"
4077 "(menu-path \"<Main>/View/Open in new window\" \"\")\n"
4078 "(menu-path \"<Main>/View/View source\" \"\")\n"
4079 "(menu-path \"<Main>/View/Show all headers\" \"\")\n"
4080 "(menu-path \"<Main>/View/Update\" \"\")\n"
4082 "(menu-path \"<Main>/Message/Get new mail\" \"\")\n"
4083 "(menu-path \"<Main>/Message/Get from all accounts\" \"\")\n"
4084 "(menu-path \"<Main>/Message/Compose an email message\" \"\")\n"
4085 "(menu-path \"<Main>/Message/Reply\" \"\")\n"
4086 "(menu-path \"<Main>/Message/Reply to/all\" \"\")\n"
4087 "(menu-path \"<Main>/Message/Reply to/sender\" \"\")\n"
4088 "(menu-path \"<Main>/Message/Reply to/mailing list\" \"\")\n"
4089 "(menu-path \"<Main>/Message/Forward\" \"\")\n"
4090 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
4091 "(menu-path \"<Main>/Message/Move...\" \"\")\n"
4092 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
4093 "(menu-path \"<Main>/Message/Delete\" \"\")\n"
4094 "(menu-path \"<Main>/Message/Mark/Mark\" \"\")\n"
4095 "(menu-path \"<Main>/Message/Mark/Unmark\" \"\")\n"
4096 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"\")\n"
4097 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
4099 "(menu-path \"<Main>/Tools/Address book\" \"\")\n"
4100 "(menu-path \"<Main>/Tools/Execute\" \"\")\n"
4101 "(menu-path \"<Main>/Tools/Log window\" \"\")\n"
4103 "(menu-path \"<Compose>/File/Close\" \"\")\n"
4104 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
4105 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
4106 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
4107 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
4108 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
4109 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
4111 text = gtk_entry_get_text(entry);
4113 if (!strcmp(text, _("Default")))
4114 rc_str = default_menurc;
4115 else if (!strcmp(text, "Mew / Wanderlust"))
4116 rc_str = mew_wl_menurc;
4117 else if (!strcmp(text, "Mutt"))
4118 rc_str = mutt_menurc;
4119 else if (!strcmp(text, _("Old Sylpheed")))
4120 rc_str = old_sylpheed_menurc;
4124 gtk_item_factory_parse_rc_string(empty_menurc);
4125 gtk_item_factory_parse_rc_string(rc_str);
4127 gtk_widget_destroy(keybind.window);
4128 keybind.window = NULL;
4129 keybind.combo = NULL;
4132 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
4135 GtkWidget *menuitem;
4138 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4139 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4140 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
4141 g_free(*((gchar **)pparam->data));
4142 *((gchar **)pparam->data) = g_strdup(charset);
4145 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
4147 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4150 g_return_if_fail(optmenu != NULL);
4151 g_return_if_fail(*((gchar **)pparam->data) != NULL);
4153 index = menu_find_option_menu_index(optmenu, *((gchar **)pparam->data),
4154 (GCompareFunc)strcmp);
4156 gtk_option_menu_set_history(optmenu, index);
4158 gtk_option_menu_set_history(optmenu, 0);
4159 prefs_common_charset_set_data_from_optmenu(pparam);
4163 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
4166 GtkWidget *menuitem;
4168 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4169 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4170 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
4171 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4174 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
4176 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
4177 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4179 GtkWidget *menuitem;
4182 case RECV_DIALOG_ALWAYS:
4183 gtk_option_menu_set_history(optmenu, 0);
4185 case RECV_DIALOG_ACTIVE:
4186 gtk_option_menu_set_history(optmenu, 1);
4188 case RECV_DIALOG_NEVER:
4189 gtk_option_menu_set_history(optmenu, 2);
4195 menu = gtk_option_menu_get_menu(optmenu);
4196 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4197 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
4200 static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam)
4203 GtkWidget *menuitem;
4205 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4206 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4207 *((SendDialogMode *)pparam->data) = GPOINTER_TO_INT
4208 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4211 static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam)
4213 SendDialogMode mode = *((SendDialogMode *)pparam->data);
4214 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4216 GtkWidget *menuitem;
4219 case SEND_DIALOG_ALWAYS:
4220 gtk_option_menu_set_history(optmenu, 0);
4222 case SEND_DIALOG_NEVER:
4223 gtk_option_menu_set_history(optmenu, 1);
4229 menu = gtk_option_menu_get_menu(optmenu);
4230 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4231 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
4234 static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
4237 prefs_common_cancel();
4241 static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
4244 if (event && event->keyval == GDK_Escape)
4245 prefs_common_cancel();
4248 static void prefs_common_ok(void)
4250 prefs_common_apply();
4251 gtk_widget_hide(dialog.window);
4256 static void prefs_common_apply(void)
4258 gchar *entry_pixmap_theme_str;
4259 gboolean update_pixmap_theme;
4261 entry_pixmap_theme_str = gtk_entry_get_text(GTK_ENTRY(interface.entry_pixmap_theme));
4262 if (entry_pixmap_theme_str &&
4263 (strcmp(prefs_common.pixmap_theme_path, entry_pixmap_theme_str) != 0) )
4264 update_pixmap_theme = TRUE;
4266 update_pixmap_theme = FALSE;
4268 prefs_set_data_from_dialog(param);
4270 if (update_pixmap_theme)
4272 main_window_reflect_prefs_all_real(TRUE);
4273 compose_reflect_prefs_pixmap_theme();
4275 main_window_reflect_prefs_all_real(FALSE);
4277 prefs_common_save_config();
4279 inc_autocheck_timer_remove();
4280 inc_autocheck_timer_set();
4283 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
4286 GtkWidget *menuitem;
4288 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4289 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4290 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
4291 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4294 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
4296 NextUnreadMsgDialogShow dialog_show;
4297 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4299 GtkWidget *menuitem;
4301 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
4303 switch (dialog_show) {
4304 case NEXTUNREADMSGDIALOG_ALWAYS:
4305 gtk_option_menu_set_history(optmenu, 0);
4307 case NEXTUNREADMSGDIALOG_ASSUME_YES:
4308 gtk_option_menu_set_history(optmenu, 1);
4310 case NEXTUNREADMSGDIALOG_ASSUME_NO:
4311 gtk_option_menu_set_history(optmenu, 2);
4315 menu = gtk_option_menu_get_menu(optmenu);
4316 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4317 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
4320 static void prefs_common_cancel(void)
4322 gtk_widget_hide(dialog.window);
4327 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
4330 GtkWidget *menuitem;
4332 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4333 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4334 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
4335 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4338 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
4340 RecvDialogShow dialog_show;
4341 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4343 GtkWidget *menuitem;
4345 dialog_show = *((RecvDialogShow *)pparam->data);
4347 switch (dialog_show) {
4348 case RECVDIALOG_ALWAYS:
4349 gtk_option_menu_set_history(optmenu, 0);
4351 case RECVDIALOG_WINDOW_ACTIVE:
4352 gtk_option_menu_set_history(optmenu, 1);
4354 case RECVDIALOG_NEVER:
4355 gtk_option_menu_set_history(optmenu, 2);
4360 menu = gtk_option_menu_get_menu(optmenu);
4361 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4362 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));