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 *checkbtn_reply_account_autosel;
118 GtkWidget *checkbtn_forward_account_autosel;
119 GtkWidget *checkbtn_reedit_account_autosel;
121 GtkWidget *spinbtn_linewrap;
122 GtkObject *spinbtn_linewrap_adj;
123 GtkWidget *checkbtn_wrapquote;
124 GtkWidget *checkbtn_wrapatsend;
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_openunread;
214 GtkWidget *checkbtn_openinbox;
215 GtkWidget *checkbtn_immedexec;
216 GtkWidget *checkbtn_addaddrbyclick;
217 GtkWidget *optmenu_recvdialog;
218 GtkWidget *optmenu_nextunreadmsgdialog;
219 GtkWidget *entry_pixmap_theme;
220 GtkWidget *combo_pixmap_theme;
223 static struct Other {
224 GtkWidget *uri_combo;
225 GtkWidget *uri_entry;
226 GtkWidget *printcmd_entry;
227 GtkWidget *exteditor_combo;
228 GtkWidget *exteditor_entry;
229 GtkWidget *checkbtn_confonexit;
230 GtkWidget *checkbtn_cleanonexit;
231 GtkWidget *checkbtn_askonclean;
232 GtkWidget *checkbtn_warnqueued;
233 GtkWidget *checkbtn_cliplog;
234 GtkWidget *loglength_entry;
238 static struct MessageColorButtons {
239 GtkWidget *quote_level1_btn;
240 GtkWidget *quote_level2_btn;
241 GtkWidget *quote_level3_btn;
243 GtkWidget *tgt_folder_btn;
246 static struct KeybindDialog {
251 static GtkWidget *font_sel_win;
252 static guint font_sel_conn_id;
253 static GtkWidget *quote_color_win;
254 static GtkWidget *color_dialog;
256 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam);
257 static void prefs_common_charset_set_optmenu (PrefParam *pparam);
259 static void prefs_common_default_signkey_set_data_from_optmenu
261 static void prefs_common_default_signkey_set_optmenu (PrefParam *pparam);
263 static void prefs_common_recv_dialog_newmail_notify_toggle_cb (GtkWidget *w,
265 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam);
266 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam);
267 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam);
268 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam);
271 static void prefs_dictionary_set_data_from_optmenu (PrefParam *param);
272 static void prefs_dictionary_set_optmenu (PrefParam *pparam);
273 static void prefs_speller_sugmode_set_data_from_optmenu (PrefParam *pparam);
274 static void prefs_speller_sugmode_set_optmenu (PrefParam *pparam);
279 parameter name, default value, pointer to the prefs variable, data type,
280 pointer to the widget pointer,
281 pointer to the function for data setting,
282 pointer to the function for widget setting
285 static PrefParam param[] = {
287 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
288 &receive.checkbtn_incext,
289 prefs_set_data_from_toggle, prefs_set_toggle},
290 {"ext_inc_path", DEFAULT_INC_PATH, &prefs_common.extinc_cmd, P_STRING,
291 &receive.entry_incext,
292 prefs_set_data_from_entry, prefs_set_entry},
294 {"inc_local", "TRUE", &prefs_common.inc_local, P_BOOL,
295 &receive.checkbtn_local,
296 prefs_set_data_from_toggle, prefs_set_toggle},
297 {"filter_on_inc_local", "FALSE", &prefs_common.filter_on_inc, P_BOOL,
298 &receive.checkbtn_filter_on_inc,
299 prefs_set_data_from_toggle, prefs_set_toggle},
300 {"spool_path", DEFAULT_SPOOL_PATH, &prefs_common.spool_path, P_STRING,
301 &receive.entry_spool,
302 prefs_set_data_from_entry, prefs_set_entry},
304 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
305 &receive.checkbtn_autochk,
306 prefs_set_data_from_toggle, prefs_set_toggle},
307 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
308 &receive.spinbtn_autochk,
309 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
310 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
311 &receive.checkbtn_chkonstartup,
312 prefs_set_data_from_toggle, prefs_set_toggle},
313 {"noerrorpanel", "FALSE", &prefs_common.noerrorpanel, P_BOOL,
314 &receive.checkbtn_noerrorpanel,
315 prefs_set_data_from_toggle, prefs_set_toggle},
316 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
317 P_BOOL, &receive.checkbtn_scan_after_inc,
318 prefs_set_data_from_toggle, prefs_set_toggle},
319 {"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
320 P_BOOL, &receive.checkbtn_newmail_manu,
321 prefs_set_data_from_toggle, prefs_set_toggle},
322 {"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
323 P_BOOL, &receive.checkbtn_newmail_auto,
324 prefs_set_data_from_toggle, prefs_set_toggle},
325 {"newmail_notify_cmd", "", &prefs_common.newmail_notify_cmd, P_STRING,
326 &receive.entry_newmail_notify_cmd,
327 prefs_set_data_from_entry, prefs_set_entry},
329 {"max_news_articles", "300", &prefs_common.max_articles, P_INT,
330 &receive.spinbtn_maxarticle,
331 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
334 {"use_ext_sendmail", "FALSE", &prefs_common.use_extsend, P_BOOL,
335 &send.checkbtn_extsend,
336 prefs_set_data_from_toggle, prefs_set_toggle},
337 {"ext_sendmail_cmd", DEFAULT_SENDMAIL_CMD,
338 &prefs_common.extsend_cmd, P_STRING,
339 &send.entry_extsend, prefs_set_data_from_entry, prefs_set_entry},
340 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
341 &send.checkbtn_savemsg,
342 prefs_set_data_from_toggle, prefs_set_toggle},
343 {"queue_message", "FALSE", &prefs_common.queue_msg, P_BOOL,
344 &send.checkbtn_queuemsg,
345 prefs_set_data_from_toggle, prefs_set_toggle},
347 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
348 &send.optmenu_charset,
349 prefs_common_charset_set_data_from_optmenu,
350 prefs_common_charset_set_optmenu},
353 {"auto_signature", "TRUE", &prefs_common.auto_sig, P_BOOL,
354 &compose.checkbtn_autosig,
355 prefs_set_data_from_toggle, prefs_set_toggle},
356 {"signature_separator", "-- ", &prefs_common.sig_sep, P_STRING,
357 &compose.entry_sigsep, prefs_set_data_from_entry, prefs_set_entry},
359 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
360 &compose.checkbtn_autoextedit,
361 prefs_set_data_from_toggle, prefs_set_toggle},
362 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
363 P_BOOL, &compose.checkbtn_forward_as_attachment,
364 prefs_set_data_from_toggle, prefs_set_toggle},
365 {"redirect_keep_from", "FALSE",
366 &prefs_common.redirect_keep_from, P_BOOL,
367 &compose.checkbtn_redirect_keep_from,
368 prefs_set_data_from_toggle, prefs_set_toggle},
369 {"undo_level", "50", &prefs_common.undolevels, P_INT,
370 &compose.spinbtn_undolevel,
371 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
372 {"block_cursor", "FALSE", &prefs_common.block_cursor,
373 P_BOOL, &compose.checkbtn_block_cursor,
374 prefs_set_data_from_toggle, prefs_set_toggle},
376 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
377 &compose.spinbtn_linewrap,
378 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
379 {"linewrap_quotation", "FALSE", &prefs_common.linewrap_quote, P_BOOL,
380 &compose.checkbtn_wrapquote,
381 prefs_set_data_from_toggle, prefs_set_toggle},
382 {"linewrap_before_sending", "FALSE",
383 &prefs_common.linewrap_at_send, P_BOOL,
384 &compose.checkbtn_wrapatsend,
385 prefs_set_data_from_toggle, prefs_set_toggle},
386 {"smart_wrapping", "TRUE", &prefs_common.smart_wrapping,
387 P_BOOL, &compose.checkbtn_smart_wrapping,
388 prefs_set_data_from_toggle, prefs_set_toggle},
390 {"enable_pspell", "TRUE", &prefs_common.enable_pspell,
391 P_BOOL, &spelling.checkbtn_enable_pspell,
392 prefs_set_data_from_toggle, prefs_set_toggle},
393 {"pspell_path", PSPELL_PATH, &prefs_common.pspell_path,
394 P_STRING, &spelling.entry_pspell_path,
395 prefs_set_data_from_entry, prefs_set_entry},
396 {"dictionary", "", &prefs_common.dictionary,
397 P_STRING, &spelling.optmenu_dictionary,
398 prefs_dictionary_set_data_from_optmenu, prefs_dictionary_set_optmenu },
399 {"pspell_sugmode", "1", &prefs_common.pspell_sugmode,
400 P_INT, &spelling.optmenu_sugmode,
401 prefs_speller_sugmode_set_data_from_optmenu, prefs_speller_sugmode_set_optmenu },
402 {"use_alternate_dict", "FALSE", &prefs_common.use_alternate,
403 P_BOOL, &spelling.checkbtn_use_alternate,
404 prefs_set_data_from_toggle, prefs_set_toggle},
405 {"check_while_typing", "TRUE", &prefs_common.check_while_typing,
406 P_BOOL, &spelling.checkbtn_check_while_typing,
407 prefs_set_data_from_toggle, prefs_set_toggle},
408 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_INT,
411 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
412 &compose.checkbtn_reply_with_quote, prefs_set_data_from_toggle, prefs_set_toggle},
414 /* Account autoselection */
415 {"reply_account_autoselect", "TRUE",
416 &prefs_common.reply_account_autosel, P_BOOL,
417 &compose.checkbtn_reply_account_autosel,
418 prefs_set_data_from_toggle, prefs_set_toggle},
419 {"forward_account_autoselect", "TRUE",
420 &prefs_common.forward_account_autosel, P_BOOL,
421 &compose.checkbtn_forward_account_autosel,
422 prefs_set_data_from_toggle, prefs_set_toggle},
423 {"reedit_account_autoselect", "TRUE",
424 &prefs_common.reedit_account_autosel, P_BOOL,
425 &compose.checkbtn_reedit_account_autosel,
426 prefs_set_data_from_toggle, prefs_set_toggle},
428 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
432 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
433 "e.entry_quotemark, prefs_set_data_from_entry, prefs_set_entry},
434 {"reply_quote_format", "On %d\\n%f wrote:\\n\\n%Q",
435 &prefs_common.quotefmt, P_STRING, "e.text_quotefmt,
436 prefs_set_data_from_text, prefs_set_text},
438 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
439 "e.entry_fw_quotemark,
440 prefs_set_data_from_entry, prefs_set_entry},
441 {"forward_quote_format",
442 "\\n\\nBegin forwarded message:\\n\\n"
443 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
444 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M",
445 &prefs_common.fw_quotefmt, P_STRING, "e.text_fw_quotefmt,
446 prefs_set_data_from_text, prefs_set_text},
447 {"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
448 "e.entry_quote_chars, prefs_set_data_from_entry, prefs_set_entry},
451 {"widget_font", NULL, &prefs_common.widgetfont, P_STRING,
453 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
454 &prefs_common.textfont, P_STRING,
455 &display.entry_textfont,
456 prefs_set_data_from_entry, prefs_set_entry},
457 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
458 &prefs_common.smallfont, P_STRING,
459 &display.entry_smallfont,
460 prefs_set_data_from_entry, prefs_set_entry},
461 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
462 &prefs_common.boldfont, P_STRING,
463 &display.entry_boldfont,
464 prefs_set_data_from_entry, prefs_set_entry},
465 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
466 &prefs_common.normalfont, P_STRING,
467 &display.entry_normalfont,
468 prefs_set_data_from_entry, prefs_set_entry},
471 {"display_folder_unread_num", "TRUE",
472 &prefs_common.display_folder_unread, P_BOOL,
473 &display.chkbtn_folder_unread,
474 prefs_set_data_from_toggle, prefs_set_toggle},
476 {"display_img", "TRUE",
477 &prefs_common.display_img, P_BOOL,
478 &display.chkbtn_display_img,
479 prefs_set_data_from_toggle, prefs_set_toggle},
480 {"newsgroup_abbrev_len", "16",
481 &prefs_common.ng_abbrev_len, P_INT,
482 &display.spinbtn_ng_abbrev_len,
483 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
485 {"translate_header", "TRUE", &prefs_common.trans_hdr, P_BOOL,
486 &display.chkbtn_transhdr,
487 prefs_set_data_from_toggle, prefs_set_toggle},
489 /* Display: Summary View */
490 {"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
491 &display.chkbtn_swapfrom,
492 prefs_set_data_from_toggle, prefs_set_toggle},
493 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
494 &display.chkbtn_hscrollbar,
495 prefs_set_data_from_toggle, prefs_set_toggle},
496 {"use_address_book", "TRUE", &prefs_common.use_addr_book, P_BOOL,
497 &display.chkbtn_useaddrbook,
498 prefs_set_data_from_toggle, prefs_set_toggle},
499 {"date_format", "%y/%m/%d(%a) %H:%M", &prefs_common.date_format,
500 P_STRING, &display.entry_datefmt,
501 prefs_set_data_from_entry, prefs_set_entry},
502 {"expand_thread", "TRUE", &prefs_common.expand_thread, P_BOOL,
503 &display.chkbtn_expand_thread,
504 prefs_set_data_from_toggle, prefs_set_toggle},
505 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
506 &display.chkbtn_bold_unread,
507 prefs_set_data_from_toggle, prefs_set_toggle},
509 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
511 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
513 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
516 {"folderview_vscrollbar_policy", "0",
517 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
520 {"summary_col_show_mark", "TRUE",
521 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
522 {"summary_col_show_unread", "TRUE",
523 &prefs_common.summary_col_visible[S_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
524 {"summary_col_show_mime", "TRUE",
525 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
526 {"summary_col_show_subject", "TRUE",
527 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
528 {"summary_col_show_from", "TRUE",
529 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
530 {"summary_col_show_date", "TRUE",
531 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
532 {"summary_col_show_size", "TRUE",
533 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
534 {"summary_col_show_number", "FALSE",
535 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
536 {"summary_col_show_score", "FALSE",
537 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
538 {"summary_col_show_locked", "FALSE",
539 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
541 {"summary_col_pos_mark", "0",
542 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
543 {"summary_col_pos_unread", "1",
544 &prefs_common.summary_col_pos[S_COL_UNREAD], P_INT, NULL, NULL, NULL},
545 {"summary_col_pos_mime", "2",
546 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
547 {"summary_col_pos_subject", "3",
548 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
549 {"summary_col_pos_from", "4",
550 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
551 {"summary_col_pos_date", "5",
552 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
553 {"summary_col_pos_size", "6",
554 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
555 {"summary_col_pos_number", "7",
556 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
557 {"summary_col_pos_score", "8",
558 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
559 {"summary_col_pos_locked", "9",
560 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
562 {"summary_col_size_mark", "10",
563 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
564 {"summary_col_size_unread", "13",
565 &prefs_common.summary_col_size[S_COL_UNREAD], P_INT, NULL, NULL, NULL},
566 {"summary_col_size_mime", "10",
567 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
568 {"summary_col_size_subject", "200",
569 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
570 {"summary_col_size_from", "120",
571 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
572 {"summary_col_size_date", "118",
573 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
574 {"summary_col_size_size", "45",
575 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
576 {"summary_col_size_number", "40",
577 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
578 {"summary_col_size_score", "40",
579 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
580 {"summary_col_size_locked", "13",
581 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
584 {"folderview_width", "179", &prefs_common.folderview_width, P_INT,
586 {"folderview_height", "600", &prefs_common.folderview_height, P_INT,
588 {"folder_col_folder", "150", &prefs_common.folder_col_folder, P_INT,
590 {"folder_col_new", "32", &prefs_common.folder_col_new, P_INT,
592 {"folder_col_unread", "32", &prefs_common.folder_col_unread, P_INT,
594 {"folder_col_total", "32", &prefs_common.folder_col_total, P_INT,
597 {"summaryview_width", "600", &prefs_common.summaryview_width, P_INT,
599 {"summaryview_height", "173", &prefs_common.summaryview_height, P_INT,
602 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
604 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
606 {"mainview_width", "600", &prefs_common.mainview_width, P_INT,
608 {"mainview_height", "600", &prefs_common.mainview_height, P_INT,
610 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
612 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
614 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
616 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
618 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
620 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
622 {"compose_width", "600", &prefs_common.compose_width, P_INT,
624 {"compose_height", "560", &prefs_common.compose_height, P_INT,
628 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
629 &message.chkbtn_enablecol,
630 prefs_set_data_from_toggle, prefs_set_toggle},
632 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_INT,
634 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_INT,
636 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_INT,
638 {"uri_color", "32512", &prefs_common.uri_col, P_INT,
640 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_INT,
642 {"signature_color", "0", &prefs_common.sig_col, P_USHORT,
644 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
645 P_BOOL, NULL, NULL, NULL},
647 {"convert_mb_alnum", "FALSE", &prefs_common.conv_mb_alnum, P_BOOL,
648 &message.chkbtn_mbalnum,
649 prefs_set_data_from_toggle, prefs_set_toggle},
650 {"display_header_pane", "TRUE", &prefs_common.display_header_pane,
651 P_BOOL, &message.chkbtn_disphdrpane,
652 prefs_set_data_from_toggle, prefs_set_toggle},
653 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
654 &message.chkbtn_disphdr,
655 prefs_set_data_from_toggle, prefs_set_toggle},
656 {"line_space", "2", &prefs_common.line_space, P_INT,
657 &message.spinbtn_linespc,
658 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
659 {"enable_head_space", "FALSE", &prefs_common.head_space, P_BOOL,
660 &message.chkbtn_headspc,
661 prefs_set_data_from_toggle, prefs_set_toggle},
663 {"enable_smooth_scroll", "FALSE",
664 &prefs_common.enable_smooth_scroll, P_BOOL,
665 &message.chkbtn_smoothscroll,
666 prefs_set_data_from_toggle, prefs_set_toggle},
667 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
668 &message.spinbtn_scrollstep,
669 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
670 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
671 &message.chkbtn_halfpage,
672 prefs_set_data_from_toggle, prefs_set_toggle},
674 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
678 {"mime_image_viewer", "display '%s'",
679 &prefs_common.mime_image_viewer, P_STRING, NULL, NULL, NULL},
680 {"mime_audio_player", "play '%s'",
681 &prefs_common.mime_audio_player, P_STRING, NULL, NULL, NULL},
682 {"mime_open_command", "gedit '%s'",
683 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
687 {"auto_check_signatures", "TRUE",
688 &prefs_common.auto_check_signatures, P_BOOL,
689 &privacy.checkbtn_auto_check_signatures,
690 prefs_set_data_from_toggle, prefs_set_toggle},
691 {"gpg_signature_popup", "FALSE",
692 &prefs_common.gpg_signature_popup, P_BOOL,
693 &privacy.checkbtn_gpg_signature_popup,
694 prefs_set_data_from_toggle, prefs_set_toggle},
695 {"store_passphrase", "FALSE", &prefs_common.store_passphrase, P_BOOL,
696 &privacy.checkbtn_store_passphrase,
697 prefs_set_data_from_toggle, prefs_set_toggle},
698 {"store_passphrase_timeout", "0", &prefs_common.store_passphrase_timeout,
699 P_INT, &privacy.spinbtn_store_passphrase,
700 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
702 {"passphrase_grab", "FALSE", &prefs_common.passphrase_grab, P_BOOL,
703 &privacy.checkbtn_passphrase_grab,
704 prefs_set_data_from_toggle, prefs_set_toggle},
705 #endif /* __MINGW32__ */
706 {"gpg_warning", "TRUE", &prefs_common.gpg_warning, P_BOOL,
707 &privacy.checkbtn_gpg_warning,
708 prefs_set_data_from_toggle, prefs_set_toggle},
709 {"default_signkey", CS_AUTO, &prefs_common.default_signkey, P_STRING,
710 &privacy.optmenu_default_signkey,
711 prefs_common_default_signkey_set_data_from_optmenu,
712 prefs_common_default_signkey_set_optmenu},
713 #endif /* USE_GPGME */
716 {"separate_folder", "FALSE", &prefs_common.sep_folder, P_BOOL,
718 {"separate_message", "FALSE", &prefs_common.sep_msg, P_BOOL,
721 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
722 NULL, NULL, NULL}, */
724 {"open_unread_on_enter", "FALSE", &prefs_common.open_unread_on_enter,
725 P_BOOL, &interface.checkbtn_openunread,
726 prefs_set_data_from_toggle, prefs_set_toggle},
727 {"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
728 P_BOOL, &interface.checkbtn_openinbox,
729 prefs_set_data_from_toggle, prefs_set_toggle},
730 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
731 &interface.checkbtn_immedexec,
732 prefs_set_data_from_toggle, prefs_set_toggle},
733 {"receive_dialog_mode", "1", &prefs_common.recv_dialog_mode, P_ENUM,
734 &interface.optmenu_recvdialog,
735 prefs_common_recv_dialog_set_data_from_optmenu,
736 prefs_common_recv_dialog_set_optmenu},
737 {"nextunreadmsg_dialog", NULL, &prefs_common.next_unread_msg_dialog, P_ENUM,
738 &interface.optmenu_nextunreadmsgdialog,
739 prefs_nextunreadmsgdialog_set_data_from_optmenu,
740 prefs_nextunreadmsgdialog_set_optmenu},
742 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
743 P_BOOL, &interface.checkbtn_addaddrbyclick,
744 prefs_set_data_from_toggle, prefs_set_toggle},
745 {"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
746 &prefs_common.pixmap_theme_path, P_STRING,
747 &interface.entry_pixmap_theme, prefs_set_data_from_entry, prefs_set_entry},
750 {"uri_open_command", "netscape -remote 'openURL(%s,raise)'",
751 &prefs_common.uri_cmd, P_STRING,
752 &other.uri_entry, prefs_set_data_from_entry, prefs_set_entry},
753 {"print_command", "lpr %s", &prefs_common.print_cmd, P_STRING,
754 &other.printcmd_entry, prefs_set_data_from_entry, prefs_set_entry},
755 {"ext_editor_command", "gedit %s",
756 &prefs_common.ext_editor_cmd, P_STRING,
757 &other.exteditor_entry, prefs_set_data_from_entry, prefs_set_entry},
759 {"confirm_on_exit", "TRUE", &prefs_common.confirm_on_exit, P_BOOL,
760 &other.checkbtn_confonexit,
761 prefs_set_data_from_toggle, prefs_set_toggle},
762 {"send_return_receipt", "TRUE", &prefs_common.return_receipt, P_BOOL,
763 &send.checkbtn_returnreceipt,
764 prefs_set_data_from_toggle, prefs_set_toggle},
765 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
766 &other.checkbtn_cleanonexit,
767 prefs_set_data_from_toggle, prefs_set_toggle},
768 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
769 &other.checkbtn_askonclean,
770 prefs_set_data_from_toggle, prefs_set_toggle},
771 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
772 P_BOOL, &other.checkbtn_warnqueued,
773 prefs_set_data_from_toggle, prefs_set_toggle},
774 {"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
777 {"kill_score", "-9999", &prefs_common.kill_score, P_INT,
779 {"important_score", "1", &prefs_common.important_score, P_INT,
781 {"clip_log", "FALSE", &prefs_common.cliplog, P_BOOL,
782 &other.checkbtn_cliplog,
783 prefs_set_data_from_toggle, prefs_set_toggle},
784 {"log_length", "1000", &prefs_common.loglength, P_INT,
785 &other.loglength_entry,
786 prefs_set_data_from_entry, prefs_set_entry},
788 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
791 /* widget creating functions */
792 static void prefs_common_create (void);
793 static void prefs_receive_create (void);
794 static void prefs_send_create (void);
795 static void prefs_compose_create (void);
796 static void prefs_spelling_create (void);
797 static void prefs_quote_create (void);
798 static void prefs_display_create (void);
799 static void prefs_message_create (void);
801 static void prefs_privacy_create (void);
803 static void prefs_interface_create (void);
804 static void prefs_other_create (void);
806 static void date_format_ok_btn_clicked (GtkButton *button,
808 static void date_format_cancel_btn_clicked (GtkButton *button,
810 static void date_format_key_pressed (GtkWidget *keywidget,
813 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
816 static void date_format_entry_on_change (GtkEditable *editable,
818 static void date_format_select_row (GtkWidget *date_format_list,
821 GdkEventButton *event,
822 GtkWidget *date_format);
823 static GtkWidget *date_format_create (GtkButton *button,
826 static void prefs_quote_colors_dialog (void);
827 static void prefs_quote_colors_dialog_create (void);
828 static void prefs_quote_colors_key_pressed (GtkWidget *widget,
831 static void quote_color_set_dialog (GtkWidget *widget,
833 static void quote_colors_set_dialog_ok (GtkWidget *widget,
835 static void quote_colors_set_dialog_cancel (GtkWidget *widget,
837 static void quote_colors_set_dialog_key_pressed (GtkWidget *widget,
840 static void set_button_bg_color (GtkWidget *widget,
842 static void prefs_enable_message_color_toggled (void);
843 static void prefs_recycle_colors_toggled (GtkWidget *widget);
845 static void prefs_font_select (GtkButton *button, GtkEntry *entry);
847 static void prefs_font_selection_key_pressed (GtkWidget *widget,
850 static void prefs_font_selection_ok (GtkButton *button, GtkEntry *entry);
852 static void prefs_keybind_select (void);
853 static gint prefs_keybind_deleted (GtkWidget *widget,
856 static void prefs_keybind_key_pressed (GtkWidget *widget,
859 static void prefs_keybind_cancel (void);
860 static void prefs_keybind_apply_clicked (GtkWidget *widget);
862 static gint prefs_common_deleted (GtkWidget *widget,
865 static void prefs_common_key_pressed (GtkWidget *widget,
868 static void prefs_common_ok (void);
869 static void prefs_common_apply (void);
870 static void prefs_common_cancel (void);
872 void prefs_common_init() {
873 prefs_common.fltlist = NULL;
874 prefs_common.disphdr_list = NULL;
877 void prefs_common_read_config(void)
881 gchar buf[PREFSBUFSIZE];
883 prefs_read_config(param, "Common", COMMON_RC);
885 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
887 if ((fp = fopen(path, "rb")) == NULL) {
888 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
893 while (fgets(buf, sizeof(buf), fp) != NULL) {
895 if (buf[0] == '\0') continue;
896 prefs_common.mime_open_cmd_history =
897 add_history(prefs_common.mime_open_cmd_history, buf);
901 prefs_common.mime_open_cmd_history =
902 g_list_reverse(prefs_common.mime_open_cmd_history);
905 void prefs_common_save_config(void)
911 prefs_save_config(param, "Common", COMMON_RC);
913 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
915 if ((fp = fopen(path, "wb")) == NULL) {
916 FILE_OP_ERROR(path, "fopen");
921 for (cur = prefs_common.mime_open_cmd_history;
922 cur != NULL; cur = cur->next) {
923 fputs((gchar *)cur->data, fp);
931 void prefs_common_open(void)
933 if (prefs_rc_is_readonly(COMMON_RC))
938 if (!dialog.window) {
939 prefs_common_create();
942 manage_window_set_transient(GTK_WINDOW(dialog.window));
943 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
944 gtk_widget_grab_focus(dialog.ok_btn);
946 prefs_set_dialog(param);
948 gtk_widget_show(dialog.window);
951 static void prefs_common_create(void)
955 debug_print(_("Creating common preferences window...\n"));
957 prefs_dialog_create(&dialog);
958 gtk_window_set_title (GTK_WINDOW(dialog.window),
959 _("Common Preferences"));
960 gtk_signal_connect (GTK_OBJECT(dialog.window), "delete_event",
961 GTK_SIGNAL_FUNC(prefs_common_deleted), NULL);
962 gtk_signal_connect (GTK_OBJECT(dialog.window), "key_press_event",
963 GTK_SIGNAL_FUNC(prefs_common_key_pressed), NULL);
964 MANAGE_WINDOW_SIGNALS_CONNECT(dialog.window);
966 gtk_signal_connect (GTK_OBJECT(dialog.ok_btn), "clicked",
967 GTK_SIGNAL_FUNC(prefs_common_ok), NULL);
968 gtk_signal_connect (GTK_OBJECT(dialog.apply_btn), "clicked",
969 GTK_SIGNAL_FUNC(prefs_common_apply), NULL);
970 gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
971 GTK_SIGNAL_FUNC(prefs_common_cancel),
972 GTK_OBJECT(dialog.window));
974 /* create all widgets on notebook */
975 prefs_receive_create();
976 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
978 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
979 prefs_compose_create();
980 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
982 prefs_spelling_create();
983 SET_NOTEBOOK_LABEL(dialog.notebook, _("Spell Checker"), page++);
985 prefs_quote_create();
986 SET_NOTEBOOK_LABEL(dialog.notebook, _("Quote"), page++);
987 prefs_display_create();
988 SET_NOTEBOOK_LABEL(dialog.notebook, _("Display"), page++);
989 prefs_message_create();
990 SET_NOTEBOOK_LABEL(dialog.notebook, _("Message"), page++);
992 prefs_privacy_create();
993 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
995 prefs_interface_create();
996 SET_NOTEBOOK_LABEL(dialog.notebook, _("Interface"), page++);
997 prefs_other_create();
998 SET_NOTEBOOK_LABEL(dialog.notebook, _("Other"), page++);
1000 gtk_widget_show_all(dialog.window);
1003 static void prefs_receive_create(void)
1007 GtkWidget *frame_incext;
1008 GtkWidget *checkbtn_incext;
1010 GtkWidget *label_incext;
1011 GtkWidget *entry_incext;
1012 /* GtkWidget *button_incext; */
1014 GtkWidget *frame_spool;
1015 GtkWidget *checkbtn_local;
1016 GtkWidget *checkbtn_filter_on_inc;
1017 GtkWidget *label_spool;
1018 GtkWidget *entry_spool;
1020 GtkWidget *hbox_autochk;
1021 GtkWidget *checkbtn_autochk;
1022 GtkWidget *label_autochk1;
1023 GtkObject *spinbtn_autochk_adj;
1024 GtkWidget *spinbtn_autochk;
1025 GtkWidget *label_autochk2;
1026 GtkWidget *checkbtn_chkonstartup;
1027 GtkWidget *checkbtn_noerrorpanel;
1028 GtkWidget *checkbtn_scan_after_inc;
1031 GtkWidget *frame_newmail;
1032 GtkWidget *hbox_newmail_notify;
1033 GtkWidget *checkbtn_newmail_auto;
1034 GtkWidget *checkbtn_newmail_manu;
1035 GtkWidget *entry_newmail_notify_cmd;
1036 GtkWidget *label_newmail_notify_cmd;
1038 GtkWidget *frame_news;
1039 GtkWidget *label_maxarticle;
1040 GtkWidget *spinbtn_maxarticle;
1041 GtkObject *spinbtn_maxarticle_adj;
1043 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1044 gtk_widget_show (vbox1);
1045 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1046 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1048 PACK_FRAME(vbox1, frame_incext, _("External program"));
1050 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1051 gtk_widget_show (vbox2);
1052 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
1053 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1055 /* Use of external incorporation program */
1056 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
1057 _("Use external program for incorporation"));
1059 hbox = gtk_hbox_new (FALSE, 8);
1060 gtk_widget_show (hbox);
1061 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1062 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
1064 label_incext = gtk_label_new (_("Command"));
1065 gtk_widget_show (label_incext);
1066 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
1068 entry_incext = gtk_entry_new ();
1069 gtk_widget_show (entry_incext);
1070 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
1073 button_incext = gtk_button_new_with_label ("... ");
1074 gtk_widget_show (button_incext);
1075 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
1078 PACK_FRAME(vbox1, frame_spool, _("Local spool"));
1080 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1081 gtk_widget_show (vbox2);
1082 gtk_container_add (GTK_CONTAINER (frame_spool), vbox2);
1083 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1085 hbox = gtk_hbox_new (FALSE, 32);
1086 gtk_widget_show (hbox);
1087 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1089 PACK_CHECK_BUTTON (hbox, checkbtn_local, _("Incorporate from spool"));
1090 PACK_CHECK_BUTTON (hbox, checkbtn_filter_on_inc,
1091 _("Filter on incorporation"));
1092 SET_TOGGLE_SENSITIVITY (checkbtn_local, checkbtn_filter_on_inc);
1094 hbox = gtk_hbox_new (FALSE, 8);
1095 gtk_widget_show (hbox);
1096 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1097 SET_TOGGLE_SENSITIVITY (checkbtn_local, hbox);
1099 label_spool = gtk_label_new (_("Spool directory"));
1100 gtk_widget_show (label_spool);
1101 gtk_box_pack_start (GTK_BOX (hbox), label_spool, FALSE, FALSE, 0);
1103 entry_spool = gtk_entry_new ();
1104 gtk_widget_show (entry_spool);
1105 gtk_box_pack_start (GTK_BOX (hbox), entry_spool, TRUE, TRUE, 0);
1107 vbox2 = gtk_vbox_new (FALSE, 0);
1108 gtk_widget_show (vbox2);
1109 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1112 hbox_autochk = gtk_hbox_new (FALSE, 8);
1113 gtk_widget_show (hbox_autochk);
1114 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1116 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1117 _("Auto-check new mail"));
1119 label_autochk1 = gtk_label_new (_("every"));
1120 gtk_widget_show (label_autochk1);
1121 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1123 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1124 spinbtn_autochk = gtk_spin_button_new
1125 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1126 gtk_widget_show (spinbtn_autochk);
1127 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1128 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1129 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1131 label_autochk2 = gtk_label_new (_("minute(s)"));
1132 gtk_widget_show (label_autochk2);
1133 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1135 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1136 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1137 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1139 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1140 _("Check new mail on startup"));
1142 PACK_CHECK_BUTTON (vbox2, checkbtn_noerrorpanel,
1143 _("No error popup on receive error"));
1144 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1145 _("Update all local folders after incorporation"));
1148 PACK_FRAME(vbox1, frame_newmail, _("Run command when new mail "
1150 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
1151 gtk_widget_show (vbox2);
1152 gtk_container_add (GTK_CONTAINER (frame_newmail), vbox2);
1153 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1155 hbox = gtk_hbox_new (TRUE, 8);
1156 gtk_widget_show (hbox);
1157 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_auto,
1158 _("after autochecking"));
1159 PACK_CHECK_BUTTON (hbox, checkbtn_newmail_manu,
1160 _("after manual checking"));
1161 gtk_box_pack_start (GTK_BOX(vbox2), hbox, FALSE, FALSE, 0);
1162 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_auto), "toggled",
1163 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1165 gtk_signal_connect(GTK_OBJECT(checkbtn_newmail_manu), "toggled",
1166 GTK_SIGNAL_FUNC(prefs_common_recv_dialog_newmail_notify_toggle_cb),
1169 hbox_newmail_notify = gtk_hbox_new (FALSE, 8);
1170 gtk_widget_show (hbox);
1171 gtk_box_pack_start (GTK_BOX (vbox2), hbox_newmail_notify, FALSE,
1174 label_newmail_notify_cmd = gtk_label_new (_("Command to execute:\n"
1175 "(use %d as number of new "
1177 gtk_label_set_justify(GTK_LABEL(label_newmail_notify_cmd),
1179 gtk_widget_show (label_newmail_notify_cmd);
1180 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1181 label_newmail_notify_cmd, FALSE, FALSE, 0);
1183 entry_newmail_notify_cmd = gtk_entry_new ();
1184 gtk_widget_show (entry_newmail_notify_cmd);
1185 gtk_box_pack_start (GTK_BOX (hbox_newmail_notify),
1186 entry_newmail_notify_cmd, TRUE, TRUE, 0);
1188 gtk_widget_set_sensitive(hbox_newmail_notify,
1189 prefs_common.newmail_notify_auto ||
1190 prefs_common.newmail_notify_manu);
1192 PACK_FRAME(vbox1, frame_news, _("News"));
1194 hbox = gtk_hbox_new (FALSE, 8);
1195 gtk_widget_show (hbox);
1196 gtk_container_add (GTK_CONTAINER (frame_news), hbox);
1197 gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
1199 label_maxarticle = gtk_label_new
1200 (_("Maximum number of articles to download\n"
1201 "(unlimited if 0 is specified)"));
1202 gtk_widget_show (label_maxarticle);
1203 gtk_box_pack_start (GTK_BOX (hbox), label_maxarticle, FALSE, FALSE, 0);
1204 gtk_label_set_justify (GTK_LABEL (label_maxarticle), GTK_JUSTIFY_LEFT);
1206 spinbtn_maxarticle_adj =
1207 gtk_adjustment_new (300, 0, 10000, 10, 100, 100);
1208 spinbtn_maxarticle = gtk_spin_button_new
1209 (GTK_ADJUSTMENT (spinbtn_maxarticle_adj), 10, 0);
1210 gtk_widget_show (spinbtn_maxarticle);
1211 gtk_box_pack_start (GTK_BOX (hbox), spinbtn_maxarticle,
1213 gtk_widget_set_usize (spinbtn_maxarticle, 64, -1);
1214 gtk_spin_button_set_numeric
1215 (GTK_SPIN_BUTTON (spinbtn_maxarticle), TRUE);
1217 receive.checkbtn_incext = checkbtn_incext;
1218 receive.entry_incext = entry_incext;
1219 /* receive.button_incext = button_incext; */
1221 receive.checkbtn_local = checkbtn_local;
1222 receive.checkbtn_filter_on_inc = checkbtn_filter_on_inc;
1223 receive.entry_spool = entry_spool;
1225 receive.checkbtn_autochk = checkbtn_autochk;
1226 receive.spinbtn_autochk = spinbtn_autochk;
1227 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1229 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1230 receive.checkbtn_noerrorpanel = checkbtn_noerrorpanel;
1231 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1234 receive.checkbtn_newmail_auto = checkbtn_newmail_auto;
1235 receive.checkbtn_newmail_manu = checkbtn_newmail_manu;
1236 receive.hbox_newmail_notify = hbox_newmail_notify;
1237 receive.entry_newmail_notify_cmd = entry_newmail_notify_cmd;
1239 receive.spinbtn_maxarticle = spinbtn_maxarticle;
1240 receive.spinbtn_maxarticle_adj = spinbtn_maxarticle_adj;
1243 static void prefs_send_create(void)
1247 GtkWidget *frame_extsend;
1248 GtkWidget *vbox_extsend;
1249 GtkWidget *checkbtn_extsend;
1251 GtkWidget *label_extsend;
1252 GtkWidget *entry_extsend;
1253 /* GtkWidget *button_extsend; */
1254 GtkWidget *checkbtn_savemsg;
1255 GtkWidget *checkbtn_queuemsg;
1256 GtkWidget *label_outcharset;
1258 GtkWidget *optmenu_menu;
1259 GtkWidget *menuitem;
1260 GtkWidget *checkbtn_returnreceipt;
1261 GtkWidget *label_charset_desc;
1263 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1264 gtk_widget_show (vbox1);
1265 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1266 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1268 PACK_FRAME(vbox1, frame_extsend, _("External program"));
1270 vbox_extsend = gtk_vbox_new (FALSE, VSPACING_NARROW);
1271 gtk_widget_show (vbox_extsend);
1272 gtk_container_add (GTK_CONTAINER (frame_extsend), vbox_extsend);
1273 gtk_container_set_border_width (GTK_CONTAINER (vbox_extsend), 8);
1275 PACK_CHECK_BUTTON (vbox_extsend, checkbtn_extsend,
1276 _("Use external program for sending"));
1278 hbox1 = gtk_hbox_new (FALSE, 8);
1279 gtk_widget_show (hbox1);
1280 gtk_box_pack_start (GTK_BOX (vbox_extsend), hbox1, FALSE, FALSE, 0);
1281 SET_TOGGLE_SENSITIVITY(checkbtn_extsend, hbox1);
1283 label_extsend = gtk_label_new (_("Command"));
1284 gtk_widget_show (label_extsend);
1285 gtk_box_pack_start (GTK_BOX (hbox1), label_extsend, FALSE, FALSE, 0);
1287 entry_extsend = gtk_entry_new ();
1288 gtk_widget_show (entry_extsend);
1289 gtk_box_pack_start (GTK_BOX (hbox1), entry_extsend, TRUE, TRUE, 0);
1292 button_extsend = gtk_button_new_with_label ("... ");
1293 gtk_widget_show (button_extsend);
1294 gtk_box_pack_start (GTK_BOX (hbox1), button_extsend, FALSE, FALSE, 0);
1297 vbox2 = gtk_vbox_new (FALSE, 0);
1298 gtk_widget_show (vbox2);
1299 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1301 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1302 _("Save sent messages to Sent"));
1303 PACK_CHECK_BUTTON (vbox2, checkbtn_queuemsg,
1304 _("Queue messages that fail to send"));
1305 PACK_CHECK_BUTTON (vbox2, checkbtn_returnreceipt,
1306 _("Send return receipt on request"));
1308 hbox1 = gtk_hbox_new (FALSE, 8);
1309 gtk_widget_show (hbox1);
1310 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1312 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1313 gtk_widget_show (label_outcharset);
1314 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1316 optmenu = gtk_option_menu_new ();
1317 gtk_widget_show (optmenu);
1318 gtk_box_pack_start (GTK_BOX (hbox1), optmenu, FALSE, FALSE, 0);
1320 optmenu_menu = gtk_menu_new ();
1322 #define SET_MENUITEM(str, charset) \
1324 MENUITEM_ADD(optmenu_menu, menuitem, str, charset); \
1327 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1328 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1330 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1332 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1333 SET_MENUITEM(_("Western European (ISO-8859-15)"), CS_ISO_8859_15);
1334 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1335 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1336 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1337 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1338 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1340 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1342 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1344 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_WINDOWS_1251);
1345 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1347 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1349 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1350 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1352 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1353 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1355 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1356 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1358 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1359 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1360 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1362 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu), optmenu_menu);
1364 hbox1 = gtk_hbox_new (FALSE, 8);
1365 gtk_widget_show (hbox1);
1366 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1368 label_charset_desc = gtk_label_new
1369 (_("If `Automatic' is selected, the optimal encoding\n"
1370 "for the current locale will be used."));
1371 gtk_widget_show (label_charset_desc);
1372 gtk_box_pack_start (GTK_BOX (hbox1), label_charset_desc,
1374 gtk_label_set_justify(GTK_LABEL (label_charset_desc), GTK_JUSTIFY_LEFT);
1376 send.checkbtn_extsend = checkbtn_extsend;
1377 send.entry_extsend = entry_extsend;
1378 /* send.button_extsend = button_extsend; */
1380 send.checkbtn_savemsg = checkbtn_savemsg;
1381 send.checkbtn_queuemsg = checkbtn_queuemsg;
1382 send.checkbtn_returnreceipt = checkbtn_returnreceipt;
1384 send.optmenu_charset = optmenu;
1387 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
1391 toggled = gtk_toggle_button_get_active
1392 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_manu)) ||
1393 gtk_toggle_button_get_active
1394 (GTK_TOGGLE_BUTTON(receive.checkbtn_newmail_auto));
1395 gtk_widget_set_sensitive(receive.hbox_newmail_notify, toggled);
1399 static void prefs_dictionary_set_data_from_optmenu(PrefParam *param)
1402 gchar *dict_fullname;
1404 g_return_if_fail(param);
1405 g_return_if_fail(param->data);
1406 g_return_if_fail(param->widget);
1407 g_return_if_fail(*(param->widget));
1409 dict_fullname = gtkpspell_get_dictionary_menu_active_item
1410 (gtk_option_menu_get_menu(GTK_OPTION_MENU(*(param->widget))));
1411 str = *((gchar **) param->data);
1414 *((gchar **) param->data) = dict_fullname;
1417 static void prefs_dictionary_set_optmenu(PrefParam *pparam)
1420 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
1422 GtkWidget *menuitem;
1426 g_return_if_fail(optmenu != NULL);
1427 g_return_if_fail(pparam->data != NULL);
1429 if (*(gchar **) pparam->data) {
1430 menu = gtk_option_menu_get_menu(optmenu);
1431 for (cur = GTK_MENU_SHELL(menu)->children;
1432 cur != NULL; cur = cur->next) {
1433 menuitem = GTK_WIDGET(cur->data);
1434 dict_name = gtk_object_get_data(GTK_OBJECT(menuitem),
1436 if (!strcmp2(dict_name, *((gchar **)pparam->data))) {
1437 gtk_option_menu_set_history(optmenu, n);
1444 gtk_option_menu_set_history(optmenu, 0);
1445 prefs_dictionary_set_data_from_optmenu(pparam);
1448 static void prefs_speller_sugmode_set_data_from_optmenu(PrefParam *param)
1451 g_return_if_fail(param);
1452 g_return_if_fail(param->data);
1453 g_return_if_fail(param->widget);
1454 g_return_if_fail(*(param->widget));
1456 sugmode = gtkpspell_get_sugmode_from_option_menu
1457 (GTK_OPTION_MENU(*(param->widget)));
1458 *((gint *) param->data) = sugmode;
1461 static void prefs_speller_sugmode_set_optmenu(PrefParam *pparam)
1463 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
1466 g_return_if_fail(optmenu != NULL);
1467 g_return_if_fail(pparam->data != NULL);
1469 sugmode = *(gint *) pparam->data;
1470 gtkpspell_sugmode_option_menu_set(optmenu, sugmode);
1474 static void prefs_spelling_checkbtn_enable_pspell_toggle_cb
1480 toggled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1482 gtk_widget_set_sensitive(spelling.entry_pspell_path, toggled);
1483 gtk_widget_set_sensitive(spelling.optmenu_dictionary, toggled);
1484 gtk_widget_set_sensitive(spelling.optmenu_sugmode, toggled);
1485 gtk_widget_set_sensitive(spelling.btn_pspell_path, toggled);
1486 gtk_widget_set_sensitive(spelling.misspelled_btn, toggled);
1487 gtk_widget_set_sensitive(spelling.checkbtn_use_alternate, toggled);
1488 gtk_widget_set_sensitive(spelling.checkbtn_check_while_typing, toggled);
1491 static void prefs_spelling_btn_pspell_path_clicked_cb(GtkWidget *widget,
1494 gchar *file_path, *tmp;
1495 GtkWidget *new_menu;
1497 file_path = filesel_select_file(_("Select dictionaries location"),
1498 prefs_common.pspell_path);
1499 if (file_path == NULL) {
1503 tmp=g_dirname(file_path);
1505 if (prefs_common.pspell_path)
1506 g_free(prefs_common.pspell_path);
1507 prefs_common.pspell_path = g_strdup_printf("%s%s",tmp,
1510 new_menu = gtkpspell_dictionary_option_menu_new(prefs_common.pspell_path);
1511 gtk_option_menu_set_menu(GTK_OPTION_MENU(spelling.optmenu_dictionary),
1514 gtk_entry_set_text(GTK_ENTRY(spelling.entry_pspell_path),
1515 prefs_common.pspell_path);
1516 /* select first one */
1517 gtk_option_menu_set_history(GTK_OPTION_MENU(
1518 spelling.optmenu_dictionary), 0);
1520 if (prefs_common.dictionary)
1521 g_free(prefs_common.dictionary);
1523 prefs_common.dictionary =
1524 gtkpspell_get_dictionary_menu_active_item(
1525 gtk_option_menu_get_menu(
1527 spelling.optmenu_dictionary)));
1533 static void prefs_spelling_create()
1536 GtkWidget *frame_spell;
1537 GtkWidget *vbox_spell;
1538 GtkWidget *hbox_pspell_path;
1539 GtkWidget *checkbtn_enable_pspell;
1540 GtkWidget *label_pspell_path;
1541 GtkWidget *entry_pspell_path;
1542 GtkWidget *btn_pspell_path;
1543 GtkWidget *spell_table;
1544 GtkWidget *label_dictionary;
1545 GtkWidget *optmenu_dictionary;
1546 GtkWidget *sugmode_label;
1547 GtkWidget *sugmode_optmenu;
1548 GtkWidget *checkbtn_use_alternate;
1549 GtkWidget *help_label;
1550 GtkWidget *checkbtn_check_while_typing;
1551 GtkWidget *color_label;
1552 GtkWidget *col_align;
1554 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1555 gtk_widget_show (vbox1);
1556 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1557 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1559 /* spell checker defaults */
1560 PACK_FRAME(vbox1, frame_spell, _("Global spelling checker settings"));
1561 vbox_spell = gtk_vbox_new(FALSE, VSPACING_NARROW);
1562 gtk_widget_show (vbox_spell);
1563 gtk_container_add(GTK_CONTAINER(frame_spell), vbox_spell);
1564 gtk_container_set_border_width(GTK_CONTAINER(vbox_spell), 8);
1566 PACK_CHECK_BUTTON(vbox_spell, checkbtn_enable_pspell,
1567 _("Enable spell checker (EXPERIMENTAL)"));
1569 gtk_signal_connect(GTK_OBJECT(checkbtn_enable_pspell), "toggled",
1570 GTK_SIGNAL_FUNC(prefs_spelling_checkbtn_enable_pspell_toggle_cb),
1573 /* Check while typing */
1574 PACK_CHECK_BUTTON(vbox_spell, checkbtn_check_while_typing,
1575 _("Check while typing"));
1577 PACK_CHECK_BUTTON(vbox_spell, checkbtn_use_alternate,
1578 _("Enable alternate dictionary"));
1580 help_label = gtk_label_new(_("Enabling alternate dictionary makes switching\nwith the last used dictionary faster."));
1581 gtk_widget_show(help_label);
1582 gtk_box_pack_start(GTK_BOX(vbox_spell), help_label, FALSE, TRUE, 0);
1584 spell_table = gtk_table_new(4, 3, FALSE);
1585 gtk_container_set_border_width (GTK_CONTAINER (spell_table), VSPACING);
1586 gtk_table_set_row_spacings(GTK_TABLE(spell_table), 8);
1587 gtk_table_set_col_spacings(GTK_TABLE(spell_table), 8);
1589 gtk_box_pack_start(GTK_BOX(vbox_spell), spell_table, TRUE, TRUE, 0);
1591 label_pspell_path = gtk_label_new (_("Dictionaries path:"));
1592 gtk_misc_set_alignment(GTK_MISC(label_pspell_path), 1.0, 0.5);
1593 gtk_widget_show(label_pspell_path);
1594 gtk_table_attach (GTK_TABLE (spell_table), label_pspell_path, 0, 1, 0,
1595 1, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1597 hbox_pspell_path = gtk_hbox_new (FALSE, 8);
1598 gtk_table_attach (GTK_TABLE (spell_table), hbox_pspell_path, 1, 2, 0,
1599 1, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1600 gtk_widget_show(hbox_pspell_path);
1602 entry_pspell_path = gtk_entry_new();
1603 gtk_widget_show(entry_pspell_path);
1604 gtk_box_pack_start(GTK_BOX(hbox_pspell_path), entry_pspell_path, TRUE,
1607 gtk_widget_set_sensitive(entry_pspell_path, prefs_common.enable_pspell);
1609 btn_pspell_path = gtk_button_new_with_label(" ... ");
1610 gtk_widget_show(btn_pspell_path);
1611 gtk_box_pack_start(GTK_BOX(hbox_pspell_path), btn_pspell_path, FALSE, FALSE, 0);
1612 gtk_widget_set_sensitive(btn_pspell_path, prefs_common.enable_pspell);
1614 gtk_signal_connect(GTK_OBJECT(btn_pspell_path), "clicked",
1615 GTK_SIGNAL_FUNC(prefs_spelling_btn_pspell_path_clicked_cb),
1618 label_dictionary = gtk_label_new(_("Default dictionary:"));
1619 gtk_misc_set_alignment(GTK_MISC(label_dictionary), 1.0, 0.5);
1620 gtk_widget_show(label_dictionary);
1621 gtk_table_attach (GTK_TABLE (spell_table), label_dictionary, 0, 1, 1, 2,
1622 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1624 optmenu_dictionary = gtk_option_menu_new();
1625 gtk_widget_show(optmenu_dictionary);
1626 gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu_dictionary),
1627 gtkpspell_dictionary_option_menu_new(
1628 prefs_common.pspell_path));
1629 gtk_table_attach (GTK_TABLE (spell_table), optmenu_dictionary, 1, 2, 1,
1630 2, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1631 gtk_widget_set_sensitive(optmenu_dictionary, prefs_common.enable_pspell);
1633 /* Suggestion mode */
1634 sugmode_label = gtk_label_new(_("Default suggestion mode"));
1635 gtk_misc_set_alignment(GTK_MISC(sugmode_label), 1.0, 0.5);
1636 gtk_widget_show(sugmode_label);
1637 gtk_table_attach(GTK_TABLE (spell_table), sugmode_label, 0, 1, 2, 3,
1638 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1640 sugmode_optmenu = gtk_option_menu_new();
1641 gtk_widget_show(sugmode_optmenu);
1642 gtk_option_menu_set_menu(GTK_OPTION_MENU(sugmode_optmenu),
1643 gtkpspell_sugmode_option_menu_new(prefs_common.pspell_sugmode));
1644 gtk_table_attach(GTK_TABLE(spell_table), sugmode_optmenu, 1, 2, 2, 3,
1645 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1646 gtk_widget_set_sensitive(sugmode_optmenu, prefs_common.enable_pspell);
1649 color_label = gtk_label_new(_("Misspelled word color:"));
1650 gtk_misc_set_alignment(GTK_MISC(color_label), 1.0, 0.5);
1651 gtk_table_attach (GTK_TABLE (spell_table), color_label, 0, 1, 3, 4,
1652 GTK_FILL, GTK_SHRINK, 0, 0);
1653 gtk_widget_show(color_label);
1655 col_align = gtk_alignment_new(0.0, 0.5, 0, 0);
1656 gtk_widget_show(col_align);
1657 gtk_table_attach (GTK_TABLE (spell_table), col_align, 1, 2, 3, 4,
1658 GTK_FILL, GTK_SHRINK, 0, 0);
1660 spelling.misspelled_btn = gtk_button_new_with_label ("");
1661 set_button_bg_color(spelling.misspelled_btn,
1662 prefs_common.misspelled_col);
1663 gtk_widget_set_usize (spelling.misspelled_btn, 30, 20);
1664 gtk_widget_set_sensitive(spelling.misspelled_btn, prefs_common.enable_pspell);
1665 gtk_signal_connect (GTK_OBJECT (spelling.misspelled_btn), "clicked",
1666 GTK_SIGNAL_FUNC(quote_color_set_dialog), "Misspelled word");
1667 gtk_container_add(GTK_CONTAINER(col_align), spelling.misspelled_btn);
1670 spelling.checkbtn_enable_pspell = checkbtn_enable_pspell;
1671 spelling.entry_pspell_path = entry_pspell_path;
1672 spelling.btn_pspell_path = btn_pspell_path;
1673 spelling.optmenu_dictionary = optmenu_dictionary;
1674 spelling.optmenu_sugmode = sugmode_optmenu;
1675 spelling.checkbtn_use_alternate = checkbtn_use_alternate;
1676 spelling.checkbtn_check_while_typing = checkbtn_check_while_typing;
1682 static void prefs_compose_create(void)
1689 GtkWidget *btn_quotefmt;
1691 GtkWidget *frame_sig;
1692 GtkWidget *vbox_sig;
1693 GtkWidget *checkbtn_autosig;
1694 GtkWidget *label_sigsep;
1695 GtkWidget *entry_sigsep;
1697 GtkWidget *frame_editor;
1698 GtkWidget *hbox_editor;
1699 GtkWidget *checkbtn_autoextedit;
1701 GtkWidget *frame_autosel;
1702 GtkWidget *hbox_autosel;
1703 GtkWidget *vbox_autosel;
1704 GtkWidget *checkbtn_reply_account_autosel;
1705 GtkWidget *checkbtn_forward_account_autosel;
1706 GtkWidget *checkbtn_reedit_account_autosel;
1708 GtkWidget *hbox_undolevel;
1709 GtkWidget *label_undolevel;
1710 GtkObject *spinbtn_undolevel_adj;
1711 GtkWidget *spinbtn_undolevel;
1713 GtkWidget *vbox_linewrap;
1718 GtkWidget *label_linewrap;
1719 GtkObject *spinbtn_linewrap_adj;
1720 GtkWidget *spinbtn_linewrap;
1721 GtkWidget *checkbtn_wrapquote;
1722 GtkWidget *checkbtn_wrapatsend;
1724 GtkWidget *frame_reply;
1725 GtkWidget *checkbtn_quote;
1726 GtkWidget *checkbtn_forward_as_attachment;
1727 GtkWidget *checkbtn_redirect_keep_from;
1728 GtkWidget *checkbtn_smart_wrapping;
1729 GtkWidget *checkbtn_block_cursor;
1730 GtkWidget *frame_msgwrap;
1732 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1733 gtk_widget_show (vbox1);
1734 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1735 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1739 hbox1 = gtk_hbox_new (FALSE, 32);
1740 gtk_widget_show (hbox1);
1742 hbox2 = gtk_hbox_new (FALSE, 8);
1743 gtk_widget_show (hbox2);
1744 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1747 hbox1 = gtk_hbox_new (FALSE, 32);
1748 gtk_widget_show (hbox1);
1749 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1751 PACK_FRAME(vbox1, frame_sig, _("Signature"));
1753 vbox_sig = gtk_vbox_new (FALSE, VSPACING_NARROW);
1754 gtk_widget_show (vbox_sig);
1755 gtk_container_add (GTK_CONTAINER (frame_sig), vbox_sig);
1756 gtk_container_set_border_width (GTK_CONTAINER (vbox_sig), 8);
1758 PACK_CHECK_BUTTON (vbox_sig, checkbtn_autosig,
1759 _("Insert signature automatically"));
1761 hbox1 = gtk_hbox_new (FALSE, 8);
1762 gtk_widget_show (hbox1);
1763 gtk_box_pack_start (GTK_BOX (vbox_sig), hbox1, TRUE, TRUE, 0);
1764 label_sigsep = gtk_label_new (_("Signature separator"));
1765 gtk_widget_show (label_sigsep);
1766 gtk_box_pack_start (GTK_BOX (hbox1), label_sigsep, FALSE, FALSE, 0);
1768 entry_sigsep = gtk_entry_new ();
1769 gtk_widget_show (entry_sigsep);
1770 gtk_box_pack_start (GTK_BOX (hbox1), entry_sigsep, FALSE, FALSE, 0);
1772 gtk_widget_set_usize (entry_sigsep, 64, -1);
1774 /* Account autoselection */
1775 PACK_FRAME(vbox1, frame_autosel, _("Automatic account selection"));
1777 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1778 gtk_widget_show (hbox_autosel);
1779 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1780 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1782 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1783 _("when replying"));
1784 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1785 _("when forwarding"));
1786 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1787 _("when re-editing"));
1789 vbox2 = gtk_vbox_new (FALSE, 0);
1790 gtk_widget_show (vbox2);
1791 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1793 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1794 _("Automatically launch the external editor"));
1796 PACK_VSPACER (vbox2, vbox3, VSPACING_NARROW_2);
1798 hbox5 = gtk_hbox_new (FALSE, 32);
1799 gtk_widget_show (hbox5);
1800 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1802 PACK_CHECK_BUTTON (hbox5, checkbtn_forward_as_attachment,
1803 _("Forward as attachment"));
1805 PACK_CHECK_BUTTON (hbox5, checkbtn_block_cursor,
1808 PACK_CHECK_BUTTON (vbox2, checkbtn_redirect_keep_from,
1809 _("Keep the original 'From' header when redirecting"));
1811 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1812 gtk_widget_show (hbox_undolevel);
1813 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1815 label_undolevel = gtk_label_new (_("Undo level"));
1816 gtk_widget_show (label_undolevel);
1817 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1819 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1820 spinbtn_undolevel = gtk_spin_button_new
1821 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1822 gtk_widget_show (spinbtn_undolevel);
1823 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1824 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1825 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1827 PACK_VSPACER (vbox2, vbox3, VSPACING_NARROW_2);
1830 PACK_FRAME(vbox1, frame_msgwrap, _("Message wrapping"));
1832 vbox_linewrap = gtk_vbox_new (FALSE, VSPACING_NARROW);
1833 gtk_widget_show (vbox_linewrap);
1834 gtk_container_add (GTK_CONTAINER (frame_msgwrap), vbox_linewrap);
1835 gtk_container_set_border_width (GTK_CONTAINER (vbox_linewrap), 8);
1837 hbox3 = gtk_hbox_new (FALSE, 8);
1838 gtk_widget_show (hbox3);
1839 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox3, FALSE, FALSE, 0);
1842 label_linewrap = gtk_label_new (_("Wrap messages at"));
1843 gtk_widget_show (label_linewrap);
1844 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1846 spinbtn_linewrap_adj = gtk_adjustment_new (72, 20, 1024, 1, 10, 10);
1847 spinbtn_linewrap = gtk_spin_button_new
1848 (GTK_ADJUSTMENT (spinbtn_linewrap_adj), 1, 0);
1849 gtk_widget_show (spinbtn_linewrap);
1850 gtk_box_pack_start (GTK_BOX (hbox3), spinbtn_linewrap, FALSE, FALSE, 0);
1851 gtk_widget_set_usize (spinbtn_linewrap, 64, -1);
1852 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linewrap), TRUE);
1854 label_linewrap = gtk_label_new (_("characters"));
1855 gtk_widget_show (label_linewrap);
1856 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1858 PACK_VSPACER (vbox2, vbox3, VSPACING_NARROW_2);
1860 hbox4 = gtk_hbox_new (FALSE, 32);
1861 gtk_widget_show (hbox4);
1862 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox4, FALSE, FALSE, 0);
1864 PACK_CHECK_BUTTON (hbox4, checkbtn_wrapquote, _("Wrap quotation"));
1866 (hbox4, checkbtn_wrapatsend, _("Wrap before sending"));
1868 PACK_CHECK_BUTTON (vbox_linewrap, checkbtn_smart_wrapping,
1869 _("Smart wrapping (EXPERIMENTAL)"));
1872 compose.checkbtn_quote = checkbtn_quote;
1873 compose.entry_quotemark = entry_quotemark;
1874 compose.text_quotefmt = text_quotefmt;
1876 compose.checkbtn_autosig = checkbtn_autosig;
1877 compose.entry_sigsep = entry_sigsep;
1879 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1881 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1882 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1883 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1885 compose.spinbtn_undolevel = spinbtn_undolevel;
1886 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1888 compose.spinbtn_linewrap = spinbtn_linewrap;
1889 compose.spinbtn_linewrap_adj = spinbtn_linewrap_adj;
1890 compose.checkbtn_wrapquote = checkbtn_wrapquote;
1891 compose.checkbtn_wrapatsend = checkbtn_wrapatsend;
1893 compose.checkbtn_forward_as_attachment =
1894 checkbtn_forward_as_attachment;
1895 compose.checkbtn_redirect_keep_from =
1896 checkbtn_redirect_keep_from;
1897 compose.checkbtn_smart_wrapping =
1898 checkbtn_smart_wrapping;
1899 compose.checkbtn_block_cursor =
1900 checkbtn_block_cursor;
1904 static void prefs_quote_create(void)
1907 GtkWidget *frame_quote;
1908 GtkWidget *vbox_quote;
1911 GtkWidget *label_quotemark;
1912 GtkWidget *entry_quotemark;
1913 GtkWidget *scrolledwin_quotefmt;
1914 GtkWidget *text_quotefmt;
1916 GtkWidget *entry_fw_quotemark;
1917 GtkWidget *text_fw_quotefmt;
1919 GtkWidget *entry_quote_chars;
1920 GtkWidget *label_quote_chars;
1922 GtkWidget *btn_quotedesc;
1924 GtkWidget *checkbtn_reply_with_quote;
1926 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1927 gtk_widget_show (vbox1);
1928 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1929 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1933 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1935 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1937 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1938 gtk_widget_show (vbox_quote);
1939 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1940 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1942 hbox1 = gtk_hbox_new (FALSE, 32);
1943 gtk_widget_show (hbox1);
1944 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1946 hbox2 = gtk_hbox_new (FALSE, 8);
1947 gtk_widget_show (hbox2);
1948 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1950 label_quotemark = gtk_label_new (_("Quotation mark"));
1951 gtk_widget_show (label_quotemark);
1952 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1954 entry_quotemark = gtk_entry_new ();
1955 gtk_widget_show (entry_quotemark);
1956 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
1957 gtk_widget_set_usize (entry_quotemark, 64, -1);
1959 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1960 gtk_widget_show (scrolledwin_quotefmt);
1961 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1962 gtk_scrolled_window_set_policy
1963 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1964 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1966 text_quotefmt = gtk_text_new (NULL, NULL);
1967 gtk_widget_show (text_quotefmt);
1968 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
1969 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
1970 gtk_widget_set_usize(text_quotefmt, -1, 60);
1974 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
1976 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1977 gtk_widget_show (vbox_quote);
1978 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1979 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1981 hbox1 = gtk_hbox_new (FALSE, 32);
1982 gtk_widget_show (hbox1);
1983 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1985 hbox2 = gtk_hbox_new (FALSE, 8);
1986 gtk_widget_show (hbox2);
1987 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1989 label_quotemark = gtk_label_new (_("Quotation mark"));
1990 gtk_widget_show (label_quotemark);
1991 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1993 entry_fw_quotemark = gtk_entry_new ();
1994 gtk_widget_show (entry_fw_quotemark);
1995 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
1997 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
1999 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
2000 gtk_widget_show (scrolledwin_quotefmt);
2001 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
2002 gtk_scrolled_window_set_policy
2003 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
2004 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
2006 text_fw_quotefmt = gtk_text_new (NULL, NULL);
2007 gtk_widget_show (text_fw_quotefmt);
2008 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
2010 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
2011 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
2013 hbox1 = gtk_hbox_new (FALSE, 32);
2014 gtk_widget_show (hbox1);
2015 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2018 gtk_button_new_with_label (_(" Description of symbols "));
2019 gtk_widget_show (btn_quotedesc);
2020 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
2021 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
2022 GTK_SIGNAL_FUNC(quote_fmt_quote_description), NULL);
2026 PACK_FRAME (vbox1, frame_quote, _("Quoting characters"));
2028 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
2029 gtk_widget_show (vbox_quote);
2030 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
2031 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
2033 hbox1 = gtk_hbox_new (FALSE, 32);
2034 gtk_widget_show (hbox1);
2035 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
2037 hbox2 = gtk_hbox_new (FALSE, 8);
2038 gtk_widget_show (hbox2);
2039 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
2041 label_quote_chars = gtk_label_new (_("Treat these characters as quotation marks: "));
2042 gtk_widget_show (label_quote_chars);
2043 gtk_box_pack_start (GTK_BOX (hbox2), label_quote_chars, FALSE, FALSE, 0);
2045 entry_quote_chars = gtk_entry_new ();
2046 gtk_widget_show (entry_quote_chars);
2047 gtk_box_pack_start (GTK_BOX (hbox2), entry_quote_chars,
2049 gtk_widget_set_usize (entry_quote_chars, 64, -1);
2052 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
2053 quote.entry_quotemark = entry_quotemark;
2054 quote.text_quotefmt = text_quotefmt;
2055 quote.entry_fw_quotemark = entry_fw_quotemark;
2056 quote.text_fw_quotefmt = text_fw_quotefmt;
2057 quote.entry_quote_chars = entry_quote_chars;
2060 static void prefs_display_create(void)
2063 GtkWidget *frame_font;
2065 GtkWidget *label_textfont;
2066 GtkWidget *entry_textfont;
2067 GtkWidget *button_textfont;
2068 GtkWidget *chkbtn_display_img;
2069 GtkWidget *chkbtn_transhdr;
2070 GtkWidget *chkbtn_folder_unread;
2072 GtkWidget *label_ng_abbrev;
2073 GtkWidget *spinbtn_ng_abbrev_len;
2074 GtkObject *spinbtn_ng_abbrev_len_adj;
2075 GtkWidget *frame_summary;
2077 GtkWidget *chkbtn_swapfrom;
2078 GtkWidget *chkbtn_hscrollbar;
2079 GtkWidget *chkbtn_useaddrbook;
2080 GtkWidget *chkbtn_expand_thread;
2081 GtkWidget *chkbtn_bold_unread;
2083 GtkWidget *label_datefmt;
2084 GtkWidget *button_datefmt;
2085 GtkWidget *entry_datefmt;
2086 GtkWidget *button_dispitem;
2087 GtkWidget *tmplabel, *tmpbutton, *tmpentry;
2089 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2090 gtk_widget_show (vbox1);
2091 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2092 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2094 PACK_FRAME(vbox1, frame_font, _("Font"));
2096 table1 = gtk_table_new (4, 3, FALSE);
2098 gtk_widget_show (table1);
2099 gtk_container_add (GTK_CONTAINER (frame_font), table1);
2100 gtk_container_set_border_width (GTK_CONTAINER (table1), 8);
2101 gtk_table_set_row_spacings (GTK_TABLE (table1), 8);
2102 gtk_table_set_col_spacings (GTK_TABLE (table1), 8);
2104 label_textfont = gtk_label_new (_("Text"));
2105 gtk_misc_set_alignment(GTK_MISC(label_textfont), 0, 0.5);
2106 gtk_widget_show (label_textfont);
2107 gtk_table_attach (GTK_TABLE (table1), label_textfont, 0, 1, 0, 1,
2108 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2110 entry_textfont = gtk_entry_new ();
2111 gtk_widget_show (entry_textfont);
2112 gtk_table_attach (GTK_TABLE (table1), entry_textfont, 1, 2, 0, 1,
2113 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2115 button_textfont = gtk_button_new_with_label (" ... ");
2117 gtk_widget_show (button_textfont);
2118 gtk_table_attach (GTK_TABLE (table1), button_textfont, 2, 3, 0, 1,
2120 gtk_signal_connect (GTK_OBJECT (button_textfont), "clicked",
2121 GTK_SIGNAL_FUNC (prefs_font_select), entry_textfont);
2123 tmplabel = gtk_label_new (_("Small"));
2124 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
2125 gtk_widget_show (tmplabel);
2126 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 1, 2,
2127 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2129 tmpentry = gtk_entry_new ();
2130 gtk_widget_show (tmpentry);
2131 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 1, 2,
2132 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2134 tmpbutton = gtk_button_new_with_label (" ... ");
2135 gtk_widget_show (tmpbutton);
2136 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 1, 2,
2138 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
2139 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
2140 display.entry_smallfont = tmpentry;
2142 tmplabel = gtk_label_new (_("Normal"));
2143 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
2144 gtk_widget_show (tmplabel);
2145 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 2, 3,
2146 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2148 tmpentry = gtk_entry_new ();
2149 gtk_widget_show (tmpentry);
2150 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 2, 3,
2151 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2153 tmpbutton = gtk_button_new_with_label (" ... ");
2154 gtk_widget_show (tmpbutton);
2155 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 2, 3,
2157 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
2158 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
2159 display.entry_normalfont = tmpentry;
2161 tmplabel = gtk_label_new (_("Bold"));
2162 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
2163 gtk_widget_show (tmplabel);
2164 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 3, 4,
2165 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
2167 tmpentry = gtk_entry_new ();
2168 gtk_widget_show (tmpentry);
2169 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 3, 4,
2170 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2172 tmpbutton = gtk_button_new_with_label (" ... ");
2173 gtk_widget_show (tmpbutton);
2174 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 3, 4,
2176 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
2177 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
2178 display.entry_boldfont = tmpentry;
2180 vbox2 = gtk_vbox_new (FALSE, 0);
2181 gtk_widget_show (vbox2);
2182 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
2185 (vbox2, chkbtn_transhdr,
2186 _("Translate header name (such as `From:', `Subject:')"));
2188 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
2189 _("Display unread number next to folder name"));
2191 PACK_CHECK_BUTTON (vbox2, chkbtn_display_img,
2192 _("Automatically display images"));
2194 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2196 hbox1 = gtk_hbox_new (FALSE, 8);
2197 gtk_widget_show (hbox1);
2198 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2200 label_ng_abbrev = gtk_label_new
2201 (_("Abbreviate newsgroups longer than"));
2202 gtk_widget_show (label_ng_abbrev);
2203 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
2205 spinbtn_ng_abbrev_len_adj = gtk_adjustment_new (16, 0, 999, 1, 10, 10);
2206 spinbtn_ng_abbrev_len = gtk_spin_button_new
2207 (GTK_ADJUSTMENT (spinbtn_ng_abbrev_len_adj), 1, 0);
2208 gtk_widget_show (spinbtn_ng_abbrev_len);
2209 gtk_box_pack_start (GTK_BOX (hbox1), spinbtn_ng_abbrev_len,
2211 gtk_widget_set_usize (spinbtn_ng_abbrev_len, 56, -1);
2212 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
2215 label_ng_abbrev = gtk_label_new
2217 gtk_widget_show (label_ng_abbrev);
2218 gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
2220 /* ---- Summary ---- */
2222 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
2224 vbox2 = gtk_vbox_new (FALSE, 0);
2225 gtk_widget_show (vbox2);
2226 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
2227 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
2230 (vbox2, chkbtn_swapfrom,
2231 _("Display recipient on `From' column if sender is yourself"));
2233 (vbox2, chkbtn_useaddrbook,
2234 _("Display sender using address book"));
2236 (vbox2, chkbtn_hscrollbar, _("Enable horizontal scroll bar"));
2238 (vbox2, chkbtn_expand_thread, _("Expand threads"));
2240 (vbox2, chkbtn_bold_unread,
2241 _("Display unread messages with bold font"));
2243 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2245 hbox1 = gtk_hbox_new (FALSE, 8);
2246 gtk_widget_show (hbox1);
2247 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2249 label_datefmt = gtk_label_new (_("Date format"));
2250 gtk_widget_show (label_datefmt);
2251 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
2253 entry_datefmt = gtk_entry_new ();
2254 gtk_widget_show (entry_datefmt);
2255 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
2257 button_datefmt = gtk_button_new_with_label (" ... ");
2259 gtk_widget_show (button_datefmt);
2260 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
2261 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
2262 GTK_SIGNAL_FUNC (date_format_create), NULL);
2264 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
2266 hbox1 = gtk_hbox_new (FALSE, 8);
2267 gtk_widget_show (hbox1);
2268 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2270 button_dispitem = gtk_button_new_with_label
2271 (_(" Set display item of summary... "));
2272 gtk_widget_show (button_dispitem);
2273 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
2274 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
2275 GTK_SIGNAL_FUNC (prefs_summary_column_open),
2278 display.entry_textfont = entry_textfont;
2279 display.button_textfont = button_textfont;
2281 display.chkbtn_display_img = chkbtn_display_img;
2282 display.chkbtn_transhdr = chkbtn_transhdr;
2283 display.chkbtn_folder_unread = chkbtn_folder_unread;
2284 display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
2285 display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
2287 display.chkbtn_swapfrom = chkbtn_swapfrom;
2288 display.chkbtn_hscrollbar = chkbtn_hscrollbar;
2289 display.chkbtn_expand_thread = chkbtn_expand_thread;
2290 display.chkbtn_bold_unread = chkbtn_bold_unread;
2291 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
2292 display.entry_datefmt = entry_datefmt;
2295 static void prefs_message_create(void)
2301 GtkWidget *chkbtn_enablecol;
2302 GtkWidget *button_edit_col;
2303 GtkWidget *chkbtn_mbalnum;
2304 GtkWidget *chkbtn_disphdrpane;
2305 GtkWidget *chkbtn_disphdr;
2306 GtkWidget *button_edit_disphdr;
2307 GtkWidget *hbox_linespc;
2308 GtkWidget *label_linespc;
2309 GtkObject *spinbtn_linespc_adj;
2310 GtkWidget *spinbtn_linespc;
2311 GtkWidget *chkbtn_headspc;
2313 GtkWidget *frame_scr;
2314 GtkWidget *vbox_scr;
2315 GtkWidget *chkbtn_smoothscroll;
2316 GtkWidget *hbox_scr;
2317 GtkWidget *label_scr;
2318 GtkObject *spinbtn_scrollstep_adj;
2319 GtkWidget *spinbtn_scrollstep;
2320 GtkWidget *chkbtn_halfpage;
2322 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2323 gtk_widget_show (vbox1);
2324 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2325 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2327 hbox1 = gtk_hbox_new (FALSE, 8);
2328 gtk_widget_show (hbox1);
2329 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, TRUE, 0);
2331 PACK_CHECK_BUTTON (hbox1, chkbtn_enablecol,
2332 _("Enable coloration of message"));
2333 gtk_signal_connect (GTK_OBJECT (chkbtn_enablecol), "toggled",
2334 GTK_SIGNAL_FUNC (prefs_enable_message_color_toggled),
2337 button_edit_col = gtk_button_new_with_label (_(" Edit... "));
2338 gtk_widget_show (button_edit_col);
2339 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_col, FALSE, TRUE, 0);
2340 gtk_signal_connect (GTK_OBJECT (button_edit_col), "clicked",
2341 GTK_SIGNAL_FUNC (prefs_quote_colors_dialog), NULL);
2343 SET_TOGGLE_SENSITIVITY(chkbtn_enablecol, button_edit_col);
2345 vbox2 = gtk_vbox_new (FALSE, 0);
2346 gtk_widget_show (vbox2);
2347 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2350 (vbox2, chkbtn_mbalnum,
2351 _("Display 2-byte alphabet and numeric with 1-byte character"));
2352 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
2353 _("Display header pane above message view"));
2355 hbox1 = gtk_hbox_new (FALSE, 8);
2356 gtk_widget_show (hbox1);
2357 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2359 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
2360 _("Display short headers on message view"));
2362 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
2363 gtk_widget_show (button_edit_disphdr);
2364 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
2366 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
2367 GTK_SIGNAL_FUNC (prefs_display_header_open),
2370 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
2372 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2374 hbox1 = gtk_hbox_new (FALSE, 32);
2375 gtk_widget_show (hbox1);
2376 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2378 hbox_linespc = gtk_hbox_new (FALSE, 8);
2379 gtk_widget_show (hbox1);
2380 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
2382 label_linespc = gtk_label_new (_("Line space"));
2383 gtk_widget_show (label_linespc);
2384 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2387 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
2388 spinbtn_linespc = gtk_spin_button_new
2389 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
2390 gtk_widget_show (spinbtn_linespc);
2391 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
2393 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
2394 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
2396 label_linespc = gtk_label_new (_("pixel(s)"));
2397 gtk_widget_show (label_linespc);
2398 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2401 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Leave space on head"));
2403 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
2405 vbox_scr = gtk_vbox_new (FALSE, 0);
2406 gtk_widget_show (vbox_scr);
2407 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
2408 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
2410 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
2412 hbox1 = gtk_hbox_new (FALSE, 32);
2413 gtk_widget_show (hbox1);
2414 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
2416 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
2418 hbox_scr = gtk_hbox_new (FALSE, 8);
2419 gtk_widget_show (hbox_scr);
2420 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
2422 label_scr = gtk_label_new (_("Step"));
2423 gtk_widget_show (label_scr);
2424 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2426 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
2427 spinbtn_scrollstep = gtk_spin_button_new
2428 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
2429 gtk_widget_show (spinbtn_scrollstep);
2430 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
2432 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
2433 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
2436 label_scr = gtk_label_new (_("pixel(s)"));
2437 gtk_widget_show (label_scr);
2438 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2440 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
2442 message.chkbtn_enablecol = chkbtn_enablecol;
2443 message.button_edit_col = button_edit_col;
2444 message.chkbtn_mbalnum = chkbtn_mbalnum;
2445 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
2446 message.chkbtn_disphdr = chkbtn_disphdr;
2447 message.spinbtn_linespc = spinbtn_linespc;
2448 message.chkbtn_headspc = chkbtn_headspc;
2450 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
2451 message.spinbtn_scrollstep = spinbtn_scrollstep;
2452 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
2453 message.chkbtn_halfpage = chkbtn_halfpage;
2457 static void prefs_privacy_create(void)
2462 GtkWidget *checkbtn_auto_check_signatures;
2463 GtkWidget *checkbtn_gpg_signature_popup;
2464 GtkWidget *hbox_stpass;
2465 GtkWidget *checkbtn_store_passphrase;
2466 GtkWidget *label_stpass1;
2467 GtkObject *spinbtn_store_passphrase_adj;
2468 GtkWidget *spinbtn_store_passphrase;
2469 GtkWidget *label_stpass2;
2470 GtkWidget *hbox_stpassinfo;
2471 GtkWidget *label_stpassinfo;
2472 GtkWidget *checkbtn_passphrase_grab;
2473 GtkWidget *checkbtn_gpg_warning;
2475 GtkWidget *menuitem;
2477 GtkWidget *optmenu_menu;
2479 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2480 gtk_widget_show (vbox1);
2481 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2482 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2484 vbox2 = gtk_vbox_new (FALSE, 0);
2485 gtk_widget_show (vbox2);
2486 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2488 PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
2489 _("Automatically check signatures"));
2491 PACK_CHECK_BUTTON (vbox2, checkbtn_gpg_signature_popup,
2492 _("Show signature check result in a popup window"));
2494 hbox_stpass = gtk_hbox_new(FALSE, 8);
2495 gtk_box_pack_start(GTK_BOX(vbox2), hbox_stpass, FALSE, FALSE, 0);
2497 PACK_CHECK_BUTTON (hbox_stpass, checkbtn_store_passphrase,
2498 _("Store passphrase temporarily"));
2500 label_stpass1 = gtk_label_new(_("- remove after"));
2501 gtk_box_pack_start(GTK_BOX(hbox_stpass), label_stpass1, FALSE, FALSE, 0);
2503 spinbtn_store_passphrase_adj = gtk_adjustment_new(0, 0, 1440, 1, 5, 5);
2504 spinbtn_store_passphrase = gtk_spin_button_new(
2505 GTK_ADJUSTMENT(spinbtn_store_passphrase_adj), 1, 0);
2506 gtk_box_pack_start(GTK_BOX(hbox_stpass), spinbtn_store_passphrase, FALSE,
2508 gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(spinbtn_store_passphrase),
2510 gtk_widget_set_usize(spinbtn_store_passphrase, 50, -1);
2512 label_stpass2 = gtk_label_new(_("minute(s)"));
2513 gtk_box_pack_start(GTK_BOX(hbox_stpass), label_stpass2, FALSE, FALSE, 0);
2514 gtk_widget_show_all(hbox_stpass);
2516 hbox_stpassinfo = gtk_hbox_new(FALSE, 8);
2517 gtk_box_pack_start(GTK_BOX(vbox2), hbox_stpassinfo, FALSE, FALSE, 0);
2519 label_stpassinfo = gtk_label_new
2520 (_("(A setting of '0' will store the passphrase\n"
2521 " for the whole session)"));
2522 gtk_box_pack_start (GTK_BOX (hbox_stpassinfo), label_stpassinfo, FALSE, FALSE, 0);
2523 gtk_label_set_justify (GTK_LABEL (label_stpassinfo), GTK_JUSTIFY_LEFT);
2524 gtk_widget_show_all(hbox_stpassinfo);
2526 SET_TOGGLE_SENSITIVITY(checkbtn_store_passphrase, label_stpass1);
2527 SET_TOGGLE_SENSITIVITY(checkbtn_store_passphrase, spinbtn_store_passphrase);
2528 SET_TOGGLE_SENSITIVITY(checkbtn_store_passphrase, label_stpass2);
2529 SET_TOGGLE_SENSITIVITY(checkbtn_store_passphrase, label_stpassinfo);
2532 PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab,
2533 _("Grab input while entering a passphrase"));
2537 (vbox2, checkbtn_gpg_warning,
2538 _("Display warning on startup if GnuPG doesn't work"));
2540 hbox1 = gtk_hbox_new (FALSE, 8);
2541 gtk_widget_show (hbox1);
2542 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2544 /* create default signkey box */
2545 label = gtk_label_new (_("Default Sign Key"));
2546 gtk_widget_show (label);
2547 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2548 optmenu = gtk_option_menu_new ();
2549 gtk_widget_show (optmenu);
2550 gtk_box_pack_start(GTK_BOX (hbox1), optmenu, FALSE, FALSE, 0);
2551 optmenu_menu = gtk_menu_new ();
2553 MENUITEM_ADD(optmenu_menu, menuitem, "Default Key", "def_key");
2554 MENUITEM_ADD(optmenu_menu, menuitem, "Second Key", "2nd_key");
2555 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu), optmenu_menu);
2556 /* FIXME: disabled because not implemented */
2557 gtk_widget_set_sensitive(optmenu, FALSE);
2559 privacy.checkbtn_auto_check_signatures
2560 = checkbtn_auto_check_signatures;
2561 privacy.checkbtn_gpg_signature_popup
2562 = checkbtn_gpg_signature_popup;
2563 privacy.checkbtn_store_passphrase = checkbtn_store_passphrase;
2564 privacy.spinbtn_store_passphrase = spinbtn_store_passphrase;
2565 privacy.spinbtn_store_passphrase_adj = spinbtn_store_passphrase_adj;
2566 privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
2567 privacy.checkbtn_gpg_warning = checkbtn_gpg_warning;
2568 privacy.optmenu_default_signkey = optmenu;
2572 prefs_common_default_signkey_set_data_from_optmenu(PrefParam *pparam)
2576 GtkWidget *menuitem;
2579 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2580 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2581 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
2582 g_free(*((gchar **)pparam->data));
2583 *((gchar **)pparam->data) = g_strdup(charset);
2587 static void prefs_common_default_signkey_set_optmenu(PrefParam *pparam)
2591 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2593 GtkWidget *menuitem;
2597 g_return_if_fail(optmenu != NULL);
2598 g_return_if_fail(*((gchar **)pparam->data) != NULL);
2600 menu = gtk_option_menu_get_menu(optmenu);
2601 for (cur = GTK_MENU_SHELL(menu)->children;
2602 cur != NULL; cur = cur->next) {
2603 menuitem = GTK_WIDGET(cur->data);
2604 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
2605 if (!strcmp(charset, *((gchar **)pparam->data))) {
2606 gtk_option_menu_set_history(optmenu, n);
2612 gtk_option_menu_set_history(optmenu, 0);
2613 prefs_common_charset_set_data_from_optmenu(pparam);
2616 #endif /* USE_GPGME */
2618 static void prefs_interface_create(void)
2623 /* GtkWidget *checkbtn_emacs; */
2624 GtkWidget *checkbtn_openunread;
2625 GtkWidget *checkbtn_openinbox;
2626 GtkWidget *checkbtn_immedexec;
2629 GtkWidget *optmenu_recvdialog;
2631 GtkWidget *menuitem;
2633 GtkWidget *frame_addr;
2634 GtkWidget *vbox_addr;
2635 GtkWidget *checkbtn_addaddrbyclick;
2637 GtkWidget *button_keybind;
2640 GtkWidget *optmenu_nextunreadmsgdialog;
2641 GtkWidget *optmenu_nextunreadmsgdialog_menu;
2642 GtkWidget *nextunreadmsgdialog_menuitem;
2644 GtkWidget *frame_pixmap_theme;
2645 GtkWidget *vbox_pixmap_theme;
2646 GtkWidget *entry_pixmap_theme;
2647 GtkWidget *combo_pixmap_theme;
2648 GList *avail_pixmap_themes = NULL;
2650 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2651 gtk_widget_show (vbox1);
2652 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2653 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2655 vbox2 = gtk_vbox_new (FALSE, 0);
2656 gtk_widget_show (vbox2);
2657 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2659 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
2660 _("Emulate the behavior of mouse operation of\n"
2661 "Emacs-based mailer"));
2662 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
2663 GTK_JUSTIFY_LEFT); */
2666 (vbox2, checkbtn_openunread,
2667 _("Open first unread message when entering a folder"));
2670 (vbox2, checkbtn_openinbox,
2671 _("Go to inbox after receiving new mail"));
2673 vbox3 = gtk_vbox_new (FALSE, 0);
2674 gtk_widget_show (vbox3);
2675 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2678 (vbox3, checkbtn_immedexec,
2679 _("Execute immediately when moving or deleting messages"));
2681 hbox1 = gtk_hbox_new (FALSE, 0);
2682 gtk_widget_show (hbox1);
2683 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2685 label = gtk_label_new
2686 (_("(Messages will be marked until execution\n"
2687 " if this is turned off)"));
2688 gtk_widget_show (label);
2689 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 8);
2690 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2692 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
2694 hbox1 = gtk_hbox_new (FALSE, 8);
2695 gtk_widget_show (hbox1);
2696 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0);
2698 label = gtk_label_new (_("Show receive dialog"));
2699 gtk_widget_show (label);
2700 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2702 optmenu_recvdialog = gtk_option_menu_new ();
2703 gtk_widget_show (optmenu_recvdialog);
2704 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_recvdialog,
2707 menu = gtk_menu_new ();
2708 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
2709 MENUITEM_ADD (menu, menuitem, _("Only if a window is active"),
2710 RECV_DIALOG_ACTIVE);
2711 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
2713 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
2715 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2717 vbox_addr = gtk_vbox_new (FALSE, 0);
2718 gtk_widget_show (vbox_addr);
2719 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2720 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2723 (vbox_addr, checkbtn_addaddrbyclick,
2724 _("Add address to destination when double-clicked"));
2726 /* Next Unread Message Dialog */
2727 hbox2 = gtk_hbox_new (FALSE, 8);
2728 gtk_widget_show (hbox2);
2729 gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 0);
2731 label = gtk_label_new (_("Show no-unread-message dialog"));
2732 gtk_widget_show (label);
2733 gtk_box_pack_start (GTK_BOX (hbox2), label, FALSE, FALSE, 0);
2735 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
2736 gtk_widget_show (optmenu_nextunreadmsgdialog);
2737 gtk_box_pack_start (GTK_BOX (hbox2), optmenu_nextunreadmsgdialog,
2740 optmenu_nextunreadmsgdialog_menu = gtk_menu_new ();
2741 MENUITEM_ADD (optmenu_nextunreadmsgdialog_menu, nextunreadmsgdialog_menuitem,
2742 _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
2743 MENUITEM_ADD (optmenu_nextunreadmsgdialog_menu, nextunreadmsgdialog_menuitem,
2744 _("Assume 'Yes'"), NEXTUNREADMSGDIALOG_ASSUME_YES);
2745 MENUITEM_ADD (optmenu_nextunreadmsgdialog_menu, nextunreadmsgdialog_menuitem,
2746 _("Assume 'No'"), NEXTUNREADMSGDIALOG_ASSUME_NO);
2748 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog),
2749 optmenu_nextunreadmsgdialog_menu);
2752 /* Receive Dialog */
2753 /* hbox = gtk_hbox_new (FALSE, 8);
2754 gtk_widget_show (hbox);
2755 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
2757 label = gtk_label_new (_("Show receive Dialog"));
2758 gtk_widget_show (label);
2759 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
2761 recvdialog_optmenu = gtk_option_menu_new ();
2762 gtk_widget_show (recvdialog_optmenu);
2763 gtk_box_pack_start (GTK_BOX (hbox), recvdialog_optmenu, FALSE, FALSE, 0);
2765 recvdialog_optmenu_menu = gtk_menu_new ();
2767 MENUITEM_ADD (recvdialog_optmenu_menu, recvdialog_menuitem, _("Always"), RECVDIALOG_ALWAYS);
2768 MENUITEM_ADD (recvdialog_optmenu_menu, recvdialog_menuitem, _("Only if a sylpheed window is active"), RECVDIALOG_WINDOW_ACTIVE);
2769 MENUITEM_ADD (recvdialog_optmenu_menu, recvdialog_menuitem, _("Never"), RECVDIALOG_NEVER);
2771 gtk_option_menu_set_menu (GTK_OPTION_MENU (recvdialog_optmenu), recvdialog_optmenu_menu); */
2773 hbox1 = gtk_hbox_new (FALSE, 8);
2774 gtk_widget_show (hbox1);
2775 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2777 button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
2778 gtk_widget_show (button_keybind);
2779 gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
2780 gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
2781 GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
2783 PACK_FRAME(vbox1, frame_pixmap_theme, _("Pixmap theme"));
2785 vbox_pixmap_theme = gtk_vbox_new(FALSE, 0);
2786 gtk_widget_show(vbox_pixmap_theme);
2787 gtk_container_add(GTK_CONTAINER(frame_pixmap_theme), vbox_pixmap_theme);
2788 gtk_container_set_border_width(GTK_CONTAINER(vbox_pixmap_theme), 8);
2790 avail_pixmap_themes = stock_pixmap_themes_list_new();
2792 combo_pixmap_theme = gtk_combo_new ();
2793 gtk_widget_show (combo_pixmap_theme);
2794 gtk_box_pack_start (GTK_BOX (vbox_pixmap_theme), combo_pixmap_theme, TRUE, TRUE, 0);
2795 gtk_combo_set_popdown_strings(GTK_COMBO(combo_pixmap_theme), avail_pixmap_themes);
2796 entry_pixmap_theme = GTK_COMBO (combo_pixmap_theme)->entry;
2798 stock_pixmap_themes_list_free(avail_pixmap_themes);
2800 /* interface.checkbtn_emacs = checkbtn_emacs; */
2801 interface.checkbtn_openunread = checkbtn_openunread;
2802 interface.checkbtn_openinbox = checkbtn_openinbox;
2803 interface.checkbtn_immedexec = checkbtn_immedexec;
2804 interface.optmenu_recvdialog = optmenu_recvdialog;
2805 interface.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2806 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
2807 interface.combo_pixmap_theme = combo_pixmap_theme;
2808 interface.entry_pixmap_theme = entry_pixmap_theme;
2811 static void prefs_other_create(void)
2814 GtkWidget *ext_frame;
2815 GtkWidget *ext_table;
2818 GtkWidget *uri_label;
2819 GtkWidget *uri_combo;
2820 GtkWidget *uri_entry;
2822 GtkWidget *printcmd_label;
2823 GtkWidget *printcmd_entry;
2825 GtkWidget *exteditor_label;
2826 GtkWidget *exteditor_combo;
2827 GtkWidget *exteditor_entry;
2829 GtkWidget *frame_cliplog;
2830 GtkWidget *vbox_cliplog;
2831 GtkWidget *hbox_cliplog;
2832 GtkWidget *checkbtn_cliplog;
2833 GtkWidget *loglength_label;
2834 GtkWidget *loglength_entry;
2836 GtkWidget *frame_exit;
2837 GtkWidget *vbox_exit;
2838 GtkWidget *checkbtn_confonexit;
2839 GtkWidget *checkbtn_cleanonexit;
2840 GtkWidget *checkbtn_askonclean;
2841 GtkWidget *checkbtn_warnqueued;
2843 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2844 gtk_widget_show (vbox1);
2845 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2846 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2848 PACK_FRAME(vbox1, ext_frame,
2849 _("External commands (%s will be replaced with file name / URI)"));
2851 ext_table = gtk_table_new (3, 2, FALSE);
2852 gtk_widget_show (ext_table);
2853 gtk_container_add (GTK_CONTAINER (ext_frame), ext_table);
2854 gtk_container_set_border_width (GTK_CONTAINER (ext_table), 8);
2855 gtk_table_set_row_spacings (GTK_TABLE (ext_table), VSPACING_NARROW);
2856 gtk_table_set_col_spacings (GTK_TABLE (ext_table), 8);
2858 uri_label = gtk_label_new (_("Web browser"));
2859 gtk_widget_show(uri_label);
2860 gtk_table_attach (GTK_TABLE (ext_table), uri_label, 0, 1, 0, 1,
2861 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2862 gtk_misc_set_alignment (GTK_MISC (uri_label), 1, 0.5);
2864 uri_combo = gtk_combo_new ();
2865 gtk_widget_show (uri_combo);
2866 gtk_table_attach (GTK_TABLE (ext_table), uri_combo, 1, 2, 0, 1,
2867 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2868 gtkut_combo_set_items (GTK_COMBO (uri_combo),
2869 "netscape -remote 'openURL(%s,raise)'",
2871 "gnome-moz-remote --raise --newwin '%s'",
2872 "kfmclient openURL '%s'",
2873 "opera -newwindow '%s'",
2874 "kterm -e w3m '%s'",
2875 "kterm -e lynx '%s'",
2877 uri_entry = GTK_COMBO (uri_combo)->entry;
2879 printcmd_label = gtk_label_new (_("Print"));
2880 gtk_widget_show (printcmd_label);
2881 gtk_table_attach (GTK_TABLE (ext_table), printcmd_label, 0, 1, 1, 2,
2882 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2883 gtk_misc_set_alignment (GTK_MISC (printcmd_label), 1, 0.5);
2885 printcmd_entry = gtk_entry_new ();
2886 gtk_widget_show (printcmd_entry);
2887 gtk_table_attach (GTK_TABLE (ext_table), printcmd_entry, 1, 2, 1, 2,
2888 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2890 exteditor_label = gtk_label_new (_("Editor"));
2891 gtk_widget_show (exteditor_label);
2892 gtk_table_attach (GTK_TABLE (ext_table), exteditor_label, 0, 1, 2, 3,
2893 GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
2894 gtk_misc_set_alignment (GTK_MISC (exteditor_label), 1, 0.5);
2896 exteditor_combo = gtk_combo_new ();
2897 gtk_widget_show (exteditor_combo);
2898 gtk_table_attach (GTK_TABLE (ext_table), exteditor_combo, 1, 2, 2, 3,
2899 GTK_EXPAND | GTK_FILL, 0, 0, 0);
2900 gtkut_combo_set_items (GTK_COMBO (exteditor_combo),
2903 "mgedit --no-fork %s",
2909 exteditor_entry = GTK_COMBO (exteditor_combo)->entry;
2912 PACK_FRAME (vbox1, frame_cliplog, _("Log Size"));
2914 vbox_cliplog = gtk_vbox_new (FALSE, 0);
2915 gtk_widget_show (vbox_cliplog);
2916 gtk_container_add (GTK_CONTAINER (frame_cliplog), vbox_cliplog);
2917 gtk_container_set_border_width (GTK_CONTAINER (vbox_cliplog), 8);
2918 PACK_CHECK_BUTTON (vbox_cliplog, checkbtn_cliplog,
2919 _("Clip the log size"));
2920 hbox_cliplog = gtk_hbox_new (FALSE, 3);
2921 gtk_container_add (GTK_CONTAINER (vbox_cliplog), hbox_cliplog);
2922 gtk_widget_show (hbox_cliplog);
2924 loglength_label = gtk_label_new (_("Log window length"));
2925 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_label,
2927 gtk_widget_show (GTK_WIDGET (loglength_label));
2928 loglength_entry = gtk_entry_new ();
2929 gtk_widget_set_usize (GTK_WIDGET (loglength_entry), 64, -1);
2930 gtk_box_pack_start (GTK_BOX (hbox_cliplog), loglength_entry,
2932 gtk_widget_show (GTK_WIDGET (loglength_entry));
2933 SET_TOGGLE_SENSITIVITY(checkbtn_cliplog, loglength_entry);
2936 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2938 vbox_exit = gtk_vbox_new (FALSE, 0);
2939 gtk_widget_show (vbox_exit);
2940 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2941 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
2943 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
2944 _("Confirm on exit"));
2946 hbox1 = gtk_hbox_new (FALSE, 32);
2947 gtk_widget_show (hbox1);
2948 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
2950 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
2951 _("Empty trash on exit"));
2952 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
2953 _("Ask before emptying"));
2954 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
2956 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
2957 _("Warn if there are queued messages"));
2959 other.uri_combo = uri_combo;
2960 other.uri_entry = uri_entry;
2961 other.printcmd_entry = printcmd_entry;
2963 other.exteditor_combo = exteditor_combo;
2964 other.exteditor_entry = exteditor_entry;
2966 other.checkbtn_cliplog = checkbtn_cliplog;
2967 other.loglength_entry = loglength_entry;
2969 other.checkbtn_confonexit = checkbtn_confonexit;
2970 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
2971 other.checkbtn_askonclean = checkbtn_askonclean;
2972 other.checkbtn_warnqueued = checkbtn_warnqueued;
2975 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
2977 GtkWidget *datefmt_sample = NULL;
2980 g_return_if_fail(widget != NULL);
2981 g_return_if_fail(*widget != NULL);
2982 g_return_if_fail(display.entry_datefmt != NULL);
2984 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2985 (GTK_OBJECT(*widget), "datefmt_sample"));
2986 g_return_if_fail(datefmt_sample != NULL);
2988 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
2989 g_free(prefs_common.date_format);
2990 prefs_common.date_format = text;
2991 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
2993 gtk_widget_destroy(*widget);
2997 static void date_format_cancel_btn_clicked(GtkButton *button,
3000 g_return_if_fail(widget != NULL);
3001 g_return_if_fail(*widget != NULL);
3003 gtk_widget_destroy(*widget);
3007 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
3010 if (event && event->keyval == GDK_Escape)
3011 date_format_cancel_btn_clicked(NULL, widget);
3014 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
3015 GdkEventAny *event, GtkWidget **widget)
3017 g_return_val_if_fail(widget != NULL, FALSE);
3018 g_return_val_if_fail(*widget != NULL, FALSE);
3024 static void date_format_entry_on_change(GtkEditable *editable,
3028 struct tm *cal_time;
3032 cur_time = time(NULL);
3033 cal_time = localtime(&cur_time);
3035 text = gtk_editable_get_chars(editable, 0, -1);
3037 strftime(buffer, sizeof buffer, text, cal_time);
3038 gtk_label_set_text(example, buffer);
3041 static void date_format_select_row(GtkWidget *date_format_list, gint row,
3042 gint column, GdkEventButton *event,
3043 GtkWidget *date_format)
3049 GtkWidget *datefmt_sample;
3051 /* only on double click */
3052 if (!event || event->type != GDK_2BUTTON_PRESS) return;
3055 datefmt_sample = GTK_WIDGET(gtk_object_get_data
3056 (GTK_OBJECT(date_format), "datefmt_sample"));
3058 g_return_if_fail(date_format_list != NULL);
3059 g_return_if_fail(date_format != NULL);
3060 g_return_if_fail(datefmt_sample != NULL);
3062 /* get format from clist */
3063 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
3065 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
3066 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
3068 /* insert the format into the text entry */
3069 new_format = g_malloc(strlen(old_format) + 3);
3071 strncpy(new_format, old_format, cur_pos);
3072 new_format[cur_pos] = '\0';
3073 strcat(new_format, format);
3074 strcat(new_format, &old_format[cur_pos]);
3076 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
3077 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
3082 static GtkWidget *date_format_create(GtkButton *button, void *data)
3084 static GtkWidget *datefmt_win = NULL;
3086 GtkWidget *scrolledwindow1;
3087 GtkWidget *datefmt_clist;
3092 GtkWidget *confirm_area;
3094 GtkWidget *cancel_btn;
3095 GtkWidget *datefmt_entry;
3124 const gint TIME_FORMAT_ELEMS =
3125 sizeof time_format / sizeof time_format[0];
3127 time_format[0].txt = _("the full abbreviated weekday name");
3128 time_format[1].txt = _("the full weekday name");
3129 time_format[2].txt = _("the abbreviated month name");
3130 time_format[3].txt = _("the full month name");
3131 time_format[4].txt = _("the preferred date and time for the current locale");
3132 time_format[5].txt = _("the century number (year/100)");
3133 time_format[6].txt = _("the day of the month as a decimal number");
3134 time_format[7].txt = _("the hour as a decimal number using a 24-hour clock");
3135 time_format[8].txt = _("the hour as a decimal number using a 12-hour clock");
3136 time_format[9].txt = _("the day of the year as a decimal number");
3137 time_format[10].txt = _("the month as a decimal number");
3138 time_format[11].txt = _("the minute as a decimal number");
3139 time_format[12].txt = _("either AM or PM");
3140 time_format[13].txt = _("the second as a decimal number");
3141 time_format[14].txt = _("the day of the week as a decimal number");
3142 time_format[15].txt = _("the preferred date for the current locale");
3143 time_format[16].txt = _("the last two digits of a year");
3144 time_format[17].txt = _("the year as a decimal number");
3145 time_format[18].txt = _("the time zone or name or abbreviation");
3147 if (datefmt_win) return datefmt_win;
3149 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
3150 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
3151 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
3152 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
3153 gtk_widget_set_usize(datefmt_win, 440, 280);
3155 vbox1 = gtk_vbox_new(FALSE, 10);
3156 gtk_widget_show(vbox1);
3157 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
3159 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
3160 gtk_scrolled_window_set_policy
3161 (GTK_SCROLLED_WINDOW(scrolledwindow1),
3162 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
3163 gtk_widget_show(scrolledwindow1);
3164 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
3166 titles[0] = _("Specifier");
3167 titles[1] = _("Description");
3168 datefmt_clist = gtk_clist_new_with_titles(2, titles);
3169 gtk_widget_show(datefmt_clist);
3170 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
3171 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
3172 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
3173 GTK_SELECTION_BROWSE);
3175 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
3177 /* phoney casting necessary because of gtk... */
3178 text[0] = (gchar *)time_format[i].fmt;
3179 text[1] = (gchar *)time_format[i].txt;
3180 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
3183 table = gtk_table_new(2, 2, FALSE);
3184 gtk_widget_show(table);
3185 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
3186 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
3187 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
3189 label1 = gtk_label_new(_("Date format"));
3190 gtk_widget_show(label1);
3191 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
3193 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
3194 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
3196 datefmt_entry = gtk_entry_new_with_max_length(256);
3197 gtk_widget_show(datefmt_entry);
3198 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
3199 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3201 /* we need the "sample" entry box; add it as data so callbacks can
3202 * get the entry box */
3203 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
3206 label2 = gtk_label_new(_("Example"));
3207 gtk_widget_show(label2);
3208 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
3210 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
3211 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
3213 label3 = gtk_label_new("");
3214 gtk_widget_show(label3);
3215 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
3216 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3217 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
3218 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
3220 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
3221 &cancel_btn, _("Cancel"), NULL, NULL);
3222 gtk_widget_grab_default(ok_btn);
3223 gtk_widget_show(confirm_area);
3225 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
3227 /* set the current format */
3228 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
3229 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
3232 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
3233 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
3235 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
3236 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
3238 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
3239 GTK_SIGNAL_FUNC(date_format_key_pressed),
3241 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
3242 GTK_SIGNAL_FUNC(date_format_on_delete),
3244 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
3245 GTK_SIGNAL_FUNC(date_format_entry_on_change),
3248 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
3249 GTK_SIGNAL_FUNC(date_format_select_row),
3252 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
3253 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
3255 gtk_widget_show(datefmt_win);
3256 manage_window_set_transient(GTK_WINDOW(datefmt_win));
3258 gtk_widget_grab_focus(ok_btn);
3263 void prefs_quote_colors_dialog(void)
3265 if (!quote_color_win)
3266 prefs_quote_colors_dialog_create();
3267 gtk_widget_show(quote_color_win);
3268 manage_window_set_transient(GTK_WINDOW(quote_color_win));
3271 gtk_widget_hide(quote_color_win);
3273 textview_update_message_colors();
3274 main_window_reflect_prefs_all();
3277 static void prefs_quote_colors_dialog_create(void)
3282 GtkWidget *quotelevel1_label;
3283 GtkWidget *quotelevel2_label;
3284 GtkWidget *quotelevel3_label;
3285 GtkWidget *uri_label;
3286 GtkWidget *tgt_folder_label;
3289 GtkWidget *recycle_colors_btn;
3290 GtkWidget *frame_colors;
3292 window = gtk_window_new(GTK_WINDOW_DIALOG);
3293 gtk_container_set_border_width(GTK_CONTAINER(window), 2);
3294 gtk_window_set_title(GTK_WINDOW(window), _("Set message colors"));
3295 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
3296 gtk_window_set_modal(GTK_WINDOW(window), TRUE);
3297 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
3299 vbox = gtk_vbox_new (FALSE, VSPACING);
3300 gtk_container_add (GTK_CONTAINER (window), vbox);
3301 gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
3302 PACK_FRAME(vbox, frame_colors, _("Colors"));
3304 table = gtk_table_new (4, 2, FALSE);
3305 gtk_container_add (GTK_CONTAINER (frame_colors), table);
3306 gtk_container_set_border_width (GTK_CONTAINER (table), 8);
3307 gtk_table_set_row_spacings (GTK_TABLE (table), 2);
3308 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
3311 color_buttons.quote_level1_btn = gtk_button_new();
3312 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level1_btn,
3313 0, 1, 0, 1, 0, 0, 0, 0);
3314 gtk_widget_set_usize (color_buttons.quote_level1_btn, 40, 30);
3315 gtk_container_set_border_width
3316 (GTK_CONTAINER (color_buttons.quote_level1_btn), 5);
3318 color_buttons.quote_level2_btn = gtk_button_new();
3319 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level2_btn,
3320 0, 1, 1, 2, 0, 0, 0, 0);
3321 gtk_widget_set_usize (color_buttons.quote_level2_btn, 40, 30);
3322 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.quote_level2_btn), 5);
3324 color_buttons.quote_level3_btn = gtk_button_new_with_label ("");
3325 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level3_btn,
3326 0, 1, 2, 3, 0, 0, 0, 0);
3327 gtk_widget_set_usize (color_buttons.quote_level3_btn, 40, 30);
3328 gtk_container_set_border_width
3329 (GTK_CONTAINER (color_buttons.quote_level3_btn), 5);
3331 color_buttons.uri_btn = gtk_button_new_with_label ("");
3332 gtk_table_attach (GTK_TABLE (table), color_buttons.uri_btn,
3333 0, 1, 3, 4, 0, 0, 0, 0);
3334 gtk_widget_set_usize (color_buttons.uri_btn, 40, 30);
3335 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.uri_btn), 5);
3337 color_buttons.tgt_folder_btn = gtk_button_new_with_label ("");
3338 gtk_table_attach (GTK_TABLE (table), color_buttons.tgt_folder_btn,
3339 0, 1, 4, 5, 0, 0, 0, 0);
3340 gtk_widget_set_usize (color_buttons.tgt_folder_btn, 40, 30);
3341 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.tgt_folder_btn), 5);
3343 quotelevel1_label = gtk_label_new (_("Quoted Text - First Level"));
3344 gtk_table_attach (GTK_TABLE (table), quotelevel1_label, 1, 2, 0, 1,
3345 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3346 gtk_label_set_justify (GTK_LABEL (quotelevel1_label), GTK_JUSTIFY_LEFT);
3347 gtk_misc_set_alignment (GTK_MISC (quotelevel1_label), 0, 0.5);
3349 quotelevel2_label = gtk_label_new (_("Quoted Text - Second Level"));
3350 gtk_table_attach (GTK_TABLE (table), quotelevel2_label, 1, 2, 1, 2,
3351 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3352 gtk_label_set_justify (GTK_LABEL (quotelevel2_label), GTK_JUSTIFY_LEFT);
3353 gtk_misc_set_alignment (GTK_MISC (quotelevel2_label), 0, 0.5);
3355 quotelevel3_label = gtk_label_new (_("Quoted Text - Third Level"));
3356 gtk_table_attach (GTK_TABLE (table), quotelevel3_label, 1, 2, 2, 3,
3357 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3358 gtk_label_set_justify (GTK_LABEL (quotelevel3_label), GTK_JUSTIFY_LEFT);
3359 gtk_misc_set_alignment (GTK_MISC (quotelevel3_label), 0, 0.5);
3361 uri_label = gtk_label_new (_("URI link"));
3362 gtk_table_attach (GTK_TABLE (table), uri_label, 1, 2, 3, 4,
3363 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3364 gtk_label_set_justify (GTK_LABEL (uri_label), GTK_JUSTIFY_LEFT);
3365 gtk_misc_set_alignment (GTK_MISC (uri_label), 0, 0.5);
3367 tgt_folder_label = gtk_label_new (_("Target folder"));
3368 gtk_table_attach (GTK_TABLE (table), tgt_folder_label, 1, 2, 4, 5,
3369 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3370 gtk_label_set_justify (GTK_LABEL (tgt_folder_label), GTK_JUSTIFY_LEFT);
3371 gtk_misc_set_alignment (GTK_MISC (tgt_folder_label), 0, 0.5);
3373 PACK_CHECK_BUTTON (vbox, recycle_colors_btn,
3374 _("Recycle quote colors"));
3376 gtkut_button_set_create(&hbbox, &ok_btn, _("OK"),
3377 NULL, NULL, NULL, NULL);
3378 gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
3380 gtk_widget_grab_default(ok_btn);
3381 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3382 gtk_signal_connect(GTK_OBJECT(window), "delete_event",
3383 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3384 gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
3385 GTK_SIGNAL_FUNC(prefs_quote_colors_key_pressed),
3388 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level1_btn), "clicked",
3389 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL1");
3390 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level2_btn), "clicked",
3391 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL2");
3392 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level3_btn), "clicked",
3393 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL3");
3394 gtk_signal_connect(GTK_OBJECT(color_buttons.uri_btn), "clicked",
3395 GTK_SIGNAL_FUNC(quote_color_set_dialog), "URI");
3396 gtk_signal_connect(GTK_OBJECT(color_buttons.tgt_folder_btn), "clicked",
3397 GTK_SIGNAL_FUNC(quote_color_set_dialog), "TGTFLD");
3398 gtk_signal_connect(GTK_OBJECT(recycle_colors_btn), "toggled",
3399 GTK_SIGNAL_FUNC(prefs_recycle_colors_toggled), NULL);
3400 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
3401 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3403 /* show message button colors and recycle options */
3404 set_button_bg_color(color_buttons.quote_level1_btn,
3405 prefs_common.quote_level1_col);
3406 set_button_bg_color(color_buttons.quote_level2_btn,
3407 prefs_common.quote_level2_col);
3408 set_button_bg_color(color_buttons.quote_level3_btn,
3409 prefs_common.quote_level3_col);
3410 set_button_bg_color(color_buttons.uri_btn,
3411 prefs_common.uri_col);
3412 set_button_bg_color(color_buttons.tgt_folder_btn,
3413 prefs_common.tgt_folder_col);
3414 gtk_toggle_button_set_active((GtkToggleButton *)recycle_colors_btn,
3415 prefs_common.recycle_quote_colors);
3417 gtk_widget_show_all(vbox);
3418 quote_color_win = window;
3421 static void prefs_quote_colors_key_pressed(GtkWidget *widget,
3422 GdkEventKey *event, gpointer data)
3424 if (event && event->keyval == GDK_Escape)
3428 static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
3430 gchar *type = (gchar *)data;
3431 gchar *title = NULL;
3432 gdouble color[4] = {0.0, 0.0, 0.0, 0.0};
3434 GtkColorSelectionDialog *dialog;
3436 if(g_strcasecmp(type, "LEVEL1") == 0) {
3437 title = _("Pick color for quotation level 1");
3438 rgbvalue = prefs_common.quote_level1_col;
3439 } else if(g_strcasecmp(type, "LEVEL2") == 0) {
3440 title = _("Pick color for quotation level 2");
3441 rgbvalue = prefs_common.quote_level2_col;
3442 } else if(g_strcasecmp(type, "LEVEL3") == 0) {
3443 title = _("Pick color for quotation level 3");
3444 rgbvalue = prefs_common.quote_level3_col;
3445 } else if(g_strcasecmp(type, "URI") == 0) {
3446 title = _("Pick color for URI");
3447 rgbvalue = prefs_common.uri_col;
3448 } else if(g_strcasecmp(type, "TGTFLD") == 0) {
3449 title = _("Pick color for target folder");
3450 rgbvalue = prefs_common.tgt_folder_col;
3452 } else if(g_strcasecmp(type, "Misspelled word") == 0) {
3453 title = _("Pick color for misspelled word");
3454 rgbvalue = prefs_common.misspelled_col;
3456 } else { /* Should never be called */
3457 g_warning("Unrecognized datatype '%s' in quote_color_set_dialog\n", type);
3461 color_dialog = gtk_color_selection_dialog_new(title);
3462 gtk_window_set_position(GTK_WINDOW(color_dialog), GTK_WIN_POS_CENTER);
3463 gtk_window_set_modal(GTK_WINDOW(color_dialog), TRUE);
3464 gtk_window_set_policy(GTK_WINDOW(color_dialog), FALSE, FALSE, FALSE);
3465 manage_window_set_transient(GTK_WINDOW(color_dialog));
3467 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->ok_button),
3468 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_ok), data);
3469 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->cancel_button),
3470 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_cancel), data);
3471 gtk_signal_connect(GTK_OBJECT(color_dialog), "key_press_event",
3472 GTK_SIGNAL_FUNC(quote_colors_set_dialog_key_pressed),
3475 /* preselect the previous color in the color selection dialog */
3476 color[0] = (gdouble) ((rgbvalue & 0xff0000) >> 16) / 255.0;
3477 color[1] = (gdouble) ((rgbvalue & 0x00ff00) >> 8) / 255.0;
3478 color[2] = (gdouble) (rgbvalue & 0x0000ff) / 255.0;
3479 dialog = GTK_COLOR_SELECTION_DIALOG(color_dialog);
3480 gtk_color_selection_set_color
3481 (GTK_COLOR_SELECTION(dialog->colorsel), color);
3483 gtk_widget_show(color_dialog);
3486 static void quote_colors_set_dialog_ok(GtkWidget *widget, gpointer data)
3488 GtkColorSelection *colorsel = (GtkColorSelection *)
3489 ((GtkColorSelectionDialog *)color_dialog)->colorsel;
3491 gint red, green, blue, rgbvalue;
3492 gchar *type = (gchar *)data;
3494 gtk_color_selection_get_color(colorsel, color);
3496 red = (gint) (color[0] * 255.0);
3497 green = (gint) (color[1] * 255.0);
3498 blue = (gint) (color[2] * 255.0);
3499 rgbvalue = (gint) ((red * 0x10000) | (green * 0x100) | blue);
3502 fprintf(stderr, "redc = %f, greenc = %f, bluec = %f\n", color[0], color[1], color[2]);
3503 fprintf(stderr, "red = %d, green = %d, blue = %d\n", red, green, blue);
3504 fprintf(stderr, "Color is %x\n", rgbvalue);
3507 if (g_strcasecmp(type, "LEVEL1") == 0) {
3508 prefs_common.quote_level1_col = rgbvalue;
3509 set_button_bg_color(color_buttons.quote_level1_btn, rgbvalue);
3510 } else if (g_strcasecmp(type, "LEVEL2") == 0) {
3511 prefs_common.quote_level2_col = rgbvalue;
3512 set_button_bg_color(color_buttons.quote_level2_btn, rgbvalue);
3513 } else if (g_strcasecmp(type, "LEVEL3") == 0) {
3514 prefs_common.quote_level3_col = rgbvalue;
3515 set_button_bg_color(color_buttons.quote_level3_btn, rgbvalue);
3516 } else if (g_strcasecmp(type, "URI") == 0) {
3517 prefs_common.uri_col = rgbvalue;
3518 set_button_bg_color(color_buttons.uri_btn, rgbvalue);
3519 } else if (g_strcasecmp(type, "TGTFLD") == 0) {
3520 prefs_common.tgt_folder_col = rgbvalue;
3521 set_button_bg_color(color_buttons.tgt_folder_btn, rgbvalue);
3522 folderview_set_target_folder_color(prefs_common.tgt_folder_col);
3524 } else if (g_strcasecmp(type, "Misspelled word") == 0) {
3525 prefs_common.misspelled_col = rgbvalue;
3526 set_button_bg_color(spelling.misspelled_btn, rgbvalue);
3529 fprintf( stderr, "Unrecognized datatype '%s' in quote_color_set_dialog_ok\n", type );
3531 gtk_widget_destroy(color_dialog);
3534 static void quote_colors_set_dialog_cancel(GtkWidget *widget, gpointer data)
3536 gtk_widget_destroy(color_dialog);
3539 static void quote_colors_set_dialog_key_pressed(GtkWidget *widget,
3543 gtk_widget_destroy(color_dialog);
3546 static void set_button_bg_color(GtkWidget *widget, gint rgbvalue)
3551 gtkut_convert_int_to_gdk_color(rgbvalue, &color);
3552 newstyle = gtk_style_copy(gtk_widget_get_default_style());
3553 newstyle->bg[GTK_STATE_NORMAL] = color;
3554 newstyle->bg[GTK_STATE_PRELIGHT] = color;
3555 newstyle->bg[GTK_STATE_ACTIVE] = color;
3557 gtk_widget_set_style(GTK_WIDGET(widget), newstyle);
3560 static void prefs_enable_message_color_toggled(void)
3564 is_active = gtk_toggle_button_get_active
3565 (GTK_TOGGLE_BUTTON(message.chkbtn_enablecol));
3566 gtk_widget_set_sensitive(message.button_edit_col, is_active);
3567 prefs_common.enable_color = is_active;
3570 static void prefs_recycle_colors_toggled(GtkWidget *widget)
3574 is_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
3575 prefs_common.recycle_quote_colors = is_active;
3578 static void prefs_font_select(GtkButton *button, GtkEntry *entry)
3582 g_return_if_fail(entry != NULL);
3584 if (!font_sel_win) {
3585 font_sel_win = gtk_font_selection_dialog_new
3586 (_("Font selection"));
3587 gtk_window_position(GTK_WINDOW(font_sel_win),
3588 GTK_WIN_POS_CENTER);
3589 gtk_signal_connect(GTK_OBJECT(font_sel_win), "delete_event",
3590 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3593 (GTK_OBJECT(font_sel_win), "key_press_event",
3594 GTK_SIGNAL_FUNC(prefs_font_selection_key_pressed),
3596 gtk_signal_connect_object
3597 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->cancel_button),
3599 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3600 GTK_OBJECT(font_sel_win));
3603 if(font_sel_conn_id) {
3604 gtk_signal_disconnect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button), font_sel_conn_id);
3606 font_sel_conn_id = gtk_signal_connect
3607 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button),
3609 GTK_SIGNAL_FUNC(prefs_font_selection_ok),
3611 printf("%i\n", font_sel_conn_id);
3613 font_name = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
3614 gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(font_sel_win), font_name);
3616 manage_window_set_transient(GTK_WINDOW(font_sel_win));
3617 gtk_window_set_modal(GTK_WINDOW(font_sel_win), TRUE);
3618 gtk_widget_grab_focus
3619 (GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button);
3620 gtk_widget_show(font_sel_win);
3623 static void prefs_font_selection_key_pressed(GtkWidget *widget,
3627 if (event && event->keyval == GDK_Escape)
3628 gtk_widget_hide(font_sel_win);
3631 static void prefs_font_selection_ok(GtkButton *button, GtkEntry *entry)
3635 fontname = gtk_font_selection_dialog_get_font_name
3636 (GTK_FONT_SELECTION_DIALOG(font_sel_win));
3639 gtk_entry_set_text(entry, fontname);
3644 gtk_widget_hide(font_sel_win);
3647 static void prefs_keybind_select(void)
3654 GtkWidget *confirm_area;
3656 GtkWidget *cancel_btn;
3658 window = gtk_window_new (GTK_WINDOW_DIALOG);
3659 gtk_container_set_border_width (GTK_CONTAINER (window), 8);
3660 gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
3661 gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
3662 gtk_window_set_modal (GTK_WINDOW (window), TRUE);
3663 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
3664 manage_window_set_transient (GTK_WINDOW (window));
3666 vbox1 = gtk_vbox_new (FALSE, VSPACING);
3667 gtk_container_add (GTK_CONTAINER (window), vbox1);
3668 gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
3670 hbox1 = gtk_hbox_new (FALSE, 8);
3671 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3673 label = gtk_label_new
3674 (_("Select the preset of key bindings.\n"
3675 "You can also modify each menu's shortcuts by pressing\n"
3676 "any key(s) when placing the mouse pointer on the item."));
3677 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
3678 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
3680 hbox1 = gtk_hbox_new (FALSE, 8);
3681 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3683 combo = gtk_combo_new ();
3684 gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
3685 gtkut_combo_set_items (GTK_COMBO (combo),
3691 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
3693 hbox1 = gtk_hbox_new (FALSE, 8);
3694 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
3696 gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
3697 &cancel_btn, _("Cancel"), NULL, NULL);
3698 gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
3699 gtk_widget_grab_default (ok_btn);
3701 MANAGE_WINDOW_SIGNALS_CONNECT(window);
3702 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
3703 GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
3704 gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
3705 GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
3706 gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
3707 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
3709 gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
3710 GTK_SIGNAL_FUNC (prefs_keybind_cancel),
3713 gtk_widget_show_all(window);
3715 keybind.window = window;
3716 keybind.combo = combo;
3719 static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
3722 if (event && event->keyval == GDK_Escape)
3723 prefs_keybind_cancel();
3726 static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
3729 prefs_keybind_cancel();
3733 static void prefs_keybind_cancel(void)
3735 gtk_widget_destroy(keybind.window);
3736 keybind.window = NULL;
3737 keybind.combo = NULL;
3740 static void prefs_keybind_apply_clicked(GtkWidget *widget)
3742 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
3746 static gchar *default_menurc =
3747 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3748 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
3749 "(menu-path \"<Main>/File/Print...\" \"\")\n"
3750 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
3752 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3753 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3754 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3755 "(menu-path \"<Main>/Edit/Search folder...\" \"<shift><control>F\")\n"
3757 "(menu-path \"<Main>/View/Expand Summary View\" \"V\")\n"
3758 "(menu-path \"<Main>/View/Expand Message View\" \"<shift>V\")\n"
3759 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3760 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3761 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3762 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3763 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3764 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3765 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3766 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3767 "(menu-path \"<Main>/View/Show all header\" \"<control>H\")\n"
3768 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3770 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3771 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3772 "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
3773 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3774 "(menu-path \"<Main>/Message/Reply to sender\" \"\")\n"
3775 "(menu-path \"<Main>/Message/Reply to all\" \"<shift><control>R\")\n"
3776 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
3777 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
3778 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3779 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
3780 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
3781 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3782 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3783 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3784 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3786 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3787 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3788 "(menu-path \"<Main>/Tools/Log window\" \"<control>L\")\n"
3790 "(menu-path \"<Compose>/File/Close\" \"<control>W\")\n"
3791 "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
3792 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
3793 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
3794 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
3795 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
3796 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
3798 static gchar *mew_wl_menurc =
3799 "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
3800 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
3801 "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
3802 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
3804 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3805 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3806 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3807 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3809 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3810 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3811 "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
3812 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3813 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3814 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3815 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3816 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3817 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3818 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3819 "(menu-path \"<Main>/View/Show all header\" \"<shift>H\")\n"
3820 "(menu-path \"<Main>/View/Update\" \"<shift>S\")\n"
3822 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3823 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3824 "(menu-path \"<Main>/Message/Compose an email message\" \"W\")\n"
3825 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3826 "(menu-path \"<Main>/Message/Reply to sender\" \"\")\n"
3827 "(menu-path \"<Main>/Message/Reply to all\" \"<shift>A\")\n"
3828 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3829 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n" */
3830 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
3831 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
3832 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3833 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3834 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3835 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3836 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
3838 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3839 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3840 "(menu-path \"<Main>/Tools/Log window\" \"<control>L\")\n"
3842 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3843 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3844 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3845 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3846 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3847 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3848 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3850 static gchar *mutt_menurc =
3851 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3852 "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
3853 "(menu-path \"<Main>/File/Print...\" \"P\")\n"
3854 "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
3856 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3857 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3858 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3859 "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
3861 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
3862 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3863 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
3864 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
3865 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
3866 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
3867 "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
3868 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3869 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3870 "(menu-path \"<Main>/View/Show all header\" \"<control>H\")\n"
3871 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3873 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3874 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3875 "(menu-path \"<Main>/Message/Compose new message\" \"M\")\n"
3876 "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
3877 "(menu-path \"<Main>/Message/Reply to all\" \"G\")\n"
3878 "(menu-path \"<Main>/Message/Reply to sender\" \"\")\n"
3879 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3880 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
3881 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3882 "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
3883 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3884 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
3885 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3886 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
3887 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3889 "(menu-path \"<Main>/Tools/Address book\" \"<shift><control>A\")\n"
3890 "(menu-path \"<Main>/Tools/Execute\" \"X\")\n"
3891 "(menu-path \"<Main>/Tools/Log window\" \"<control>L\")\n"
3893 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3894 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3895 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3896 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3897 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3898 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3899 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3901 static gchar *old_sylpheed_menurc =
3902 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3903 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
3904 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
3905 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
3907 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3908 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3909 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3910 "(menu-path \"<Main>/Edit/Search folder...\" \"<control>S\")\n"
3912 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3913 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3914 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3915 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3916 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3917 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3918 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3919 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
3920 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
3921 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3922 "(menu-path \"<Main>/View/Show all header\" \"<control>H\")\n"
3923 "(menu-path \"<Main>/View/Update\" \"<alt>U\")\n"
3925 "(menu-path \"<Main>/Message/Get new mail\" \"<alt>I\")\n"
3926 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><alt>I\")\n"
3927 "(menu-path \"<Main>/Message/Compose an email message\" \"<alt>N\")\n"
3928 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
3929 "(menu-path \"<Main>/Message/Reply to sender\" \"<control><alt>R\")\n"
3930 "(menu-path \"<Main>/Message/Reply to all\" \"<shift><alt>R\")\n"
3931 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
3932 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n" */
3933 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
3934 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
3935 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
3936 "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
3937 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3938 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
3939 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3941 "(menu-path \"<Main>/Tools/Address book\" \"<alt>A\")\n"
3942 "(menu-path \"<Main>/Tools/Execute\" \"<alt>X\")\n"
3943 "(menu-path \"<Main>/Tools/Log window\" \"<alt>L\")\n"
3945 "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
3946 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3947 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
3948 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
3949 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
3950 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
3951 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
3953 static gchar *empty_menurc =
3954 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3955 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
3956 "(menu-path \"<Main>/File/Print...\" \"\")\n"
3957 "(menu-path \"<Main>/File/Exit\" \"\")\n"
3959 "(menu-path \"<Main>/Edit/Copy\" \"\")\n"
3960 "(menu-path \"<Main>/Edit/Select all\" \"\")\n"
3961 "(menu-path \"<Main>/Edit/Find in current message...\" \"\")\n"
3962 "(menu-path \"<Main>/Edit/Search folder...\" \"\")\n"
3964 "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
3965 "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
3966 "(menu-path \"<Main>/View/Thread view\" \"\")\n"
3967 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
3968 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
3969 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
3970 "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
3971 "(menu-path \"<Main>/View/Go to/Other folder...\" \"\")\n"
3972 "(menu-path \"<Main>/View/Open in new window\" \"\")\n"
3973 "(menu-path \"<Main>/View/View source\" \"\")\n"
3974 "(menu-path \"<Main>/View/Show all header\" \"\")\n"
3975 "(menu-path \"<Main>/View/Update\" \"\")\n"
3977 "(menu-path \"<Main>/Message/Get new mail\" \"\")\n"
3978 "(menu-path \"<Main>/Message/Get from all accounts\" \"\")\n"
3979 "(menu-path \"<Main>/Message/Compose an email message\" \"\")\n"
3980 "(menu-path \"<Main>/Message/Reply\" \"\")\n"
3981 "(menu-path \"<Main>/Message/Reply to sender\" \"\")\n"
3982 "(menu-path \"<Main>/Message/Reply to all\" \"\")\n"
3983 "(menu-path \"<Main>/Message/Forward\" \"\")\n"
3984 /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
3985 "(menu-path \"<Main>/Message/Move...\" \"\")\n"
3986 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
3987 "(menu-path \"<Main>/Message/Delete\" \"\")\n"
3988 "(menu-path \"<Main>/Message/Mark/Mark\" \"\")\n"
3989 "(menu-path \"<Main>/Message/Mark/Unmark\" \"\")\n"
3990 "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"\")\n"
3991 "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
3993 "(menu-path \"<Main>/Tools/Address book\" \"\")\n"
3994 "(menu-path \"<Main>/Tools/Execute\" \"\")\n"
3995 "(menu-path \"<Main>/Tools/Log window\" \"\")\n"
3997 "(menu-path \"<Compose>/File/Close\" \"\")\n"
3998 "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
3999 "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
4000 "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
4001 "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
4002 "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
4003 "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
4005 text = gtk_entry_get_text(entry);
4007 if (!strcmp(text, _("Default")))
4008 rc_str = default_menurc;
4009 else if (!strcmp(text, "Mew / Wanderlust"))
4010 rc_str = mew_wl_menurc;
4011 else if (!strcmp(text, "Mutt"))
4012 rc_str = mutt_menurc;
4013 else if (!strcmp(text, _("Old Sylpheed")))
4014 rc_str = old_sylpheed_menurc;
4018 gtk_item_factory_parse_rc_string(empty_menurc);
4019 gtk_item_factory_parse_rc_string(rc_str);
4021 gtk_widget_destroy(keybind.window);
4022 keybind.window = NULL;
4023 keybind.combo = NULL;
4026 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
4029 GtkWidget *menuitem;
4032 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4033 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4034 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
4035 g_free(*((gchar **)pparam->data));
4036 *((gchar **)pparam->data) = g_strdup(charset);
4039 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
4042 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4044 GtkWidget *menuitem;
4048 g_return_if_fail(optmenu != NULL);
4049 g_return_if_fail(*((gchar **)pparam->data) != NULL);
4051 menu = gtk_option_menu_get_menu(optmenu);
4052 for (cur = GTK_MENU_SHELL(menu)->children;
4053 cur != NULL; cur = cur->next) {
4054 menuitem = GTK_WIDGET(cur->data);
4055 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
4056 if (!strcmp(charset, *((gchar **)pparam->data))) {
4057 gtk_option_menu_set_history(optmenu, n);
4063 gtk_option_menu_set_history(optmenu, 0);
4064 prefs_common_charset_set_data_from_optmenu(pparam);
4067 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
4070 GtkWidget *menuitem;
4072 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4073 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4074 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
4075 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4078 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
4080 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
4081 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4083 GtkWidget *menuitem;
4086 case RECV_DIALOG_ALWAYS:
4087 gtk_option_menu_set_history(optmenu, 0);
4089 case RECV_DIALOG_ACTIVE:
4090 gtk_option_menu_set_history(optmenu, 1);
4092 case RECV_DIALOG_NEVER:
4093 gtk_option_menu_set_history(optmenu, 2);
4099 menu = gtk_option_menu_get_menu(optmenu);
4100 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4101 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
4104 static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
4107 prefs_common_cancel();
4111 static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
4114 if (event && event->keyval == GDK_Escape)
4115 prefs_common_cancel();
4118 static void prefs_common_ok(void)
4120 prefs_common_apply();
4121 gtk_widget_hide(dialog.window);
4126 static void prefs_common_apply(void)
4128 gchar *entry_pixmap_theme_str;
4129 gboolean update_pixmap_theme;
4131 entry_pixmap_theme_str = gtk_entry_get_text(GTK_ENTRY(interface.entry_pixmap_theme));
4132 if (entry_pixmap_theme_str &&
4133 (strcmp(prefs_common.pixmap_theme_path, entry_pixmap_theme_str) != 0) )
4134 update_pixmap_theme = TRUE;
4136 update_pixmap_theme = FALSE;
4138 prefs_set_data_from_dialog(param);
4140 if (update_pixmap_theme)
4142 main_window_reflect_prefs_all_real(TRUE);
4143 compose_reflect_prefs_pixmap_theme();
4145 main_window_reflect_prefs_all_real(FALSE);
4147 prefs_common_save_config();
4149 inc_autocheck_timer_remove();
4150 inc_autocheck_timer_set();
4153 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
4156 GtkWidget *menuitem;
4158 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4159 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4160 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
4161 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4164 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
4166 NextUnreadMsgDialogShow dialog_show;
4167 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4169 GtkWidget *menuitem;
4171 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
4173 switch (dialog_show) {
4174 case NEXTUNREADMSGDIALOG_ALWAYS:
4175 gtk_option_menu_set_history(optmenu, 0);
4177 case NEXTUNREADMSGDIALOG_ASSUME_YES:
4178 gtk_option_menu_set_history(optmenu, 1);
4180 case NEXTUNREADMSGDIALOG_ASSUME_NO:
4181 gtk_option_menu_set_history(optmenu, 2);
4185 menu = gtk_option_menu_get_menu(optmenu);
4186 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4187 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
4190 static void prefs_common_cancel(void)
4192 gtk_widget_hide(dialog.window);
4197 static struct _ComposePrefs
4201 GtkWidget *close_btn;
4204 static void compose_prefs_key_pressed(GtkWidget *widget, GdkEventKey *event);
4205 static gint compose_prefs_delete_event(GtkWidget *widget, GdkEventAny *event);
4206 static void compose_prefs_close(GtkWidget *widget);
4207 static void compose_prefs_fmt_create(void);
4209 static void compose_prefs_close(GtkWidget *widget)
4211 gtk_widget_hide(composeprefs.window);
4214 static gint compose_prefs_delete_event(GtkWidget *widget, GdkEventAny *event)
4216 gtk_widget_hide(composeprefs.window);
4221 static void compose_prefs_key_pressed(GtkWidget *widget, GdkEventKey *event)
4223 if (event && event->keyval == GDK_Escape) {
4224 gtk_widget_hide(composeprefs.window);
4228 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
4231 GtkWidget *menuitem;
4233 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
4234 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4235 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
4236 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
4239 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
4241 RecvDialogShow dialog_show;
4242 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
4244 GtkWidget *menuitem;
4246 dialog_show = *((RecvDialogShow *)pparam->data);
4248 switch (dialog_show) {
4249 case RECVDIALOG_ALWAYS:
4250 gtk_option_menu_set_history(optmenu, 0);
4252 case RECVDIALOG_WINDOW_ACTIVE:
4253 gtk_option_menu_set_history(optmenu, 1);
4255 case RECVDIALOG_NEVER:
4256 gtk_option_menu_set_history(optmenu, 2);
4261 menu = gtk_option_menu_get_menu(optmenu);
4262 menuitem = gtk_menu_get_active(GTK_MENU(menu));
4263 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));