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"
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_noerrorpanel;
82 GtkWidget *checkbtn_scan_after_inc;
85 GtkWidget *checkbtn_newmail_auto;
86 GtkWidget *checkbtn_newmail_manu;
87 GtkWidget *entry_newmail_notify_cmd;
88 GtkWidget *hbox_newmail_notify;
90 GtkWidget *spinbtn_maxarticle;
91 GtkObject *spinbtn_maxarticle_adj;
95 GtkWidget *checkbtn_extsend;
96 GtkWidget *entry_extsend;
97 GtkWidget *button_extsend;
99 GtkWidget *checkbtn_savemsg;
100 GtkWidget *checkbtn_queuemsg;
102 GtkWidget *optmenu_charset;
104 GtkWidget *checkbtn_returnreceipt;
107 static struct Compose {
108 GtkWidget *checkbtn_autosig;
109 GtkWidget *entry_sigsep;
111 GtkWidget *entry_fw_quotemark;
112 GtkWidget *text_fw_quotefmt;
114 GtkWidget *checkbtn_autoextedit;
115 GtkWidget *spinbtn_undolevel;
116 GtkObject *spinbtn_undolevel_adj;
117 GtkWidget *spinbtn_linewrap;
118 GtkObject *spinbtn_linewrap_adj;
119 GtkWidget *checkbtn_wrapquote;
120 GtkWidget *checkbtn_autowrap;
121 GtkWidget *checkbtn_wrapatsend;
123 GtkWidget *checkbtn_reply_account_autosel;
124 GtkWidget *checkbtn_forward_account_autosel;
125 GtkWidget *checkbtn_reedit_account_autosel;
126 GtkWidget *checkbtn_quote;
127 GtkWidget *checkbtn_forward_as_attachment;
128 GtkWidget *checkbtn_redirect_keep_from;
129 GtkWidget *checkbtn_smart_wrapping;
130 GtkWidget *checkbtn_block_cursor;
131 GtkWidget *checkbtn_reply_with_quote;
136 static struct Spelling {
137 GtkWidget *checkbtn_enable_pspell;
138 GtkWidget *entry_pspell_path;
139 GtkWidget *btn_pspell_path;
140 GtkWidget *optmenu_dictionary;
141 GtkWidget *optmenu_sugmode;
142 GtkWidget *misspelled_btn;
143 GtkWidget *checkbtn_use_alternate;
144 GtkWidget *checkbtn_check_while_typing;
148 static struct Quote {
149 GtkWidget *entry_quotemark;
150 GtkWidget *text_quotefmt;
152 GtkWidget *entry_fw_quotemark;
153 GtkWidget *text_fw_quotefmt;
155 GtkWidget *entry_quote_chars;
158 static struct Display {
159 GtkWidget *entry_textfont;
160 GtkWidget *button_textfont;
162 GtkWidget *entry_smallfont;
163 GtkWidget *entry_normalfont;
164 GtkWidget *entry_boldfont;
166 GtkWidget *chkbtn_folder_unread;
167 GtkWidget *chkbtn_display_img;
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;
199 static struct Privacy {
200 GtkWidget *checkbtn_auto_check_signatures;
201 GtkWidget *checkbtn_gpg_signature_popup;
202 GtkWidget *checkbtn_store_passphrase;
203 GtkWidget *spinbtn_store_passphrase;
204 GtkObject *spinbtn_store_passphrase_adj;
205 GtkWidget *checkbtn_passphrase_grab;
206 GtkWidget *checkbtn_gpg_warning;
207 GtkWidget *optmenu_default_signkey;
211 static struct Interface {
212 /* GtkWidget *checkbtn_emacs; */
213 GtkWidget *checkbtn_show_msg_with_cursor;
214 GtkWidget *checkbtn_openunread;
215 GtkWidget *checkbtn_openinbox;
216 GtkWidget *checkbtn_immedexec;
217 GtkWidget *checkbtn_addaddrbyclick;
218 GtkWidget *optmenu_recvdialog;
219 GtkWidget *optmenu_nextunreadmsgdialog;
220 GtkWidget *entry_pixmap_theme;
221 GtkWidget *combo_pixmap_theme;
224 static struct Other {
225 GtkWidget *uri_combo;
226 GtkWidget *uri_entry;
227 GtkWidget *printcmd_entry;
228 GtkWidget *exteditor_combo;
229 GtkWidget *exteditor_entry;
230 GtkWidget *checkbtn_confonexit;
231 GtkWidget *checkbtn_cleanonexit;
232 GtkWidget *checkbtn_askonclean;
233 GtkWidget *checkbtn_warnqueued;
234 GtkWidget *checkbtn_cliplog;
235 GtkWidget *loglength_entry;
239 static struct MessageColorButtons {
240 GtkWidget *quote_level1_btn;
241 GtkWidget *quote_level2_btn;
242 GtkWidget *quote_level3_btn;
244 GtkWidget *tgt_folder_btn;
247 static struct KeybindDialog {
252 static GtkWidget *font_sel_win;
253 static guint font_sel_conn_id;
254 static GtkWidget *quote_color_win;
255 static GtkWidget *color_dialog;
257 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam);
258 static void prefs_common_charset_set_optmenu (PrefParam *pparam);
260 static void prefs_common_default_signkey_set_data_from_optmenu
262 static void prefs_common_default_signkey_set_optmenu (PrefParam *pparam);
264 static void prefs_common_recv_dialog_newmail_notify_toggle_cb (GtkWidget *w,
266 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam);
267 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam);
268 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam);
269 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam);
272 static void prefs_dictionary_set_data_from_optmenu (PrefParam *param);
273 static void prefs_dictionary_set_optmenu (PrefParam *pparam);
274 static void prefs_speller_sugmode_set_data_from_optmenu (PrefParam *pparam);
275 static void prefs_speller_sugmode_set_optmenu (PrefParam *pparam);
280 parameter name, default value, pointer to the prefs variable, data type,
281 pointer to the widget pointer,
282 pointer to the function for data setting,
283 pointer to the function for widget setting
286 static PrefParam param[] = {
288 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
289 &receive.checkbtn_incext,
290 prefs_set_data_from_toggle, prefs_set_toggle},
291 {"ext_inc_path", DEFAULT_INC_PATH, &prefs_common.extinc_cmd, P_STRING,
292 &receive.entry_incext,
293 prefs_set_data_from_entry, prefs_set_entry},
295 {"inc_local", "TRUE", &prefs_common.inc_local, P_BOOL,
296 &receive.checkbtn_local,
297 prefs_set_data_from_toggle, prefs_set_toggle},
298 {"filter_on_inc_local", "FALSE", &prefs_common.filter_on_inc, P_BOOL,
299 &receive.checkbtn_filter_on_inc,
300 prefs_set_data_from_toggle, prefs_set_toggle},
301 {"spool_path", DEFAULT_SPOOL_PATH, &prefs_common.spool_path, P_STRING,
302 &receive.entry_spool,
303 prefs_set_data_from_entry, prefs_set_entry},
305 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
306 &receive.checkbtn_autochk,
307 prefs_set_data_from_toggle, prefs_set_toggle},
308 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
309 &receive.spinbtn_autochk,
310 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
311 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
312 &receive.checkbtn_chkonstartup,
313 prefs_set_data_from_toggle, prefs_set_toggle},
314 {"noerrorpanel", "FALSE", &prefs_common.noerrorpanel, P_BOOL,
315 &receive.checkbtn_noerrorpanel,
316 prefs_set_data_from_toggle, prefs_set_toggle},
317 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
318 P_BOOL, &receive.checkbtn_scan_after_inc,
319 prefs_set_data_from_toggle, prefs_set_toggle},
320 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
321 P_BOOL, &receive.checkbtn_newmail_manu,
322 prefs_set_data_from_toggle, prefs_set_toggle},
323 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
324 P_BOOL, &receive.checkbtn_newmail_auto,
325 prefs_set_data_from_toggle, prefs_set_toggle},
326 {"newmail_notify_cmd", "", &prefs_common.newmail_notify_cmd, P_STRING,
327 &receive.entry_newmail_notify_cmd,
328 prefs_set_data_from_entry, prefs_set_entry},
330 {"max_news_articles", "300", &prefs_common.max_articles, P_INT,
331 &receive.spinbtn_maxarticle,
332 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
335 {"use_ext_sendmail", "FALSE", &prefs_common.use_extsend, P_BOOL,
336 &send.checkbtn_extsend,
337 prefs_set_data_from_toggle, prefs_set_toggle},
338 {"ext_sendmail_cmd", DEFAULT_SENDMAIL_CMD,
339 &prefs_common.extsend_cmd, P_STRING,
340 &send.entry_extsend, prefs_set_data_from_entry, prefs_set_entry},
341 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
342 &send.checkbtn_savemsg,
343 prefs_set_data_from_toggle, prefs_set_toggle},
344 {"queue_message", "FALSE", &prefs_common.queue_msg, P_BOOL,
345 &send.checkbtn_queuemsg,
346 prefs_set_data_from_toggle, prefs_set_toggle},
348 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
349 &send.optmenu_charset,
350 prefs_common_charset_set_data_from_optmenu,
351 prefs_common_charset_set_optmenu},
354 {"auto_signature", "TRUE", &prefs_common.auto_sig, P_BOOL,
355 &compose.checkbtn_autosig,
356 prefs_set_data_from_toggle, prefs_set_toggle},
357 {"signature_separator", "-- ", &prefs_common.sig_sep, P_STRING,
358 &compose.entry_sigsep, prefs_set_data_from_entry, prefs_set_entry},
360 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
361 &compose.checkbtn_autoextedit,
362 prefs_set_data_from_toggle, prefs_set_toggle},
363 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
364 P_BOOL, &compose.checkbtn_forward_as_attachment,
365 prefs_set_data_from_toggle, prefs_set_toggle},
366 {"redirect_keep_from", "FALSE",
367 &prefs_common.redirect_keep_from, P_BOOL,
368 &compose.checkbtn_redirect_keep_from,
369 prefs_set_data_from_toggle, prefs_set_toggle},
370 {"undo_level", "50", &prefs_common.undolevels, P_INT,
371 &compose.spinbtn_undolevel,
372 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
373 {"block_cursor", "FALSE", &prefs_common.block_cursor,
374 P_BOOL, &compose.checkbtn_block_cursor,
375 prefs_set_data_from_toggle, prefs_set_toggle},
377 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
378 &compose.spinbtn_linewrap,
379 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
380 {"linewrap_quotation", "FALSE", &prefs_common.linewrap_quote, P_BOOL,
381 &compose.checkbtn_wrapquote,
382 prefs_set_data_from_toggle, prefs_set_toggle},
383 {"linewrap_auto", "FALSE", &prefs_common.autowrap, P_BOOL,
384 &compose.checkbtn_autowrap,
385 prefs_set_data_from_toggle, prefs_set_toggle},
386 {"linewrap_before_sending", "FALSE",
387 &prefs_common.linewrap_at_send, P_BOOL,
388 &compose.checkbtn_wrapatsend,
389 prefs_set_data_from_toggle, prefs_set_toggle},
390 {"smart_wrapping", "TRUE", &prefs_common.smart_wrapping,
391 P_BOOL, &compose.checkbtn_smart_wrapping,
392 prefs_set_data_from_toggle, prefs_set_toggle},
394 {"enable_pspell", "TRUE", &prefs_common.enable_pspell,
395 P_BOOL, &spelling.checkbtn_enable_pspell,
396 prefs_set_data_from_toggle, prefs_set_toggle},
397 {"pspell_path", PSPELL_PATH, &prefs_common.pspell_path,
398 P_STRING, &spelling.entry_pspell_path,
399 prefs_set_data_from_entry, prefs_set_entry},
400 {"dictionary", "", &prefs_common.dictionary,
401 P_STRING, &spelling.optmenu_dictionary,
402 prefs_dictionary_set_data_from_optmenu, prefs_dictionary_set_optmenu },
403 {"pspell_sugmode", "1", &prefs_common.pspell_sugmode,
404 P_INT, &spelling.optmenu_sugmode,
405 prefs_speller_sugmode_set_data_from_optmenu, prefs_speller_sugmode_set_optmenu },
406 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate,
407 P_BOOL, &spelling.checkbtn_use_alternate,
408 prefs_set_data_from_toggle, prefs_set_toggle},
409 {"check_while_typing", "TRUE", &prefs_common.check_while_typing,
410 P_BOOL, &spelling.checkbtn_check_while_typing,
411 prefs_set_data_from_toggle, prefs_set_toggle},
412 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_INT,
415 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
416 &compose.checkbtn_reply_with_quote, prefs_set_data_from_toggle, prefs_set_toggle},
418 /* Account autoselection */
419 {"reply_account_autoselect", "TRUE",
420 &prefs_common.reply_account_autosel, P_BOOL,
421 &compose.checkbtn_reply_account_autosel,
422 prefs_set_data_from_toggle, prefs_set_toggle},
423 {"forward_account_autoselect", "TRUE",
424 &prefs_common.forward_account_autosel, P_BOOL,
425 &compose.checkbtn_forward_account_autosel,
426 prefs_set_data_from_toggle, prefs_set_toggle},
427 {"reedit_account_autoselect", "TRUE",
428 &prefs_common.reedit_account_autosel, P_BOOL,
429 &compose.checkbtn_reedit_account_autosel,
430 prefs_set_data_from_toggle, prefs_set_toggle},
432 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
436 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
437 "e.entry_quotemark, prefs_set_data_from_entry, prefs_set_entry},
438 {"reply_quote_format", "On %d\\n%f wrote:\\n\\n%Q",
439 &prefs_common.quotefmt, P_STRING, "e.text_quotefmt,
440 prefs_set_data_from_text, prefs_set_text},
442 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
443 "e.entry_fw_quotemark,
444 prefs_set_data_from_entry, prefs_set_entry},
445 {"forward_quote_format",
446 "\\n\\nBegin forwarded message:\\n\\n"
447 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
448 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M",
449 &prefs_common.fw_quotefmt, P_STRING, "e.text_fw_quotefmt,
450 prefs_set_data_from_text, prefs_set_text},
451 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
452 "e.entry_quote_chars, prefs_set_data_from_entry, prefs_set_entry},
455 {"widget_font", NULL, &prefs_common.widgetfont, P_STRING,
457 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
458 &prefs_common.textfont, P_STRING,
459 &display.entry_textfont,
460 prefs_set_data_from_entry, prefs_set_entry},
461 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
462 &prefs_common.smallfont, P_STRING,
463 &display.entry_smallfont,
464 prefs_set_data_from_entry, prefs_set_entry},
465 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
466 &prefs_common.boldfont, P_STRING,
467 &display.entry_boldfont,
468 prefs_set_data_from_entry, prefs_set_entry},
469 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
470 &prefs_common.normalfont, P_STRING,
471 &display.entry_normalfont,
472 prefs_set_data_from_entry, prefs_set_entry},
475 {"display_folder_unread_num", "TRUE",
476 &prefs_common.display_folder_unread, P_BOOL,
477 &display.chkbtn_folder_unread,
478 prefs_set_data_from_toggle, prefs_set_toggle},
480 {"display_img", "TRUE",
481 &prefs_common.display_img, P_BOOL,
482 &display.chkbtn_display_img,
483 prefs_set_data_from_toggle, prefs_set_toggle},
484 {"newsgroup_abbrev_len", "16",
485 &prefs_common.ng_abbrev_len, P_INT,
486 &display.spinbtn_ng_abbrev_len,
487 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
489 {"translate_header", "TRUE", &prefs_common.trans_hdr, P_BOOL,
490 &display.chkbtn_transhdr,
491 prefs_set_data_from_toggle, prefs_set_toggle},
493 /* Display: Summary View */
494 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
495 &display.chkbtn_swapfrom,
496 prefs_set_data_from_toggle, prefs_set_toggle},
497 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
498 &display.chkbtn_hscrollbar,
499 prefs_set_data_from_toggle, prefs_set_toggle},
500 {"use_address_book", "TRUE", &prefs_common.use_addr_book, P_BOOL,
501 &display.chkbtn_useaddrbook,
502 prefs_set_data_from_toggle, prefs_set_toggle},
503 {"date_format", "%y/%m/%d(%a) %H:%M", &prefs_common.date_format,
504 P_STRING, &display.entry_datefmt,
505 prefs_set_data_from_entry, prefs_set_entry},
506 {"expand_thread", "TRUE", &prefs_common.expand_thread, P_BOOL,
507 &display.chkbtn_expand_thread,
508 prefs_set_data_from_toggle, prefs_set_toggle},
509 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
510 &display.chkbtn_bold_unread,
511 prefs_set_data_from_toggle, prefs_set_toggle},
513 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
515 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
517 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
520 {"folderview_vscrollbar_policy", "0",
521 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
524 {"summary_col_show_mark", "TRUE",
525 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
526 {"summary_col_show_unread", "TRUE",
527 &prefs_common.summary_col_visible[S_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
528 {"summary_col_show_mime", "TRUE",
529 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
530 {"summary_col_show_subject", "TRUE",
531 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
532 {"summary_col_show_from", "TRUE",
533 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
534 {"summary_col_show_date", "TRUE",
535 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
536 {"summary_col_show_size", "TRUE",
537 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
538 {"summary_col_show_number", "FALSE",
539 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
540 {"summary_col_show_score", "FALSE",
541 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
542 {"summary_col_show_locked", "FALSE",
543 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
545 {"summary_col_pos_mark", "0",
546 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
547 {"summary_col_pos_unread", "1",
548 &prefs_common.summary_col_pos[S_COL_UNREAD], P_INT, NULL, NULL, NULL},
549 {"summary_col_pos_mime", "2",
550 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
551 {"summary_col_pos_subject", "3",
552 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
553 {"summary_col_pos_from", "4",
554 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
555 {"summary_col_pos_date", "5",
556 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
557 {"summary_col_pos_size", "6",
558 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
559 {"summary_col_pos_number", "7",
560 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
561 {"summary_col_pos_score", "8",
562 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
563 {"summary_col_pos_locked", "9",
564 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
566 {"summary_col_size_mark", "10",
567 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
568 {"summary_col_size_unread", "13",
569 &prefs_common.summary_col_size[S_COL_UNREAD], P_INT, NULL, NULL, NULL},
570 {"summary_col_size_mime", "10",
571 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
572 {"summary_col_size_subject", "200",
573 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
574 {"summary_col_size_from", "120",
575 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
576 {"summary_col_size_date", "118",
577 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
578 {"summary_col_size_size", "45",
579 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
580 {"summary_col_size_number", "40",
581 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
582 {"summary_col_size_score", "40",
583 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
584 {"summary_col_size_locked", "13",
585 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
588 {"folderview_width", "179", &prefs_common.folderview_width, P_INT,
590 {"folderview_height", "600", &prefs_common.folderview_height, P_INT,
592 {"folder_col_folder", "150", &prefs_common.folder_col_folder, P_INT,
594 {"folder_col_new", "32", &prefs_common.folder_col_new, P_INT,
596 {"folder_col_unread", "32", &prefs_common.folder_col_unread, P_INT,
598 {"folder_col_total", "32", &prefs_common.folder_col_total, P_INT,
601 {"summaryview_width", "600", &prefs_common.summaryview_width, P_INT,
603 {"summaryview_height", "173", &prefs_common.summaryview_height, P_INT,
606 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
608 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
610 {"mainview_width", "600", &prefs_common.mainview_width, P_INT,
612 {"mainview_height", "600", &prefs_common.mainview_height, P_INT,
614 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
616 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
618 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
620 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
622 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
624 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
626 {"compose_width", "600", &prefs_common.compose_width, P_INT,
628 {"compose_height", "560", &prefs_common.compose_height, P_INT,
632 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
633 &message.chkbtn_enablecol,
634 prefs_set_data_from_toggle, prefs_set_toggle},
636 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_INT,
638 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_INT,
640 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_INT,
642 {"uri_color", "32512", &prefs_common.uri_col, P_INT,
644 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_INT,
646 {"signature_color", "0", &prefs_common.sig_col, P_USHORT,
648 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
649 P_BOOL, NULL, NULL, NULL},
651 {"convert_mb_alnum", "FALSE", &prefs_common.conv_mb_alnum, P_BOOL,
652 &message.chkbtn_mbalnum,
653 prefs_set_data_from_toggle, prefs_set_toggle},
654 {"display_header_pane", "TRUE", &prefs_common.display_header_pane,
655 P_BOOL, &message.chkbtn_disphdrpane,
656 prefs_set_data_from_toggle, prefs_set_toggle},
657 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
658 &message.chkbtn_disphdr,
659 prefs_set_data_from_toggle, prefs_set_toggle},
660 {"line_space", "2", &prefs_common.line_space, P_INT,
661 &message.spinbtn_linespc,
662 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
663 {"enable_head_space", "FALSE", &prefs_common.head_space, P_BOOL,
664 &message.chkbtn_headspc,
665 prefs_set_data_from_toggle, prefs_set_toggle},
667 {"enable_smooth_scroll", "FALSE",
668 &prefs_common.enable_smooth_scroll, P_BOOL,
669 &message.chkbtn_smoothscroll,
670 prefs_set_data_from_toggle, prefs_set_toggle},
671 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
672 &message.spinbtn_scrollstep,
673 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
674 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
675 &message.chkbtn_halfpage,
676 prefs_set_data_from_toggle, prefs_set_toggle},
678 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
682 {"mime_image_viewer", "display '%s'",
683 &prefs_common.mime_image_viewer, P_STRING, NULL, NULL, NULL},
684 {"mime_audio_player", "play '%s'",
685 &prefs_common.mime_audio_player, P_STRING, NULL, NULL, NULL},
686 {"mime_open_command", "gedit '%s'",
687 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
691 {"auto_check_signatures", "TRUE",
692 &prefs_common.auto_check_signatures, P_BOOL,
693 &privacy.checkbtn_auto_check_signatures,
694 prefs_set_data_from_toggle, prefs_set_toggle},
695 {"gpg_signature_popup", "FALSE",
696 &prefs_common.gpg_signature_popup, P_BOOL,
697 &privacy.checkbtn_gpg_signature_popup,
698 prefs_set_data_from_toggle, prefs_set_toggle},
699 {"store_passphrase", "FALSE", &prefs_common.store_passphrase, P_BOOL,
700 &privacy.checkbtn_store_passphrase,
701 prefs_set_data_from_toggle, prefs_set_toggle},
702 {"store_passphrase_timeout", "0", &prefs_common.store_passphrase_timeout,
703 P_INT, &privacy.spinbtn_store_passphrase,
704 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
706 {"passphrase_grab", "FALSE", &prefs_common.passphrase_grab, P_BOOL,
707 &privacy.checkbtn_passphrase_grab,
708 prefs_set_data_from_toggle, prefs_set_toggle},
709 #endif /* __MINGW32__ */
710 {"gpg_warning", "TRUE", &prefs_common.gpg_warning, P_BOOL,
711 &privacy.checkbtn_gpg_warning,
712 prefs_set_data_from_toggle, prefs_set_toggle},
713 {"default_signkey", CS_AUTO, &prefs_common.default_signkey, P_STRING,
714 &privacy.optmenu_default_signkey,
715 prefs_common_default_signkey_set_data_from_optmenu,
716 prefs_common_default_signkey_set_optmenu},
717 #endif /* USE_GPGME */
720 {"separate_folder", "FALSE", &prefs_common.sep_folder, P_BOOL,
722 {"separate_message", "FALSE", &prefs_common.sep_msg, P_BOOL,
725 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
726 NULL, NULL, NULL}, */
727 {"show_message_with_cursor_key", "FALSE",
728 &prefs_common.show_msg_with_cursor_key,
729 P_BOOL, &interface.checkbtn_show_msg_with_cursor,
730 prefs_set_data_from_toggle, prefs_set_toggle},
731 {"open_unread_on_enter", "FALSE", &prefs_common.open_unread_on_enter,
732 P_BOOL, &interface.checkbtn_openunread,
733 prefs_set_data_from_toggle, prefs_set_toggle},
734 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
735 P_BOOL, &interface.checkbtn_openinbox,
736 prefs_set_data_from_toggle, prefs_set_toggle},
737 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
738 &interface.checkbtn_immedexec,
739 prefs_set_data_from_toggle, prefs_set_toggle},
740 {"receive_dialog_mode", "1", &prefs_common.recv_dialog_mode, P_ENUM,
741 &interface.optmenu_recvdialog,
742 prefs_common_recv_dialog_set_data_from_optmenu,
743 prefs_common_recv_dialog_set_optmenu},
744 {"nextunreadmsg_dialog", NULL, &prefs_common.next_unread_msg_dialog, P_ENUM,
745 &interface.optmenu_nextunreadmsgdialog,
746 prefs_nextunreadmsgdialog_set_data_from_optmenu,
747 prefs_nextunreadmsgdialog_set_optmenu},
749 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
750 P_BOOL, &interface.checkbtn_addaddrbyclick,
751 prefs_set_data_from_toggle, prefs_set_toggle},
752 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
753 &prefs_common.pixmap_theme_path, P_STRING,
754 &interface.entry_pixmap_theme, prefs_set_data_from_entry, prefs_set_entry},
757 {"uri_open_command", "netscape -remote 'openURL(%s,raise)'",
758 &prefs_common.uri_cmd, P_STRING,
759 &other.uri_entry, prefs_set_data_from_entry, prefs_set_entry},
760 {"print_command", "lpr %s", &prefs_common.print_cmd, P_STRING,
761 &other.printcmd_entry, prefs_set_data_from_entry, prefs_set_entry},
762 {"ext_editor_command", "gedit %s",
763 &prefs_common.ext_editor_cmd, P_STRING,
764 &other.exteditor_entry, prefs_set_data_from_entry, prefs_set_entry},
766 {"confirm_on_exit", "TRUE", &prefs_common.confirm_on_exit, P_BOOL,
767 &other.checkbtn_confonexit,
768 prefs_set_data_from_toggle, prefs_set_toggle},
769 {"send_return_receipt", "TRUE", &prefs_common.return_receipt, P_BOOL,
770 &send.checkbtn_returnreceipt,
771 prefs_set_data_from_toggle, prefs_set_toggle},
772 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
773 &other.checkbtn_cleanonexit,
774 prefs_set_data_from_toggle, prefs_set_toggle},
775 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
776 &other.checkbtn_askonclean,
777 prefs_set_data_from_toggle, prefs_set_toggle},
778 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
779 P_BOOL, &other.checkbtn_warnqueued,
780 prefs_set_data_from_toggle, prefs_set_toggle},
781 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
784 {"kill_score", "-9999", &prefs_common.kill_score, P_INT,
786 {"important_score", "1", &prefs_common.important_score, P_INT,
788 {"clip_log", "FALSE", &prefs_common.cliplog, P_BOOL,
789 &other.checkbtn_cliplog,
790 prefs_set_data_from_toggle, prefs_set_toggle},
791 {"log_length", "1000", &prefs_common.loglength, P_INT,
792 &other.loglength_entry,
793 prefs_set_data_from_entry, prefs_set_entry},
795 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
798 /* widget creating functions */
799 static void prefs_common_create (void);
800 static void prefs_receive_create (void);
801 static void prefs_send_create (void);
802 static void prefs_compose_create (void);
803 static void prefs_spelling_create (void);
804 static void prefs_quote_create (void);
805 static void prefs_display_create (void);
806 static void prefs_message_create (void);
808 static void prefs_privacy_create (void);
810 static void prefs_interface_create (void);
811 static void prefs_other_create (void);
813 static void date_format_ok_btn_clicked (GtkButton *button,
815 static void date_format_cancel_btn_clicked (GtkButton *button,
817 static void date_format_key_pressed (GtkWidget *keywidget,
820 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
823 static void date_format_entry_on_change (GtkEditable *editable,
825 static void date_format_select_row (GtkWidget *date_format_list,
828 GdkEventButton *event,
829 GtkWidget *date_format);
830 static GtkWidget *date_format_create (GtkButton *button,
833 static void prefs_quote_colors_dialog (void);
834 static void prefs_quote_colors_dialog_create (void);
835 static void prefs_quote_colors_key_pressed (GtkWidget *widget,
838 static void quote_color_set_dialog (GtkWidget *widget,
840 static void quote_colors_set_dialog_ok (GtkWidget *widget,
842 static void quote_colors_set_dialog_cancel (GtkWidget *widget,
844 static void quote_colors_set_dialog_key_pressed (GtkWidget *widget,
847 static void set_button_bg_color (GtkWidget *widget,
849 static void prefs_enable_message_color_toggled (void);
850 static void prefs_recycle_colors_toggled (GtkWidget *widget);
852 static void prefs_font_select (GtkButton *button, GtkEntry *entry);
854 static void prefs_font_selection_key_pressed (GtkWidget *widget,
857 static void prefs_font_selection_ok (GtkButton *button, GtkEntry *entry);
859 static void prefs_keybind_select (void);
860 static gint prefs_keybind_deleted (GtkWidget *widget,
863 static void prefs_keybind_key_pressed (GtkWidget *widget,
866 static void prefs_keybind_cancel (void);
867 static void prefs_keybind_apply_clicked (GtkWidget *widget);
869 static gint prefs_common_deleted (GtkWidget *widget,
872 static void prefs_common_key_pressed (GtkWidget *widget,
875 static void prefs_common_ok (void);
876 static void prefs_common_apply (void);
877 static void prefs_common_cancel (void);
879 void prefs_common_init() {
880 prefs_common.fltlist = NULL;
881 prefs_common.disphdr_list = NULL;
884 void prefs_common_read_config(void)
888 gchar buf[PREFSBUFSIZE];
890 prefs_read_config(param, "Common", COMMON_RC);
892 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
894 if ((fp = fopen(path, "rb")) == NULL) {
895 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
900 while (fgets(buf, sizeof(buf), fp) != NULL) {
902 if (buf[0] == '\0') continue;
903 prefs_common.mime_open_cmd_history =
904 add_history(prefs_common.mime_open_cmd_history, buf);
908 prefs_common.mime_open_cmd_history =
909 g_list_reverse(prefs_common.mime_open_cmd_history);
912 void prefs_common_save_config(void)
918 prefs_save_config(param, "Common", COMMON_RC);
920 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
922 if ((fp = fopen(path, "wb")) == NULL) {
923 FILE_OP_ERROR(path, "fopen");
928 for (cur = prefs_common.mime_open_cmd_history;
929 cur != NULL; cur = cur->next) {
930 fputs((gchar *)cur->data, fp);
938 void prefs_common_open(void)
940 if (prefs_rc_is_readonly(COMMON_RC))
945 if (!dialog.window) {
946 prefs_common_create();
949 manage_window_set_transient(GTK_WINDOW(dialog.window));
950 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
951 gtk_widget_grab_focus(dialog.ok_btn);
953 prefs_set_dialog(param);
955 gtk_widget_show(dialog.window);
958 static void prefs_common_create(void)
962 debug_print(_("Creating common preferences window...\n"));
964 prefs_dialog_create(&dialog);
965 gtk_window_set_title (GTK_WINDOW(dialog.window),
966 _("Common Preferences"));
967 gtk_signal_connect (GTK_OBJECT(dialog.window), "delete_event",
968 GTK_SIGNAL_FUNC(prefs_common_deleted), NULL);
969 gtk_signal_connect (GTK_OBJECT(dialog.window), "key_press_event",
970 GTK_SIGNAL_FUNC(prefs_common_key_pressed), NULL);
971 MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
973 gtk_signal_connect (GTK_OBJECT(dialog.ok_btn), "clicked",
974 GTK_SIGNAL_FUNC(prefs_common_ok), NULL);
975 gtk_signal_connect (GTK_OBJECT(dialog.apply_btn), "clicked",
976 GTK_SIGNAL_FUNC(prefs_common_apply), NULL);
977 gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
978 GTK_SIGNAL_FUNC(prefs_common_cancel),
979 GTK_OBJECT(dialog.window));
981 /* create all widgets on notebook */
982 prefs_receive_create();
983 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
985 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
986 prefs_compose_create();
987 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
989 prefs_spelling_create();
990 SET_NOTEBOOK_LABEL(dialog.notebook, _("Spell Checker"), page++);
992 prefs_quote_create();
993 SET_NOTEBOOK_LABEL(dialog.notebook, _("Quote"), page++);
994 prefs_display_create();
995 SET_NOTEBOOK_LABEL(dialog.notebook, _("Display"), page++);
996 prefs_message_create();
997 SET_NOTEBOOK_LABEL(dialog.notebook, _("Message"), page++);
999 prefs_privacy_create();
1000 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
1002 prefs_interface_create();
1003 SET_NOTEBOOK_LABEL(dialog.notebook, _("Interface"), page++);
1004 prefs_other_create();
1005 SET_NOTEBOOK_LABEL(dialog.notebook, _("Other"), page++);
1007 gtk_widget_show_all(dialog.window);
1010 static void prefs_receive_create(void)
1014 GtkWidget *frame_incext;
1015 GtkWidget *checkbtn_incext;
1017 GtkWidget *label_incext;
1018 GtkWidget *entry_incext;
1019 /* GtkWidget *button_incext; */
1021 GtkWidget *frame_spool;
1022 GtkWidget *checkbtn_local;
1023 GtkWidget *checkbtn_filter_on_inc;
1024 GtkWidget *label_spool;
1025 GtkWidget *entry_spool;
1027 GtkWidget *hbox_autochk;
1028 GtkWidget *checkbtn_autochk;
1029 GtkWidget *label_autochk1;
1030 GtkObject *spinbtn_autochk_adj;
1031 GtkWidget *spinbtn_autochk;
1032 GtkWidget *label_autochk2;
1033 GtkWidget *checkbtn_chkonstartup;
1034 GtkWidget *checkbtn_noerrorpanel;
1035 GtkWidget *checkbtn_scan_after_inc;
1038 GtkWidget *frame_newmail;
1039 GtkWidget *hbox_newmail_notify;
1040 GtkWidget *checkbtn_newmail_auto;
1041 GtkWidget *checkbtn_newmail_manu;
1042 GtkWidget *entry_newmail_notify_cmd;
1043 GtkWidget *label_newmail_notify_cmd;
1045 GtkWidget *frame_news;
1046 GtkWidget *label_maxarticle;
1047 GtkWidget *spinbtn_maxarticle;
1048 GtkObject *spinbtn_maxarticle_adj;
1050 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1051 gtk_widget_show (vbox1);
1052 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1053 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1055 PACK_FRAME(vbox1, frame_incext, _("External program"));
1057 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1058 gtk_widget_show (vbox2);
1059 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
1060 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1062 /* Use of external incorporation program */
1063 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
1064 _("Use external program for incorporation"));
1066 hbox = gtk_hbox_new (FALSE, 8);
1067 gtk_widget_show (hbox);
1068 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1069 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1071 label_incext = gtk_label_new (_("Command"));
1072 gtk_widget_show (label_incext);
1073 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1075 entry_incext = gtk_entry_new ();
1076 gtk_widget_show (entry_incext);
1077 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1080 button_incext = gtk_button_new_with_label ("... ");
1081 gtk_widget_show (button_incext);
1082 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1085 PACK_FRAME(vbox1, frame_spool, _("Local spool"));
1087 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1088 gtk_widget_show (vbox2);
1089 gtk_container_add (GTK_CONTAINER (frame_spool), vbox2);
1090 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1092 hbox = gtk_hbox_new (FALSE, 32);
1093 gtk_widget_show (hbox);
1094 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1096 PACK_CHECK_BUTTON (hbox, checkbtn_local, _("Incorporate from spool"));
1097 PACK_CHECK_BUTTON (hbox, checkbtn_filter_on_inc,
1098 _("Filter on incorporation"));
1099 SET_TOGGLE_SENSITIVITY (checkbtn_local, checkbtn_filter_on_inc);
1101 hbox = gtk_hbox_new (FALSE, 8);
1102 gtk_widget_show (hbox);
1103 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1104 SET_TOGGLE_SENSITIVITY (checkbtn_local, hbox);
1106 label_spool = gtk_label_new (_("Spool directory"));
1107 gtk_widget_show (label_spool);
1108 gtk_box_pack_start (GTK_BOX (hbox), label_spool, FALSE, FALSE, 0);
1110 entry_spool = gtk_entry_new ();
1111 gtk_widget_show (entry_spool);
1112 gtk_box_pack_start (GTK_BOX (hbox), entry_spool, TRUE, TRUE, 0);
1114 vbox2 = gtk_vbox_new (FALSE, 0);
1115 gtk_widget_show (vbox2);
1116 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1119 hbox_autochk = gtk_hbox_new (FALSE, 8);
1120 gtk_widget_show (hbox_autochk);
1121 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1123 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1124 _("Auto-check new mail"));
1126 label_autochk1 = gtk_label_new (_("every"));
1127 gtk_widget_show (label_autochk1);
1128 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1130 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1131 spinbtn_autochk = gtk_spin_button_new
1132 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1133 gtk_widget_show (spinbtn_autochk);
1134 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1135 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1136 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1138 label_autochk2 = gtk_label_new (_("minute(s)"));
1139 gtk_widget_show (label_autochk2);
1140 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1142 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1143 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1144 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1146 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1147 _("Check new mail on startup"));
1149 PACK_CHECK_BUTTON (vbox2, checkbtn_noerrorpanel,
1150 _("No error popup on receive error"));
1151 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1152 _("Update all local folders after incorporation"));
1155 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1157 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1158 gtk_widget_show (vbox2);
1159 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1160 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1162 hbox = gtk_hbox_new (TRUE, 8);
1163 gtk_widget_show (hbox);
1164 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1165 _("after autochecking"));
1166 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1167 _("after manual checking"));
1168 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1169 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1170 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1172 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1173 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1176 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1177 gtk_widget_show (hbox);
1178 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1181 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1182 "(use %d as number of new "
1184 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1186 gtk_widget_show (label_newmail_notify_cmd);
1187 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1188 label_newmail_notify_cmd, FALSE, FALSE, 0);
1190 entry_newmail_notify_cmd = gtk_entry_new ();
1191 gtk_widget_show (entry_newmail_notify_cmd);
1192 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1193 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1195 gtk_widget_set_sensitive(hbox_newmail_notify,
1196 prefs_common.newmail_notify_auto ||
1197 prefs_common.newmail_notify_manu);
1199 PACK_FRAME(vbox1, frame_news, _("News"));
1201 hbox = gtk_hbox_new (FALSE, 8);
1202 gtk_widget_show (hbox);
1203 gtk_container_add (GTK_CONTAINER (frame_news), hbox);
1204 gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
1206 label_maxarticle = gtk_label_new
1207 (_("Maximum number of articles to download\n"
1208 "(unlimited if 0 is specified)"));
1209 gtk_widget_show (label_maxarticle);
1210 gtk_box_pack_start (GTK_BOX (hbox), label_maxarticle, FALSE, FALSE, 0);
1211 gtk_label_set_justify (GTK_LABEL (label_maxarticle), GTK_JUSTIFY_LEFT);
1213 spinbtn_maxarticle_adj =
1214 gtk_adjustment_new (300, 0, 10000, 10, 100, 100);
1215 spinbtn_maxarticle = gtk_spin_button_new
1216 (GTK_ADJUSTMENT (spinbtn_maxarticle_adj), 10, 0);
1217 gtk_widget_show (spinbtn_maxarticle);
1218 gtk_box_pack_start (GTK_BOX (hbox), spinbtn_maxarticle,
1220 gtk_widget_set_usize (spinbtn_maxarticle, 64, -1);
1221 gtk_spin_button_set_numeric
1222 (GTK_SPIN_BUTTON (spinbtn_maxarticle), TRUE);
1224 receive.checkbtn_incext = checkbtn_incext;
1225 receive.entry_incext = entry_incext;
1226 /* receive.button_incext = button_incext; */
1228 receive.checkbtn_local = checkbtn_local;
1229 receive.checkbtn_filter_on_inc = checkbtn_filter_on_inc;
1230 receive.entry_spool = entry_spool;
1232 receive.checkbtn_autochk = checkbtn_autochk;
1233 receive.spinbtn_autochk = spinbtn_autochk;
1234 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1236 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1237 receive.checkbtn_noerrorpanel = checkbtn_noerrorpanel;
1238 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1241 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1242 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1243 receive.hbox_newmail_notify = hbox_newmail_notify;
1244 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1246 receive.spinbtn_maxarticle = spinbtn_maxarticle;
1247 receive.spinbtn_maxarticle_adj = spinbtn_maxarticle_adj;
1250 static void prefs_send_create(void)
1254 GtkWidget *frame_extsend;
1255 GtkWidget *vbox_extsend;
1256 GtkWidget *checkbtn_extsend;
1258 GtkWidget *label_extsend;
1259 GtkWidget *entry_extsend;
1260 /* GtkWidget *button_extsend; */
1261 GtkWidget *checkbtn_savemsg;
1262 GtkWidget *checkbtn_queuemsg;
1263 GtkWidget *label_outcharset;
1265 GtkWidget *optmenu_menu;
1266 GtkWidget *menuitem;
1267 GtkWidget *checkbtn_returnreceipt;
1268 GtkWidget *label_charset_desc;
1270 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1271 gtk_widget_show (vbox1);
1272 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1273 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1275 PACK_FRAME(vbox1, frame_extsend, _("External program"));
1277 vbox_extsend = gtk_vbox_new (FALSE, VSPACING_NARROW);
1278 gtk_widget_show (vbox_extsend);
1279 gtk_container_add (GTK_CONTAINER (frame_extsend), vbox_extsend);
1280 gtk_container_set_border_width (GTK_CONTAINER (vbox_extsend), 8);
1282 PACK_CHECK_BUTTON (vbox_extsend, checkbtn_extsend,
1283 _("Use external program for sending"));
1285 hbox1 = gtk_hbox_new (FALSE, 8);
1286 gtk_widget_show (hbox1);
1287 gtk_box_pack_start (GTK_BOX (vbox_extsend), hbox1, FALSE, FALSE, 0);
1288 SET_TOGGLE_SENSITIVITY(checkbtn_extsend, hbox1);
1290 label_extsend = gtk_label_new (_("Command"));
1291 gtk_widget_show (label_extsend);
1292 gtk_box_pack_start (GTK_BOX (hbox1), label_extsend, FALSE, FALSE, 0);
1294 entry_extsend = gtk_entry_new ();
1295 gtk_widget_show (entry_extsend);
1296 gtk_box_pack_start (GTK_BOX (hbox1), entry_extsend, TRUE, TRUE, 0);
1299 button_extsend = gtk_button_new_with_label ("... ");
1300 gtk_widget_show (button_extsend);
1301 gtk_box_pack_start (GTK_BOX (hbox1), button_extsend, FALSE, FALSE, 0);
1304 vbox2 = gtk_vbox_new (FALSE, 0);
1305 gtk_widget_show (vbox2);
1306 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1308 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1309 _("Save sent messages to Sent"));
1310 PACK_CHECK_BUTTON (vbox2, checkbtn_queuemsg,
1311 _("Queue messages that fail to send"));
1312 PACK_CHECK_BUTTON (vbox2, checkbtn_returnreceipt,
1313 _("Send return receipt on request"));
1315 hbox1 = gtk_hbox_new (FALSE, 8);
1316 gtk_widget_show (hbox1);
1317 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1319 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1320 gtk_widget_show (label_outcharset);
1321 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1323 optmenu = gtk_option_menu_new ();
1324 gtk_widget_show (optmenu);
1325 gtk_box_pack_start (GTK_BOX (hbox1), optmenu, FALSE, FALSE, 0);
1327 optmenu_menu = gtk_menu_new ();
1329 #define SET_MENUITEM(str, charset) \
1331 MENUITEM_ADD(optmenu_menu, menuitem, str, charset); \
1334 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1335 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1337 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1339 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1340 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1341 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1342 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1343 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1344 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1345 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1347 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1349 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1351 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1352 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1354 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1356 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1357 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1359 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1360 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1362 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1363 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1365 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1366 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1367 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1369 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu), optmenu_menu);
1371 hbox1 = gtk_hbox_new (FALSE, 8);
1372 gtk_widget_show (hbox1);
1373 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1375 label_charset_desc = gtk_label_new
1376 (_("If `Automatic' is selected, the optimal encoding\n"
1377 "for the current locale will be used."));
1378 gtk_widget_show (label_charset_desc);
1379 gtk_box_pack_start (GTK_BOX (hbox1), label_charset_desc,
1381 gtk_label_set_justify(GTK_LABEL (label_charset_desc), GTK_JUSTIFY_LEFT);
1383 send.checkbtn_extsend = checkbtn_extsend;
1384 send.entry_extsend = entry_extsend;
1385 /* send.button_extsend = button_extsend; */
1387 send.checkbtn_savemsg = checkbtn_savemsg;
1388 send.checkbtn_queuemsg = checkbtn_queuemsg;
1389 send.checkbtn_returnreceipt = checkbtn_returnreceipt;
1391 send.optmenu_charset = optmenu;
1394 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1398 toggled = gtk_toggle_button_get_active
1399 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1400 gtk_toggle_button_get_active
1401 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1402 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1406 static void prefs_dictionary_set_data_from_optmenu(PrefParam *param)
1409 gchar *dict_fullname;
1411 g_return_if_fail(param);
1412 g_return_if_fail(param->data);
1413 g_return_if_fail(param->widget);
1414 g_return_if_fail(*(param->widget));
1416 dict_fullname = gtkpspell_get_dictionary_menu_active_item
1417 (gtk_option_menu_get_menu(GTK_OPTION_MENU(*(param->widget))));
1418 str = *((gchar **) param->data);
1421 *((gchar **) param->data) = dict_fullname;
1424 static void prefs_dictionary_set_optmenu(PrefParam *pparam)
1427 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
1429 GtkWidget *menuitem;
1433 g_return_if_fail(optmenu != NULL);
1434 g_return_if_fail(pparam->data != NULL);
1436 if (*(gchar **) pparam->data) {
1437 menu = gtk_option_menu_get_menu(optmenu);
1438 for (cur = GTK_MENU_SHELL(menu)->children;
1439 cur != NULL; cur = cur->next) {
1440 menuitem = GTK_WIDGET(cur->data);
1441 dict_name = gtk_object_get_data(GTK_OBJECT(menuitem),
1443 if (!strcmp2(dict_name, *((gchar **)pparam->data))) {
1444 gtk_option_menu_set_history(optmenu, n);
1451 gtk_option_menu_set_history(optmenu, 0);
1452 prefs_dictionary_set_data_from_optmenu(pparam);
1455 static void prefs_speller_sugmode_set_data_from_optmenu(PrefParam *param)
1458 g_return_if_fail(param);
1459 g_return_if_fail(param->data);
1460 g_return_if_fail(param->widget);
1461 g_return_if_fail(*(param->widget));
1463 sugmode = gtkpspell_get_sugmode_from_option_menu
1464 (GTK_OPTION_MENU(*(param->widget)));
1465 *((gint *) param->data) = sugmode;
1468 static void prefs_speller_sugmode_set_optmenu(PrefParam *pparam)
1470 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
1473 g_return_if_fail(optmenu != NULL);
1474 g_return_if_fail(pparam->data != NULL);
1476 sugmode = *(gint *) pparam->data;
1477 gtkpspell_sugmode_option_menu_set(optmenu, sugmode);
1481 static void prefs_spelling_checkbtn_enable_pspell_toggle_cb
1487 toggled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1489 gtk_widget_set_sensitive(spelling.entry_pspell_path, toggled);
1490 gtk_widget_set_sensitive(spelling.optmenu_dictionary, toggled);
1491 gtk_widget_set_sensitive(spelling.optmenu_sugmode, toggled);
1492 gtk_widget_set_sensitive(spelling.btn_pspell_path, toggled);
1493 gtk_widget_set_sensitive(spelling.misspelled_btn, toggled);
1494 gtk_widget_set_sensitive(spelling.checkbtn_use_alternate, toggled);
1495 gtk_widget_set_sensitive(spelling.checkbtn_check_while_typing, toggled);
1498 static void prefs_spelling_btn_pspell_path_clicked_cb(GtkWidget *widget,
1501 gchar *file_path, *tmp;
1502 GtkWidget *new_menu;
1504 file_path = filesel_select_file(_("Select dictionaries location"),
1505 prefs_common.pspell_path);
1506 if (file_path == NULL) {
1510 tmp=g_dirname(file_path);
1512 if (prefs_common.pspell_path)
1513 g_free(prefs_common.pspell_path);
1514 prefs_common.pspell_path = g_strdup_printf("%s%s",tmp,
1517 new_menu = gtkpspell_dictionary_option_menu_new(prefs_common.pspell_path);
1518 gtk_option_menu_set_menu(GTK_OPTION_MENU(spelling.optmenu_dictionary),
1521 gtk_entry_set_text(GTK_ENTRY(spelling.entry_pspell_path),
1522 prefs_common.pspell_path);
1523 /* select first one */
1524 gtk_option_menu_set_history(GTK_OPTION_MENU(
1525 spelling.optmenu_dictionary), 0);
1527 if (prefs_common.dictionary)
1528 g_free(prefs_common.dictionary);
1530 prefs_common.dictionary =
1531 gtkpspell_get_dictionary_menu_active_item(
1532 gtk_option_menu_get_menu(
1534 spelling.optmenu_dictionary)));
1540 static void prefs_spelling_create()
1543 GtkWidget *frame_spell;
1544 GtkWidget *vbox_spell;
1545 GtkWidget *hbox_pspell_path;
1546 GtkWidget *checkbtn_enable_pspell;
1547 GtkWidget *label_pspell_path;
1548 GtkWidget *entry_pspell_path;
1549 GtkWidget *btn_pspell_path;
1550 GtkWidget *spell_table;
1551 GtkWidget *label_dictionary;
1552 GtkWidget *optmenu_dictionary;
1553 GtkWidget *sugmode_label;
1554 GtkWidget *sugmode_optmenu;
1555 GtkWidget *checkbtn_use_alternate;
1556 GtkWidget *help_label;
1557 GtkWidget *checkbtn_check_while_typing;
1558 GtkWidget *color_label;
1559 GtkWidget *col_align;
1561 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1562 gtk_widget_show (vbox1);
1563 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1564 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1566 /* spell checker defaults */
1567 PACK_FRAME(vbox1, frame_spell, _("Global spelling checker settings"));
1568 vbox_spell = gtk_vbox_new(FALSE, VSPACING_NARROW);
1569 gtk_widget_show (vbox_spell);
1570 gtk_container_add(GTK_CONTAINER(frame_spell), vbox_spell);
1571 gtk_container_set_border_width(GTK_CONTAINER(vbox_spell), 8);
1573 PACK_CHECK_BUTTON(vbox_spell, checkbtn_enable_pspell,
1574 _("Enable spell checker (EXPERIMENTAL)"));
1576 gtk_signal_connect(GTK_OBJECT(checkbtn_enable_pspell), "toggled",
1577 GTK_SIGNAL_FUNC(prefs_spelling_checkbtn_enable_pspell_toggle_cb),
1580 /* Check while typing */
1581 PACK_CHECK_BUTTON(vbox_spell, checkbtn_check_while_typing,
1582 _("Check while typing"));
1584 PACK_CHECK_BUTTON(vbox_spell, checkbtn_use_alternate,
1585 _("Enable alternate dictionary"));
1587 help_label = gtk_label_new(_("Enabling alternate dictionary makes switching\nwith the last used dictionary faster."));
1588 gtk_widget_show(help_label);
1589 gtk_box_pack_start(GTK_BOX(vbox_spell), help_label, FALSE, TRUE, 0);
1591 spell_table = gtk_table_new(4, 3, FALSE);
1592 gtk_container_set_border_width (GTK_CONTAINER (spell_table), VSPACING);
1593 gtk_table_set_row_spacings(GTK_TABLE(spell_table), 8);
1594 gtk_table_set_col_spacings(GTK_TABLE(spell_table), 8);
1596 gtk_box_pack_start(GTK_BOX(vbox_spell), spell_table, TRUE, TRUE, 0);
1598 label_pspell_path = gtk_label_new (_("Dictionaries path:"));
1599 gtk_misc_set_alignment(GTK_MISC(label_pspell_path), 1.0, 0.5);
1600 gtk_widget_show(label_pspell_path);
1601 gtk_table_attach (GTK_TABLE (spell_table), label_pspell_path, 0, 1, 0,
1602 1, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1604 hbox_pspell_path = gtk_hbox_new (FALSE, 8);
1605 gtk_table_attach (GTK_TABLE (spell_table), hbox_pspell_path, 1, 2, 0,
1606 1, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1607 gtk_widget_show(hbox_pspell_path);
1609 entry_pspell_path = gtk_entry_new();
1610 gtk_widget_show(entry_pspell_path);
1611 gtk_box_pack_start(GTK_BOX(hbox_pspell_path), entry_pspell_path, TRUE,
1614 gtk_widget_set_sensitive(entry_pspell_path, prefs_common.enable_pspell);
1616 btn_pspell_path = gtk_button_new_with_label(" ... ");
1617 gtk_widget_show(btn_pspell_path);
1618 gtk_box_pack_start(GTK_BOX(hbox_pspell_path), btn_pspell_path, FALSE, FALSE, 0);
1619 gtk_widget_set_sensitive(btn_pspell_path, prefs_common.enable_pspell);
1621 gtk_signal_connect(GTK_OBJECT(btn_pspell_path), "clicked",
1622 GTK_SIGNAL_FUNC(prefs_spelling_btn_pspell_path_clicked_cb),
1625 label_dictionary = gtk_label_new(_("Default dictionary:"));
1626 gtk_misc_set_alignment(GTK_MISC(label_dictionary), 1.0, 0.5);
1627 gtk_widget_show(label_dictionary);
1628 gtk_table_attach (GTK_TABLE (spell_table), label_dictionary, 0, 1, 1, 2,
1629 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1631 optmenu_dictionary = gtk_option_menu_new();
1632 gtk_widget_show(optmenu_dictionary);
1633 gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu_dictionary),
1634 gtkpspell_dictionary_option_menu_new(
1635 prefs_common.pspell_path));
1636 gtk_table_attach (GTK_TABLE (spell_table), optmenu_dictionary, 1, 2, 1,
1637 2, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1638 gtk_widget_set_sensitive(optmenu_dictionary, prefs_common.enable_pspell);
1640 /* Suggestion mode */
1641 sugmode_label = gtk_label_new(_("Default suggestion mode"));
1642 gtk_misc_set_alignment(GTK_MISC(sugmode_label), 1.0, 0.5);
1643 gtk_widget_show(sugmode_label);
1644 gtk_table_attach(GTK_TABLE (spell_table), sugmode_label, 0, 1, 2, 3,
1645 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1647 sugmode_optmenu = gtk_option_menu_new();
1648 gtk_widget_show(sugmode_optmenu);
1649 gtk_option_menu_set_menu(GTK_OPTION_MENU(sugmode_optmenu),
1650 gtkpspell_sugmode_option_menu_new(prefs_common.pspell_sugmode));
1651 gtk_table_attach(GTK_TABLE(spell_table), sugmode_optmenu, 1, 2, 2, 3,
1652 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1653 gtk_widget_set_sensitive(sugmode_optmenu, prefs_common.enable_pspell);
1656 color_label = gtk_label_new(_("Misspelled word color:"));
1657 gtk_misc_set_alignment(GTK_MISC(color_label), 1.0, 0.5);
1658 gtk_table_attach (GTK_TABLE (spell_table), color_label, 0, 1, 3, 4,
1659 GTK_FILL, GTK_SHRINK, 0, 0);
1660 gtk_widget_show(color_label);
1662 col_align = gtk_alignment_new(0.0, 0.5, 0, 0);
1663 gtk_widget_show(col_align);
1664 gtk_table_attach (GTK_TABLE (spell_table), col_align, 1, 2, 3, 4,
1665 GTK_FILL, GTK_SHRINK, 0, 0);
1667 spelling.misspelled_btn = gtk_button_new_with_label ("");
1668 set_button_bg_color(spelling.misspelled_btn,
1669 prefs_common.misspelled_col);
1670 gtk_widget_set_usize (spelling.misspelled_btn, 30, 20);
1671 gtk_widget_set_sensitive(spelling.misspelled_btn, prefs_common.enable_pspell);
1672 gtk_signal_connect (GTK_OBJECT (spelling.misspelled_btn), "clicked",
1673 GTK_SIGNAL_FUNC(quote_color_set_dialog), "Misspelled word");
1674 gtk_container_add(GTK_CONTAINER(col_align), spelling.misspelled_btn);
1677 spelling.checkbtn_enable_pspell = checkbtn_enable_pspell;
1678 spelling.entry_pspell_path = entry_pspell_path;
1679 spelling.btn_pspell_path = btn_pspell_path;
1680 spelling.optmenu_dictionary = optmenu_dictionary;
1681 spelling.optmenu_sugmode = sugmode_optmenu;
1682 spelling.checkbtn_use_alternate = checkbtn_use_alternate;
1683 spelling.checkbtn_check_while_typing = checkbtn_check_while_typing;
1689 static void prefs_compose_create(void)
1696 GtkWidget *btn_quotefmt;
1698 GtkWidget *frame_sig;
1699 GtkWidget *vbox_sig;
1700 GtkWidget *checkbtn_autosig;
1701 GtkWidget *label_sigsep;
1702 GtkWidget *entry_sigsep;
1704 GtkWidget *frame_editor;
1705 GtkWidget *hbox_editor;
1706 GtkWidget *checkbtn_autoextedit;
1708 GtkWidget *frame_autosel;
1709 GtkWidget *hbox_autosel;
1710 GtkWidget *vbox_autosel;
1711 GtkWidget *checkbtn_reply_account_autosel;
1712 GtkWidget *checkbtn_forward_account_autosel;
1713 GtkWidget *checkbtn_reedit_account_autosel;
1715 GtkWidget *hbox_undolevel;
1716 GtkWidget *label_undolevel;
1717 GtkObject *spinbtn_undolevel_adj;
1718 GtkWidget *spinbtn_undolevel;
1720 GtkWidget *vbox_linewrap;
1725 GtkWidget *label_linewrap;
1726 GtkObject *spinbtn_linewrap_adj;
1727 GtkWidget *spinbtn_linewrap;
1728 GtkWidget *checkbtn_wrapquote;
1729 GtkWidget *checkbtn_autowrap;
1730 GtkWidget *checkbtn_wrapatsend;
1732 GtkWidget *frame_reply;
1733 GtkWidget *checkbtn_quote;
1734 GtkWidget *checkbtn_forward_as_attachment;
1735 GtkWidget *checkbtn_redirect_keep_from;
1736 GtkWidget *checkbtn_smart_wrapping;
1737 GtkWidget *checkbtn_block_cursor;
1738 GtkWidget *frame_msgwrap;
1740 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1741 gtk_widget_show (vbox1);
1742 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1743 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1745 PACK_FRAME(vbox1, frame_sig, _("Signature"));
1747 vbox_sig = gtk_vbox_new (FALSE, VSPACING_NARROW);
1748 gtk_widget_show (vbox_sig);
1749 gtk_container_add (GTK_CONTAINER (frame_sig), vbox_sig);
1750 gtk_container_set_border_width (GTK_CONTAINER (vbox_sig), 8);
1752 PACK_CHECK_BUTTON (vbox_sig, checkbtn_autosig,
1753 _("Insert signature automatically"));
1755 hbox1 = gtk_hbox_new (FALSE, 8);
1756 gtk_widget_show (hbox1);
1757 gtk_box_pack_start (GTK_BOX (vbox_sig), hbox1, TRUE, TRUE, 0);
1758 label_sigsep = gtk_label_new (_("Signature separator"));
1759 gtk_widget_show (label_sigsep);
1760 gtk_box_pack_start (GTK_BOX (hbox1), label_sigsep, FALSE, FALSE, 0);
1762 entry_sigsep = gtk_entry_new ();
1763 gtk_widget_show (entry_sigsep);
1764 gtk_box_pack_start (GTK_BOX (hbox1), entry_sigsep, FALSE, FALSE, 0);
1766 gtk_widget_set_usize (entry_sigsep, 64, -1);
1768 /* Account autoselection */
1769 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1771 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1772 gtk_widget_show (hbox_autosel);
1773 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1774 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1776 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1777 _("when replying"));
1778 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1779 _("when forwarding"));
1780 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1781 _("when re-editing"));
1783 vbox2 = gtk_vbox_new (FALSE, 0);
1784 gtk_widget_show (vbox2);
1785 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1787 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1788 _("Automatically launch the external editor"));
1790 hbox5 = gtk_hbox_new (FALSE, 8);
1791 gtk_widget_show (hbox5);
1792 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1794 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1795 _("Forward as attachment"));
1797 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1800 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1801 _("Keep the original 'From' header when redirecting"));
1803 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1804 gtk_widget_show (hbox_undolevel);
1805 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1807 label_undolevel = gtk_label_new (_("Undo level"));
1808 gtk_widget_show (label_undolevel);
1809 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1811 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1812 spinbtn_undolevel = gtk_spin_button_new
1813 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1814 gtk_widget_show (spinbtn_undolevel);
1815 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1816 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1817 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1820 PACK_FRAME(vbox1, frame_msgwrap, _("Message wrapping"));
1822 vbox_linewrap = gtk_vbox_new (FALSE, VSPACING_NARROW);
1823 gtk_widget_show (vbox_linewrap);
1824 gtk_container_add (GTK_CONTAINER (frame_msgwrap), vbox_linewrap);
1825 gtk_container_set_border_width (GTK_CONTAINER (vbox_linewrap), 8);
1827 hbox3 = gtk_hbox_new (FALSE, 8);
1828 gtk_widget_show (hbox3);
1829 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox3, FALSE, FALSE, 0);
1832 label_linewrap = gtk_label_new (_("Wrap messages at"));
1833 gtk_widget_show (label_linewrap);
1834 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1836 spinbtn_linewrap_adj = gtk_adjustment_new (72, 20, 1024, 1, 10, 10);
1837 spinbtn_linewrap = gtk_spin_button_new
1838 (GTK_ADJUSTMENT (spinbtn_linewrap_adj), 1, 0);
1839 gtk_widget_show (spinbtn_linewrap);
1840 gtk_box_pack_start (GTK_BOX (hbox3), spinbtn_linewrap, FALSE, FALSE, 0);
1841 gtk_widget_set_usize (spinbtn_linewrap, 64, -1);
1842 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linewrap), TRUE);
1844 label_linewrap = gtk_label_new (_("characters"));
1845 gtk_widget_show (label_linewrap);
1846 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1848 hbox4 = gtk_hbox_new (FALSE, VSPACING);
1849 gtk_widget_show (hbox4);
1850 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox4, FALSE, FALSE, 0);
1852 PACK_CHECK_BUTTON (hbox4, checkbtn_wrapquote, _("Wrap quotation"));
1854 PACK_CHECK_BUTTON (hbox4, checkbtn_autowrap, _("Wrap on input"));
1857 (hbox4, checkbtn_wrapatsend, _("Wrap before sending"));
1859 PACK_CHECK_BUTTON (vbox_linewrap, checkbtn_smart_wrapping,
1860 _("Smart wrapping (EXPERIMENTAL)"));
1863 compose.checkbtn_quote = checkbtn_quote;
1864 compose.entry_quotemark = entry_quotemark;
1865 compose.text_quotefmt = text_quotefmt;
1867 compose.checkbtn_autosig = checkbtn_autosig;
1868 compose.entry_sigsep = entry_sigsep;
1870 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1872 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1873 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1874 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1876 compose.spinbtn_undolevel = spinbtn_undolevel;
1877 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1879 compose.spinbtn_linewrap = spinbtn_linewrap;
1880 compose.spinbtn_linewrap_adj = spinbtn_linewrap_adj;
1881 compose.checkbtn_wrapquote = checkbtn_wrapquote;
1882 compose.checkbtn_autowrap = checkbtn_autowrap;
1883 compose.checkbtn_wrapatsend = checkbtn_wrapatsend;
1885 compose.checkbtn_forward_as_attachment =
1886 checkbtn_forward_as_attachment;
1887 compose.checkbtn_redirect_keep_from =
1888 checkbtn_redirect_keep_from;
1889 compose.checkbtn_smart_wrapping =
1890 checkbtn_smart_wrapping;
1891 compose.checkbtn_block_cursor =
1892 checkbtn_block_cursor;
1896 static void prefs_quote_create(void)
1899 GtkWidget *frame_quote;
1900 GtkWidget *vbox_quote;
1903 GtkWidget *label_quotemark;
1904 GtkWidget *entry_quotemark;
1905 GtkWidget *scrolledwin_quotefmt;
1906 GtkWidget *text_quotefmt;
1908 GtkWidget *entry_fw_quotemark;
1909 GtkWidget *text_fw_quotefmt;
1911 GtkWidget *entry_quote_chars;
1912 GtkWidget *label_quote_chars;
1914 GtkWidget *btn_quotedesc;
1916 GtkWidget *checkbtn_reply_with_quote;
1918 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1919 gtk_widget_show (vbox1);
1920 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1921 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1925 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1927 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1929 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1930 gtk_widget_show (vbox_quote);
1931 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1932 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1934 hbox1 = gtk_hbox_new (FALSE, 32);
1935 gtk_widget_show (hbox1);
1936 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1938 hbox2 = gtk_hbox_new (FALSE, 8);
1939 gtk_widget_show (hbox2);
1940 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1942 label_quotemark = gtk_label_new (_("Quotation mark"));
1943 gtk_widget_show (label_quotemark);
1944 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1946 entry_quotemark = gtk_entry_new ();
1947 gtk_widget_show (entry_quotemark);
1948 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
1949 gtk_widget_set_usize (entry_quotemark, 64, -1);
1951 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1952 gtk_widget_show (scrolledwin_quotefmt);
1953 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1954 gtk_scrolled_window_set_policy
1955 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1956 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1958 text_quotefmt = gtk_text_new (NULL, NULL);
1959 gtk_widget_show (text_quotefmt);
1960 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
1961 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
1962 gtk_widget_set_usize(text_quotefmt, -1, 60);
1966 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
1968 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1969 gtk_widget_show (vbox_quote);
1970 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1971 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1973 hbox1 = gtk_hbox_new (FALSE, 32);
1974 gtk_widget_show (hbox1);
1975 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1977 hbox2 = gtk_hbox_new (FALSE, 8);
1978 gtk_widget_show (hbox2);
1979 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1981 label_quotemark = gtk_label_new (_("Quotation mark"));
1982 gtk_widget_show (label_quotemark);
1983 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1985 entry_fw_quotemark = gtk_entry_new ();
1986 gtk_widget_show (entry_fw_quotemark);
1987 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
1989 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
1991 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1992 gtk_widget_show (scrolledwin_quotefmt);
1993 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1994 gtk_scrolled_window_set_policy
1995 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1996 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1998 text_fw_quotefmt = gtk_text_new (NULL, NULL);
1999 gtk_widget_show (text_fw_quotefmt);
2000 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
2002 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
2003 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
2005 hbox1 = gtk_hbox_new (FALSE, 32);
2006 gtk_widget_show (hbox1);
2007 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2010 gtk_button_new_with_label (_(" Description of symbols "));
2011 gtk_widget_show (btn_quotedesc);
2012 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
2013 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
2014 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
2018 PACK_FRAME (vbox1, frame_quote, _("Quoting characters"));
2020 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
2021 gtk_widget_show (vbox_quote);
2022 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
2023 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
2025 hbox1 = gtk_hbox_new (FALSE, 32);
2026 gtk_widget_show (hbox1);
2027 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
2029 hbox2 = gtk_hbox_new (FALSE, 8);
2030 gtk_widget_show (hbox2);
2031 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
2033 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
2034 gtk_widget_show (label_quote_chars);
2035 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
2037 entry_quote_chars = gtk_entry_new ();
2038 gtk_widget_show (entry_quote_chars);
2039 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
2041 gtk_widget_set_usize (entry_quote_chars, 64, -1);
2044 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
2045 quote.entry_quotemark = entry_quotemark;
2046 quote.text_quotefmt = text_quotefmt;
2047 quote.entry_fw_quotemark = entry_fw_quotemark;
2048 quote.text_fw_quotefmt = text_fw_quotefmt;
2049 quote.entry_quote_chars = entry_quote_chars;
2052 static void prefs_display_create(void)
2055 GtkWidget *frame_font;
2057 GtkWidget *label_textfont;
2058 GtkWidget *entry_textfont;
2059 GtkWidget *button_textfont;
2060 GtkWidget *chkbtn_display_img;
2061 GtkWidget *chkbtn_transhdr;
2062 GtkWidget *chkbtn_folder_unread;
2064 GtkWidget *label_ng_abbrev;
2065 GtkWidget *spinbtn_ng_abbrev_len;
2066 GtkObject *spinbtn_ng_abbrev_len_adj;
2067 GtkWidget *frame_summary;
2069 GtkWidget *chkbtn_swapfrom;
2070 GtkWidget *chkbtn_hscrollbar;
2071 GtkWidget *chkbtn_useaddrbook;
2072 GtkWidget *chkbtn_expand_thread;
2073 GtkWidget *chkbtn_bold_unread;
2075 GtkWidget *label_datefmt;
2076 GtkWidget *button_datefmt;
2077 GtkWidget *entry_datefmt;
2078 GtkWidget *button_dispitem;
2079 GtkWidget *tmplabel, *tmpbutton, *tmpentry;
2081 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2082 gtk_widget_show (vbox1);
2083 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2084 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2086 PACK_FRAME(vbox1, frame_font, _("Font"));
2088 table1 = gtk_table_new (4, 3, FALSE);
2090 gtk_widget_show (table1);
2091 gtk_container_add (GTK_CONTAINER (frame_font), table1);
2092 gtk_container_set_border_width (GTK_CONTAINER (table1), 8);
2093 gtk_table_set_row_spacings (GTK_TABLE (table1), 8);
2094 gtk_table_set_col_spacings (GTK_TABLE (table1), 8);
2096 label_textfont = gtk_label_new (_("Text"));
2097 gtk_misc_set_alignment(GTK_MISC(label_textfont), 0, 0.5);
2098 gtk_widget_show (label_textfont);
2099 gtk_table_attach (GTK_TABLE (table1), label_textfont, 0, 1, 0, 1,
2100 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2102 entry_textfont = gtk_entry_new ();
2103 gtk_widget_show (entry_textfont);
2104 gtk_table_attach (GTK_TABLE (table1), entry_textfont, 1, 2, 0, 1,
2105 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2107 button_textfont = gtk_button_new_with_label (" ... ");
2109 gtk_widget_show (button_textfont);
2110 gtk_table_attach (GTK_TABLE (table1), button_textfont, 2, 3, 0, 1,
2112 gtk_signal_connect (GTK_OBJECT (button_textfont), "clicked",
2113 GTK_SIGNAL_FUNC (prefs_font_select), entry_textfont);
2115 tmplabel = gtk_label_new (_("Small"));
2116 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
2117 gtk_widget_show (tmplabel);
2118 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 1, 2,
2119 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2121 tmpentry = gtk_entry_new ();
2122 gtk_widget_show (tmpentry);
2123 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 1, 2,
2124 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2126 tmpbutton = gtk_button_new_with_label (" ... ");
2127 gtk_widget_show (tmpbutton);
2128 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 1, 2,
2130 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
2131 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
2132 display.entry_smallfont = tmpentry;
2134 tmplabel = gtk_label_new (_("Normal"));
2135 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
2136 gtk_widget_show (tmplabel);
2137 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 2, 3,
2138 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2140 tmpentry = gtk_entry_new ();
2141 gtk_widget_show (tmpentry);
2142 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 2, 3,
2143 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2145 tmpbutton = gtk_button_new_with_label (" ... ");
2146 gtk_widget_show (tmpbutton);
2147 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 2, 3,
2149 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
2150 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
2151 display.entry_normalfont = tmpentry;
2153 tmplabel = gtk_label_new (_("Bold"));
2154 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
2155 gtk_widget_show (tmplabel);
2156 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 3, 4,
2157 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2159 tmpentry = gtk_entry_new ();
2160 gtk_widget_show (tmpentry);
2161 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 3, 4,
2162 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2164 tmpbutton = gtk_button_new_with_label (" ... ");
2165 gtk_widget_show (tmpbutton);
2166 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 3, 4,
2168 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
2169 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
2170 display.entry_boldfont = tmpentry;
2172 vbox2 = gtk_vbox_new (FALSE, 0);
2173 gtk_widget_show (vbox2);
2174 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
2177 (vbox2, chkbtn_transhdr,
2178 _("Translate header name (such as `From:', `Subject:')"));
2180 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
2181 _("Display unread number next to folder name"));
2183 PACK_CHECK_BUTTON (vbox2, chkbtn_display_img,
2184 _("Automatically display images"));
2186 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2188 hbox1 = gtk_hbox_new (FALSE, 8);
2189 gtk_widget_show (hbox1);
2190 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2192 label_ng_abbrev = gtk_label_new
2193 (_("Abbreviate newsgroups longer than"));
2194 gtk_widget_show (label_ng_abbrev);
2195 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
2197 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
2198 spinbtn_ng_abbrev_len = gtk_spin_button_new
2199 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
2200 gtk_widget_show (spinbtn_ng_abbrev_len);
2201 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
2203 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
2204 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
2207 label_ng_abbrev = gtk_label_new
2209 gtk_widget_show (label_ng_abbrev);
2210 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
2212 /* ---- Summary ---- */
2214 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
2216 vbox2 = gtk_vbox_new (FALSE, 0);
2217 gtk_widget_show (vbox2);
2218 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
2219 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
2222 (vbox2, chkbtn_swapfrom,
2223 _("Display recipient on `From' column if sender is yourself"));
2225 (vbox2, chkbtn_useaddrbook,
2226 _("Display sender using address book"));
2228 (vbox2, chkbtn_hscrollbar, _("Enable horizontal scroll bar"));
2230 (vbox2, chkbtn_expand_thread, _("Expand threads"));
2232 (vbox2, chkbtn_bold_unread,
2233 _("Display unread messages with bold font"));
2235 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2237 hbox1 = gtk_hbox_new (FALSE, 8);
2238 gtk_widget_show (hbox1);
2239 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2241 label_datefmt = gtk_label_new (_("Date format"));
2242 gtk_widget_show (label_datefmt);
2243 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
2245 entry_datefmt = gtk_entry_new ();
2246 gtk_widget_show (entry_datefmt);
2247 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
2249 button_datefmt = gtk_button_new_with_label (" ... ");
2251 gtk_widget_show (button_datefmt);
2252 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
2253 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
2254 GTK_SIGNAL_FUNC (date_format_create), NULL);
2256 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
2258 hbox1 = gtk_hbox_new (FALSE, 8);
2259 gtk_widget_show (hbox1);
2260 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2262 button_dispitem = gtk_button_new_with_label
2263 (_(" Set display item of summary... "));
2264 gtk_widget_show (button_dispitem);
2265 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
2266 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
2267 GTK_SIGNAL_FUNC (prefs_summary_column_open),
2270 display.entry_textfont = entry_textfont;
2271 display.button_textfont = button_textfont;
2273 display.chkbtn_display_img = chkbtn_display_img;
2274 display.chkbtn_transhdr = chkbtn_transhdr;
2275 display.chkbtn_folder_unread = chkbtn_folder_unread;
2276 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
2277 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
2279 display.chkbtn_swapfrom = chkbtn_swapfrom;
2280 display.chkbtn_hscrollbar = chkbtn_hscrollbar;
2281 display.chkbtn_expand_thread = chkbtn_expand_thread;
2282 display.chkbtn_bold_unread = chkbtn_bold_unread;
2283 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
2284 display.entry_datefmt = entry_datefmt;
2287 static void prefs_message_create(void)
2293 GtkWidget *chkbtn_enablecol;
2294 GtkWidget *button_edit_col;
2295 GtkWidget *chkbtn_mbalnum;
2296 GtkWidget *chkbtn_disphdrpane;
2297 GtkWidget *chkbtn_disphdr;
2298 GtkWidget *button_edit_disphdr;
2299 GtkWidget *hbox_linespc;
2300 GtkWidget *label_linespc;
2301 GtkObject *spinbtn_linespc_adj;
2302 GtkWidget *spinbtn_linespc;
2303 GtkWidget *chkbtn_headspc;
2305 GtkWidget *frame_scr;
2306 GtkWidget *vbox_scr;
2307 GtkWidget *chkbtn_smoothscroll;
2308 GtkWidget *hbox_scr;
2309 GtkWidget *label_scr;
2310 GtkObject *spinbtn_scrollstep_adj;
2311 GtkWidget *spinbtn_scrollstep;
2312 GtkWidget *chkbtn_halfpage;
2314 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2315 gtk_widget_show (vbox1);
2316 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2317 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2319 hbox1 = gtk_hbox_new (FALSE, 8);
2320 gtk_widget_show (hbox1);
2321 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, TRUE, 0);
2323 PACK_CHECK_BUTTON (hbox1, chkbtn_enablecol,
2324 _("Enable coloration of message"));
2325 gtk_signal_connect (GTK_OBJECT (chkbtn_enablecol), "toggled",
2326 GTK_SIGNAL_FUNC (prefs_enable_message_color_toggled),
2329 button_edit_col = gtk_button_new_with_label (_(" Edit... "));
2330 gtk_widget_show (button_edit_col);
2331 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_col, FALSE, TRUE, 0);
2332 gtk_signal_connect (GTK_OBJECT (button_edit_col), "clicked",
2333 GTK_SIGNAL_FUNC (prefs_quote_colors_dialog), NULL);
2335 SET_TOGGLE_SENSITIVITY(chkbtn_enablecol, button_edit_col);
2337 vbox2 = gtk_vbox_new (FALSE, 0);
2338 gtk_widget_show (vbox2);
2339 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2342 (vbox2, chkbtn_mbalnum,
2343 _("Display 2-byte alphabet and numeric with 1-byte character"));
2344 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
2345 _("Display header pane above message view"));
2347 hbox1 = gtk_hbox_new (FALSE, 8);
2348 gtk_widget_show (hbox1);
2349 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2351 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
2352 _("Display short headers on message view"));
2354 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
2355 gtk_widget_show (button_edit_disphdr);
2356 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
2358 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
2359 GTK_SIGNAL_FUNC (prefs_display_header_open),
2362 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
2364 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2366 hbox1 = gtk_hbox_new (FALSE, 32);
2367 gtk_widget_show (hbox1);
2368 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2370 hbox_linespc = gtk_hbox_new (FALSE, 8);
2371 gtk_widget_show (hbox1);
2372 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
2374 label_linespc = gtk_label_new (_("Line space"));
2375 gtk_widget_show (label_linespc);
2376 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2379 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
2380 spinbtn_linespc = gtk_spin_button_new
2381 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
2382 gtk_widget_show (spinbtn_linespc);
2383 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
2385 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
2386 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
2388 label_linespc = gtk_label_new (_("pixel(s)"));
2389 gtk_widget_show (label_linespc);
2390 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2393 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Leave space on head"));
2395 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
2397 vbox_scr = gtk_vbox_new (FALSE, 0);
2398 gtk_widget_show (vbox_scr);
2399 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
2400 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
2402 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
2404 hbox1 = gtk_hbox_new (FALSE, 32);
2405 gtk_widget_show (hbox1);
2406 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
2408 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
2410 hbox_scr = gtk_hbox_new (FALSE, 8);
2411 gtk_widget_show (hbox_scr);
2412 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
2414 label_scr = gtk_label_new (_("Step"));
2415 gtk_widget_show (label_scr);
2416 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2418 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
2419 spinbtn_scrollstep = gtk_spin_button_new
2420 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
2421 gtk_widget_show (spinbtn_scrollstep);
2422 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
2424 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
2425 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
2428 label_scr = gtk_label_new (_("pixel(s)"));
2429 gtk_widget_show (label_scr);
2430 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2432 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
2434 message.chkbtn_enablecol = chkbtn_enablecol;
2435 message.button_edit_col = button_edit_col;
2436 message.chkbtn_mbalnum = chkbtn_mbalnum;
2437 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
2438 message.chkbtn_disphdr = chkbtn_disphdr;
2439 message.spinbtn_linespc = spinbtn_linespc;
2440 message.chkbtn_headspc = chkbtn_headspc;
2442 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
2443 message.spinbtn_scrollstep = spinbtn_scrollstep;
2444 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
2445 message.chkbtn_halfpage = chkbtn_halfpage;
2449 static void prefs_privacy_create(void)
2454 GtkWidget *checkbtn_auto_check_signatures;
2455 GtkWidget *checkbtn_gpg_signature_popup;
2456 GtkWidget *hbox_stpass;
2457 GtkWidget *checkbtn_store_passphrase;
2458 GtkWidget *label_stpass1;
2459 GtkObject *spinbtn_store_passphrase_adj;
2460 GtkWidget *spinbtn_store_passphrase;
2461 GtkWidget *label_stpass2;
2462 GtkWidget *hbox_stpassinfo;
2463 GtkWidget *label_stpassinfo;
2464 GtkWidget *checkbtn_passphrase_grab;
2465 GtkWidget *checkbtn_gpg_warning;
2467 GtkWidget *menuitem;
2469 GtkWidget *optmenu_menu;
2471 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2472 gtk_widget_show (vbox1);
2473 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2474 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2476 vbox2 = gtk_vbox_new (FALSE, 0);
2477 gtk_widget_show (vbox2);
2478 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2480 PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
2481 _("Automatically check signatures"));
2483 PACK_CHECK_BUTTON (vbox2, checkbtn_gpg_signature_popup,
2484 _("Show signature check result in a popup window"));
2486 hbox_stpass = gtk_hbox_new(FALSE, 8);
2487 gtk_box_pack_start(GTK_BOX(vbox2), hbox_stpass, FALSE, FALSE, 0);
2489 PACK_CHECK_BUTTON (hbox_stpass, checkbtn_store_passphrase,
2490 _("Store passphrase temporarily"));
2492 label_stpass1 = gtk_label_new(_("- remove after"));
2493 gtk_box_pack_start(GTK_BOX(hbox_stpass), label_stpass1, FALSE, FALSE, 0);
2495 spinbtn_store_passphrase_adj = gtk_adjustment_new(0, 0, 1440, 1, 5, 5);
2496 spinbtn_store_passphrase = gtk_spin_button_new(
2497 GTK_ADJUSTMENT(spinbtn_store_passphrase_adj), 1, 0);
2498 gtk_box_pack_start(GTK_BOX(hbox_stpass), spinbtn_store_passphrase, FALSE,
2500 gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(spinbtn_store_passphrase),
2502 gtk_widget_set_usize(spinbtn_store_passphrase, 50, -1);
2504 label_stpass2 = gtk_label_new(_("minute(s)"));
2505 gtk_box_pack_start(GTK_BOX(hbox_stpass), label_stpass2, FALSE, FALSE, 0);
2506 gtk_widget_show_all(hbox_stpass);
2508 hbox_stpassinfo = gtk_hbox_new(FALSE, 8);
2509 gtk_box_pack_start(GTK_BOX(vbox2), hbox_stpassinfo, FALSE, FALSE, 0);
2511 label_stpassinfo = gtk_label_new
2512 (_("(A setting of '0' will store the passphrase\n"
2513 " for the whole session)"));
2514 gtk_box_pack_start (GTK_BOX (hbox_stpassinfo), label_stpassinfo, FALSE, FALSE, 0);
2515 gtk_label_set_justify (GTK_LABEL (label_stpassinfo), GTK_JUSTIFY_LEFT);
2516 gtk_widget_show_all(hbox_stpassinfo);
2518 SET_TOGGLE_SENSITIVITY(checkbtn_store_passphrase, label_stpass1);
2519 SET_TOGGLE_SENSITIVITY(checkbtn_store_passphrase, spinbtn_store_passphrase);
2520 SET_TOGGLE_SENSITIVITY(checkbtn_store_passphrase, label_stpass2);
2521 SET_TOGGLE_SENSITIVITY(checkbtn_store_passphrase, label_stpassinfo);
2524 PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab,
2525 _("Grab input while entering a passphrase"));
2529 (vbox2, checkbtn_gpg_warning,
2530 _("Display warning on startup if GnuPG doesn't work"));
2532 hbox1 = gtk_hbox_new (FALSE, 8);
2533 gtk_widget_show (hbox1);
2534 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2536 /* create default signkey box */
2537 label = gtk_label_new (_("Default Sign Key"));
2538 gtk_widget_show (label);
2539 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2540 optmenu = gtk_option_menu_new ();
2541 gtk_widget_show (optmenu);
2542 gtk_box_pack_start(GTK_BOX (hbox1), optmenu, FALSE, FALSE, 0);
2543 optmenu_menu = gtk_menu_new ();
2545 MENUITEM_ADD(optmenu_menu, menuitem, "Default Key", "def_key");
2546 MENUITEM_ADD(optmenu_menu, menuitem, "Second Key", "2nd_key");
2547 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu), optmenu_menu);
2548 /* FIXME: disabled because not implemented */
2549 gtk_widget_set_sensitive(optmenu, FALSE);
2551 privacy.checkbtn_auto_check_signatures
2552 = checkbtn_auto_check_signatures;
2553 privacy.checkbtn_gpg_signature_popup
2554 = checkbtn_gpg_signature_popup;
2555 privacy.checkbtn_store_passphrase = checkbtn_store_passphrase;
2556 privacy.spinbtn_store_passphrase = spinbtn_store_passphrase;
2557 privacy.spinbtn_store_passphrase_adj = spinbtn_store_passphrase_adj;
2558 privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
2559 privacy.checkbtn_gpg_warning = checkbtn_gpg_warning;
2560 privacy.optmenu_default_signkey = optmenu;
2564 prefs_common_default_signkey_set_data_from_optmenu(PrefParam *pparam)
2568 GtkWidget *menuitem;
2571 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2572 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2573 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
2574 g_free(*((gchar **)pparam->data));
2575 *((gchar **)pparam->data) = g_strdup(charset);
2579 static void prefs_common_default_signkey_set_optmenu(PrefParam *pparam)
2583 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2585 GtkWidget *menuitem;
2589 g_return_if_fail(optmenu != NULL);
2590 g_return_if_fail(*((gchar **)pparam->data) != NULL);
2592 menu = gtk_option_menu_get_menu(optmenu);
2593 for (cur = GTK_MENU_SHELL(menu)->children;
2594 cur != NULL; cur = cur->next) {
2595 menuitem = GTK_WIDGET(cur->data);
2596 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
2597 if (!strcmp(charset, *((gchar **)pparam->data))) {
2598 gtk_option_menu_set_history(optmenu, n);
2604 gtk_option_menu_set_history(optmenu, 0);
2605 prefs_common_charset_set_data_from_optmenu(pparam);
2608 #endif /* USE_GPGME */
2610 static void prefs_interface_create(void)
2615 /* GtkWidget *checkbtn_emacs; */
2616 GtkWidget *checkbtn_show_msg_with_cursor;
2617 GtkWidget *checkbtn_openunread;
2618 GtkWidget *checkbtn_openinbox;
2619 GtkWidget *checkbtn_immedexec;
2622 GtkWidget *optmenu_recvdialog;
2624 GtkWidget *menuitem;
2626 GtkWidget *frame_addr;
2627 GtkWidget *vbox_addr;
2628 GtkWidget *checkbtn_addaddrbyclick;
2630 GtkWidget *button_keybind;
2633 GtkWidget *optmenu_nextunreadmsgdialog;
2634 GtkWidget *optmenu_nextunreadmsgdialog_menu;
2635 GtkWidget *nextunreadmsgdialog_menuitem;
2637 GtkWidget *frame_pixmap_theme;
2638 GtkWidget *vbox_pixmap_theme;
2639 GtkWidget *entry_pixmap_theme;
2640 GtkWidget *combo_pixmap_theme;
2641 GList *avail_pixmap_themes = NULL;
2643 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2644 gtk_widget_show (vbox1);
2645 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2646 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2648 vbox2 = gtk_vbox_new (FALSE, 0);
2649 gtk_widget_show (vbox2);
2650 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2652 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
2653 _("Emulate the behavior of mouse operation of\n"
2654 "Emacs-based mailer"));
2655 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
2656 GTK_JUSTIFY_LEFT); */
2659 (vbox2, checkbtn_show_msg_with_cursor,
2660 _("Open message when cursor keys are pressed on summary"));
2663 (vbox2, checkbtn_openunread,
2664 _("Open first unread message when entering a folder"));
2667 (vbox2, checkbtn_openinbox,
2668 _("Go to inbox after receiving new mail"));
2670 vbox3 = gtk_vbox_new (FALSE, 0);
2671 gtk_widget_show (vbox3);
2672 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2675 (vbox3, checkbtn_immedexec,
2676 _("Execute immediately when moving or deleting messages"));
2678 hbox1 = gtk_hbox_new (FALSE, 0);
2679 gtk_widget_show (hbox1);
2680 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2682 label = gtk_label_new
2683 (_("(Messages will be marked until execution\n"
2684 " if this is turned off)"));
2685 gtk_widget_show (label);
2686 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 8);
2687 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2689 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
2691 hbox1 = gtk_hbox_new (FALSE, 8);
2692 gtk_widget_show (hbox1);
2693 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0);
2695 label = gtk_label_new (_("Show receive dialog"));
2696 gtk_widget_show (label);
2697 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2699 optmenu_recvdialog = gtk_option_menu_new ();
2700 gtk_widget_show (optmenu_recvdialog);
2701 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_recvdialog,
2704 menu = gtk_menu_new ();
2705 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
2706 MENUITEM_ADD (menu, menuitem, _("Only if a window is active"),
2707 RECV_DIALOG_ACTIVE);
2708 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
2710 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
2712 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2714 vbox_addr = gtk_vbox_new (FALSE, 0);
2715 gtk_widget_show (vbox_addr);
2716 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2717 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2720 (vbox_addr, checkbtn_addaddrbyclick,
2721 _("Add address to destination when double-clicked"));
2723 /* Next Unread Message Dialog */
2724 hbox2 = gtk_hbox_new (FALSE, 8);
2725 gtk_widget_show (hbox2);
2726 gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 0);
2728 label = gtk_label_new (_("Show no-unread-message dialog"));
2729 gtk_widget_show (label);
2730 gtk_box_pack_start (GTK_BOX (hbox2), label, FALSE, FALSE, 0);
2732 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
2733 gtk_widget_show (optmenu_nextunreadmsgdialog);
2734 gtk_box_pack_start (GTK_BOX (hbox2), optmenu_nextunreadmsgdialog,
2737 optmenu_nextunreadmsgdialog_menu = gtk_menu_new ();
2738 MENUITEM_ADD (optmenu_nextunreadmsgdialog_menu, nextunreadmsgdialog_menuitem,
2739 _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
2740 MENUITEM_ADD (optmenu_nextunreadmsgdialog_menu, nextunreadmsgdialog_menuitem,
2741 _("Assume 'Yes'"), NEXTUNREADMSGDIALOG_ASSUME_YES);
2742 MENUITEM_ADD (optmenu_nextunreadmsgdialog_menu, nextunreadmsgdialog_menuitem,
2743 _("Assume 'No'"), NEXTUNREADMSGDIALOG_ASSUME_NO);
2745 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog),
2746 optmenu_nextunreadmsgdialog_menu);
2749 /* Receive Dialog */
2750 /* hbox = gtk_hbox_new (FALSE, 8);
2751 gtk_widget_show (hbox);
2752 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
2754 label = gtk_label_new (_("Show receive Dialog"));
2755 gtk_widget_show (label);
2756 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
2758 recvdialog_optmenu = gtk_option_menu_new ();
2759 gtk_widget_show (recvdialog_optmenu);
2760 gtk_box_pack_start (GTK_BOX (hbox), recvdialog_optmenu, FALSE, FALSE, 0);
2762 recvdialog_optmenu_menu = gtk_menu_new ();
2764 MENUITEM_ADD (recvdialog_optmenu_menu, recvdialog_menuitem, _("Always"), RECVDIALOG_ALWAYS);
2765 MENUITEM_ADD (recvdialog_optmenu_menu, recvdialog_menuitem, _("Only if a sylpheed window is active"), RECVDIALOG_WINDOW_ACTIVE);
2766 MENUITEM_ADD (recvdialog_optmenu_menu, recvdialog_menuitem, _("Never"), RECVDIALOG_NEVER);
2768 gtk_option_menu_set_menu (GTK_OPTION_MENU (recvdialog_optmenu), recvdialog_optmenu_menu); */
2770 hbox1 = gtk_hbox_new (FALSE, 8);
2771 gtk_widget_show (hbox1);
2772 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2774 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
2775 gtk_widget_show (button_keybind);
2776 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
2777 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
2778 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
2780 PACK_FRAME(vbox1, frame_pixmap_theme, _("Pixmap theme"));
2782 vbox_pixmap_theme = gtk_vbox_new(FALSE, 0);
2783 gtk_widget_show(vbox_pixmap_theme);
2784 gtk_container_add(GTK_CONTAINER(frame_pixmap_theme), vbox_pixmap_theme);
2785 gtk_container_set_border_width(GTK_CONTAINER(vbox_pixmap_theme), 8);
2787 avail_pixmap_themes = stock_pixmap_themes_list_new();
2789 combo_pixmap_theme = gtk_combo_new ();
2790 gtk_widget_show (combo_pixmap_theme);
2791 gtk_box_pack_start (GTK_BOX (vbox_pixmap_theme), combo_pixmap_theme, TRUE, TRUE, 0);
2792 gtk_combo_set_popdown_strings(GTK_COMBO(combo_pixmap_theme), avail_pixmap_themes);
2793 entry_pixmap_theme = GTK_COMBO (combo_pixmap_theme)->entry;
2795 stock_pixmap_themes_list_free(avail_pixmap_themes);
2797 /* interface.checkbtn_emacs = checkbtn_emacs; */
2798 interface.checkbtn_show_msg_with_cursor
2799 = checkbtn_show_msg_with_cursor;
2800 interface.checkbtn_openunread = checkbtn_openunread;
2801 interface.checkbtn_openinbox = checkbtn_openinbox;
2802 interface.checkbtn_immedexec = checkbtn_immedexec;
2803 interface.optmenu_recvdialog = optmenu_recvdialog;
2804 interface.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2805 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
2806 interface.combo_pixmap_theme = combo_pixmap_theme;
2807 interface.entry_pixmap_theme = entry_pixmap_theme;
2810 static void prefs_other_create(void)
2813 GtkWidget *ext_frame;
2814 GtkWidget *ext_table;
2817 GtkWidget *uri_label;
2818 GtkWidget *uri_combo;
2819 GtkWidget *uri_entry;
2821 GtkWidget *printcmd_label;
2822 GtkWidget *printcmd_entry;
2824 GtkWidget *exteditor_label;
2825 GtkWidget *exteditor_combo;
2826 GtkWidget *exteditor_entry;
2828 GtkWidget *frame_cliplog;
2829 GtkWidget *vbox_cliplog;
2830 GtkWidget *hbox_cliplog;
2831 GtkWidget *checkbtn_cliplog;
2832 GtkWidget *loglength_label;
2833 GtkWidget *loglength_entry;
2835 GtkWidget *frame_exit;
2836 GtkWidget *vbox_exit;
2837 GtkWidget *checkbtn_confonexit;
2838 GtkWidget *checkbtn_cleanonexit;
2839 GtkWidget *checkbtn_askonclean;
2840 GtkWidget *checkbtn_warnqueued;
2842 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2843 gtk_widget_show (vbox1);
2844 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2845 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2847 PACK_FRAME(vbox1, ext_frame,
2848 _("External commands (%s will be replaced with file name / URI)"));
2850 ext_table = gtk_table_new (3, 2, FALSE);
2851 gtk_widget_show (ext_table);
2852 gtk_container_add (GTK_CONTAINER (ext_frame), ext_table);
2853 gtk_container_set_border_width (GTK_CONTAINER (ext_table), 8);
2854 gtk_table_set_row_spacings (GTK_TABLE (ext_table), VSPACING_NARROW);
2855 gtk_table_set_col_spacings (GTK_TABLE (ext_table), 8);
2857 uri_label = gtk_label_new (_("Web browser"));
2858 gtk_widget_show(uri_label);
2859 gtk_table_attach (GTK_TABLE (ext_table), uri_label, 0, 1, 0, 1,
2860 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2861 gtk_misc_set_alignment (GTK_MISC (uri_label), 1, 0.5);
2863 uri_combo = gtk_combo_new ();
2864 gtk_widget_show (uri_combo);
2865 gtk_table_attach (GTK_TABLE (ext_table), uri_combo, 1, 2, 0, 1,
2866 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2867 gtkut_combo_set_items (GTK_COMBO (uri_combo),
2868 "netscape -remote 'openURL(%s,raise)'",
2870 "gnome-moz-remote --raise --newwin '%s'",
2871 "kfmclient openURL '%s'",
2872 "opera -newwindow '%s'",
2873 "kterm -e w3m '%s'",
2874 "kterm -e lynx '%s'",
2876 uri_entry = GTK_COMBO (uri_combo)->entry;
2878 printcmd_label = gtk_label_new (_("Print"));
2879 gtk_widget_show (printcmd_label);
2880 gtk_table_attach (GTK_TABLE (ext_table), printcmd_label, 0, 1, 1, 2,
2881 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2882 gtk_misc_set_alignment (GTK_MISC (printcmd_label), 1, 0.5);
2884 printcmd_entry = gtk_entry_new ();
2885 gtk_widget_show (printcmd_entry);
2886 gtk_table_attach (GTK_TABLE (ext_table), printcmd_entry, 1, 2, 1, 2,
2887 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2889 exteditor_label = gtk_label_new (_("Editor"));
2890 gtk_widget_show (exteditor_label);
2891 gtk_table_attach (GTK_TABLE (ext_table), exteditor_label, 0, 1, 2, 3,
2892 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2893 gtk_misc_set_alignment (GTK_MISC (exteditor_label), 1, 0.5);
2895 exteditor_combo = gtk_combo_new ();
2896 gtk_widget_show (exteditor_combo);
2897 gtk_table_attach (GTK_TABLE (ext_table), exteditor_combo, 1, 2, 2, 3,
2898 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2899 gtkut_combo_set_items (GTK_COMBO (exteditor_combo),
2902 "mgedit --no-fork %s",
2908 exteditor_entry = GTK_COMBO (exteditor_combo)->entry;
2911 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2913 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2914 gtk_widget_show (vbox_cliplog);
2915 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2916 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2917 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2918 _("Clip the log size"));
2919 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2920 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2921 gtk_widget_show (hbox_cliplog);
2923 loglength_label = gtk_label_new (_("Log window length"));
2924 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2926 gtk_widget_show (GTK_WIDGET (loglength_label));
2927 loglength_entry = gtk_entry_new ();
2928 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2929 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2931 gtk_widget_show (GTK_WIDGET (loglength_entry));
2932 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2935 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2937 vbox_exit = gtk_vbox_new (FALSE, 0);
2938 gtk_widget_show (vbox_exit);
2939 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2940 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
2942 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
2943 _("Confirm on exit"));
2945 hbox1 = gtk_hbox_new (FALSE, 32);
2946 gtk_widget_show (hbox1);
2947 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
2949 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
2950 _("Empty trash on exit"));
2951 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
2952 _("Ask before emptying"));
2953 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
2955 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
2956 _("Warn if there are queued messages"));
2958 other.uri_combo = uri_combo;
2959 other.uri_entry = uri_entry;
2960 other.printcmd_entry = printcmd_entry;
2962 other.exteditor_combo = exteditor_combo;
2963 other.exteditor_entry = exteditor_entry;
2965 other.checkbtn_cliplog = checkbtn_cliplog;
2966 other.loglength_entry = loglength_entry;
2968 other.checkbtn_confonexit = checkbtn_confonexit;
2969 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
2970 other.checkbtn_askonclean = checkbtn_askonclean;
2971 other.checkbtn_warnqueued = checkbtn_warnqueued;
2974 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
2976 GtkWidget *datefmt_sample = NULL;
2979 g_return_if_fail(widget != NULL);
2980 g_return_if_fail(*widget != NULL);
2981 g_return_if_fail(display.entry_datefmt != NULL);
2983 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2984 (GTK_OBJECT(*widget), "datefmt_sample"));
2985 g_return_if_fail(datefmt_sample != NULL);
2987 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
2988 g_free(prefs_common.date_format);
2989 prefs_common.date_format = text;
2990 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
2992 gtk_widget_destroy(*widget);
2996 static void date_format_cancel_btn_clicked(GtkButton *button,
2999 g_return_if_fail(widget != NULL);
3000 g_return_if_fail(*widget != NULL);
3002 gtk_widget_destroy(*widget);
3006 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
3009 if (event && event->keyval == GDK_Escape)
3010 date_format_cancel_btn_clicked(NULL, widget);
3013 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
3014 GdkEventAny *event, GtkWidget **widget)
3016 g_return_val_if_fail(widget != NULL, FALSE);
3017 g_return_val_if_fail(*widget != NULL, FALSE);
3023 static void date_format_entry_on_change(GtkEditable *editable,
3027 struct tm *cal_time;
3031 cur_time = time(NULL);
3032 cal_time = localtime(&cur_time);
3034 text = gtk_editable_get_chars(editable, 0, -1);
3036 strftime(buffer, sizeof buffer, text, cal_time);
3037 gtk_label_set_text(example, buffer);
3040 static void date_format_select_row(GtkWidget *date_format_list, gint row,
3041 gint column, GdkEventButton *event,
3042 GtkWidget *date_format)
3048 GtkWidget *datefmt_sample;
3050 /* only on double click */
3051 if (!event || event->type != GDK_2BUTTON_PRESS) return;
3054 datefmt_sample = GTK_WIDGET(gtk_object_get_data
3055 (GTK_OBJECT(date_format), "datefmt_sample"));
3057 g_return_if_fail(date_format_list != NULL);
3058 g_return_if_fail(date_format != NULL);
3059 g_return_if_fail(datefmt_sample != NULL);
3061 /* get format from clist */
3062 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
3064 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
3065 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
3067 /* insert the format into the text entry */
3068 new_format = g_malloc(strlen(old_format) + 3);
3070 strncpy(new_format, old_format, cur_pos);
3071 new_format[cur_pos] = '\0';
3072 strcat(new_format, format);
3073 strcat(new_format, &old_format[cur_pos]);
3075 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
3076 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
3081 static GtkWidget *date_format_create(GtkButton *button, void *data)
3083 static GtkWidget *datefmt_win = NULL;
3085 GtkWidget *scrolledwindow1;
3086 GtkWidget *datefmt_clist;
3091 GtkWidget *confirm_area;
3093 GtkWidget *cancel_btn;
3094 GtkWidget *datefmt_entry;
3123 const gint TIME_FORMAT_ELEMS =
3124 sizeof time_format / sizeof time_format[0];
3126 time_format[0].txt = _("the full abbreviated weekday name");
3127 time_format[1].txt = _("the full weekday name");
3128 time_format[2].txt = _("the abbreviated month name");
3129 time_format[3].txt = _("the full month name");
3130 time_format[4].txt = _("the preferred date and time for the current locale");
3131 time_format[5].txt = _("the century number (year/100)");
3132 time_format[6].txt = _("the day of the month as a decimal number");
3133 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
3134 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
3135 time_format[9].txt = _("the day of the year as a decimal number");
3136 time_format[10].txt = _("the month as a decimal number");
3137 time_format[11].txt = _("the minute as a decimal number");
3138 time_format[12].txt = _("either AM or PM");
3139 time_format[13].txt = _("the second as a decimal number");
3140 time_format[14].txt = _("the day of the week as a decimal number");
3141 time_format[15].txt = _("the preferred date for the current locale");
3142 time_format[16].txt = _("the last two digits of a year");
3143 time_format[17].txt = _("the year as a decimal number");
3144 time_format[18].txt = _("the time zone or name or abbreviation");
3146 if (datefmt_win) return datefmt_win;
3148 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
3149 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
3150 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
3151 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
3152 gtk_widget_set_usize(datefmt_win, 440, 280);
3154 vbox1 = gtk_vbox_new(FALSE, 10);
3155 gtk_widget_show(vbox1);
3156 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
3158 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
3159 gtk_scrolled_window_set_policy
3160 (GTK_SCROLLED_WINDOW(scrolledwindow1),
3161 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
3162 gtk_widget_show(scrolledwindow1);
3163 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
3165 titles[0] = _("Specifier");
3166 titles[1] = _("Description");
3167 datefmt_clist = gtk_clist_new_with_titles(2, titles);
3168 gtk_widget_show(datefmt_clist);
3169 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
3170 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
3171 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
3172 GTK_SELECTION_BROWSE);
3174 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
3176 /* phoney casting necessary because of gtk... */
3177 text[0] = (gchar *)time_format[i].fmt;
3178 text[1] = (gchar *)time_format[i].txt;
3179 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
3182 table = gtk_table_new(2, 2, FALSE);
3183 gtk_widget_show(table);
3184 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
3185 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
3186 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
3188 label1 = gtk_label_new(_("Date format"));
3189 gtk_widget_show(label1);
3190 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
3192 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
3193 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
3195 datefmt_entry = gtk_entry_new_with_max_length(256);
3196 gtk_widget_show(datefmt_entry);
3197 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
3198 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3200 /* we need the "sample" entry box; add it as data so callbacks can
3201 * get the entry box */
3202 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
3205 label2 = gtk_label_new(_("Example"));
3206 gtk_widget_show(label2);
3207 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
3209 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
3210 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
3212 label3 = gtk_label_new("");
3213 gtk_widget_show(label3);
3214 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
3215 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3216 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
3217 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
3219 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
3220 &cancel_btn, _("Cancel"), NULL, NULL);
3221 gtk_widget_grab_default(ok_btn);
3222 gtk_widget_show(confirm_area);
3224 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
3226 /* set the current format */
3227 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
3228 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
3231 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
3232 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
3234 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
3235 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
3237 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
3238 GTK_SIGNAL_FUNC(date_format_key_pressed),
3240 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
3241 GTK_SIGNAL_FUNC(date_format_on_delete),
3243 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
3244 GTK_SIGNAL_FUNC(date_format_entry_on_change),
3247 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
3248 GTK_SIGNAL_FUNC(date_format_select_row),
3251 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
3252 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
3254 gtk_widget_show(datefmt_win);
3255 manage_window_set_transient(GTK_WINDOW(datefmt_win));
3257 gtk_widget_grab_focus(ok_btn);
3262 void prefs_quote_colors_dialog(void)
3264 if (!quote_color_win)
3265 prefs_quote_colors_dialog_create();
3266 gtk_widget_show(quote_color_win);
3267 manage_window_set_transient(GTK_WINDOW(quote_color_win));
3270 gtk_widget_hide(quote_color_win);
3272 textview_update_message_colors();
3273 main_window_reflect_prefs_all();
3276 static void prefs_quote_colors_dialog_create(void)
3281 GtkWidget *quotelevel1_label;
3282 GtkWidget *quotelevel2_label;
3283 GtkWidget *quotelevel3_label;
3284 GtkWidget *uri_label;
3285 GtkWidget *tgt_folder_label;
3288 GtkWidget *recycle_colors_btn;
3289 GtkWidget *frame_colors;
3291 window = gtk_window_new(GTK_WINDOW_DIALOG);
3292 gtk_container_set_border_width(GTK_CONTAINER(window), 2);
3293 gtk_window_set_title(GTK_WINDOW(window), _("Set message colors"));
3294 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
3295 gtk_window_set_modal(GTK_WINDOW(window), TRUE);
3296 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
3298 vbox = gtk_vbox_new (FALSE, VSPACING);
3299 gtk_container_add (GTK_CONTAINER (window), vbox);
3300 gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
3301 PACK_FRAME(vbox, frame_colors, _("Colors"));
3303 table = gtk_table_new (4, 2, FALSE);
3304 gtk_container_add (GTK_CONTAINER (frame_colors), table);
3305 gtk_container_set_border_width (GTK_CONTAINER (table), 8);
3306 gtk_table_set_row_spacings (GTK_TABLE (table), 2);
3307 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
3310 color_buttons.quote_level1_btn = gtk_button_new();
3311 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level1_btn,
3312 0, 1, 0, 1, 0, 0, 0, 0);
3313 gtk_widget_set_usize (color_buttons.quote_level1_btn, 40, 30);
3314 gtk_container_set_border_width
3315 (GTK_CONTAINER (color_buttons.quote_level1_btn), 5);
3317 color_buttons.quote_level2_btn = gtk_button_new();
3318 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level2_btn,
3319 0, 1, 1, 2, 0, 0, 0, 0);
3320 gtk_widget_set_usize (color_buttons.quote_level2_btn, 40, 30);
3321 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.quote_level2_btn), 5);
3323 color_buttons.quote_level3_btn = gtk_button_new_with_label ("");
3324 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level3_btn,
3325 0, 1, 2, 3, 0, 0, 0, 0);
3326 gtk_widget_set_usize (color_buttons.quote_level3_btn, 40, 30);
3327 gtk_container_set_border_width
3328 (GTK_CONTAINER (color_buttons.quote_level3_btn), 5);
3330 color_buttons.uri_btn = gtk_button_new_with_label ("");
3331 gtk_table_attach (GTK_TABLE (table), color_buttons.uri_btn,
3332 0, 1, 3, 4, 0, 0, 0, 0);
3333 gtk_widget_set_usize (color_buttons.uri_btn, 40, 30);
3334 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.uri_btn), 5);
3336 color_buttons.tgt_folder_btn = gtk_button_new_with_label ("");
3337 gtk_table_attach (GTK_TABLE (table), color_buttons.tgt_folder_btn,
3338 0, 1, 4, 5, 0, 0, 0, 0);
3339 gtk_widget_set_usize (color_buttons.tgt_folder_btn, 40, 30);
3340 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.tgt_folder_btn), 5);
3342 quotelevel1_label = gtk_label_new (_("Quoted Text - First Level"));
3343 gtk_table_attach (GTK_TABLE (table), quotelevel1_label, 1, 2, 0, 1,
3344 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3345 gtk_label_set_justify (GTK_LABEL (quotelevel1_label), GTK_JUSTIFY_LEFT);
3346 gtk_misc_set_alignment (GTK_MISC (quotelevel1_label), 0, 0.5);
3348 quotelevel2_label = gtk_label_new (_("Quoted Text - Second Level"));
3349 gtk_table_attach (GTK_TABLE (table), quotelevel2_label, 1, 2, 1, 2,
3350 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3351 gtk_label_set_justify (GTK_LABEL (quotelevel2_label), GTK_JUSTIFY_LEFT);
3352 gtk_misc_set_alignment (GTK_MISC (quotelevel2_label), 0, 0.5);
3354 quotelevel3_label = gtk_label_new (_("Quoted Text - Third Level"));
3355 gtk_table_attach (GTK_TABLE (table), quotelevel3_label, 1, 2, 2, 3,
3356 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3357 gtk_label_set_justify (GTK_LABEL (quotelevel3_label), GTK_JUSTIFY_LEFT);
3358 gtk_misc_set_alignment (GTK_MISC (quotelevel3_label), 0, 0.5);
3360 uri_label = gtk_label_new (_("URI link"));
3361 gtk_table_attach (GTK_TABLE (table), uri_label, 1, 2, 3, 4,
3362 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3363 gtk_label_set_justify (GTK_LABEL (uri_label), GTK_JUSTIFY_LEFT);
3364 gtk_misc_set_alignment (GTK_MISC (uri_label), 0, 0.5);
3366 tgt_folder_label = gtk_label_new (_("Target folder"));
3367 gtk_table_attach (GTK_TABLE (table), tgt_folder_label, 1, 2, 4, 5,
3368 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3369 gtk_label_set_justify (GTK_LABEL (tgt_folder_label), GTK_JUSTIFY_LEFT);
3370 gtk_misc_set_alignment (GTK_MISC (tgt_folder_label), 0, 0.5);
3372 PACK_CHECK_BUTTON (vbox, recycle_colors_btn,
3373 _("Recycle quote colors"));
3375 gtkut_button_set_create(&hbbox, &ok_btn, _("OK"),
3376 NULL, NULL, NULL, NULL);
3377 gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
3379 gtk_widget_grab_default(ok_btn);
3380 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3381 gtk_signal_connect(GTK_OBJECT(window), "delete_event",
3382 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3383 gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
3384 GTK_SIGNAL_FUNC(prefs_quote_colors_key_pressed),
3387 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level1_btn), "clicked",
3388 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL1");
3389 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level2_btn), "clicked",
3390 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL2");
3391 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level3_btn), "clicked",
3392 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL3");
3393 gtk_signal_connect(GTK_OBJECT(color_buttons.uri_btn), "clicked",
3394 GTK_SIGNAL_FUNC(quote_color_set_dialog), "URI");
3395 gtk_signal_connect(GTK_OBJECT(color_buttons.tgt_folder_btn), "clicked",
3396 GTK_SIGNAL_FUNC(quote_color_set_dialog), "TGTFLD");
3397 gtk_signal_connect(GTK_OBJECT(recycle_colors_btn), "toggled",
3398 GTK_SIGNAL_FUNC(prefs_recycle_colors_toggled), NULL);
3399 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
3400 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3402 /* show message button colors and recycle options */
3403 set_button_bg_color(color_buttons.quote_level1_btn,
3404 prefs_common.quote_level1_col);
3405 set_button_bg_color(color_buttons.quote_level2_btn,
3406 prefs_common.quote_level2_col);
3407 set_button_bg_color(color_buttons.quote_level3_btn,
3408 prefs_common.quote_level3_col);
3409 set_button_bg_color(color_buttons.uri_btn,
3410 prefs_common.uri_col);
3411 set_button_bg_color(color_buttons.tgt_folder_btn,
3412 prefs_common.tgt_folder_col);
3413 gtk_toggle_button_set_active((GtkToggleButton *)recycle_colors_btn,
3414 prefs_common.recycle_quote_colors);
3416 gtk_widget_show_all(vbox);
3417 quote_color_win = window;
3420 static void prefs_quote_colors_key_pressed(GtkWidget *widget,
3421 GdkEventKey *event, gpointer data)
3423 if (event && event->keyval == GDK_Escape)
3427 static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
3429 gchar *type = (gchar *)data;
3430 gchar *title = NULL;
3431 gdouble color[4] = {0.0, 0.0, 0.0, 0.0};
3433 GtkColorSelectionDialog *dialog;
3435 if(g_strcasecmp(type, "LEVEL1") == 0) {
3436 title = _("Pick color for quotation level 1");
3437 rgbvalue = prefs_common.quote_level1_col;
3438 } else if(g_strcasecmp(type, "LEVEL2") == 0) {
3439 title = _("Pick color for quotation level 2");
3440 rgbvalue = prefs_common.quote_level2_col;
3441 } else if(g_strcasecmp(type, "LEVEL3") == 0) {
3442 title = _("Pick color for quotation level 3");
3443 rgbvalue = prefs_common.quote_level3_col;
3444 } else if(g_strcasecmp(type, "URI") == 0) {
3445 title = _("Pick color for URI");
3446 rgbvalue = prefs_common.uri_col;
3447 } else if(g_strcasecmp(type, "TGTFLD") == 0) {
3448 title = _("Pick color for target folder");
3449 rgbvalue = prefs_common.tgt_folder_col;
3451 } else if(g_strcasecmp(type, "Misspelled word") == 0) {
3452 title = _("Pick color for misspelled word");
3453 rgbvalue = prefs_common.misspelled_col;
3455 } else { /* Should never be called */
3456 g_warning("Unrecognized datatype '%s' in quote_color_set_dialog\n", type);
3460 color_dialog = gtk_color_selection_dialog_new(title);
3461 gtk_window_set_position(GTK_WINDOW(color_dialog), GTK_WIN_POS_CENTER);
3462 gtk_window_set_modal(GTK_WINDOW(color_dialog), TRUE);
3463 gtk_window_set_policy(GTK_WINDOW(color_dialog), FALSE, FALSE, FALSE);
3464 manage_window_set_transient(GTK_WINDOW(color_dialog));
3466 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->ok_button),
3467 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_ok), data);
3468 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->cancel_button),
3469 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_cancel), data);
3470 gtk_signal_connect(GTK_OBJECT(color_dialog), "key_press_event",
3471 GTK_SIGNAL_FUNC(quote_colors_set_dialog_key_pressed),
3474 /* preselect the previous color in the color selection dialog */
3475 color[0] = (gdouble) ((rgbvalue & 0xff0000) >> 16) / 255.0;
3476 color[1] = (gdouble) ((rgbvalue & 0x00ff00) >> 8) / 255.0;
3477 color[2] = (gdouble) (rgbvalue & 0x0000ff) / 255.0;
3478 dialog = GTK_COLOR_SELECTION_DIALOG(color_dialog);
3479 gtk_color_selection_set_color
3480 (GTK_COLOR_SELECTION(dialog->colorsel), color);
3482 gtk_widget_show(color_dialog);
3485 static void quote_colors_set_dialog_ok(GtkWidget *widget, gpointer data)
3487 GtkColorSelection *colorsel = (GtkColorSelection *)
3488 ((GtkColorSelectionDialog *)color_dialog)->colorsel;
3490 gint red, green, blue, rgbvalue;
3491 gchar *type = (gchar *)data;
3493 gtk_color_selection_get_color(colorsel, color);
3495 red = (gint) (color[0] * 255.0);
3496 green = (gint) (color[1] * 255.0);
3497 blue = (gint) (color[2] * 255.0);
3498 rgbvalue = (gint) ((red * 0x10000) | (green * 0x100) | blue);
3501 fprintf(stderr, "redc = %f, greenc = %f, bluec = %f\n", color[0], color[1], color[2]);
3502 fprintf(stderr, "red = %d, green = %d, blue = %d\n", red, green, blue);
3503 fprintf(stderr, "Color is %x\n", rgbvalue);
3506 if (g_strcasecmp(type, "LEVEL1") == 0) {
3507 prefs_common.quote_level1_col = rgbvalue;
3508 set_button_bg_color(color_buttons.quote_level1_btn, rgbvalue);
3509 } else if (g_strcasecmp(type, "LEVEL2") == 0) {
3510 prefs_common.quote_level2_col = rgbvalue;
3511 set_button_bg_color(color_buttons.quote_level2_btn, rgbvalue);
3512 } else if (g_strcasecmp(type, "LEVEL3") == 0) {
3513 prefs_common.quote_level3_col = rgbvalue;
3514 set_button_bg_color(color_buttons.quote_level3_btn, rgbvalue);
3515 } else if (g_strcasecmp(type, "URI") == 0) {
3516 prefs_common.uri_col = rgbvalue;
3517 set_button_bg_color(color_buttons.uri_btn, rgbvalue);
3518 } else if (g_strcasecmp(type, "TGTFLD") == 0) {
3519 prefs_common.tgt_folder_col = rgbvalue;
3520 set_button_bg_color(color_buttons.tgt_folder_btn, rgbvalue);
3521 folderview_set_target_folder_color(prefs_common.tgt_folder_col);
3523 } else if (g_strcasecmp(type, "Misspelled word") == 0) {
3524 prefs_common.misspelled_col = rgbvalue;
3525 set_button_bg_color(spelling.misspelled_btn, rgbvalue);
3528 fprintf( stderr, "Unrecognized datatype '%s' in quote_color_set_dialog_ok\n", type );
3530 gtk_widget_destroy(color_dialog);
3533 static void quote_colors_set_dialog_cancel(GtkWidget *widget, gpointer data)
3535 gtk_widget_destroy(color_dialog);
3538 static void quote_colors_set_dialog_key_pressed(GtkWidget *widget,
3542 gtk_widget_destroy(color_dialog);
3545 static void set_button_bg_color(GtkWidget *widget, gint rgbvalue)
3550 gtkut_convert_int_to_gdk_color(rgbvalue, &color);
3551 newstyle = gtk_style_copy(gtk_widget_get_default_style());
3552 newstyle->bg[GTK_STATE_NORMAL] = color;
3553 newstyle->bg[GTK_STATE_PRELIGHT] = color;
3554 newstyle->bg[GTK_STATE_ACTIVE] = color;
3556 gtk_widget_set_style(GTK_WIDGET(widget), newstyle);
3559 static void prefs_enable_message_color_toggled(void)
3563 is_active = gtk_toggle_button_get_active
3564 (GTK_TOGGLE_BUTTON(message.chkbtn_enablecol));
3565 gtk_widget_set_sensitive(message.button_edit_col, is_active);
3566 prefs_common.enable_color = is_active;
3569 static void prefs_recycle_colors_toggled(GtkWidget *widget)
3573 is_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
3574 prefs_common.recycle_quote_colors = is_active;
3577 static void prefs_font_select(GtkButton *button, GtkEntry *entry)
3581 g_return_if_fail(entry != NULL);
3583 if (!font_sel_win) {
3584 font_sel_win = gtk_font_selection_dialog_new
3585 (_("Font selection"));
3586 gtk_window_position(GTK_WINDOW(font_sel_win),
3587 GTK_WIN_POS_CENTER);
3588 gtk_signal_connect(GTK_OBJECT(font_sel_win), "delete_event",
3589 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3592 (GTK_OBJECT(font_sel_win), "key_press_event",
3593 GTK_SIGNAL_FUNC(prefs_font_selection_key_pressed),
3595 gtk_signal_connect_object
3596 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->cancel_button),
3598 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3599 GTK_OBJECT(font_sel_win));
3602 if(font_sel_conn_id) {
3603 gtk_signal_disconnect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button), font_sel_conn_id);
3605 font_sel_conn_id = gtk_signal_connect
3606 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button),
3608 GTK_SIGNAL_FUNC(prefs_font_selection_ok),
3610 printf("%i\n", font_sel_conn_id);
3612 font_name = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
3613 gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(font_sel_win), font_name);
3615 manage_window_set_transient(GTK_WINDOW(font_sel_win));
3616 gtk_window_set_modal(GTK_WINDOW(font_sel_win), TRUE);
3617 gtk_widget_grab_focus
3618 (GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button);
3619 gtk_widget_show(font_sel_win);
3622 static void prefs_font_selection_key_pressed(GtkWidget *widget,
3626 if (event && event->keyval == GDK_Escape)
3627 gtk_widget_hide(font_sel_win);
3630 static void prefs_font_selection_ok(GtkButton *button, GtkEntry *entry)
3634 fontname = gtk_font_selection_dialog_get_font_name
3635 (GTK_FONT_SELECTION_DIALOG(font_sel_win));
3638 gtk_entry_set_text(entry, fontname);
3643 gtk_widget_hide(font_sel_win);
3646 static void prefs_keybind_select(void)
3653 GtkWidget *confirm_area;
3655 GtkWidget *cancel_btn;
3657 window = gtk_window_new (GTK_WINDOW_DIALOG);
3658 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
3659 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
3660 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
3661 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
3662 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
3663 manage_window_set_transient (GTK_WINDOW (window));
3665 vbox1 = gtk_vbox_new (FALSE, VSPACING);
3666 gtk_container_add (GTK_CONTAINER (window), vbox1);
3667 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
3669 hbox1 = gtk_hbox_new (FALSE, 8);
3670 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3672 label = gtk_label_new
3673 (_("Select the preset of key bindings.\n"
3674 "You can also modify each menu's shortcuts by pressing\n"
3675 "any key(s) when placing the mouse pointer on the item."));
3676 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3677 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3679 hbox1 = gtk_hbox_new (FALSE, 8);
3680 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3682 combo = gtk_combo_new ();
3683 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
3684 gtkut_combo_set_items (GTK_COMBO (combo),
3690 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
3692 hbox1 = gtk_hbox_new (FALSE, 8);
3693 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3695 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
3696 &cancel_btn, _("Cancel"), NULL, NULL);
3697 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
3698 gtk_widget_grab_default (ok_btn);
3700 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3701 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3702 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
3703 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
3704 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
3705 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
3706 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
3708 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
3709 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
3712 gtk_widget_show_all(window);
3714 keybind.window = window;
3715 keybind.combo = combo;
3718 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
3721 if (event && event->keyval == GDK_Escape)
3722 prefs_keybind_cancel();
3725 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
3728 prefs_keybind_cancel();
3732 static void prefs_keybind_cancel(void)
3734 gtk_widget_destroy(keybind.window);
3735 keybind.window = NULL;
3736 keybind.combo = NULL;
3739 static void prefs_keybind_apply_clicked(GtkWidget *widget)
3741 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
3745 static gchar *default_menurc =
3746 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3747 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
3748 "(menu-path \"<Main>/File/Print...\" \"\")\n"
3749 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
3751 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3752 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3753 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3754 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
3756 "(menu-path \"<Main>/View/Expand Summary View\" \"V\")\n"
3757 "(menu-path \"<Main>/View/Expand Message View\" \"<shift>V\")\n"
3758 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3759 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3760 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3761 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3762 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3763 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3764 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3765 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3766 "(menu-path \"<Main>/View/Show all header\" \"<control>H\")\n"
3767 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3769 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3770 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3771 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
3772 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3773 "(menu-path \"<Main>/Message/Reply to sender\" \"\")\n"
3774 "(menu-path \"<Main>/Message/Reply to all\" \"<shift><control>R\")\n"
3775 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
3776 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
3777 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3778 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
3779 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
3780 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3781 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3782 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3783 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3785 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3786 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3787 "(menu-path \"<Main>/Tools/Log window\" \"<control>L\")\n"
3789 "(menu-path \"<Compose>/File/Close\" \"<control>W\")\n"
3790 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
3791 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
3792 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
3793 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
3794 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
3795 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
3797 static gchar *mew_wl_menurc =
3798 "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
3799 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
3800 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
3801 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
3803 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3804 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3805 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3806 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3808 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3809 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3810 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
3811 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3812 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3813 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3814 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3815 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3816 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3817 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3818 "(menu-path \"<Main>/View/Show all header\" \"<shift>H\")\n"
3819 "(menu-path \"<Main>/View/Update\" \"<shift>S\")\n"
3821 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3822 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3823 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
3824 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3825 "(menu-path \"<Main>/Message/Reply to sender\" \"\")\n"
3826 "(menu-path \"<Main>/Message/Reply to all\" \"<shift>A\")\n"
3827 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3828 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
3829 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
3830 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
3831 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3832 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3833 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3834 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3835 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
3837 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3838 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3839 "(menu-path \"<Main>/Tools/Log window\" \"<control>L\")\n"
3841 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3842 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3843 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3844 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3845 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3846 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3847 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3849 static gchar *mutt_menurc =
3850 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3851 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
3852 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
3853 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
3855 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3856 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3857 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3858 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
3860 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
3861 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3862 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
3863 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
3864 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
3865 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
3866 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
3867 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3868 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3869 "(menu-path \"<Main>/View/Show all header\" \"<control>H\")\n"
3870 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3872 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3873 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3874 "(menu-path \"<Main>/Message/Compose new message\" \"M\")\n"
3875 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
3876 "(menu-path \"<Main>/Message/Reply to all\" \"G\")\n"
3877 "(menu-path \"<Main>/Message/Reply to sender\" \"\")\n"
3878 "(menu-path \"<Main>/Message/Forward\" \"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>C\")\n"
3882 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3883 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
3884 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3885 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\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\" \"<control>L\")\n"
3892 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3893 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3894 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3895 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3896 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3897 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3898 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3900 static gchar *old_sylpheed_menurc =
3901 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3902 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
3903 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
3904 "(menu-path \"<Main>/File/Exit\" \"<alt>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\" \"<control>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...\" \"<alt>G\")\n"
3919 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
3920 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3921 "(menu-path \"<Main>/View/Show all header\" \"<control>H\")\n"
3922 "(menu-path \"<Main>/View/Update\" \"<alt>U\")\n"
3924 "(menu-path \"<Main>/Message/Get new mail\" \"<alt>I\")\n"
3925 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><alt>I\")\n"
3926 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
3927 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
3928 "(menu-path \"<Main>/Message/Reply to sender\" \"<control><alt>R\")\n"
3929 "(menu-path \"<Main>/Message/Reply to all\" \"<shift><alt>R\")\n"
3930 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
3931 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
3932 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
3933 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
3934 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
3935 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3936 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3937 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3938 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3940 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
3941 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
3942 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
3944 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3945 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3946 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3947 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3948 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3949 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3950 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3952 static gchar *empty_menurc =
3953 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3954 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
3955 "(menu-path \"<Main>/File/Print...\" \"\")\n"
3956 "(menu-path \"<Main>/File/Exit\" \"\")\n"
3958 "(menu-path \"<Main>/Edit/Copy\" \"\")\n"
3959 "(menu-path \"<Main>/Edit/Select all\" \"\")\n"
3960 "(menu-path \"<Main>/Edit/Find in current message...\" \"\")\n"
3961 "(menu-path \"<Main>/Edit/Search folder...\" \"\")\n"
3963 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3964 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3965 "(menu-path \"<Main>/View/Thread view\" \"\")\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...\" \"\")\n"
3971 "(menu-path \"<Main>/View/Open in new window\" \"\")\n"
3972 "(menu-path \"<Main>/View/View source\" \"\")\n"
3973 "(menu-path \"<Main>/View/Show all header\" \"\")\n"
3974 "(menu-path \"<Main>/View/Update\" \"\")\n"
3976 "(menu-path \"<Main>/Message/Get new mail\" \"\")\n"
3977 "(menu-path \"<Main>/Message/Get from all accounts\" \"\")\n"
3978 "(menu-path \"<Main>/Message/Compose an email message\" \"\")\n"
3979 "(menu-path \"<Main>/Message/Reply\" \"\")\n"
3980 "(menu-path \"<Main>/Message/Reply to sender\" \"\")\n"
3981 "(menu-path \"<Main>/Message/Reply to all\" \"\")\n"
3982 "(menu-path \"<Main>/Message/Forward\" \"\")\n"
3983 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
3984 "(menu-path \"<Main>/Message/Move...\" \"\")\n"
3985 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
3986 "(menu-path \"<Main>/Message/Delete\" \"\")\n"
3987 "(menu-path \"<Main>/Message/Mark/Mark\" \"\")\n"
3988 "(menu-path \"<Main>/Message/Mark/Unmark\" \"\")\n"
3989 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"\")\n"
3990 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3992 "(menu-path \"<Main>/Tools/Address book\" \"\")\n"
3993 "(menu-path \"<Main>/Tools/Execute\" \"\")\n"
3994 "(menu-path \"<Main>/Tools/Log window\" \"\")\n"
3996 "(menu-path \"<Compose>/File/Close\" \"\")\n"
3997 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3998 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
3999 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
4000 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
4001 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
4002 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
4004 text = gtk_entry_get_text(entry);
4006 if (!strcmp(text, _("Default")))
4007 rc_str = default_menurc;
4008 else if (!strcmp(text, "Mew / Wanderlust"))
4009 rc_str = mew_wl_menurc;
4010 else if (!strcmp(text, "Mutt"))
4011 rc_str = mutt_menurc;
4012 else if (!strcmp(text, _("Old Sylpheed")))
4013 rc_str = old_sylpheed_menurc;
4017 gtk_item_factory_parse_rc_string(empty_menurc);
4018 gtk_item_factory_parse_rc_string(rc_str);
4020 gtk_widget_destroy(keybind.window);
4021 keybind.window = NULL;
4022 keybind.combo = NULL;
4025 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
4028 GtkWidget *menuitem;
4031 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4032 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4033 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
4034 g_free(*((gchar **)pparam->data));
4035 *((gchar **)pparam->data) = g_strdup(charset);
4038 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
4041 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4043 GtkWidget *menuitem;
4047 g_return_if_fail(optmenu != NULL);
4048 g_return_if_fail(*((gchar **)pparam->data) != NULL);
4050 menu = gtk_option_menu_get_menu(optmenu);
4051 for (cur = GTK_MENU_SHELL(menu)->children;
4052 cur != NULL; cur = cur->next) {
4053 menuitem = GTK_WIDGET(cur->data);
4054 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
4055 if (!strcmp(charset, *((gchar **)pparam->data))) {
4056 gtk_option_menu_set_history(optmenu, n);
4062 gtk_option_menu_set_history(optmenu, 0);
4063 prefs_common_charset_set_data_from_optmenu(pparam);
4066 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
4069 GtkWidget *menuitem;
4071 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4072 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4073 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
4074 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4077 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
4079 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
4080 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4082 GtkWidget *menuitem;
4085 case RECV_DIALOG_ALWAYS:
4086 gtk_option_menu_set_history(optmenu, 0);
4088 case RECV_DIALOG_ACTIVE:
4089 gtk_option_menu_set_history(optmenu, 1);
4091 case RECV_DIALOG_NEVER:
4092 gtk_option_menu_set_history(optmenu, 2);
4098 menu = gtk_option_menu_get_menu(optmenu);
4099 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4100 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
4103 static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
4106 prefs_common_cancel();
4110 static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
4113 if (event && event->keyval == GDK_Escape)
4114 prefs_common_cancel();
4117 static void prefs_common_ok(void)
4119 prefs_common_apply();
4120 gtk_widget_hide(dialog.window);
4125 static void prefs_common_apply(void)
4127 gchar *entry_pixmap_theme_str;
4128 gboolean update_pixmap_theme;
4130 entry_pixmap_theme_str = gtk_entry_get_text(GTK_ENTRY(interface.entry_pixmap_theme));
4131 if (entry_pixmap_theme_str &&
4132 (strcmp(prefs_common.pixmap_theme_path, entry_pixmap_theme_str) != 0) )
4133 update_pixmap_theme = TRUE;
4135 update_pixmap_theme = FALSE;
4137 prefs_set_data_from_dialog(param);
4139 if (update_pixmap_theme)
4141 main_window_reflect_prefs_all_real(TRUE);
4142 compose_reflect_prefs_pixmap_theme();
4144 main_window_reflect_prefs_all_real(FALSE);
4146 prefs_common_save_config();
4148 inc_autocheck_timer_remove();
4149 inc_autocheck_timer_set();
4152 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
4155 GtkWidget *menuitem;
4157 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4158 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4159 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
4160 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4163 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
4165 NextUnreadMsgDialogShow dialog_show;
4166 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4168 GtkWidget *menuitem;
4170 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
4172 switch (dialog_show) {
4173 case NEXTUNREADMSGDIALOG_ALWAYS:
4174 gtk_option_menu_set_history(optmenu, 0);
4176 case NEXTUNREADMSGDIALOG_ASSUME_YES:
4177 gtk_option_menu_set_history(optmenu, 1);
4179 case NEXTUNREADMSGDIALOG_ASSUME_NO:
4180 gtk_option_menu_set_history(optmenu, 2);
4184 menu = gtk_option_menu_get_menu(optmenu);
4185 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4186 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
4189 static void prefs_common_cancel(void)
4191 gtk_widget_hide(dialog.window);
4196 static struct _ComposePrefs
4200 GtkWidget *close_btn;
4203 static void compose_prefs_key_pressed(GtkWidget *widget, GdkEventKey *event);
4204 static gint compose_prefs_delete_event(GtkWidget *widget, GdkEventAny *event);
4205 static void compose_prefs_close(GtkWidget *widget);
4206 static void compose_prefs_fmt_create(void);
4208 static void compose_prefs_close(GtkWidget *widget)
4210 gtk_widget_hide(composeprefs.window);
4213 static gint compose_prefs_delete_event(GtkWidget *widget, GdkEventAny *event)
4215 gtk_widget_hide(composeprefs.window);
4220 static void compose_prefs_key_pressed(GtkWidget *widget, GdkEventKey *event)
4222 if (event && event->keyval == GDK_Escape) {
4223 gtk_widget_hide(composeprefs.window);
4227 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
4230 GtkWidget *menuitem;
4232 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4233 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4234 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
4235 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4238 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
4240 RecvDialogShow dialog_show;
4241 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4243 GtkWidget *menuitem;
4245 dialog_show = *((RecvDialogShow *)pparam->data);
4247 switch (dialog_show) {
4248 case RECVDIALOG_ALWAYS:
4249 gtk_option_menu_set_history(optmenu, 0);
4251 case RECVDIALOG_WINDOW_ACTIVE:
4252 gtk_option_menu_set_history(optmenu, 1);
4254 case RECVDIALOG_NEVER:
4255 gtk_option_menu_set_history(optmenu, 2);
4260 menu = gtk_option_menu_get_menu(optmenu);
4261 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4262 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));