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"
61 PrefsCommon prefs_common;
63 static PrefsDialog dialog;
65 static struct Receive {
66 GtkWidget *checkbtn_incext;
67 GtkWidget *entry_incext;
68 GtkWidget *button_incext;
70 GtkWidget *checkbtn_local;
71 GtkWidget *checkbtn_filter_on_inc;
72 GtkWidget *entry_spool;
74 GtkWidget *checkbtn_autochk;
75 GtkWidget *spinbtn_autochk;
76 GtkObject *spinbtn_autochk_adj;
78 GtkWidget *checkbtn_chkonstartup;
79 GtkWidget *checkbtn_noerrorpanel;
80 GtkWidget *checkbtn_scan_after_inc;
83 GtkWidget *spinbtn_maxarticle;
84 GtkObject *spinbtn_maxarticle_adj;
88 GtkWidget *checkbtn_extsend;
89 GtkWidget *entry_extsend;
90 GtkWidget *button_extsend;
92 GtkWidget *checkbtn_savemsg;
93 GtkWidget *checkbtn_queuemsg;
95 GtkWidget *optmenu_charset;
97 GtkWidget *checkbtn_returnreceipt;
100 static struct Compose {
101 GtkWidget *checkbtn_autosig;
102 GtkWidget *entry_sigsep;
104 GtkWidget *entry_fw_quotemark;
105 GtkWidget *text_fw_quotefmt;
107 GtkWidget *checkbtn_autoextedit;
108 GtkWidget *spinbtn_undolevel;
109 GtkObject *spinbtn_undolevel_adj;
110 GtkWidget *checkbtn_reply_account_autosel;
111 GtkWidget *checkbtn_forward_account_autosel;
112 GtkWidget *checkbtn_reedit_account_autosel;
114 GtkWidget *spinbtn_linewrap;
115 GtkObject *spinbtn_linewrap_adj;
116 GtkWidget *checkbtn_wrapquote;
117 GtkWidget *checkbtn_wrapatsend;
119 GtkWidget *checkbtn_quote;
120 GtkWidget *checkbtn_forward_as_attachment;
121 GtkWidget *checkbtn_smart_wrapping;
122 GtkWidget *checkbtn_block_cursor;
123 GtkWidget *checkbtn_reply_with_quote;
128 static struct Spelling {
129 GtkWidget *checkbtn_enable_pspell;
130 GtkWidget *entry_pspell_path;
131 GtkWidget *btn_pspell_path;
132 GtkWidget *optmenu_dictionary;
133 GtkWidget *optmenu_sugmode;
137 static struct Quote {
138 GtkWidget *entry_quotemark;
139 GtkWidget *text_quotefmt;
141 GtkWidget *entry_fw_quotemark;
142 GtkWidget *text_fw_quotefmt;
145 static struct Display {
146 GtkWidget *entry_textfont;
147 GtkWidget *button_textfont;
149 GtkWidget *entry_smallfont;
150 GtkWidget *entry_normalfont;
151 GtkWidget *entry_boldfont;
153 GtkWidget *chkbtn_folder_unread;
155 GtkWidget *chkbtn_transhdr;
157 GtkWidget *chkbtn_swapfrom;
158 GtkWidget *chkbtn_hscrollbar;
159 GtkWidget *chkbtn_useaddrbook;
160 GtkWidget *chkbtn_expand_thread;
161 GtkWidget *chkbtn_bold_unread;
163 GtkWidget *entry_datefmt;
166 static struct Message {
167 GtkWidget *chkbtn_enablecol;
168 GtkWidget *button_edit_col;
169 GtkWidget *chkbtn_mbalnum;
170 GtkWidget *chkbtn_disphdrpane;
171 GtkWidget *chkbtn_disphdr;
172 GtkWidget *spinbtn_linespc;
173 GtkObject *spinbtn_linespc_adj;
174 GtkWidget *chkbtn_headspc;
176 GtkWidget *chkbtn_smoothscroll;
177 GtkWidget *spinbtn_scrollstep;
178 GtkObject *spinbtn_scrollstep_adj;
179 GtkWidget *chkbtn_halfpage;
183 static struct Privacy {
184 GtkWidget *checkbtn_auto_check_signatures;
185 GtkWidget *checkbtn_gpg_signature_popup;
186 GtkWidget *checkbtn_passphrase_grab;
187 GtkWidget *checkbtn_gpg_warning;
188 GtkWidget *optmenu_default_signkey;
192 static struct Interface {
193 /* GtkWidget *checkbtn_emacs; */
194 GtkWidget *checkbtn_openunread;
195 GtkWidget *checkbtn_openinbox;
196 GtkWidget *checkbtn_immedexec;
197 GtkWidget *checkbtn_addaddrbyclick;
198 GtkWidget *optmenu_recvdialog;
199 GtkWidget *optmenu_nextunreadmsgdialog;
200 GtkWidget *keybind_combo;
203 static struct Other {
204 GtkWidget *uri_combo;
205 GtkWidget *uri_entry;
206 GtkWidget *printcmd_entry;
207 GtkWidget *exteditor_combo;
208 GtkWidget *exteditor_entry;
209 GtkWidget *checkbtn_confonexit;
210 GtkWidget *checkbtn_cleanonexit;
211 GtkWidget *checkbtn_askonclean;
212 GtkWidget *checkbtn_warnqueued;
215 static struct MessageColorButtons {
216 GtkWidget *quote_level1_btn;
217 GtkWidget *quote_level2_btn;
218 GtkWidget *quote_level3_btn;
220 GtkWidget *tgt_folder_btn;
221 GtkWidget *misspelled_btn;
224 static GtkWidget *quote_desc_win;
225 static GtkWidget *font_sel_win;
226 static guint font_sel_conn_id;
227 static GtkWidget *quote_color_win;
228 static GtkWidget *color_dialog;
230 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam);
231 static void prefs_common_charset_set_optmenu (PrefParam *pparam);
233 static void prefs_common_default_signkey_set_data_from_optmenu
235 static void prefs_common_default_signkey_set_optmenu (PrefParam *pparam);
237 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam);
238 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam);
239 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam);
240 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam);
243 static void prefs_dictionary_set_data_from_optmenu (PrefParam *param);
244 static void prefs_dictionary_set_optmenu (PrefParam *pparam);
245 static void prefs_speller_sugmode_set_data_from_optmenu (PrefParam *pparam);
246 static void prefs_speller_sugmode_set_optmenu (PrefParam *pparam);
251 parameter name, default value, pointer to the prefs variable, data type,
252 pointer to the widget pointer,
253 pointer to the function for data setting,
254 pointer to the function for widget setting
257 static PrefParam param[] = {
259 {"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
260 &receive.checkbtn_incext,
261 prefs_set_data_from_toggle, prefs_set_toggle},
262 {"ext_inc_path", DEFAULT_INC_PATH, &prefs_common.extinc_cmd, P_STRING,
263 &receive.entry_incext,
264 prefs_set_data_from_entry, prefs_set_entry},
266 {"inc_local", "TRUE", &prefs_common.inc_local, P_BOOL,
267 &receive.checkbtn_local,
268 prefs_set_data_from_toggle, prefs_set_toggle},
269 {"filter_on_inc_local", "FALSE", &prefs_common.filter_on_inc, P_BOOL,
270 &receive.checkbtn_filter_on_inc,
271 prefs_set_data_from_toggle, prefs_set_toggle},
272 {"spool_path", DEFAULT_SPOOL_PATH, &prefs_common.spool_path, P_STRING,
273 &receive.entry_spool,
274 prefs_set_data_from_entry, prefs_set_entry},
276 {"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
277 &receive.checkbtn_autochk,
278 prefs_set_data_from_toggle, prefs_set_toggle},
279 {"autochk_interval", "10", &prefs_common.autochk_itv, P_INT,
280 &receive.spinbtn_autochk,
281 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
282 {"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
283 &receive.checkbtn_chkonstartup,
284 prefs_set_data_from_toggle, prefs_set_toggle},
285 {"noerrorpanel", "FALSE", &prefs_common.noerrorpanel, P_BOOL,
286 &receive.checkbtn_noerrorpanel,
287 prefs_set_data_from_toggle, prefs_set_toggle},
288 {"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
289 P_BOOL, &receive.checkbtn_scan_after_inc,
290 prefs_set_data_from_toggle, prefs_set_toggle},
291 {"max_news_articles", "300", &prefs_common.max_articles, P_INT,
292 &receive.spinbtn_maxarticle,
293 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
296 {"use_ext_sendmail", "FALSE", &prefs_common.use_extsend, P_BOOL,
297 &send.checkbtn_extsend,
298 prefs_set_data_from_toggle, prefs_set_toggle},
299 {"ext_sendmail_cmd", DEFAULT_SENDMAIL_CMD,
300 &prefs_common.extsend_cmd, P_STRING,
301 &send.entry_extsend, prefs_set_data_from_entry, prefs_set_entry},
302 {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
303 &send.checkbtn_savemsg,
304 prefs_set_data_from_toggle, prefs_set_toggle},
305 {"queue_message", "FALSE", &prefs_common.queue_msg, P_BOOL,
306 &send.checkbtn_queuemsg,
307 prefs_set_data_from_toggle, prefs_set_toggle},
309 {"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
310 &send.optmenu_charset,
311 prefs_common_charset_set_data_from_optmenu,
312 prefs_common_charset_set_optmenu},
315 {"auto_signature", "TRUE", &prefs_common.auto_sig, P_BOOL,
316 &compose.checkbtn_autosig,
317 prefs_set_data_from_toggle, prefs_set_toggle},
318 {"signature_separator", "-- ", &prefs_common.sig_sep, P_STRING,
319 &compose.entry_sigsep, prefs_set_data_from_entry, prefs_set_entry},
321 {"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
322 &compose.checkbtn_autoextedit,
323 prefs_set_data_from_toggle, prefs_set_toggle},
325 {"undo_level", "50", &prefs_common.undolevels, P_INT,
326 &compose.spinbtn_undolevel,
327 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
329 {"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
330 &compose.spinbtn_linewrap,
331 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
332 {"linewrap_quotation", "FALSE", &prefs_common.linewrap_quote, P_BOOL,
333 &compose.checkbtn_wrapquote,
334 prefs_set_data_from_toggle, prefs_set_toggle},
335 {"linewrap_before_sending", "FALSE",
336 &prefs_common.linewrap_at_send, P_BOOL,
337 &compose.checkbtn_wrapatsend,
338 prefs_set_data_from_toggle, prefs_set_toggle},
339 {"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
340 P_BOOL, &compose.checkbtn_forward_as_attachment,
341 prefs_set_data_from_toggle, prefs_set_toggle},
342 {"smart_wrapping", "TRUE", &prefs_common.smart_wrapping,
343 P_BOOL, &compose.checkbtn_smart_wrapping,
344 prefs_set_data_from_toggle, prefs_set_toggle},
345 {"block_cursor", "FALSE", &prefs_common.block_cursor,
346 P_BOOL, &compose.checkbtn_block_cursor,
347 prefs_set_data_from_toggle, prefs_set_toggle},
349 {"enable_pspell", "TRUE", &prefs_common.enable_pspell,
350 P_BOOL, &spelling.checkbtn_enable_pspell,
351 prefs_set_data_from_toggle, prefs_set_toggle},
352 {"pspell_path", "/usr/local/share/pspell/", &prefs_common.pspell_path,
353 P_STRING, &spelling.entry_pspell_path,
354 prefs_set_data_from_entry, prefs_set_entry},
355 {"dictionary", "", &prefs_common.dictionary,
356 P_STRING, &spelling.optmenu_dictionary,
357 prefs_dictionary_set_data_from_optmenu, prefs_dictionary_set_optmenu },
358 {"pspell_sugmode", "1", &prefs_common.pspell_sugmode,
359 P_INT, &spelling.optmenu_sugmode,
360 prefs_speller_sugmode_set_data_from_optmenu, prefs_speller_sugmode_set_optmenu },
361 {"misspelled_color", "16711680", &prefs_common.misspelled_col, P_INT,
364 {"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
365 &compose.checkbtn_reply_with_quote, prefs_set_data_from_toggle, prefs_set_toggle},
367 /* Account autoselection */
368 {"reply_account_autoselect", "TRUE",
369 &prefs_common.reply_account_autosel, P_BOOL,
370 &compose.checkbtn_reply_account_autosel,
371 prefs_set_data_from_toggle, prefs_set_toggle},
372 {"forward_account_autoselect", "TRUE",
373 &prefs_common.forward_account_autosel, P_BOOL,
374 &compose.checkbtn_forward_account_autosel,
375 prefs_set_data_from_toggle, prefs_set_toggle},
376 {"reedit_account_autoselect", "TRUE",
377 &prefs_common.reedit_account_autosel, P_BOOL,
378 &compose.checkbtn_reedit_account_autosel,
379 prefs_set_data_from_toggle, prefs_set_toggle},
381 {"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
385 {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
386 "e.entry_quotemark, prefs_set_data_from_entry, prefs_set_entry},
387 {"reply_quote_format", "On %d\\n%f wrote:\\n\\n%Q",
388 &prefs_common.quotefmt, P_STRING, "e.text_quotefmt,
389 prefs_set_data_from_text, prefs_set_text},
391 {"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
392 "e.entry_fw_quotemark,
393 prefs_set_data_from_entry, prefs_set_entry},
394 {"forward_quote_format",
395 "\\n\\nBegin forwarded message:\\n\\n"
396 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
397 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M",
398 &prefs_common.fw_quotefmt, P_STRING, "e.text_fw_quotefmt,
399 prefs_set_data_from_text, prefs_set_text},
402 {"widget_font", NULL, &prefs_common.widgetfont, P_STRING,
404 {"message_font", "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*",
405 &prefs_common.textfont, P_STRING,
406 &display.entry_textfont,
407 prefs_set_data_from_entry, prefs_set_entry},
408 {"small_font", "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*",
409 &prefs_common.smallfont, P_STRING,
410 &display.entry_smallfont,
411 prefs_set_data_from_entry, prefs_set_entry},
412 {"bold_font", "-*-helvetica-bold-r-normal--12-*-*-*-*-*-*-*",
413 &prefs_common.boldfont, P_STRING,
414 &display.entry_boldfont,
415 prefs_set_data_from_entry, prefs_set_entry},
416 {"normal_font", "-*-helvetica-medium-r-normal--12-*-*-*-*-*-*-*",
417 &prefs_common.normalfont, P_STRING,
418 &display.entry_normalfont,
419 prefs_set_data_from_entry, prefs_set_entry},
422 {"display_folder_unread_num", "TRUE",
423 &prefs_common.display_folder_unread, P_BOOL,
424 &display.chkbtn_folder_unread,
425 prefs_set_data_from_toggle, prefs_set_toggle},
427 {"translate_header", "TRUE", &prefs_common.trans_hdr, P_BOOL,
428 &display.chkbtn_transhdr,
429 prefs_set_data_from_toggle, prefs_set_toggle},
431 /* Display: Summary View */
432 {"enable_swap_from", "TRUE", &prefs_common.swap_from, P_BOOL,
433 &display.chkbtn_swapfrom,
434 prefs_set_data_from_toggle, prefs_set_toggle},
435 {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
436 &display.chkbtn_hscrollbar,
437 prefs_set_data_from_toggle, prefs_set_toggle},
438 {"use_address_book", "TRUE", &prefs_common.use_addr_book, P_BOOL,
439 &display.chkbtn_useaddrbook,
440 prefs_set_data_from_toggle, prefs_set_toggle},
441 {"date_format", "%y/%m/%d(%a) %H:%M", &prefs_common.date_format,
442 P_STRING, &display.entry_datefmt,
443 prefs_set_data_from_entry, prefs_set_entry},
444 {"expand_thread", "TRUE", &prefs_common.expand_thread, P_BOOL,
445 &display.chkbtn_expand_thread,
446 prefs_set_data_from_toggle, prefs_set_toggle},
447 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
448 &display.chkbtn_bold_unread,
449 prefs_set_data_from_toggle, prefs_set_toggle},
451 {"enable_thread", "TRUE", &prefs_common.enable_thread, P_BOOL,
454 {"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
456 {"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
459 {"summary_col_show_mark", "TRUE",
460 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
461 {"summary_col_show_unread", "TRUE",
462 &prefs_common.summary_col_visible[S_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
463 {"summary_col_show_mime", "TRUE",
464 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
465 {"summary_col_show_subject", "TRUE",
466 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
467 {"summary_col_show_from", "TRUE",
468 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
469 {"summary_col_show_date", "TRUE",
470 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
471 {"summary_col_show_size", "TRUE",
472 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
473 {"summary_col_show_number", "FALSE",
474 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
475 {"summary_col_show_score", "FALSE",
476 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
477 {"summary_col_show_locked", "FALSE",
478 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
480 {"summary_col_pos_mark", "0",
481 &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
482 {"summary_col_pos_unread", "1",
483 &prefs_common.summary_col_pos[S_COL_UNREAD], P_INT, NULL, NULL, NULL},
484 {"summary_col_pos_mime", "2",
485 &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
486 {"summary_col_pos_subject", "3",
487 &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
488 {"summary_col_pos_from", "4",
489 &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
490 {"summary_col_pos_date", "5",
491 &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
492 {"summary_col_pos_size", "6",
493 &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
494 {"summary_col_pos_number", "7",
495 &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
496 {"summary_col_pos_score", "8",
497 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
498 {"summary_col_pos_locked", "9",
499 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
501 {"summary_col_size_mark", "10",
502 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
503 {"summary_col_size_unread", "13",
504 &prefs_common.summary_col_size[S_COL_UNREAD], P_INT, NULL, NULL, NULL},
505 {"summary_col_size_mime", "10",
506 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
507 {"summary_col_size_subject", "200",
508 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
509 {"summary_col_size_from", "120",
510 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
511 {"summary_col_size_date", "118",
512 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
513 {"summary_col_size_size", "45",
514 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
515 {"summary_col_size_number", "40",
516 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
517 {"summary_col_size_score", "40",
518 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
519 {"summary_col_size_locked", "13",
520 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
523 {"folderview_width", "179", &prefs_common.folderview_width, P_INT,
525 {"folderview_height", "600", &prefs_common.folderview_height, P_INT,
527 {"folder_col_folder", "150", &prefs_common.folder_col_folder, P_INT,
529 {"folder_col_new", "32", &prefs_common.folder_col_new, P_INT,
531 {"folder_col_unread", "32", &prefs_common.folder_col_unread, P_INT,
533 {"folder_col_total", "32", &prefs_common.folder_col_total, P_INT,
536 {"summaryview_width", "600", &prefs_common.summaryview_width, P_INT,
538 {"summaryview_height", "173", &prefs_common.summaryview_height, P_INT,
541 {"mainview_x", "64", &prefs_common.mainview_x, P_INT,
543 {"mainview_y", "64", &prefs_common.mainview_y, P_INT,
545 {"mainview_width", "600", &prefs_common.mainview_width, P_INT,
547 {"mainview_height", "600", &prefs_common.mainview_height, P_INT,
549 {"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
551 {"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
553 {"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
555 {"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
557 {"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
559 {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
561 {"compose_width", "600", &prefs_common.compose_width, P_INT,
563 {"compose_height", "560", &prefs_common.compose_height, P_INT,
567 {"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
568 &message.chkbtn_enablecol,
569 prefs_set_data_from_toggle, prefs_set_toggle},
571 {"quote_level1_color", "179", &prefs_common.quote_level1_col, P_INT,
573 {"quote_level2_color", "179", &prefs_common.quote_level2_col, P_INT,
575 {"quote_level3_color", "179", &prefs_common.quote_level3_col, P_INT,
577 {"uri_color", "32512", &prefs_common.uri_col, P_INT,
579 {"target_folder_color", "14294218", &prefs_common.tgt_folder_col, P_INT,
581 {"signature_color", "0", &prefs_common.sig_col, P_USHORT,
583 {"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
584 P_BOOL, NULL, NULL, NULL},
586 {"convert_mb_alnum", "FALSE", &prefs_common.conv_mb_alnum, P_BOOL,
587 &message.chkbtn_mbalnum,
588 prefs_set_data_from_toggle, prefs_set_toggle},
589 {"display_header_pane", "TRUE", &prefs_common.display_header_pane,
590 P_BOOL, &message.chkbtn_disphdrpane,
591 prefs_set_data_from_toggle, prefs_set_toggle},
592 {"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
593 &message.chkbtn_disphdr,
594 prefs_set_data_from_toggle, prefs_set_toggle},
595 {"line_space", "2", &prefs_common.line_space, P_INT,
596 &message.spinbtn_linespc,
597 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
598 {"enable_head_space", "FALSE", &prefs_common.head_space, P_BOOL,
599 &message.chkbtn_headspc,
600 prefs_set_data_from_toggle, prefs_set_toggle},
602 {"enable_smooth_scroll", "FALSE",
603 &prefs_common.enable_smooth_scroll, P_BOOL,
604 &message.chkbtn_smoothscroll,
605 prefs_set_data_from_toggle, prefs_set_toggle},
606 {"scroll_step", "1", &prefs_common.scroll_step, P_INT,
607 &message.spinbtn_scrollstep,
608 prefs_set_data_from_spinbtn, prefs_set_spinbtn},
609 {"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
610 &message.chkbtn_halfpage,
611 prefs_set_data_from_toggle, prefs_set_toggle},
613 {"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
617 {"mime_image_viewer", "display '%s'",
618 &prefs_common.mime_image_viewer, P_STRING, NULL, NULL, NULL},
619 {"mime_audio_player", "play '%s'",
620 &prefs_common.mime_audio_player, P_STRING, NULL, NULL, NULL},
621 {"mime_open_command", "gedit '%s'",
622 &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL},
626 {"auto_check_signatures", "TRUE",
627 &prefs_common.auto_check_signatures, P_BOOL,
628 &privacy.checkbtn_auto_check_signatures,
629 prefs_set_data_from_toggle, prefs_set_toggle},
630 {"gpg_signature_popup", "FALSE",
631 &prefs_common.gpg_signature_popup, P_BOOL,
632 &privacy.checkbtn_gpg_signature_popup,
633 prefs_set_data_from_toggle, prefs_set_toggle},
635 {"passphrase_grab", "FALSE", &prefs_common.passphrase_grab, P_BOOL,
636 &privacy.checkbtn_passphrase_grab,
637 prefs_set_data_from_toggle, prefs_set_toggle},
638 #endif /* __MINGW32__ */
639 {"gpg_warning", "TRUE", &prefs_common.gpg_warning, P_BOOL,
640 &privacy.checkbtn_gpg_warning,
641 prefs_set_data_from_toggle, prefs_set_toggle},
642 {"default_signkey", CS_AUTO, &prefs_common.default_signkey, P_STRING,
643 &privacy.optmenu_default_signkey,
644 prefs_common_default_signkey_set_data_from_optmenu,
645 prefs_common_default_signkey_set_optmenu},
646 #endif /* USE_GPGME */
649 {"separate_folder", "FALSE", &prefs_common.sep_folder, P_BOOL,
651 {"separate_message", "FALSE", &prefs_common.sep_msg, P_BOOL,
654 /* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
655 NULL, NULL, NULL}, */
657 {"open_unread_on_enter", "FALSE", &prefs_common.open_unread_on_enter,
658 P_BOOL, &interface.checkbtn_openunread,
659 prefs_set_data_from_toggle, prefs_set_toggle},
660 {"open_inbox_on_inc", "TRUE", &prefs_common.open_inbox_on_inc,
661 P_BOOL, &interface.checkbtn_openinbox,
662 prefs_set_data_from_toggle, prefs_set_toggle},
663 {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
664 &interface.checkbtn_immedexec,
665 prefs_set_data_from_toggle, prefs_set_toggle},
666 {"receive_dialog_mode", "1", &prefs_common.recv_dialog_mode, P_ENUM,
667 &interface.optmenu_recvdialog,
668 prefs_common_recv_dialog_set_data_from_optmenu,
669 prefs_common_recv_dialog_set_optmenu},
670 {"nextunreadmsg_dialog", NULL, &prefs_common.next_unread_msg_dialog, P_ENUM,
671 &interface.optmenu_nextunreadmsgdialog,
672 prefs_nextunreadmsgdialog_set_data_from_optmenu,
673 prefs_nextunreadmsgdialog_set_optmenu},
675 {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
676 P_BOOL, &interface.checkbtn_addaddrbyclick,
677 prefs_set_data_from_toggle, prefs_set_toggle},
680 {"uri_open_command", "netscape -remote 'openURL(%s,raise)'",
681 &prefs_common.uri_cmd, P_STRING,
682 &other.uri_entry, prefs_set_data_from_entry, prefs_set_entry},
683 {"print_command", "lpr %s", &prefs_common.print_cmd, P_STRING,
684 &other.printcmd_entry, prefs_set_data_from_entry, prefs_set_entry},
685 {"ext_editor_command", "gedit %s",
686 &prefs_common.ext_editor_cmd, P_STRING,
687 &other.exteditor_entry, prefs_set_data_from_entry, prefs_set_entry},
689 {"confirm_on_exit", "TRUE", &prefs_common.confirm_on_exit, P_BOOL,
690 &other.checkbtn_confonexit,
691 prefs_set_data_from_toggle, prefs_set_toggle},
692 {"send_return_receipt", "TRUE", &prefs_common.return_receipt, P_BOOL,
693 &send.checkbtn_returnreceipt,
694 prefs_set_data_from_toggle, prefs_set_toggle},
695 {"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
696 &other.checkbtn_cleanonexit,
697 prefs_set_data_from_toggle, prefs_set_toggle},
698 {"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
699 &other.checkbtn_askonclean,
700 prefs_set_data_from_toggle, prefs_set_toggle},
701 {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
702 P_BOOL, &other.checkbtn_warnqueued,
703 prefs_set_data_from_toggle, prefs_set_toggle},
705 {"kill_score", "-9999", &prefs_common.kill_score, P_INT,
707 {"important_score", "1", &prefs_common.important_score, P_INT,
710 {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
713 /* widget creating functions */
714 static void prefs_common_create (void);
715 static void prefs_receive_create (void);
716 static void prefs_send_create (void);
717 static void prefs_compose_create (void);
718 static void prefs_spelling_create (void);
719 static void prefs_quote_create (void);
720 static void prefs_display_create (void);
721 static void prefs_message_create (void);
723 static void prefs_privacy_create (void);
725 static void prefs_interface_create (void);
726 static void prefs_other_create (void);
728 static void date_format_ok_btn_clicked (GtkButton *button,
730 static void date_format_cancel_btn_clicked (GtkButton *button,
732 static void date_format_key_pressed (GtkWidget *keywidget,
735 static gboolean date_format_on_delete (GtkWidget *dialogwidget,
738 static void date_format_entry_on_change (GtkEditable *editable,
740 static void date_format_select_row (GtkWidget *date_format_list,
743 GdkEventButton *event,
744 GtkWidget *date_format);
745 static GtkWidget *date_format_create (GtkButton *button,
748 static void prefs_quote_description_create (void);
749 static void prefs_quote_description_key_pressed (GtkWidget *widget,
753 static void prefs_quote_colors_dialog (void);
754 static void prefs_quote_colors_dialog_create (void);
755 static void prefs_quote_colors_key_pressed (GtkWidget *widget,
758 static void quote_color_set_dialog (GtkWidget *widget,
760 static void quote_colors_set_dialog_ok (GtkWidget *widget,
762 static void quote_colors_set_dialog_cancel (GtkWidget *widget,
764 static void quote_colors_set_dialog_key_pressed (GtkWidget *widget,
767 static void set_button_bg_color (GtkWidget *widget,
769 static void prefs_enable_message_color_toggled (void);
770 static void prefs_recycle_colors_toggled (GtkWidget *widget);
772 static void prefs_font_select (GtkButton *button, GtkEntry *entry);
774 static void prefs_font_selection_key_pressed (GtkWidget *widget,
777 static void prefs_font_selection_ok (GtkButton *button, GtkEntry *entry);
778 static void prefs_keybind_apply_clicked (GtkWidget *widget);
780 static gint prefs_common_deleted (GtkWidget *widget,
783 static void prefs_common_key_pressed (GtkWidget *widget,
786 static void prefs_common_ok (void);
787 static void prefs_common_apply (void);
788 static void prefs_common_cancel (void);
790 void prefs_common_init() {
791 prefs_common.fltlist = NULL;
792 prefs_common.disphdr_list = NULL;
795 void prefs_common_read_config(void)
799 gchar buf[PREFSBUFSIZE];
801 prefs_read_config(param, "Common", COMMON_RC);
803 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
805 if ((fp = fopen(path, "r")) == NULL) {
806 if (ENOENT != errno) FILE_OP_ERROR(path, "fopen");
811 while (fgets(buf, sizeof(buf), fp) != NULL) {
813 if (buf[0] == '\0') continue;
814 prefs_common.mime_open_cmd_history =
815 add_history(prefs_common.mime_open_cmd_history, buf);
819 prefs_common.mime_open_cmd_history =
820 g_list_reverse(prefs_common.mime_open_cmd_history);
823 void prefs_common_save_config(void)
829 prefs_save_config(param, "Common", COMMON_RC);
831 path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMAND_HISTORY,
833 if ((fp = fopen(path, "w")) == NULL) {
834 FILE_OP_ERROR(path, "fopen");
839 for (cur = prefs_common.mime_open_cmd_history;
840 cur != NULL; cur = cur->next) {
841 fputs((gchar *)cur->data, fp);
849 void prefs_common_open(void)
851 if (prefs_rc_is_readonly(COMMON_RC))
856 if (!dialog.window) {
857 prefs_common_create();
860 manage_window_set_transient(GTK_WINDOW(dialog.window));
861 gtk_notebook_set_page(GTK_NOTEBOOK(dialog.notebook), 0);
862 gtk_widget_grab_focus(dialog.ok_btn);
864 prefs_set_dialog(param);
866 gtk_widget_show(dialog.window);
869 static void prefs_common_create(void)
873 debug_print(_("Creating common preferences window...\n"));
875 prefs_dialog_create(&dialog);
876 gtk_window_set_title (GTK_WINDOW(dialog.window),
877 _("Common Preferences"));
878 gtk_signal_connect (GTK_OBJECT(dialog.window), "delete_event",
879 GTK_SIGNAL_FUNC(prefs_common_deleted), NULL);
880 gtk_signal_connect (GTK_OBJECT(dialog.window), "key_press_event",
881 GTK_SIGNAL_FUNC(prefs_common_key_pressed), NULL);
882 gtk_signal_connect (GTK_OBJECT(dialog.window), "focus_in_event",
883 GTK_SIGNAL_FUNC(manage_window_focus_in), NULL);
884 gtk_signal_connect (GTK_OBJECT(dialog.window), "focus_out_event",
885 GTK_SIGNAL_FUNC(manage_window_focus_out), NULL);
886 gtk_signal_connect (GTK_OBJECT(dialog.ok_btn), "clicked",
887 GTK_SIGNAL_FUNC(prefs_common_ok), NULL);
888 gtk_signal_connect (GTK_OBJECT(dialog.apply_btn), "clicked",
889 GTK_SIGNAL_FUNC(prefs_common_apply), NULL);
890 gtk_signal_connect_object (GTK_OBJECT(dialog.cancel_btn), "clicked",
891 GTK_SIGNAL_FUNC(prefs_common_cancel),
892 GTK_OBJECT(dialog.window));
894 /* create all widgets on notebook */
895 prefs_receive_create();
896 SET_NOTEBOOK_LABEL(dialog.notebook, _("Receive"), page++);
898 SET_NOTEBOOK_LABEL(dialog.notebook, _("Send"), page++);
899 prefs_compose_create();
900 SET_NOTEBOOK_LABEL(dialog.notebook, _("Compose"), page++);
902 prefs_spelling_create();
903 SET_NOTEBOOK_LABEL(dialog.notebook, _("Spell Checker"), page++);
905 prefs_quote_create();
906 SET_NOTEBOOK_LABEL(dialog.notebook, _("Quote"), page++);
907 prefs_display_create();
908 SET_NOTEBOOK_LABEL(dialog.notebook, _("Display"), page++);
909 prefs_message_create();
910 SET_NOTEBOOK_LABEL(dialog.notebook, _("Message"), page++);
912 prefs_privacy_create();
913 SET_NOTEBOOK_LABEL(dialog.notebook, _("Privacy"), page++);
915 prefs_interface_create();
916 SET_NOTEBOOK_LABEL(dialog.notebook, _("Interface"), page++);
917 prefs_other_create();
918 SET_NOTEBOOK_LABEL(dialog.notebook, _("Other"), page++);
920 gtk_widget_show_all(dialog.window);
923 static void prefs_receive_create(void)
927 GtkWidget *frame_incext;
928 GtkWidget *checkbtn_incext;
930 GtkWidget *label_incext;
931 GtkWidget *entry_incext;
932 /* GtkWidget *button_incext; */
934 GtkWidget *frame_spool;
935 GtkWidget *checkbtn_local;
936 GtkWidget *checkbtn_filter_on_inc;
937 GtkWidget *label_spool;
938 GtkWidget *entry_spool;
940 GtkWidget *hbox_autochk;
941 GtkWidget *checkbtn_autochk;
942 GtkWidget *label_autochk1;
943 GtkObject *spinbtn_autochk_adj;
944 GtkWidget *spinbtn_autochk;
945 GtkWidget *label_autochk2;
946 GtkWidget *checkbtn_chkonstartup;
947 GtkWidget *checkbtn_noerrorpanel;
948 GtkWidget *checkbtn_scan_after_inc;
951 GtkWidget *frame_news;
952 GtkWidget *label_maxarticle;
953 GtkWidget *spinbtn_maxarticle;
954 GtkObject *spinbtn_maxarticle_adj;
956 vbox1 = gtk_vbox_new (FALSE, VSPACING);
957 gtk_widget_show (vbox1);
958 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
959 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
961 PACK_FRAME(vbox1, frame_incext, _("External program"));
963 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
964 gtk_widget_show (vbox2);
965 gtk_container_add (GTK_CONTAINER (frame_incext), vbox2);
966 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
968 /* Use of external incorporation program */
969 PACK_CHECK_BUTTON (vbox2, checkbtn_incext,
970 _("Use external program for incorporation"));
972 hbox = gtk_hbox_new (FALSE, 8);
973 gtk_widget_show (hbox);
974 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
975 SET_TOGGLE_SENSITIVITY (checkbtn_incext, hbox);
977 label_incext = gtk_label_new (_("Command"));
978 gtk_widget_show (label_incext);
979 gtk_box_pack_start (GTK_BOX (hbox), label_incext, FALSE, FALSE, 0);
981 entry_incext = gtk_entry_new ();
982 gtk_widget_show (entry_incext);
983 gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0);
986 button_incext = gtk_button_new_with_label ("... ");
987 gtk_widget_show (button_incext);
988 gtk_box_pack_start (GTK_BOX (hbox), button_incext, FALSE, FALSE, 0);
991 PACK_FRAME(vbox1, frame_spool, _("Local spool"));
993 vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
994 gtk_widget_show (vbox2);
995 gtk_container_add (GTK_CONTAINER (frame_spool), vbox2);
996 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
998 hbox = gtk_hbox_new (FALSE, 32);
999 gtk_widget_show (hbox);
1000 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1002 PACK_CHECK_BUTTON (hbox, checkbtn_local, _("Incorporate from spool"));
1003 PACK_CHECK_BUTTON (hbox, checkbtn_filter_on_inc,
1004 _("Filter on incorporation"));
1005 SET_TOGGLE_SENSITIVITY (checkbtn_local, checkbtn_filter_on_inc);
1007 hbox = gtk_hbox_new (FALSE, 8);
1008 gtk_widget_show (hbox);
1009 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
1010 SET_TOGGLE_SENSITIVITY (checkbtn_local, hbox);
1012 label_spool = gtk_label_new (_("Spool directory"));
1013 gtk_widget_show (label_spool);
1014 gtk_box_pack_start (GTK_BOX (hbox), label_spool, FALSE, FALSE, 0);
1016 entry_spool = gtk_entry_new ();
1017 gtk_widget_show (entry_spool);
1018 gtk_box_pack_start (GTK_BOX (hbox), entry_spool, TRUE, TRUE, 0);
1020 vbox2 = gtk_vbox_new (FALSE, 0);
1021 gtk_widget_show (vbox2);
1022 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1025 hbox_autochk = gtk_hbox_new (FALSE, 8);
1026 gtk_widget_show (hbox_autochk);
1027 gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
1029 PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
1030 _("Auto-check new mail"));
1032 label_autochk1 = gtk_label_new (_("every"));
1033 gtk_widget_show (label_autochk1);
1034 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk1, FALSE, FALSE, 0);
1036 spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
1037 spinbtn_autochk = gtk_spin_button_new
1038 (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
1039 gtk_widget_show (spinbtn_autochk);
1040 gtk_box_pack_start (GTK_BOX (hbox_autochk), spinbtn_autochk, FALSE, FALSE, 0);
1041 gtk_widget_set_usize (spinbtn_autochk, 64, -1);
1042 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_autochk), TRUE);
1044 label_autochk2 = gtk_label_new (_("minute(s)"));
1045 gtk_widget_show (label_autochk2);
1046 gtk_box_pack_start (GTK_BOX (hbox_autochk), label_autochk2, FALSE, FALSE, 0);
1048 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk1);
1049 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, spinbtn_autochk);
1050 SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
1052 PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
1053 _("Check new mail on startup"));
1055 PACK_CHECK_BUTTON (vbox2, checkbtn_noerrorpanel,
1056 _("No error popup on receive error"));
1057 PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
1058 _("Update all local folders after incorporation"));
1060 PACK_FRAME(vbox1, frame_news, _("News"));
1062 hbox = gtk_hbox_new (FALSE, 8);
1063 gtk_widget_show (hbox);
1064 gtk_container_add (GTK_CONTAINER (frame_news), hbox);
1065 gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
1067 label_maxarticle = gtk_label_new
1068 (_("Maximum number of articles to download\n"
1069 "(unlimited if 0 is specified)"));
1070 gtk_widget_show (label_maxarticle);
1071 gtk_box_pack_start (GTK_BOX (hbox), label_maxarticle, FALSE, FALSE, 0);
1072 gtk_label_set_justify (GTK_LABEL (label_maxarticle), GTK_JUSTIFY_LEFT);
1074 spinbtn_maxarticle_adj =
1075 gtk_adjustment_new (300, 0, 10000, 10, 100, 100);
1076 spinbtn_maxarticle = gtk_spin_button_new
1077 (GTK_ADJUSTMENT (spinbtn_maxarticle_adj), 10, 0);
1078 gtk_widget_show (spinbtn_maxarticle);
1079 gtk_box_pack_start (GTK_BOX (hbox), spinbtn_maxarticle,
1081 gtk_widget_set_usize (spinbtn_maxarticle, 64, -1);
1082 gtk_spin_button_set_numeric
1083 (GTK_SPIN_BUTTON (spinbtn_maxarticle), TRUE);
1085 receive.checkbtn_incext = checkbtn_incext;
1086 receive.entry_incext = entry_incext;
1087 /* receive.button_incext = button_incext; */
1089 receive.checkbtn_local = checkbtn_local;
1090 receive.checkbtn_filter_on_inc = checkbtn_filter_on_inc;
1091 receive.entry_spool = entry_spool;
1093 receive.checkbtn_autochk = checkbtn_autochk;
1094 receive.spinbtn_autochk = spinbtn_autochk;
1095 receive.spinbtn_autochk_adj = spinbtn_autochk_adj;
1097 receive.checkbtn_chkonstartup = checkbtn_chkonstartup;
1098 receive.checkbtn_noerrorpanel = checkbtn_noerrorpanel;
1099 receive.checkbtn_scan_after_inc = checkbtn_scan_after_inc;
1102 receive.spinbtn_maxarticle = spinbtn_maxarticle;
1103 receive.spinbtn_maxarticle_adj = spinbtn_maxarticle_adj;
1106 static void prefs_send_create(void)
1110 GtkWidget *frame_extsend;
1111 GtkWidget *vbox_extsend;
1112 GtkWidget *checkbtn_extsend;
1114 GtkWidget *label_extsend;
1115 GtkWidget *entry_extsend;
1116 /* GtkWidget *button_extsend; */
1117 GtkWidget *checkbtn_savemsg;
1118 GtkWidget *checkbtn_queuemsg;
1119 GtkWidget *label_outcharset;
1121 GtkWidget *optmenu_menu;
1122 GtkWidget *menuitem;
1123 GtkWidget *checkbtn_returnreceipt;
1124 GtkWidget *label_charset_desc;
1126 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1127 gtk_widget_show (vbox1);
1128 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1129 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1131 PACK_FRAME(vbox1, frame_extsend, _("External program"));
1133 vbox_extsend = gtk_vbox_new (FALSE, VSPACING_NARROW);
1134 gtk_widget_show (vbox_extsend);
1135 gtk_container_add (GTK_CONTAINER (frame_extsend), vbox_extsend);
1136 gtk_container_set_border_width (GTK_CONTAINER (vbox_extsend), 8);
1138 PACK_CHECK_BUTTON (vbox_extsend, checkbtn_extsend,
1139 _("Use external program for sending"));
1141 hbox1 = gtk_hbox_new (FALSE, 8);
1142 gtk_widget_show (hbox1);
1143 gtk_box_pack_start (GTK_BOX (vbox_extsend), hbox1, FALSE, FALSE, 0);
1144 SET_TOGGLE_SENSITIVITY(checkbtn_extsend, hbox1);
1146 label_extsend = gtk_label_new (_("Command"));
1147 gtk_widget_show (label_extsend);
1148 gtk_box_pack_start (GTK_BOX (hbox1), label_extsend, FALSE, FALSE, 0);
1150 entry_extsend = gtk_entry_new ();
1151 gtk_widget_show (entry_extsend);
1152 gtk_box_pack_start (GTK_BOX (hbox1), entry_extsend, TRUE, TRUE, 0);
1155 button_extsend = gtk_button_new_with_label ("... ");
1156 gtk_widget_show (button_extsend);
1157 gtk_box_pack_start (GTK_BOX (hbox1), button_extsend, FALSE, FALSE, 0);
1160 vbox2 = gtk_vbox_new (FALSE, 0);
1161 gtk_widget_show (vbox2);
1162 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1164 PACK_CHECK_BUTTON (vbox2, checkbtn_savemsg,
1165 _("Save sent messages to outbox"));
1166 PACK_CHECK_BUTTON (vbox2, checkbtn_queuemsg,
1167 _("Queue messages that fail to send"));
1168 PACK_CHECK_BUTTON (vbox2, checkbtn_returnreceipt,
1169 _("Send return receipt on request"));
1171 hbox1 = gtk_hbox_new (FALSE, 8);
1172 gtk_widget_show (hbox1);
1173 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1175 label_outcharset = gtk_label_new (_("Outgoing codeset"));
1176 gtk_widget_show (label_outcharset);
1177 gtk_box_pack_start (GTK_BOX (hbox1), label_outcharset, FALSE, FALSE, 0);
1179 optmenu = gtk_option_menu_new ();
1180 gtk_widget_show (optmenu);
1181 gtk_box_pack_start (GTK_BOX (hbox1), optmenu, FALSE, FALSE, 0);
1183 optmenu_menu = gtk_menu_new ();
1185 #define SET_MENUITEM(str, charset) \
1187 MENUITEM_ADD(optmenu_menu, menuitem, str, charset); \
1190 SET_MENUITEM(_("Automatic (Recommended)"), CS_AUTO);
1191 SET_MENUITEM(_("7bit ascii (US-ASCII)"), CS_US_ASCII);
1193 SET_MENUITEM(_("Unicode (UTF-8)"), CS_UTF_8);
1195 SET_MENUITEM(_("Western European (ISO-8859-1)"), CS_ISO_8859_1);
1196 SET_MENUITEM(_("Central European (ISO-8859-2)"), CS_ISO_8859_2);
1197 SET_MENUITEM(_("Baltic (ISO-8859-13)"), CS_ISO_8859_13);
1198 SET_MENUITEM(_("Baltic (ISO-8859-4)"), CS_ISO_8859_4);
1199 SET_MENUITEM(_("Greek (ISO-8859-7)"), CS_ISO_8859_7);
1200 SET_MENUITEM(_("Turkish (ISO-8859-9)"), CS_ISO_8859_9);
1202 SET_MENUITEM(_("Cyrillic (ISO-8859-5)"), CS_ISO_8859_5);
1204 SET_MENUITEM(_("Cyrillic (KOI8-R)"), CS_KOI8_R);
1206 SET_MENUITEM(_("Cyrillic (Windows-1251)"), CS_CP1251);
1207 SET_MENUITEM(_("Cyrillic (KOI8-U)"), CS_KOI8_U);
1209 SET_MENUITEM(_("Japanese (ISO-2022-JP)"), CS_ISO_2022_JP);
1211 SET_MENUITEM(_("Japanese (EUC-JP)"), CS_EUC_JP);
1212 SET_MENUITEM(_("Japanese (Shift_JIS)"), CS_SHIFT_JIS);
1214 SET_MENUITEM(_("Simplified Chinese (GB2312)"), CS_GB2312);
1215 SET_MENUITEM(_("Traditional Chinese (Big5)"), CS_BIG5);
1217 SET_MENUITEM(_("Traditional Chinese (EUC-TW)"), CS_EUC_TW);
1218 SET_MENUITEM(_("Chinese (ISO-2022-CN)"), CS_ISO_2022_CN);
1220 SET_MENUITEM(_("Korean (EUC-KR)"), CS_EUC_KR);
1221 SET_MENUITEM(_("Thai (TIS-620)"), CS_TIS_620);
1222 SET_MENUITEM(_("Thai (Windows-874)"), CS_WINDOWS_874);
1224 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu), optmenu_menu);
1226 hbox1 = gtk_hbox_new (FALSE, 8);
1227 gtk_widget_show (hbox1);
1228 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1230 label_charset_desc = gtk_label_new
1231 (_("If `Automatic' is selected, the optimal encoding\n"
1232 "for the current locale will be used."));
1233 gtk_widget_show (label_charset_desc);
1234 gtk_box_pack_start (GTK_BOX (hbox1), label_charset_desc,
1236 gtk_label_set_justify(GTK_LABEL (label_charset_desc), GTK_JUSTIFY_LEFT);
1238 send.checkbtn_extsend = checkbtn_extsend;
1239 send.entry_extsend = entry_extsend;
1240 /* send.button_extsend = button_extsend; */
1242 send.checkbtn_savemsg = checkbtn_savemsg;
1243 send.checkbtn_queuemsg = checkbtn_queuemsg;
1244 send.checkbtn_returnreceipt = checkbtn_returnreceipt;
1246 send.optmenu_charset = optmenu;
1250 static void prefs_dictionary_set_data_from_optmenu(PrefParam *param)
1255 g_return_if_fail(param);
1256 g_return_if_fail(param->data);
1257 g_return_if_fail(param->widget);
1258 g_return_if_fail(*(param->widget));
1260 dict_name = gtkpspell_get_dictionary_menu_active_item
1261 (gtk_option_menu_get_menu(GTK_OPTION_MENU(*(param->widget))));
1262 str = *((gchar **) param->data);
1265 *((gchar **) param->data) = dict_name;
1268 static void prefs_dictionary_set_optmenu(PrefParam *pparam)
1271 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
1273 GtkWidget *menuitem;
1277 g_return_if_fail(optmenu != NULL);
1278 g_return_if_fail(pparam->data != NULL);
1280 if (*(gchar **) pparam->data) {
1281 menu = gtk_option_menu_get_menu(optmenu);
1282 for (cur = GTK_MENU_SHELL(menu)->children;
1283 cur != NULL; cur = cur->next) {
1284 menuitem = GTK_WIDGET(cur->data);
1285 dict_name = gtk_object_get_data(GTK_OBJECT(menuitem), "dict_name");
1286 if (!strcmp2(dict_name, *((gchar **)pparam->data))) {
1287 gtk_option_menu_set_history(optmenu, n);
1294 gtk_option_menu_set_history(optmenu, 0);
1295 prefs_dictionary_set_data_from_optmenu(pparam);
1298 static void prefs_speller_sugmode_set_data_from_optmenu(PrefParam *param)
1301 g_return_if_fail(param);
1302 g_return_if_fail(param->data);
1303 g_return_if_fail(param->widget);
1304 g_return_if_fail(*(param->widget));
1306 sugmode = gtkpspell_get_sugmode_from_option_menu
1307 (GTK_OPTION_MENU(*(param->widget)));
1308 *((gint *) param->data) = sugmode;
1311 static void prefs_speller_sugmode_set_optmenu(PrefParam *pparam)
1313 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
1315 GtkWidget *menuitem;
1318 g_return_if_fail(optmenu != NULL);
1319 g_return_if_fail(pparam->data != NULL);
1321 sugmode = *(gint *) pparam->data;
1322 gtkpspell_sugmode_option_menu_set(optmenu, sugmode);
1326 static void prefs_spelling_checkbtn_enable_pspell_toggle_cb
1332 toggled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1334 gtk_widget_set_sensitive(spelling.entry_pspell_path, toggled);
1335 gtk_widget_set_sensitive(spelling.optmenu_dictionary, toggled);
1336 gtk_widget_set_sensitive(spelling.optmenu_sugmode, toggled);
1337 gtk_widget_set_sensitive(spelling.btn_pspell_path, toggled);
1338 gtk_widget_set_sensitive(color_buttons.misspelled_btn, toggled);
1341 static void prefs_spelling_btn_pspell_path_clicked_cb(GtkWidget *widget,
1344 gchar *file_path, *tmp;
1345 GtkWidget *new_menu;
1347 file_path = filesel_select_file(_("Select dictionaries location"),
1348 prefs_common.pspell_path);
1349 if (file_path == NULL) {
1353 tmp=g_dirname(file_path);
1355 if (prefs_common.pspell_path)
1356 g_free(prefs_common.pspell_path);
1357 prefs_common.pspell_path = g_strdup_printf("%s%s",tmp,G_DIR_SEPARATOR_S);
1359 new_menu = gtkpspell_dictionary_option_menu_new(prefs_common.pspell_path);
1360 gtk_option_menu_set_menu(GTK_OPTION_MENU(spelling.optmenu_dictionary),
1363 gtk_entry_set_text(GTK_ENTRY(spelling.entry_pspell_path), prefs_common.pspell_path);
1364 /* select first one */
1365 gtk_option_menu_set_history(GTK_OPTION_MENU(spelling.optmenu_dictionary), 0);
1367 prefs_common.dictionary = gtkpspell_get_dictionary_menu_active_item(
1368 gtk_option_menu_get_menu(GTK_OPTION_MENU(spelling.optmenu_dictionary)));
1375 static void prefs_spelling_create()
1378 GtkWidget *frame_spell;
1379 GtkWidget *hbox_spell;
1380 GtkWidget *vbox_spell;
1381 GtkWidget *hbox_pspell_path;
1382 GtkWidget *checkbtn_enable_pspell;
1383 GtkWidget *label_pspell_path;
1384 GtkWidget *entry_pspell_path;
1385 GtkWidget *btn_pspell_path;
1386 GtkWidget *spell_table;
1387 GtkWidget *label_dictionary;
1388 GtkWidget *optmenu_dictionary;
1389 GtkWidget *sugmode_label;
1390 GtkWidget *sugmode_optmenu;
1391 GtkWidget *color_label;
1392 GtkWidget *hbox_col;
1393 GtkWidget *col_align;
1396 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1397 gtk_widget_show (vbox1);
1398 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1399 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1401 /* spell checker defaults */
1402 PACK_FRAME(vbox1, frame_spell, _("Global spelling checker settings"));
1403 vbox_spell = gtk_vbox_new(FALSE, VSPACING_NARROW);
1404 gtk_widget_show (vbox_spell);
1405 gtk_container_add(GTK_CONTAINER(frame_spell), vbox_spell);
1406 gtk_container_set_border_width(GTK_CONTAINER(vbox_spell), 8);
1408 PACK_CHECK_BUTTON(vbox_spell, checkbtn_enable_pspell,
1409 _("Enable spell checker (EXPERIMENTAL)"));
1411 gtk_signal_connect(GTK_OBJECT(checkbtn_enable_pspell), "toggled",
1412 GTK_SIGNAL_FUNC(prefs_spelling_checkbtn_enable_pspell_toggle_cb),
1415 spell_table = gtk_table_new(4, 3, FALSE);
1416 gtk_container_set_border_width (GTK_CONTAINER (spell_table), 0);
1417 gtk_table_set_row_spacings(GTK_TABLE(spell_table), 8);
1418 gtk_table_set_col_spacings(GTK_TABLE(spell_table), 8);
1420 gtk_box_pack_start(GTK_BOX(vbox_spell), spell_table, TRUE, TRUE, 0);
1423 label_pspell_path = gtk_label_new (_("Dictionaries path:"));
1424 gtk_misc_set_alignment(GTK_MISC(label_pspell_path), 1.0, 0.5);
1425 gtk_widget_show(label_pspell_path);
1426 gtk_table_attach (GTK_TABLE (spell_table), label_pspell_path, 0, 1, 0, 1,
1427 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1429 hbox_pspell_path = gtk_hbox_new (FALSE, 8);
1430 gtk_table_attach (GTK_TABLE (spell_table), hbox_pspell_path, 1, 2, 0, 1,
1431 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1432 gtk_widget_show(hbox_pspell_path);
1434 entry_pspell_path = gtk_entry_new();
1435 gtk_widget_show(entry_pspell_path);
1436 gtk_box_pack_start(GTK_BOX(hbox_pspell_path), entry_pspell_path, TRUE, TRUE, 0);
1438 gtk_widget_set_sensitive(entry_pspell_path, prefs_common.enable_pspell);
1440 btn_pspell_path = gtk_button_new_with_label(" ... ");
1441 gtk_widget_show(btn_pspell_path);
1442 gtk_box_pack_start(GTK_BOX(hbox_pspell_path), btn_pspell_path, FALSE, FALSE, 0);
1443 gtk_widget_set_sensitive(btn_pspell_path, prefs_common.enable_pspell);
1445 gtk_signal_connect(GTK_OBJECT(btn_pspell_path), "clicked",
1446 GTK_SIGNAL_FUNC(prefs_spelling_btn_pspell_path_clicked_cb),
1449 label_dictionary = gtk_label_new(_("Default dictionary:"));
1450 gtk_misc_set_alignment(GTK_MISC(label_dictionary), 1.0, 0.5);
1451 gtk_widget_show(label_dictionary);
1452 gtk_table_attach (GTK_TABLE (spell_table), label_dictionary, 0, 1, 1, 2,
1453 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1455 optmenu_dictionary = gtk_option_menu_new();
1456 gtk_widget_show(optmenu_dictionary);
1457 gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu_dictionary),
1458 gtkpspell_dictionary_option_menu_new(prefs_common.pspell_path));
1459 gtk_table_attach (GTK_TABLE (spell_table), optmenu_dictionary, 1, 2, 1, 2,
1460 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1461 gtk_widget_set_sensitive(optmenu_dictionary, prefs_common.enable_pspell);
1463 /* Suggestion mode */
1464 sugmode_label = gtk_label_new(_("Default suggestion mode"));
1465 gtk_misc_set_alignment(GTK_MISC(sugmode_label), 1.0, 0.5);
1466 gtk_widget_show(sugmode_label);
1467 gtk_table_attach(GTK_TABLE (spell_table), sugmode_label, 0, 1, 2, 3,
1468 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1470 sugmode_optmenu = gtk_option_menu_new();
1471 gtk_widget_show(sugmode_optmenu);
1472 gtk_option_menu_set_menu(GTK_OPTION_MENU(sugmode_optmenu),
1473 gtkpspell_sugmode_option_menu_new(prefs_common.pspell_sugmode));
1474 gtk_table_attach(GTK_TABLE(spell_table), sugmode_optmenu, 1, 2, 2, 3,
1475 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1476 gtk_widget_set_sensitive(sugmode_optmenu, prefs_common.enable_pspell);
1479 color_label = gtk_label_new(_("Misspelled word color:"));
1480 gtk_misc_set_alignment(GTK_MISC(color_label), 1.0, 0.5);
1481 gtk_table_attach (GTK_TABLE (spell_table), color_label, 0, 1, 3, 4,
1482 GTK_FILL, GTK_SHRINK, 0, 0);
1483 gtk_widget_show(color_label);
1485 col_align = gtk_alignment_new(0.0, 0.5, 0, 0);
1486 gtk_widget_show(col_align);
1487 gtk_table_attach (GTK_TABLE (spell_table), col_align, 1, 2, 3, 4,
1488 GTK_FILL, GTK_SHRINK, 0, 0);
1490 color_buttons.misspelled_btn = gtk_button_new_with_label ("");
1491 set_button_bg_color(color_buttons.misspelled_btn,
1492 prefs_common.misspelled_col);
1493 gtk_widget_set_usize (color_buttons.misspelled_btn, 30, 20);
1494 gtk_widget_set_sensitive(color_buttons.misspelled_btn, prefs_common.enable_pspell);
1495 gtk_signal_connect (GTK_OBJECT (color_buttons.misspelled_btn), "clicked",
1496 GTK_SIGNAL_FUNC(quote_color_set_dialog), "Misspelled word");
1497 gtk_container_add(GTK_CONTAINER(col_align), color_buttons.misspelled_btn);
1500 spelling.checkbtn_enable_pspell = checkbtn_enable_pspell;
1501 spelling.entry_pspell_path = entry_pspell_path;
1502 spelling.btn_pspell_path = btn_pspell_path;
1503 spelling.optmenu_dictionary = optmenu_dictionary;
1504 spelling.optmenu_sugmode = sugmode_optmenu;
1510 static void prefs_compose_create(void)
1517 GtkWidget *btn_quotefmt;
1519 GtkWidget *frame_sig;
1520 GtkWidget *vbox_sig;
1521 GtkWidget *checkbtn_autosig;
1522 GtkWidget *label_sigsep;
1523 GtkWidget *entry_sigsep;
1525 GtkWidget *frame_editor;
1526 GtkWidget *hbox_editor;
1527 GtkWidget *checkbtn_autoextedit;
1529 GtkWidget *frame_autosel;
1530 GtkWidget *hbox_autosel;
1531 GtkWidget *vbox_autosel;
1532 GtkWidget *checkbtn_reply_account_autosel;
1533 GtkWidget *checkbtn_forward_account_autosel;
1534 GtkWidget *checkbtn_reedit_account_autosel;
1536 GtkWidget *hbox_undolevel;
1537 GtkWidget *label_undolevel;
1538 GtkObject *spinbtn_undolevel_adj;
1539 GtkWidget *spinbtn_undolevel;
1541 GtkWidget *vbox_linewrap;
1546 GtkWidget *label_linewrap;
1547 GtkObject *spinbtn_linewrap_adj;
1548 GtkWidget *spinbtn_linewrap;
1549 GtkWidget *checkbtn_wrapquote;
1550 GtkWidget *checkbtn_wrapatsend;
1552 GtkWidget *frame_reply;
1553 GtkWidget *checkbtn_quote;
1554 GtkWidget *checkbtn_forward_as_attachment;
1555 GtkWidget *checkbtn_smart_wrapping;
1556 GtkWidget *checkbtn_block_cursor;
1558 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1559 gtk_widget_show (vbox1);
1560 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1561 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1565 hbox1 = gtk_hbox_new (FALSE, 32);
1566 gtk_widget_show (hbox1);
1568 hbox2 = gtk_hbox_new (FALSE, 8);
1569 gtk_widget_show (hbox2);
1570 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1573 hbox1 = gtk_hbox_new (FALSE, 32);
1574 gtk_widget_show (hbox1);
1575 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1577 PACK_FRAME(vbox1, frame_sig, _("Signature"));
1579 vbox_sig = gtk_vbox_new (FALSE, VSPACING_NARROW);
1580 gtk_widget_show (vbox_sig);
1581 gtk_container_add (GTK_CONTAINER (frame_sig), vbox_sig);
1582 gtk_container_set_border_width (GTK_CONTAINER (vbox_sig), 8);
1584 PACK_CHECK_BUTTON (vbox_sig, checkbtn_autosig,
1585 _("Insert signature automatically"));
1587 hbox1 = gtk_hbox_new (FALSE, 8);
1588 gtk_widget_show (hbox1);
1589 gtk_box_pack_start (GTK_BOX (vbox_sig), hbox1, TRUE, TRUE, 0);
1590 label_sigsep = gtk_label_new (_("Signature separator"));
1591 gtk_widget_show (label_sigsep);
1592 gtk_box_pack_start (GTK_BOX (hbox1), label_sigsep, FALSE, FALSE, 0);
1594 entry_sigsep = gtk_entry_new ();
1595 gtk_widget_show (entry_sigsep);
1596 gtk_box_pack_start (GTK_BOX (hbox1), entry_sigsep, FALSE, FALSE, 0);
1598 gtk_widget_set_usize (entry_sigsep, 64, -1);
1600 /* Account autoselection */
1601 PACK_FRAME(vbox1, frame_autosel, _("Automatic Account Selection"));
1603 hbox_autosel = gtk_hbox_new (FALSE, VSPACING_NARROW);
1604 gtk_widget_show (hbox_autosel);
1605 gtk_container_add (GTK_CONTAINER (frame_autosel), hbox_autosel);
1606 gtk_container_set_border_width (GTK_CONTAINER (hbox_autosel), 8);
1608 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reply_account_autosel,
1609 _("when replying"));
1610 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_forward_account_autosel,
1611 _("when forwarding"));
1612 PACK_CHECK_BUTTON (hbox_autosel, checkbtn_reedit_account_autosel,
1613 _("when re-editing"));
1615 vbox2 = gtk_vbox_new (FALSE, 0);
1616 gtk_widget_show (vbox2);
1617 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
1619 PACK_CHECK_BUTTON (vbox2, checkbtn_autoextedit,
1620 _("Automatically launch the external editor"));
1622 PACK_VSPACER (vbox2, vbox3, VSPACING_NARROW_2);
1625 vbox_linewrap = gtk_vbox_new (FALSE, VSPACING_NARROW);
1626 gtk_widget_show (vbox_linewrap);
1627 gtk_box_pack_start (GTK_BOX (vbox1), vbox_linewrap, FALSE, FALSE, 0);
1629 hbox3 = gtk_hbox_new (FALSE, 8);
1630 gtk_widget_show (hbox3);
1631 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox3, FALSE, FALSE, 0);
1634 label_linewrap = gtk_label_new (_("Wrap messages at"));
1635 gtk_widget_show (label_linewrap);
1636 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1638 spinbtn_linewrap_adj = gtk_adjustment_new (72, 20, 1024, 1, 10, 10);
1639 spinbtn_linewrap = gtk_spin_button_new
1640 (GTK_ADJUSTMENT (spinbtn_linewrap_adj), 1, 0);
1641 gtk_widget_show (spinbtn_linewrap);
1642 gtk_box_pack_start (GTK_BOX (hbox3), spinbtn_linewrap, FALSE, FALSE, 0);
1643 gtk_widget_set_usize (spinbtn_linewrap, 64, -1);
1644 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linewrap), TRUE);
1646 label_linewrap = gtk_label_new (_("characters"));
1647 gtk_widget_show (label_linewrap);
1648 gtk_box_pack_start (GTK_BOX (hbox3), label_linewrap, FALSE, FALSE, 0);
1650 PACK_VSPACER (vbox2, vbox3, VSPACING_NARROW_2);
1652 hbox4 = gtk_hbox_new (FALSE, 32);
1653 gtk_widget_show (hbox4);
1654 gtk_box_pack_start (GTK_BOX (vbox_linewrap), hbox4, FALSE, FALSE, 0);
1656 PACK_CHECK_BUTTON (hbox4, checkbtn_wrapquote, _("Wrap quotation"));
1658 (hbox4, checkbtn_wrapatsend, _("Wrap before sending"));
1660 PACK_CHECK_BUTTON (vbox1, checkbtn_forward_as_attachment,
1661 _("Forward as attachment"));
1663 PACK_CHECK_BUTTON (vbox1, checkbtn_smart_wrapping,
1664 _("Smart wrapping (EXPERIMENTAL)"));
1666 PACK_CHECK_BUTTON (vbox1, checkbtn_block_cursor,
1669 PACK_VSPACER (vbox2, vbox3, VSPACING_NARROW_2);
1671 hbox_undolevel = gtk_hbox_new (FALSE, 8);
1672 gtk_widget_show (hbox3);
1673 gtk_box_pack_start (GTK_BOX (vbox1), hbox_undolevel, FALSE, FALSE, 0);
1675 label_undolevel = gtk_label_new (_("Undo level"));
1676 gtk_widget_show (label_undolevel);
1677 gtk_box_pack_start (GTK_BOX (hbox_undolevel), label_undolevel, FALSE, FALSE, 0);
1679 spinbtn_undolevel_adj = gtk_adjustment_new (50, 0, 100, 1, 10, 10);
1680 spinbtn_undolevel = gtk_spin_button_new
1681 (GTK_ADJUSTMENT (spinbtn_undolevel_adj), 1, 0);
1682 gtk_widget_show (spinbtn_undolevel);
1683 gtk_box_pack_start (GTK_BOX (hbox_undolevel), spinbtn_undolevel, FALSE, FALSE, 0);
1684 gtk_widget_set_usize (spinbtn_undolevel, 64, -1);
1685 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_undolevel), TRUE);
1688 compose.checkbtn_quote = checkbtn_quote;
1689 compose.entry_quotemark = entry_quotemark;
1690 compose.text_quotefmt = text_quotefmt;
1692 compose.checkbtn_autosig = checkbtn_autosig;
1693 compose.entry_sigsep = entry_sigsep;
1695 compose.checkbtn_autoextedit = checkbtn_autoextedit;
1697 compose.checkbtn_reply_account_autosel = checkbtn_reply_account_autosel;
1698 compose.checkbtn_forward_account_autosel = checkbtn_forward_account_autosel;
1699 compose.checkbtn_reedit_account_autosel = checkbtn_reedit_account_autosel;
1701 compose.spinbtn_undolevel = spinbtn_undolevel;
1702 compose.spinbtn_undolevel_adj = spinbtn_undolevel_adj;
1704 compose.spinbtn_linewrap = spinbtn_linewrap;
1705 compose.spinbtn_linewrap_adj = spinbtn_linewrap_adj;
1706 compose.checkbtn_wrapquote = checkbtn_wrapquote;
1707 compose.checkbtn_wrapatsend = checkbtn_wrapatsend;
1709 compose.checkbtn_forward_as_attachment =
1710 checkbtn_forward_as_attachment;
1711 compose.checkbtn_smart_wrapping =
1712 checkbtn_smart_wrapping;
1713 compose.checkbtn_block_cursor =
1714 checkbtn_block_cursor;
1718 static void prefs_quote_create(void)
1721 GtkWidget *frame_quote;
1722 GtkWidget *vbox_quote;
1725 GtkWidget *label_quotemark;
1726 GtkWidget *entry_quotemark;
1727 GtkWidget *scrolledwin_quotefmt;
1728 GtkWidget *text_quotefmt;
1730 GtkWidget *entry_fw_quotemark;
1731 GtkWidget *text_fw_quotefmt;
1733 GtkWidget *btn_quotedesc;
1735 GtkWidget *checkbtn_reply_with_quote;
1737 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1738 gtk_widget_show (vbox1);
1739 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1740 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1744 PACK_CHECK_BUTTON (vbox1, checkbtn_reply_with_quote, _("Reply will quote by default"));
1746 PACK_FRAME (vbox1, frame_quote, _("Reply format"));
1748 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1749 gtk_widget_show (vbox_quote);
1750 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1751 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1753 hbox1 = gtk_hbox_new (FALSE, 32);
1754 gtk_widget_show (hbox1);
1755 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1757 hbox2 = gtk_hbox_new (FALSE, 8);
1758 gtk_widget_show (hbox2);
1759 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1761 label_quotemark = gtk_label_new (_("Quotation mark"));
1762 gtk_widget_show (label_quotemark);
1763 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1765 entry_quotemark = gtk_entry_new ();
1766 gtk_widget_show (entry_quotemark);
1767 gtk_box_pack_start (GTK_BOX (hbox2), entry_quotemark, FALSE, FALSE, 0);
1768 gtk_widget_set_usize (entry_quotemark, 64, -1);
1770 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1771 gtk_widget_show (scrolledwin_quotefmt);
1772 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1773 gtk_scrolled_window_set_policy
1774 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1775 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1777 text_quotefmt = gtk_text_new (NULL, NULL);
1778 gtk_widget_show (text_quotefmt);
1779 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
1780 gtk_text_set_editable (GTK_TEXT (text_quotefmt), TRUE);
1781 gtk_widget_set_usize(text_quotefmt, -1, 60);
1785 PACK_FRAME (vbox1, frame_quote, _("Forward format"));
1787 vbox_quote = gtk_vbox_new (FALSE, VSPACING_NARROW);
1788 gtk_widget_show (vbox_quote);
1789 gtk_container_add (GTK_CONTAINER (frame_quote), vbox_quote);
1790 gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
1792 hbox1 = gtk_hbox_new (FALSE, 32);
1793 gtk_widget_show (hbox1);
1794 gtk_box_pack_start (GTK_BOX (vbox_quote), hbox1, FALSE, FALSE, 0);
1796 hbox2 = gtk_hbox_new (FALSE, 8);
1797 gtk_widget_show (hbox2);
1798 gtk_box_pack_start (GTK_BOX (hbox1), hbox2, FALSE, FALSE, 0);
1800 label_quotemark = gtk_label_new (_("Quotation mark"));
1801 gtk_widget_show (label_quotemark);
1802 gtk_box_pack_start (GTK_BOX (hbox2), label_quotemark, FALSE, FALSE, 0);
1804 entry_fw_quotemark = gtk_entry_new ();
1805 gtk_widget_show (entry_fw_quotemark);
1806 gtk_box_pack_start (GTK_BOX (hbox2), entry_fw_quotemark,
1808 gtk_widget_set_usize (entry_fw_quotemark, 64, -1);
1810 scrolledwin_quotefmt = gtk_scrolled_window_new (NULL, NULL);
1811 gtk_widget_show (scrolledwin_quotefmt);
1812 gtk_box_pack_start (GTK_BOX (vbox_quote), scrolledwin_quotefmt, TRUE, TRUE, 0);
1813 gtk_scrolled_window_set_policy
1814 (GTK_SCROLLED_WINDOW (scrolledwin_quotefmt),
1815 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1817 text_fw_quotefmt = gtk_text_new (NULL, NULL);
1818 gtk_widget_show (text_fw_quotefmt);
1819 gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
1821 gtk_text_set_editable (GTK_TEXT (text_fw_quotefmt), TRUE);
1822 gtk_widget_set_usize(text_fw_quotefmt, -1, 60);
1824 hbox1 = gtk_hbox_new (FALSE, 32);
1825 gtk_widget_show (hbox1);
1826 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
1829 gtk_button_new_with_label (_(" Description of symbols "));
1830 gtk_widget_show (btn_quotedesc);
1831 gtk_box_pack_start (GTK_BOX (hbox1), btn_quotedesc, FALSE, FALSE, 0);
1832 gtk_signal_connect(GTK_OBJECT(btn_quotedesc), "clicked",
1833 GTK_SIGNAL_FUNC(prefs_quote_description), NULL);
1835 compose.checkbtn_reply_with_quote= checkbtn_reply_with_quote;
1836 quote.entry_quotemark = entry_quotemark;
1837 quote.text_quotefmt = text_quotefmt;
1838 quote.entry_fw_quotemark = entry_fw_quotemark;
1839 quote.text_fw_quotefmt = text_fw_quotefmt;
1842 static void prefs_display_create(void)
1845 GtkWidget *frame_font;
1847 GtkWidget *label_textfont;
1848 GtkWidget *entry_textfont;
1849 GtkWidget *button_textfont;
1850 GtkWidget *chkbtn_folder_unread;
1851 GtkWidget *chkbtn_transhdr;
1852 GtkWidget *frame_summary;
1854 GtkWidget *chkbtn_swapfrom;
1855 GtkWidget *chkbtn_hscrollbar;
1856 GtkWidget *chkbtn_useaddrbook;
1857 GtkWidget *chkbtn_expand_thread;
1858 GtkWidget *chkbtn_bold_unread;
1861 GtkWidget *label_datefmt;
1862 GtkWidget *button_datefmt;
1863 GtkWidget *entry_datefmt;
1864 GtkWidget *button_dispitem;
1865 GtkWidget *tmplabel, *tmpbutton, *tmpentry;
1867 vbox1 = gtk_vbox_new (FALSE, VSPACING);
1868 gtk_widget_show (vbox1);
1869 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
1870 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
1872 PACK_FRAME(vbox1, frame_font, _("Font"));
1874 table1 = gtk_table_new (4, 3, FALSE);
1876 gtk_widget_show (table1);
1877 gtk_container_add (GTK_CONTAINER (frame_font), table1);
1878 gtk_container_set_border_width (GTK_CONTAINER (table1), 8);
1879 gtk_table_set_row_spacings (GTK_TABLE (table1), 8);
1880 gtk_table_set_col_spacings (GTK_TABLE (table1), 8);
1882 label_textfont = gtk_label_new (_("Text"));
1883 gtk_misc_set_alignment(GTK_MISC(label_textfont), 0, 0.5);
1884 gtk_widget_show (label_textfont);
1885 gtk_table_attach (GTK_TABLE (table1), label_textfont, 0, 1, 0, 1,
1886 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1888 entry_textfont = gtk_entry_new ();
1889 gtk_widget_show (entry_textfont);
1890 gtk_table_attach (GTK_TABLE (table1), entry_textfont, 1, 2, 0, 1,
1891 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
1893 button_textfont = gtk_button_new_with_label (" ... ");
1895 gtk_widget_show (button_textfont);
1896 gtk_table_attach (GTK_TABLE (table1), button_textfont, 2, 3, 0, 1,
1898 gtk_signal_connect (GTK_OBJECT (button_textfont), "clicked",
1899 GTK_SIGNAL_FUNC (prefs_font_select), entry_textfont);
1901 tmplabel = gtk_label_new (_("Small"));
1902 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
1903 gtk_widget_show (tmplabel);
1904 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 1, 2,
1905 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1907 tmpentry = gtk_entry_new ();
1908 gtk_widget_show (tmpentry);
1909 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 1, 2,
1910 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
1912 tmpbutton = gtk_button_new_with_label (" ... ");
1913 gtk_widget_show (tmpbutton);
1914 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 1, 2,
1916 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
1917 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
1918 display.entry_smallfont = tmpentry;
1920 tmplabel = gtk_label_new (_("Normal"));
1921 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
1922 gtk_widget_show (tmplabel);
1923 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 2, 3,
1924 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1926 tmpentry = gtk_entry_new ();
1927 gtk_widget_show (tmpentry);
1928 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 2, 3,
1929 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
1931 tmpbutton = gtk_button_new_with_label (" ... ");
1932 gtk_widget_show (tmpbutton);
1933 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 2, 3,
1935 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
1936 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
1937 display.entry_normalfont = tmpentry;
1939 tmplabel = gtk_label_new (_("Bold"));
1940 gtk_misc_set_alignment(GTK_MISC(tmplabel), 0, 0.5);
1941 gtk_widget_show (tmplabel);
1942 gtk_table_attach (GTK_TABLE (table1), tmplabel, 0, 1, 3, 4,
1943 GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
1945 tmpentry = gtk_entry_new ();
1946 gtk_widget_show (tmpentry);
1947 gtk_table_attach (GTK_TABLE (table1), tmpentry, 1, 2, 3, 4,
1948 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
1950 tmpbutton = gtk_button_new_with_label (" ... ");
1951 gtk_widget_show (tmpbutton);
1952 gtk_table_attach (GTK_TABLE (table1), tmpbutton, 2, 3, 3, 4,
1954 gtk_signal_connect (GTK_OBJECT(tmpbutton), "clicked",
1955 GTK_SIGNAL_FUNC(prefs_font_select), tmpentry);
1956 display.entry_boldfont = tmpentry;
1958 vbox2 = gtk_vbox_new (FALSE, 0);
1959 gtk_widget_show (vbox2);
1960 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, TRUE, 0);
1963 (vbox2, chkbtn_transhdr,
1964 _("Translate header name (such as `From:', `Subject:')"));
1966 PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
1967 _("Display unread number next to folder name"));
1969 /* ---- Summary ---- */
1971 PACK_FRAME(vbox1, frame_summary, _("Summary View"));
1973 vbox2 = gtk_vbox_new (FALSE, 0);
1974 gtk_widget_show (vbox2);
1975 gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
1976 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
1979 (vbox2, chkbtn_swapfrom,
1980 _("Display recipient on `From' column if sender is yourself"));
1982 (vbox2, chkbtn_useaddrbook,
1983 _("Display sender using address book"));
1985 (vbox2, chkbtn_hscrollbar, _("Enable horizontal scroll bar"));
1987 (vbox2, chkbtn_expand_thread, _("Expand threads"));
1989 (vbox2, chkbtn_bold_unread,
1990 _("Display unread messages with bold font"));
1992 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
1994 hbox1 = gtk_hbox_new (FALSE, 8);
1995 gtk_widget_show (hbox1);
1996 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
1998 label_datefmt = gtk_label_new (_("Date format"));
1999 gtk_widget_show (label_datefmt);
2000 gtk_box_pack_start (GTK_BOX (hbox1), label_datefmt, FALSE, FALSE, 0);
2002 entry_datefmt = gtk_entry_new ();
2003 gtk_widget_show (entry_datefmt);
2004 gtk_box_pack_start (GTK_BOX (hbox1), entry_datefmt, TRUE, TRUE, 0);
2006 button_datefmt = gtk_button_new_with_label (" ... ");
2008 gtk_widget_show (button_datefmt);
2009 gtk_box_pack_start (GTK_BOX (hbox1), button_datefmt, FALSE, FALSE, 0);
2010 gtk_signal_connect (GTK_OBJECT (button_datefmt), "clicked",
2011 GTK_SIGNAL_FUNC (date_format_create), NULL);
2013 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
2015 hbox1 = gtk_hbox_new (FALSE, 8);
2016 gtk_widget_show (hbox1);
2017 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2019 button_dispitem = gtk_button_new_with_label
2020 (_(" Set display item of summary... "));
2021 gtk_widget_show (button_dispitem);
2022 gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
2023 gtk_signal_connect (GTK_OBJECT (button_dispitem), "clicked",
2024 GTK_SIGNAL_FUNC (prefs_summary_column_open),
2027 display.entry_textfont = entry_textfont;
2028 display.button_textfont = button_textfont;
2030 display.chkbtn_folder_unread = chkbtn_folder_unread;
2031 display.chkbtn_transhdr = chkbtn_transhdr;
2033 display.chkbtn_swapfrom = chkbtn_swapfrom;
2034 display.chkbtn_hscrollbar = chkbtn_hscrollbar;
2035 display.chkbtn_expand_thread = chkbtn_expand_thread;
2036 display.chkbtn_bold_unread = chkbtn_bold_unread;
2037 display.chkbtn_useaddrbook = chkbtn_useaddrbook;
2038 display.entry_datefmt = entry_datefmt;
2041 static void prefs_message_create(void)
2047 GtkWidget *chkbtn_enablecol;
2048 GtkWidget *button_edit_col;
2049 GtkWidget *chkbtn_mbalnum;
2050 GtkWidget *chkbtn_disphdrpane;
2051 GtkWidget *chkbtn_disphdr;
2052 GtkWidget *button_edit_disphdr;
2053 GtkWidget *hbox_linespc;
2054 GtkWidget *label_linespc;
2055 GtkObject *spinbtn_linespc_adj;
2056 GtkWidget *spinbtn_linespc;
2057 GtkWidget *chkbtn_headspc;
2059 GtkWidget *frame_scr;
2060 GtkWidget *vbox_scr;
2061 GtkWidget *chkbtn_smoothscroll;
2062 GtkWidget *hbox_scr;
2063 GtkWidget *label_scr;
2064 GtkObject *spinbtn_scrollstep_adj;
2065 GtkWidget *spinbtn_scrollstep;
2066 GtkWidget *chkbtn_halfpage;
2068 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2069 gtk_widget_show (vbox1);
2070 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2071 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2073 hbox1 = gtk_hbox_new (FALSE, 8);
2074 gtk_widget_show (hbox1);
2075 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, TRUE, 0);
2077 PACK_CHECK_BUTTON (hbox1, chkbtn_enablecol,
2078 _("Enable coloration of message"));
2079 gtk_signal_connect (GTK_OBJECT (chkbtn_enablecol), "toggled",
2080 GTK_SIGNAL_FUNC (prefs_enable_message_color_toggled),
2083 button_edit_col = gtk_button_new_with_label (_(" Edit... "));
2084 gtk_widget_show (button_edit_col);
2085 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_col, FALSE, TRUE, 0);
2086 gtk_signal_connect (GTK_OBJECT (button_edit_col), "clicked",
2087 GTK_SIGNAL_FUNC (prefs_quote_colors_dialog), NULL);
2089 SET_TOGGLE_SENSITIVITY(chkbtn_enablecol, button_edit_col);
2091 vbox2 = gtk_vbox_new (FALSE, 0);
2092 gtk_widget_show (vbox2);
2093 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2096 (vbox2, chkbtn_mbalnum,
2097 _("Display 2-byte alphabet and numeric with 1-byte character"));
2098 PACK_CHECK_BUTTON(vbox2, chkbtn_disphdrpane,
2099 _("Display header pane above message view"));
2101 hbox1 = gtk_hbox_new (FALSE, 8);
2102 gtk_widget_show (hbox1);
2103 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2105 PACK_CHECK_BUTTON(hbox1, chkbtn_disphdr,
2106 _("Display short headers on message view"));
2108 button_edit_disphdr = gtk_button_new_with_label (_(" Edit... "));
2109 gtk_widget_show (button_edit_disphdr);
2110 gtk_box_pack_end (GTK_BOX (hbox1), button_edit_disphdr,
2112 gtk_signal_connect (GTK_OBJECT (button_edit_disphdr), "clicked",
2113 GTK_SIGNAL_FUNC (prefs_display_header_open),
2116 SET_TOGGLE_SENSITIVITY(chkbtn_disphdr, button_edit_disphdr);
2118 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
2120 hbox1 = gtk_hbox_new (FALSE, 32);
2121 gtk_widget_show (hbox1);
2122 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
2124 hbox_linespc = gtk_hbox_new (FALSE, 8);
2125 gtk_widget_show (hbox1);
2126 gtk_box_pack_start (GTK_BOX (hbox1), hbox_linespc, FALSE, TRUE, 0);
2128 label_linespc = gtk_label_new (_("Line space"));
2129 gtk_widget_show (label_linespc);
2130 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2133 spinbtn_linespc_adj = gtk_adjustment_new (2, 0, 16, 1, 1, 16);
2134 spinbtn_linespc = gtk_spin_button_new
2135 (GTK_ADJUSTMENT (spinbtn_linespc_adj), 1, 0);
2136 gtk_widget_show (spinbtn_linespc);
2137 gtk_box_pack_start (GTK_BOX (hbox_linespc), spinbtn_linespc,
2139 gtk_widget_set_usize (spinbtn_linespc, 64, -1);
2140 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_linespc), TRUE);
2142 label_linespc = gtk_label_new (_("pixel(s)"));
2143 gtk_widget_show (label_linespc);
2144 gtk_box_pack_start (GTK_BOX (hbox_linespc), label_linespc,
2147 PACK_CHECK_BUTTON(hbox1, chkbtn_headspc, _("Leave space on head"));
2149 PACK_FRAME(vbox1, frame_scr, _("Scroll"));
2151 vbox_scr = gtk_vbox_new (FALSE, 0);
2152 gtk_widget_show (vbox_scr);
2153 gtk_container_add (GTK_CONTAINER (frame_scr), vbox_scr);
2154 gtk_container_set_border_width (GTK_CONTAINER (vbox_scr), 8);
2156 PACK_CHECK_BUTTON(vbox_scr, chkbtn_halfpage, _("Half page"));
2158 hbox1 = gtk_hbox_new (FALSE, 32);
2159 gtk_widget_show (hbox1);
2160 gtk_box_pack_start (GTK_BOX (vbox_scr), hbox1, FALSE, TRUE, 0);
2162 PACK_CHECK_BUTTON(hbox1, chkbtn_smoothscroll, _("Smooth scroll"));
2164 hbox_scr = gtk_hbox_new (FALSE, 8);
2165 gtk_widget_show (hbox_scr);
2166 gtk_box_pack_start (GTK_BOX (hbox1), hbox_scr, FALSE, FALSE, 0);
2168 label_scr = gtk_label_new (_("Step"));
2169 gtk_widget_show (label_scr);
2170 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2172 spinbtn_scrollstep_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 10);
2173 spinbtn_scrollstep = gtk_spin_button_new
2174 (GTK_ADJUSTMENT (spinbtn_scrollstep_adj), 1, 0);
2175 gtk_widget_show (spinbtn_scrollstep);
2176 gtk_box_pack_start (GTK_BOX (hbox_scr), spinbtn_scrollstep,
2178 gtk_widget_set_usize (spinbtn_scrollstep, 64, -1);
2179 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_scrollstep),
2182 label_scr = gtk_label_new (_("pixel(s)"));
2183 gtk_widget_show (label_scr);
2184 gtk_box_pack_start (GTK_BOX (hbox_scr), label_scr, FALSE, FALSE, 0);
2186 SET_TOGGLE_SENSITIVITY (chkbtn_smoothscroll, hbox_scr)
2188 message.chkbtn_enablecol = chkbtn_enablecol;
2189 message.button_edit_col = button_edit_col;
2190 message.chkbtn_mbalnum = chkbtn_mbalnum;
2191 message.chkbtn_disphdrpane = chkbtn_disphdrpane;
2192 message.chkbtn_disphdr = chkbtn_disphdr;
2193 message.spinbtn_linespc = spinbtn_linespc;
2194 message.chkbtn_headspc = chkbtn_headspc;
2196 message.chkbtn_smoothscroll = chkbtn_smoothscroll;
2197 message.spinbtn_scrollstep = spinbtn_scrollstep;
2198 message.spinbtn_scrollstep_adj = spinbtn_scrollstep_adj;
2199 message.chkbtn_halfpage = chkbtn_halfpage;
2203 static void prefs_privacy_create(void)
2208 GtkWidget *checkbtn_auto_check_signatures;
2209 GtkWidget *checkbtn_gpg_signature_popup;
2210 GtkWidget *checkbtn_passphrase_grab;
2211 GtkWidget *checkbtn_gpg_warning;
2213 GtkWidget *menuitem;
2215 GtkWidget *optmenu_menu;
2217 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2218 gtk_widget_show (vbox1);
2219 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2220 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2222 vbox2 = gtk_vbox_new (FALSE, 0);
2223 gtk_widget_show (vbox2);
2224 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2226 PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
2227 _("Automatically check signatures"));
2229 PACK_CHECK_BUTTON (vbox2, checkbtn_gpg_signature_popup,
2230 _("Show signature check result in a popup window"));
2233 PACK_CHECK_BUTTON (vbox2, checkbtn_passphrase_grab,
2234 _("Grab input while entering a passphrase"));
2238 (vbox2, checkbtn_gpg_warning,
2239 _("Display warning on startup if GnuPG doesn't work"));
2241 hbox1 = gtk_hbox_new (FALSE, 8);
2242 gtk_widget_show (hbox1);
2243 gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
2245 /* create default signkey box */
2246 label = gtk_label_new (_("Default Sign Key"));
2247 gtk_widget_show (label);
2248 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2249 optmenu = gtk_option_menu_new ();
2250 gtk_widget_show (optmenu);
2251 gtk_box_pack_start(GTK_BOX (hbox1), optmenu, FALSE, FALSE, 0);
2252 optmenu_menu = gtk_menu_new ();
2254 MENUITEM_ADD(optmenu_menu, menuitem, "Default Key", "def_key");
2255 MENUITEM_ADD(optmenu_menu, menuitem, "Second Key", "2nd_key");
2256 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu), optmenu_menu);
2257 /* FIXME: disabled because not implemented */
2258 gtk_widget_set_sensitive(optmenu, FALSE);
2260 privacy.checkbtn_auto_check_signatures
2261 = checkbtn_auto_check_signatures;
2262 privacy.checkbtn_gpg_signature_popup
2263 = checkbtn_gpg_signature_popup;
2264 privacy.checkbtn_passphrase_grab = checkbtn_passphrase_grab;
2265 privacy.checkbtn_gpg_warning = checkbtn_gpg_warning;
2266 privacy.optmenu_default_signkey = optmenu;
2270 prefs_common_default_signkey_set_data_from_optmenu(PrefParam *pparam)
2274 GtkWidget *menuitem;
2277 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
2278 menuitem = gtk_menu_get_active(GTK_MENU(menu));
2279 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
2280 g_free(*((gchar **)pparam->data));
2281 *((gchar **)pparam->data) = g_strdup(charset);
2285 static void prefs_common_default_signkey_set_optmenu(PrefParam *pparam)
2289 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
2291 GtkWidget *menuitem;
2295 g_return_if_fail(optmenu != NULL);
2296 g_return_if_fail(*((gchar **)pparam->data) != NULL);
2298 menu = gtk_option_menu_get_menu(optmenu);
2299 for (cur = GTK_MENU_SHELL(menu)->children;
2300 cur != NULL; cur = cur->next) {
2301 menuitem = GTK_WIDGET(cur->data);
2302 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
2303 if (!strcmp(charset, *((gchar **)pparam->data))) {
2304 gtk_option_menu_set_history(optmenu, n);
2310 gtk_option_menu_set_history(optmenu, 0);
2311 prefs_common_charset_set_data_from_optmenu(pparam);
2314 #endif /* USE_GPGME */
2316 static void prefs_interface_create(void)
2321 /* GtkWidget *checkbtn_emacs; */
2322 GtkWidget *checkbtn_openunread;
2323 GtkWidget *checkbtn_openinbox;
2324 GtkWidget *checkbtn_immedexec;
2327 GtkWidget *optmenu_recvdialog;
2329 GtkWidget *menuitem;
2331 GtkWidget *frame_addr;
2332 GtkWidget *vbox_addr;
2333 GtkWidget *checkbtn_addaddrbyclick;
2335 GtkWidget *keybind_frame;
2336 GtkWidget *keybind_label;
2337 GtkWidget *keybind_combo;
2338 GtkWidget *keybind_btn;
2341 GtkWidget *optmenu_nextunreadmsgdialog;
2342 GtkWidget *optmenu_nextunreadmsgdialog_menu;
2343 GtkWidget *nextunreadmsgdialog_menuitem;
2345 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2346 gtk_widget_show (vbox1);
2347 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2348 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2350 vbox2 = gtk_vbox_new (FALSE, 0);
2351 gtk_widget_show (vbox2);
2352 gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
2354 /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
2355 _("Emulate the behavior of mouse operation of\n"
2356 "Emacs-based mailer"));
2357 gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
2358 GTK_JUSTIFY_LEFT); */
2361 (vbox2, checkbtn_openunread,
2362 _("Open first unread message when entering a folder"));
2365 (vbox2, checkbtn_openinbox,
2366 _("Go to inbox after receiving new mail"));
2368 vbox3 = gtk_vbox_new (FALSE, 0);
2369 gtk_widget_show (vbox3);
2370 gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
2373 (vbox3, checkbtn_immedexec,
2374 _("Execute immediately when moving or deleting messages"));
2376 hbox1 = gtk_hbox_new (FALSE, 0);
2377 gtk_widget_show (hbox1);
2378 gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
2380 label = gtk_label_new
2381 (_("(Messages will be marked until execution\n"
2382 " if this is turned off)"));
2383 gtk_widget_show (label);
2384 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 8);
2385 gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
2387 PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
2389 hbox1 = gtk_hbox_new (FALSE, 8);
2390 gtk_widget_show (hbox1);
2391 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0);
2393 label = gtk_label_new (_("Show receive dialog"));
2394 gtk_widget_show (label);
2395 gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
2397 optmenu_recvdialog = gtk_option_menu_new ();
2398 gtk_widget_show (optmenu_recvdialog);
2399 gtk_box_pack_start (GTK_BOX (hbox1), optmenu_recvdialog,
2402 menu = gtk_menu_new ();
2403 MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
2404 MENUITEM_ADD (menu, menuitem, _("Only if a window is active"),
2405 RECV_DIALOG_ACTIVE);
2406 MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
2408 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
2410 PACK_FRAME (vbox1, frame_addr, _("Address book"));
2412 vbox_addr = gtk_vbox_new (FALSE, 0);
2413 gtk_widget_show (vbox_addr);
2414 gtk_container_add (GTK_CONTAINER (frame_addr), vbox_addr);
2415 gtk_container_set_border_width (GTK_CONTAINER (vbox_addr), 8);
2418 (vbox_addr, checkbtn_addaddrbyclick,
2419 _("Add address to destination when double-clicked"));
2421 /* Next Unread Message Dialog */
2422 hbox2 = gtk_hbox_new (FALSE, 8);
2423 gtk_widget_show (hbox2);
2424 gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 0);
2426 label = gtk_label_new (_("Show no-unread-message dialog"));
2427 gtk_widget_show (label);
2428 gtk_box_pack_start (GTK_BOX (hbox2), label, FALSE, FALSE, 0);
2430 optmenu_nextunreadmsgdialog = gtk_option_menu_new ();
2431 gtk_widget_show (optmenu_nextunreadmsgdialog);
2432 gtk_box_pack_start (GTK_BOX (hbox2), optmenu_nextunreadmsgdialog,
2435 optmenu_nextunreadmsgdialog_menu = gtk_menu_new ();
2436 MENUITEM_ADD (optmenu_nextunreadmsgdialog_menu, nextunreadmsgdialog_menuitem,
2437 _("Always"), NEXTUNREADMSGDIALOG_ALWAYS);
2438 MENUITEM_ADD (optmenu_nextunreadmsgdialog_menu, nextunreadmsgdialog_menuitem,
2439 _("Assume 'Yes'"), NEXTUNREADMSGDIALOG_ASSUME_YES);
2440 MENUITEM_ADD (optmenu_nextunreadmsgdialog_menu, nextunreadmsgdialog_menuitem,
2441 _("Assume 'No'"), NEXTUNREADMSGDIALOG_ASSUME_NO);
2443 gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog),
2444 optmenu_nextunreadmsgdialog_menu);
2447 /* Receive Dialog */
2448 /* hbox = gtk_hbox_new (FALSE, 8);
2449 gtk_widget_show (hbox);
2450 gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
2452 label = gtk_label_new (_("Show receive Dialog"));
2453 gtk_widget_show (label);
2454 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
2456 recvdialog_optmenu = gtk_option_menu_new ();
2457 gtk_widget_show (recvdialog_optmenu);
2458 gtk_box_pack_start (GTK_BOX (hbox), recvdialog_optmenu, FALSE, FALSE, 0);
2460 recvdialog_optmenu_menu = gtk_menu_new ();
2462 MENUITEM_ADD (recvdialog_optmenu_menu, recvdialog_menuitem, _("Always"), RECVDIALOG_ALWAYS);
2463 MENUITEM_ADD (recvdialog_optmenu_menu, recvdialog_menuitem, _("Only if a sylpheed window is active"), RECVDIALOG_WINDOW_ACTIVE);
2464 MENUITEM_ADD (recvdialog_optmenu_menu, recvdialog_menuitem, _("Never"), RECVDIALOG_NEVER);
2466 gtk_option_menu_set_menu (GTK_OPTION_MENU (recvdialog_optmenu), recvdialog_optmenu_menu); */
2468 PACK_FRAME(vbox1, keybind_frame, _("Shortcut key"));
2470 vbox2 = gtk_vbox_new (FALSE, 8);
2471 gtk_widget_show (vbox2);
2472 gtk_container_add (GTK_CONTAINER (keybind_frame), vbox2);
2473 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
2475 hbox1 = gtk_hbox_new (FALSE, 8);
2476 gtk_widget_show (hbox1);
2477 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0);
2479 keybind_label = gtk_label_new
2480 (_("Select the preset of key bindings.\n"
2481 "You can also modify each menu shortcuts by pressing\n"
2482 "any key when placing mouse pointer on the item."));
2483 gtk_widget_show (keybind_label);
2484 gtk_box_pack_start (GTK_BOX (hbox1), keybind_label, FALSE, FALSE, 0);
2485 gtk_label_set_justify (GTK_LABEL (keybind_label), GTK_JUSTIFY_LEFT);
2487 hbox1 = gtk_hbox_new (FALSE, 8);
2488 gtk_widget_show (hbox1);
2489 gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0);
2491 keybind_combo = gtk_combo_new ();
2492 gtk_widget_show (keybind_combo);
2493 gtk_box_pack_start (GTK_BOX (hbox1), keybind_combo, TRUE, TRUE, 0);
2494 gtkut_combo_set_items (GTK_COMBO (keybind_combo),
2496 _("Mew / Wanderlust"),
2499 gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (keybind_combo)->entry),
2502 keybind_btn = gtk_button_new_with_label(_(" Apply "));
2503 gtk_widget_show (keybind_btn);
2504 gtk_box_pack_end (GTK_BOX (hbox1), keybind_btn, FALSE, TRUE, 0);
2505 gtk_signal_connect (GTK_OBJECT (keybind_btn), "clicked",
2506 GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
2509 /* interface.checkbtn_emacs = checkbtn_emacs; */
2510 interface.checkbtn_openunread = checkbtn_openunread;
2511 interface.checkbtn_openinbox = checkbtn_openinbox;
2512 interface.checkbtn_immedexec = checkbtn_immedexec;
2513 interface.optmenu_recvdialog = optmenu_recvdialog;
2514 interface.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick;
2515 interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
2516 interface.keybind_combo = keybind_combo;
2519 static void prefs_other_create(void)
2524 GtkWidget *uri_frame;
2525 GtkWidget *uri_label;
2526 GtkWidget *uri_combo;
2527 GtkWidget *uri_entry;
2529 GtkWidget *print_frame;
2530 GtkWidget *printcmd_label;
2531 GtkWidget *printcmd_entry;
2533 GtkWidget *exteditor_frame;
2534 GtkWidget *exteditor_label;
2535 GtkWidget *exteditor_combo;
2536 GtkWidget *exteditor_entry;
2538 GtkWidget *frame_exit;
2539 GtkWidget *vbox_exit;
2540 GtkWidget *checkbtn_confonexit;
2541 GtkWidget *checkbtn_cleanonexit;
2542 GtkWidget *checkbtn_askonclean;
2543 GtkWidget *checkbtn_warnqueued;
2545 vbox1 = gtk_vbox_new (FALSE, VSPACING);
2546 gtk_widget_show (vbox1);
2547 gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
2548 gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
2550 PACK_FRAME(vbox1, uri_frame,
2551 _("External Web browser (%s will be replaced with URI)"));
2553 hbox1 = gtk_hbox_new (FALSE, 8);
2554 gtk_widget_show (hbox1);
2555 gtk_container_add (GTK_CONTAINER (uri_frame), hbox1);
2556 gtk_container_set_border_width (GTK_CONTAINER (hbox1), 8);
2558 uri_label = gtk_label_new (_("Command"));
2559 gtk_widget_show(uri_label);
2560 gtk_box_pack_start (GTK_BOX (hbox1), uri_label, FALSE, TRUE, 0);
2562 uri_combo = gtk_combo_new ();
2563 gtk_widget_show (uri_combo);
2564 gtk_box_pack_start (GTK_BOX (hbox1), uri_combo, TRUE, TRUE, 0);
2565 gtkut_combo_set_items (GTK_COMBO (uri_combo),
2566 "netscape -remote 'openURL(%s,raise)'",
2568 "gnome-moz-remote --raise --newwin '%s'",
2569 "kterm -e w3m '%s'",
2570 "kterm -e lynx '%s'",
2573 uri_entry = GTK_COMBO (uri_combo)->entry;
2575 PACK_FRAME(vbox1, print_frame,
2576 _("Printing (%s will be replaced with file name)"));
2578 hbox1 = gtk_hbox_new (FALSE, 8);
2579 gtk_widget_show (hbox1);
2580 gtk_container_add (GTK_CONTAINER (print_frame), hbox1);
2581 gtk_container_set_border_width (GTK_CONTAINER (hbox1), 8);
2583 printcmd_label = gtk_label_new (_("Command"));
2584 gtk_widget_show (printcmd_label);
2585 gtk_box_pack_start (GTK_BOX (hbox1), printcmd_label, FALSE, FALSE, 0);
2587 printcmd_entry = gtk_entry_new ();
2588 gtk_widget_show (printcmd_entry);
2589 gtk_box_pack_start (GTK_BOX (hbox1), printcmd_entry, TRUE, TRUE, 0);
2591 PACK_FRAME(vbox1, exteditor_frame,
2592 _("External editor (%s will be replaced with file name)"));
2594 hbox1 = gtk_hbox_new (FALSE, 8);
2595 gtk_widget_show (hbox1);
2596 gtk_container_add (GTK_CONTAINER (exteditor_frame), hbox1);
2597 gtk_container_set_border_width (GTK_CONTAINER (hbox1), 8);
2599 exteditor_label = gtk_label_new (_("Command"));
2600 gtk_widget_show (exteditor_label);
2601 gtk_box_pack_start (GTK_BOX (hbox1), exteditor_label, FALSE, FALSE, 0);
2603 exteditor_combo = gtk_combo_new ();
2604 gtk_widget_show (exteditor_combo);
2605 gtk_box_pack_start (GTK_BOX (hbox1), exteditor_combo, TRUE, TRUE, 0);
2606 gtkut_combo_set_items (GTK_COMBO (exteditor_combo),
2609 "mgedit --no-fork %s",
2615 exteditor_entry = GTK_COMBO (exteditor_combo)->entry;
2618 PACK_FRAME (vbox1, frame_exit, _("On exit"));
2620 vbox_exit = gtk_vbox_new (FALSE, 0);
2621 gtk_widget_show (vbox_exit);
2622 gtk_container_add (GTK_CONTAINER (frame_exit), vbox_exit);
2623 gtk_container_set_border_width (GTK_CONTAINER (vbox_exit), 8);
2625 PACK_CHECK_BUTTON (vbox_exit, checkbtn_confonexit,
2626 _("Confirm on exit"));
2628 hbox1 = gtk_hbox_new (FALSE, 32);
2629 gtk_widget_show (hbox1);
2630 gtk_box_pack_start (GTK_BOX (vbox_exit), hbox1, FALSE, FALSE, 0);
2632 PACK_CHECK_BUTTON (hbox1, checkbtn_cleanonexit,
2633 _("Empty trash on exit"));
2634 PACK_CHECK_BUTTON (hbox1, checkbtn_askonclean,
2635 _("Ask before emptying"));
2636 SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
2638 PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
2639 _("Warn if there are queued messages"));
2641 other.uri_combo = uri_combo;
2642 other.uri_entry = uri_entry;
2643 other.printcmd_entry = printcmd_entry;
2645 other.exteditor_combo = exteditor_combo;
2646 other.exteditor_entry = exteditor_entry;
2648 other.checkbtn_confonexit = checkbtn_confonexit;
2649 other.checkbtn_cleanonexit = checkbtn_cleanonexit;
2650 other.checkbtn_askonclean = checkbtn_askonclean;
2651 other.checkbtn_warnqueued = checkbtn_warnqueued;
2654 static void date_format_ok_btn_clicked(GtkButton *button, GtkWidget **widget)
2656 GtkWidget *datefmt_sample = NULL;
2659 g_return_if_fail(widget != NULL);
2660 g_return_if_fail(*widget != NULL);
2661 g_return_if_fail(display.entry_datefmt != NULL);
2663 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2664 (GTK_OBJECT(*widget), "datefmt_sample"));
2665 g_return_if_fail(datefmt_sample != NULL);
2667 text = gtk_editable_get_chars(GTK_EDITABLE(datefmt_sample), 0, -1);
2668 g_free(prefs_common.date_format);
2669 prefs_common.date_format = text;
2670 gtk_entry_set_text(GTK_ENTRY(display.entry_datefmt), text);
2672 gtk_widget_destroy(*widget);
2676 static void date_format_cancel_btn_clicked(GtkButton *button,
2679 g_return_if_fail(widget != NULL);
2680 g_return_if_fail(*widget != NULL);
2682 gtk_widget_destroy(*widget);
2686 static void date_format_key_pressed(GtkWidget *keywidget, GdkEventKey *event,
2689 if (event && event->keyval == GDK_Escape)
2690 date_format_cancel_btn_clicked(NULL, widget);
2693 static gboolean date_format_on_delete(GtkWidget *dialogwidget,
2694 GdkEventAny *event, GtkWidget **widget)
2696 g_return_val_if_fail(widget != NULL, FALSE);
2697 g_return_val_if_fail(*widget != NULL, FALSE);
2703 static void date_format_entry_on_change(GtkEditable *editable,
2707 struct tm *cal_time;
2711 cur_time = time(NULL);
2712 cal_time = localtime(&cur_time);
2714 text = gtk_editable_get_chars(editable, 0, -1);
2716 strftime(buffer, sizeof buffer, text, cal_time);
2717 gtk_label_set_text(example, buffer);
2720 static void date_format_select_row(GtkWidget *date_format_list, gint row,
2721 gint column, GdkEventButton *event,
2722 GtkWidget *date_format)
2728 GtkWidget *datefmt_sample;
2730 /* only on double click */
2731 if (!event || event->type != GDK_2BUTTON_PRESS) return;
2734 datefmt_sample = GTK_WIDGET(gtk_object_get_data
2735 (GTK_OBJECT(date_format), "datefmt_sample"));
2737 g_return_if_fail(date_format_list != NULL);
2738 g_return_if_fail(date_format != NULL);
2739 g_return_if_fail(datefmt_sample != NULL);
2741 /* get format from clist */
2742 gtk_clist_get_text(GTK_CLIST(date_format_list), row, 0, &format);
2744 cur_pos = gtk_editable_get_position(GTK_EDITABLE(datefmt_sample));
2745 old_format = gtk_entry_get_text(GTK_ENTRY(datefmt_sample));
2747 /* insert the format into the text entry */
2748 new_format = g_malloc(strlen(old_format) + 3);
2750 strncpy(new_format, old_format, cur_pos);
2751 new_format[cur_pos] = '\0';
2752 strcat(new_format, format);
2753 strcat(new_format, &old_format[cur_pos]);
2755 gtk_entry_set_text(GTK_ENTRY(datefmt_sample), new_format);
2756 gtk_editable_set_position(GTK_EDITABLE(datefmt_sample), cur_pos + 2);
2761 static GtkWidget *date_format_create(GtkButton *button, void *data)
2763 static GtkWidget *datefmt_win = NULL;
2765 GtkWidget *scrolledwindow1;
2766 GtkWidget *datefmt_clist;
2771 GtkWidget *confirm_area;
2773 GtkWidget *cancel_btn;
2774 GtkWidget *datefmt_entry;
2780 { "%a", _("the full abbreviated weekday name") },
2781 { "%A", _("the full weekday name") },
2782 { "%b", _("the abbreviated month name") },
2783 { "%B", _("the full month name") },
2784 { "%c", _("the preferred date and time for the current locale") },
2785 { "%C", _("the century number (year/100)") },
2786 { "%d", _("the day of the month as a decimal number") },
2787 { "%H", _("the hour as a decimal number using a 24-hour clock") },
2788 { "%I", _("the hour as a decimal number using a 12-hour clock") },
2789 { "%j", _("the day of the year as a decimal number") },
2790 { "%m", _("the month as a decimal number") },
2791 { "%M", _("the minute as a decimal number") },
2792 { "%p", _("either AM or PM") },
2793 { "%S", _("the second as a decimal number") },
2794 { "%w", _("the day of the week as a decimal number") },
2795 { "%x", _("the preferred date for the current locale") },
2796 { "%y", _("the last two digits of a year") },
2797 { "%Y", _("the year as a decimal number") },
2798 { "%Z", _("the time zone or name or abbreviation") }
2803 const gint TIME_FORMAT_ELEMS =
2804 sizeof time_format / sizeof time_format[0];
2806 if (datefmt_win) return datefmt_win;
2808 datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
2809 gtk_container_set_border_width(GTK_CONTAINER(datefmt_win), 8);
2810 gtk_window_set_title(GTK_WINDOW(datefmt_win), _("Date format"));
2811 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2812 gtk_widget_set_usize(datefmt_win, 440, 280);
2814 vbox1 = gtk_vbox_new(FALSE, 10);
2815 gtk_widget_show(vbox1);
2816 gtk_container_add(GTK_CONTAINER(datefmt_win), vbox1);
2818 scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL);
2819 gtk_scrolled_window_set_policy
2820 (GTK_SCROLLED_WINDOW(scrolledwindow1),
2821 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
2822 gtk_widget_show(scrolledwindow1);
2823 gtk_box_pack_start(GTK_BOX(vbox1), scrolledwindow1, TRUE, TRUE, 0);
2825 titles[0] = _("Specifier");
2826 titles[1] = _("Description");
2827 datefmt_clist = gtk_clist_new_with_titles(2, titles);
2828 gtk_widget_show(datefmt_clist);
2829 gtk_container_add(GTK_CONTAINER(scrolledwindow1), datefmt_clist);
2830 /* gtk_clist_set_column_width(GTK_CLIST(datefmt_clist), 0, 80); */
2831 gtk_clist_set_selection_mode(GTK_CLIST(datefmt_clist),
2832 GTK_SELECTION_BROWSE);
2834 for (i = 0; i < TIME_FORMAT_ELEMS; i++) {
2836 /* phoney casting necessary because of gtk... */
2837 text[0] = (gchar *)time_format[i].fmt;
2838 text[1] = (gchar *)time_format[i].txt;
2839 gtk_clist_append(GTK_CLIST(datefmt_clist), text);
2842 table = gtk_table_new(2, 2, FALSE);
2843 gtk_widget_show(table);
2844 gtk_box_pack_start(GTK_BOX(vbox1), table, FALSE, FALSE, 0);
2845 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
2846 gtk_table_set_col_spacings(GTK_TABLE(table), 8);
2848 label1 = gtk_label_new(_("Date format"));
2849 gtk_widget_show(label1);
2850 gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1,
2852 gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_LEFT);
2853 gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
2855 datefmt_entry = gtk_entry_new_with_max_length(256);
2856 gtk_widget_show(datefmt_entry);
2857 gtk_table_attach(GTK_TABLE(table), datefmt_entry, 1, 2, 0, 1,
2858 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2860 /* we need the "sample" entry box; add it as data so callbacks can
2861 * get the entry box */
2862 gtk_object_set_data(GTK_OBJECT(datefmt_win), "datefmt_sample",
2865 label2 = gtk_label_new(_("Example"));
2866 gtk_widget_show(label2);
2867 gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2,
2869 gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
2870 gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
2872 label3 = gtk_label_new("");
2873 gtk_widget_show(label3);
2874 gtk_table_attach(GTK_TABLE(table), label3, 1, 2, 1, 2,
2875 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
2876 gtk_label_set_justify(GTK_LABEL(label3), GTK_JUSTIFY_LEFT);
2877 gtk_misc_set_alignment(GTK_MISC(label3), 0, 0.5);
2879 gtkut_button_set_create(&confirm_area, &ok_btn, _("OK"),
2880 &cancel_btn, _("Cancel"), NULL, NULL);
2881 gtk_widget_grab_default(ok_btn);
2882 gtk_widget_show(confirm_area);
2884 gtk_box_pack_start(GTK_BOX(vbox1), confirm_area, FALSE, FALSE, 0);
2886 /* set the current format */
2887 gtk_entry_set_text(GTK_ENTRY(datefmt_entry), prefs_common.date_format);
2888 date_format_entry_on_change(GTK_EDITABLE(datefmt_entry),
2891 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
2892 GTK_SIGNAL_FUNC(date_format_ok_btn_clicked),
2894 gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
2895 GTK_SIGNAL_FUNC(date_format_cancel_btn_clicked),
2897 gtk_signal_connect(GTK_OBJECT(datefmt_win), "key_press_event",
2898 GTK_SIGNAL_FUNC(date_format_key_pressed),
2900 gtk_signal_connect(GTK_OBJECT(datefmt_win), "delete_event",
2901 GTK_SIGNAL_FUNC(date_format_on_delete),
2903 gtk_signal_connect(GTK_OBJECT(datefmt_entry), "changed",
2904 GTK_SIGNAL_FUNC(date_format_entry_on_change),
2907 gtk_signal_connect(GTK_OBJECT(datefmt_clist), "select_row",
2908 GTK_SIGNAL_FUNC(date_format_select_row),
2911 gtk_window_set_position(GTK_WINDOW(datefmt_win), GTK_WIN_POS_CENTER);
2912 gtk_window_set_modal(GTK_WINDOW(datefmt_win), TRUE);
2914 gtk_widget_show(datefmt_win);
2915 manage_window_set_transient(GTK_WINDOW(datefmt_win));
2917 gtk_widget_grab_focus(ok_btn);
2922 void prefs_quote_colors_dialog(void)
2924 if (!quote_color_win)
2925 prefs_quote_colors_dialog_create();
2926 gtk_widget_show(quote_color_win);
2927 manage_window_set_transient(GTK_WINDOW(quote_color_win));
2930 gtk_widget_hide(quote_color_win);
2932 textview_update_message_colors();
2933 main_window_reflect_prefs_all();
2936 static void prefs_quote_colors_dialog_create(void)
2941 GtkWidget *quotelevel1_label;
2942 GtkWidget *quotelevel2_label;
2943 GtkWidget *quotelevel3_label;
2944 GtkWidget *uri_label;
2945 GtkWidget *tgt_folder_label;
2948 GtkWidget *recycle_colors_btn;
2949 GtkWidget *frame_colors;
2951 window = gtk_window_new(GTK_WINDOW_DIALOG);
2952 gtk_container_set_border_width(GTK_CONTAINER(window), 2);
2953 gtk_window_set_title(GTK_WINDOW(window), _("Set message colors"));
2954 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
2955 gtk_window_set_modal(GTK_WINDOW(window), TRUE);
2956 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
2958 vbox = gtk_vbox_new (FALSE, VSPACING);
2959 gtk_container_add (GTK_CONTAINER (window), vbox);
2960 gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
2961 PACK_FRAME(vbox, frame_colors, _("Colors"));
2963 table = gtk_table_new (4, 2, FALSE);
2964 gtk_container_add (GTK_CONTAINER (frame_colors), table);
2965 gtk_container_set_border_width (GTK_CONTAINER (table), 8);
2966 gtk_table_set_row_spacings (GTK_TABLE (table), 2);
2967 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
2970 color_buttons.quote_level1_btn = gtk_button_new();
2971 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level1_btn,
2972 0, 1, 0, 1, 0, 0, 0, 0);
2973 gtk_widget_set_usize (color_buttons.quote_level1_btn, 40, 30);
2974 gtk_container_set_border_width
2975 (GTK_CONTAINER (color_buttons.quote_level1_btn), 5);
2977 color_buttons.quote_level2_btn = gtk_button_new();
2978 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level2_btn,
2979 0, 1, 1, 2, 0, 0, 0, 0);
2980 gtk_widget_set_usize (color_buttons.quote_level2_btn, 40, 30);
2981 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.quote_level2_btn), 5);
2983 color_buttons.quote_level3_btn = gtk_button_new_with_label ("");
2984 gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level3_btn,
2985 0, 1, 2, 3, 0, 0, 0, 0);
2986 gtk_widget_set_usize (color_buttons.quote_level3_btn, 40, 30);
2987 gtk_container_set_border_width
2988 (GTK_CONTAINER (color_buttons.quote_level3_btn), 5);
2990 color_buttons.uri_btn = gtk_button_new_with_label ("");
2991 gtk_table_attach (GTK_TABLE (table), color_buttons.uri_btn,
2992 0, 1, 3, 4, 0, 0, 0, 0);
2993 gtk_widget_set_usize (color_buttons.uri_btn, 40, 30);
2994 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.uri_btn), 5);
2996 color_buttons.tgt_folder_btn = gtk_button_new_with_label ("");
2997 gtk_table_attach (GTK_TABLE (table), color_buttons.tgt_folder_btn,
2998 0, 1, 4, 5, 0, 0, 0, 0);
2999 gtk_widget_set_usize (color_buttons.tgt_folder_btn, 40, 30);
3000 gtk_container_set_border_width (GTK_CONTAINER (color_buttons.tgt_folder_btn), 5);
3002 quotelevel1_label = gtk_label_new (_("Quoted Text - First Level"));
3003 gtk_table_attach (GTK_TABLE (table), quotelevel1_label, 1, 2, 0, 1,
3004 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3005 gtk_label_set_justify (GTK_LABEL (quotelevel1_label), GTK_JUSTIFY_LEFT);
3006 gtk_misc_set_alignment (GTK_MISC (quotelevel1_label), 0, 0.5);
3008 quotelevel2_label = gtk_label_new (_("Quoted Text - Second Level"));
3009 gtk_table_attach (GTK_TABLE (table), quotelevel2_label, 1, 2, 1, 2,
3010 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3011 gtk_label_set_justify (GTK_LABEL (quotelevel2_label), GTK_JUSTIFY_LEFT);
3012 gtk_misc_set_alignment (GTK_MISC (quotelevel2_label), 0, 0.5);
3014 quotelevel3_label = gtk_label_new (_("Quoted Text - Third Level"));
3015 gtk_table_attach (GTK_TABLE (table), quotelevel3_label, 1, 2, 2, 3,
3016 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3017 gtk_label_set_justify (GTK_LABEL (quotelevel3_label), GTK_JUSTIFY_LEFT);
3018 gtk_misc_set_alignment (GTK_MISC (quotelevel3_label), 0, 0.5);
3020 uri_label = gtk_label_new (_("URI link"));
3021 gtk_table_attach (GTK_TABLE (table), uri_label, 1, 2, 3, 4,
3022 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3023 gtk_label_set_justify (GTK_LABEL (uri_label), GTK_JUSTIFY_LEFT);
3024 gtk_misc_set_alignment (GTK_MISC (uri_label), 0, 0.5);
3026 tgt_folder_label = gtk_label_new (_("Target folder"));
3027 gtk_table_attach (GTK_TABLE (table), tgt_folder_label, 1, 2, 4, 5,
3028 (GTK_EXPAND | GTK_FILL), 0, 0, 0);
3029 gtk_label_set_justify (GTK_LABEL (tgt_folder_label), GTK_JUSTIFY_LEFT);
3030 gtk_misc_set_alignment (GTK_MISC (tgt_folder_label), 0, 0.5);
3032 PACK_CHECK_BUTTON (vbox, recycle_colors_btn,
3033 _("Recycle quote colors"));
3035 gtkut_button_set_create(&hbbox, &ok_btn, _("OK"),
3036 NULL, NULL, NULL, NULL);
3037 gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
3039 gtk_widget_grab_default(ok_btn);
3040 gtk_signal_connect(GTK_OBJECT(window), "focus_in_event",
3041 GTK_SIGNAL_FUNC(manage_window_focus_in), NULL);
3042 gtk_signal_connect(GTK_OBJECT(window), "focus_out_event",
3043 GTK_SIGNAL_FUNC(manage_window_focus_out), NULL);
3044 gtk_signal_connect(GTK_OBJECT(window), "delete_event",
3045 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3046 gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
3047 GTK_SIGNAL_FUNC(prefs_quote_colors_key_pressed),
3050 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level1_btn), "clicked",
3051 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL1");
3052 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level2_btn), "clicked",
3053 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL2");
3054 gtk_signal_connect(GTK_OBJECT(color_buttons.quote_level3_btn), "clicked",
3055 GTK_SIGNAL_FUNC(quote_color_set_dialog), "LEVEL3");
3056 gtk_signal_connect(GTK_OBJECT(color_buttons.uri_btn), "clicked",
3057 GTK_SIGNAL_FUNC(quote_color_set_dialog), "URI");
3058 gtk_signal_connect(GTK_OBJECT(color_buttons.tgt_folder_btn), "clicked",
3059 GTK_SIGNAL_FUNC(quote_color_set_dialog), "TGTFLD");
3060 gtk_signal_connect(GTK_OBJECT(recycle_colors_btn), "toggled",
3061 GTK_SIGNAL_FUNC(prefs_recycle_colors_toggled), NULL);
3062 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
3063 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3065 /* show message button colors and recycle options */
3066 set_button_bg_color(color_buttons.quote_level1_btn,
3067 prefs_common.quote_level1_col);
3068 set_button_bg_color(color_buttons.quote_level2_btn,
3069 prefs_common.quote_level2_col);
3070 set_button_bg_color(color_buttons.quote_level3_btn,
3071 prefs_common.quote_level3_col);
3072 set_button_bg_color(color_buttons.uri_btn,
3073 prefs_common.uri_col);
3074 set_button_bg_color(color_buttons.tgt_folder_btn,
3075 prefs_common.tgt_folder_col);
3076 gtk_toggle_button_set_active((GtkToggleButton *)recycle_colors_btn,
3077 prefs_common.recycle_quote_colors);
3079 gtk_widget_show_all(vbox);
3080 quote_color_win = window;
3083 static void prefs_quote_colors_key_pressed(GtkWidget *widget,
3084 GdkEventKey *event, gpointer data)
3086 if (event && event->keyval == GDK_Escape)
3090 static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
3092 gchar *type = (gchar *)data;
3093 gchar *title = NULL;
3094 gdouble color[4] = {0.0, 0.0, 0.0, 0.0};
3096 GtkColorSelectionDialog *dialog;
3098 if(g_strcasecmp(type, "LEVEL1") == 0) {
3099 title = _("Pick color for quotation level 1");
3100 rgbvalue = prefs_common.quote_level1_col;
3101 } else if(g_strcasecmp(type, "LEVEL2") == 0) {
3102 title = _("Pick color for quotation level 2");
3103 rgbvalue = prefs_common.quote_level2_col;
3104 } else if(g_strcasecmp(type, "LEVEL3") == 0) {
3105 title = _("Pick color for quotation level 3");
3106 rgbvalue = prefs_common.quote_level3_col;
3107 } else if(g_strcasecmp(type, "URI") == 0) {
3108 title = _("Pick color for URI");
3109 rgbvalue = prefs_common.uri_col;
3110 } else if(g_strcasecmp(type, "TGTFLD") == 0) {
3111 title = _("Pick color for target folder");
3112 rgbvalue = prefs_common.tgt_folder_col;
3114 } else if(g_strcasecmp(type, "Misspelled word") == 0) {
3115 title = _("Pick color for misspelled word");
3116 rgbvalue = prefs_common.misspelled_col;
3118 } else { /* Should never be called */
3119 g_warning("Unrecognized datatype '%s' in quote_color_set_dialog\n", type);
3123 color_dialog = gtk_color_selection_dialog_new(title);
3124 gtk_window_set_position(GTK_WINDOW(color_dialog), GTK_WIN_POS_CENTER);
3125 gtk_window_set_modal(GTK_WINDOW(color_dialog), TRUE);
3126 gtk_window_set_policy(GTK_WINDOW(color_dialog), FALSE, FALSE, FALSE);
3127 manage_window_set_transient(GTK_WINDOW(color_dialog));
3129 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->ok_button),
3130 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_ok), data);
3131 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->cancel_button),
3132 "clicked", GTK_SIGNAL_FUNC(quote_colors_set_dialog_cancel), data);
3133 gtk_signal_connect(GTK_OBJECT(color_dialog), "key_press_event",
3134 GTK_SIGNAL_FUNC(quote_colors_set_dialog_key_pressed),
3137 /* preselect the previous color in the color selection dialog */
3138 color[0] = (gdouble) ((rgbvalue & 0xff0000) >> 16) / 255.0;
3139 color[1] = (gdouble) ((rgbvalue & 0x00ff00) >> 8) / 255.0;
3140 color[2] = (gdouble) (rgbvalue & 0x0000ff) / 255.0;
3141 dialog = GTK_COLOR_SELECTION_DIALOG(color_dialog);
3142 gtk_color_selection_set_color
3143 (GTK_COLOR_SELECTION(dialog->colorsel), color);
3145 gtk_widget_show(color_dialog);
3148 static void quote_colors_set_dialog_ok(GtkWidget *widget, gpointer data)
3150 GtkColorSelection *colorsel = (GtkColorSelection *)
3151 ((GtkColorSelectionDialog *)color_dialog)->colorsel;
3153 gint red, green, blue, rgbvalue;
3154 gchar *type = (gchar *)data;
3156 gtk_color_selection_get_color(colorsel, color);
3158 red = (gint) (color[0] * 255.0);
3159 green = (gint) (color[1] * 255.0);
3160 blue = (gint) (color[2] * 255.0);
3161 rgbvalue = (gint) ((red * 0x10000) | (green * 0x100) | blue);
3164 fprintf(stderr, "redc = %f, greenc = %f, bluec = %f\n", color[0], color[1], color[2]);
3165 fprintf(stderr, "red = %d, green = %d, blue = %d\n", red, green, blue);
3166 fprintf(stderr, "Color is %x\n", rgbvalue);
3169 if (g_strcasecmp(type, "LEVEL1") == 0) {
3170 prefs_common.quote_level1_col = rgbvalue;
3171 set_button_bg_color(color_buttons.quote_level1_btn, rgbvalue);
3172 } else if (g_strcasecmp(type, "LEVEL2") == 0) {
3173 prefs_common.quote_level2_col = rgbvalue;
3174 set_button_bg_color(color_buttons.quote_level2_btn, rgbvalue);
3175 } else if (g_strcasecmp(type, "LEVEL3") == 0) {
3176 prefs_common.quote_level3_col = rgbvalue;
3177 set_button_bg_color(color_buttons.quote_level3_btn, rgbvalue);
3178 } else if (g_strcasecmp(type, "URI") == 0) {
3179 prefs_common.uri_col = rgbvalue;
3180 set_button_bg_color(color_buttons.uri_btn, rgbvalue);
3181 } else if (g_strcasecmp(type, "TGTFLD") == 0) {
3182 prefs_common.tgt_folder_col = rgbvalue;
3183 set_button_bg_color(color_buttons.tgt_folder_btn, rgbvalue);
3184 folderview_set_target_folder_color(prefs_common.tgt_folder_col);
3186 } else if (g_strcasecmp(type, "Misspelled word") == 0) {
3187 prefs_common.misspelled_col = rgbvalue;
3188 set_button_bg_color(color_buttons.misspelled_btn, rgbvalue);
3191 fprintf( stderr, "Unrecognized datatype '%s' in quote_color_set_dialog_ok\n", type );
3193 gtk_widget_destroy(color_dialog);
3196 static void quote_colors_set_dialog_cancel(GtkWidget *widget, gpointer data)
3198 gtk_widget_destroy(color_dialog);
3201 static void quote_colors_set_dialog_key_pressed(GtkWidget *widget,
3205 gtk_widget_destroy(color_dialog);
3208 static void set_button_bg_color(GtkWidget *widget, gint rgbvalue)
3213 gtkut_convert_int_to_gdk_color(rgbvalue, &color);
3214 newstyle = gtk_style_copy(gtk_widget_get_default_style());
3215 newstyle->bg[GTK_STATE_NORMAL] = color;
3216 newstyle->bg[GTK_STATE_PRELIGHT] = color;
3217 newstyle->bg[GTK_STATE_ACTIVE] = color;
3219 gtk_widget_set_style(GTK_WIDGET(widget), newstyle);
3222 static void prefs_enable_message_color_toggled(void)
3226 is_active = gtk_toggle_button_get_active
3227 (GTK_TOGGLE_BUTTON(message.chkbtn_enablecol));
3228 gtk_widget_set_sensitive(message.button_edit_col, is_active);
3229 prefs_common.enable_color = is_active;
3232 static void prefs_recycle_colors_toggled(GtkWidget *widget)
3236 is_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
3237 prefs_common.recycle_quote_colors = is_active;
3240 void prefs_quote_description(void)
3242 if (!quote_desc_win)
3243 prefs_quote_description_create();
3245 manage_window_set_transient(GTK_WINDOW(quote_desc_win));
3246 gtk_widget_show(quote_desc_win);
3248 gtk_widget_hide(quote_desc_win);
3251 static void prefs_quote_description_create(void)
3260 quote_desc_win = gtk_window_new(GTK_WINDOW_DIALOG);
3261 gtk_window_set_title(GTK_WINDOW(quote_desc_win),
3262 _("Description of symbols"));
3263 gtk_container_set_border_width(GTK_CONTAINER(quote_desc_win), 8);
3264 gtk_window_set_position(GTK_WINDOW(quote_desc_win), GTK_WIN_POS_CENTER);
3265 gtk_window_set_modal(GTK_WINDOW(quote_desc_win), TRUE);
3266 gtk_window_set_policy(GTK_WINDOW(quote_desc_win), FALSE, FALSE, FALSE);
3268 vbox = gtk_vbox_new(FALSE, 8);
3269 gtk_container_add(GTK_CONTAINER(quote_desc_win), vbox);
3271 hbox = gtk_hbox_new(FALSE, 8);
3272 gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
3274 vbox2 = gtk_vbox_new(FALSE, 8);
3275 gtk_box_pack_start(GTK_BOX(hbox), vbox2, TRUE, TRUE, 0);
3277 #define PACK_LABEL() \
3278 gtk_box_pack_start(GTK_BOX(vbox2), label, TRUE, TRUE, 0); \
3279 gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); \
3280 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
3282 label = gtk_label_new
3285 "%N\n" /* full name of sender */
3286 "%F\n" /* first name of sender */
3287 "%I\n" /* initial of sender */
3288 "%s\n" /* subject */
3291 "%n\n" /* newsgroups */
3292 "%r\n" /* references */
3293 "%i"); /* message id */
3296 label = gtk_label_new
3297 ("?x{expr}"); /* condition */
3300 label = gtk_label_new
3301 ("%M\n" /* message body */
3302 "%Q\n" /* quoted message body */
3303 "%m\n" /* message body without signature */
3304 "%q\n" /* quoted message body without signature */
3305 "%%"); /* literal percent */
3308 label = gtk_label_new
3309 ("\\\\\n" /* literal backslash */
3310 "\\?\n" /* literal question mark */
3311 "\\{\n" /* literal opening curly brace */
3312 "\\}"); /* literal closing curly brace */
3315 vbox2 = gtk_vbox_new(FALSE, 8);
3316 gtk_box_pack_start(GTK_BOX(hbox), vbox2, TRUE, TRUE, 0);
3318 label = gtk_label_new
3321 "Full Name of Sender\n"
3322 "First Name of Sender\n"
3323 "Initial of Sender\n"
3332 label = gtk_label_new
3333 (_("If x is set, displays expr"));
3336 label = gtk_label_new
3338 "Quoted message body\n"
3339 "Message body without signature\n"
3340 "Quoted message body without signature\n"
3344 label = gtk_label_new
3345 (_("Literal backslash\n"
3346 "Literal question mark\n"
3347 "Literal opening curly brace\n"
3348 "Literal closing curly brace"));
3353 gtkut_button_set_create(&hbbox, &ok_btn, _("OK"),
3354 NULL, NULL, NULL, NULL);
3355 gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
3357 gtk_widget_grab_default(ok_btn);
3358 gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
3359 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3361 (GTK_OBJECT(quote_desc_win), "key_press_event",
3362 GTK_SIGNAL_FUNC(prefs_quote_description_key_pressed),
3364 gtk_signal_connect(GTK_OBJECT(quote_desc_win), "delete_event",
3365 GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
3367 gtk_widget_show_all(vbox);
3370 static void prefs_quote_description_key_pressed(GtkWidget *widget,
3374 if (event && event->keyval == GDK_Escape)
3378 static void prefs_font_select(GtkButton *button, GtkEntry *entry)
3382 g_return_if_fail(entry != NULL);
3384 if (!font_sel_win) {
3385 font_sel_win = gtk_font_selection_dialog_new
3386 (_("Font selection"));
3387 gtk_window_position(GTK_WINDOW(font_sel_win),
3388 GTK_WIN_POS_CENTER);
3389 gtk_signal_connect(GTK_OBJECT(font_sel_win), "delete_event",
3390 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3393 (GTK_OBJECT(font_sel_win), "key_press_event",
3394 GTK_SIGNAL_FUNC(prefs_font_selection_key_pressed),
3396 gtk_signal_connect_object
3397 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->cancel_button),
3399 GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete),
3400 GTK_OBJECT(font_sel_win));
3403 if(font_sel_conn_id) {
3404 gtk_signal_disconnect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button), font_sel_conn_id);
3406 font_sel_conn_id = gtk_signal_connect
3407 (GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button),
3409 GTK_SIGNAL_FUNC(prefs_font_selection_ok),
3411 printf("%i\n", font_sel_conn_id);
3413 font_name = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
3414 gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(font_sel_win), font_name);
3416 manage_window_set_transient(GTK_WINDOW(font_sel_win));
3417 gtk_window_set_modal(GTK_WINDOW(font_sel_win), TRUE);
3418 gtk_widget_grab_focus
3419 (GTK_FONT_SELECTION_DIALOG(font_sel_win)->ok_button);
3420 gtk_widget_show(font_sel_win);
3423 static void prefs_font_selection_key_pressed(GtkWidget *widget,
3427 if (event && event->keyval == GDK_Escape)
3428 gtk_widget_hide(font_sel_win);
3431 static void prefs_font_selection_ok(GtkButton *button, GtkEntry *entry)
3435 fontname = gtk_font_selection_dialog_get_font_name
3436 (GTK_FONT_SELECTION_DIALOG(font_sel_win));
3439 gtk_entry_set_text(entry, fontname);
3444 gtk_widget_hide(font_sel_win);
3447 static void prefs_keybind_apply_clicked(GtkWidget *widget)
3449 GtkEntry *entry = GTK_ENTRY(GTK_COMBO(interface.keybind_combo)->entry);
3453 static gchar *default_menurc =
3454 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3455 "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
3456 "(menu-path \"<Main>/File/Print...\" \"\")\n"
3457 "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
3459 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3460 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3461 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3462 "(menu-path \"<Main>/Edit/Search messages...\" \"<shift><control>F\")\n"
3464 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
3465 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3466 "(menu-path \"<Main>/View/Unthread view\" \"<shift><control>T\")\n"
3467 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3468 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3469 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3470 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3471 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3472 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3473 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3474 "(menu-path \"<Main>/View/Show all header\" \"<control>H\")\n"
3475 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3477 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3478 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3479 "(menu-path \"<Main>/Message/Compose new message\" \"<shift><control>N\")\n"
3480 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3481 "(menu-path \"<Main>/Message/Reply to all\" \"<shift><control>R\")\n"
3482 "(menu-path \"<Main>/Message/Reply to sender\" \"\")\n"
3483 "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
3484 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
3485 "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
3486 "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
3487 "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
3488 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3490 "(menu-path \"<Main>/Tool/Address book\" \"<shift><control>A\")\n"
3491 "(menu-path \"<Main>/Tool/Execute\" \"X\")\n"
3492 "(menu-path \"<Main>/Tool/Log window\" \"<control>L\")";
3494 static gchar *mew_wl_menurc =
3495 "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
3496 "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
3497 "(menu-path \"<Main>/File/Print...\" \"\")\n"
3498 "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
3500 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3501 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3502 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3503 "(menu-path \"<Main>/Edit/Search messages...\" \"<control>S\")\n"
3505 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
3506 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3507 "(menu-path \"<Main>/View/Unthread view\" \"<shift><control>T\")\n"
3508 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3509 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3510 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3511 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3512 "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
3513 "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
3514 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3515 "(menu-path \"<Main>/View/Show all header\" \"<control>H\")\n"
3516 "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
3518 "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
3519 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
3520 "(menu-path \"<Main>/Message/Compose new message\" \"W\")\n"
3521 "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
3522 "(menu-path \"<Main>/Message/Reply to all\" \"<shift>A\")\n"
3523 "(menu-path \"<Main>/Message/Reply to sender\" \"\")\n"
3524 "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
3525 "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift>F\")\n"
3526 "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
3527 "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
3528 "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
3529 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3531 "(menu-path \"<Main>/Tool/Address book\" \"<shift><control>A\")\n"
3532 "(menu-path \"<Main>/Tool/Execute\" \"X\")\n"
3533 "(menu-path \"<Main>/Tool/Log window\" \"<control>L\")";
3535 static gchar *old_sylpheed_menurc =
3536 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3537 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
3538 "(menu-path \"<Main>/File/Print...\" \"<alt>P\")\n"
3539 "(menu-path \"<Main>/File/Exit\" \"<alt>Q\")\n"
3541 "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
3542 "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
3543 "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
3544 "(menu-path \"<Main>/Edit/Search messages...\" \"<control>S\")\n"
3546 "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
3547 "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
3548 "(menu-path \"<Main>/View/Unthread view\" \"<shift><control>T\")\n"
3549 "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
3550 "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
3551 "(menu-path \"<Main>/View/Go to/Prev unread message\" \"<shift>P\")\n"
3552 "(menu-path \"<Main>/View/Go to/Next unread message\" \"<shift>N\")\n"
3553 "(menu-path \"<Main>/View/Go to/Other folder...\" \"<alt>G\")\n"
3554 "(menu-path \"<Main>/View/Open in new window\" \"<shift><control>N\")\n"
3555 "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
3556 "(menu-path \"<Main>/View/Show all header\" \"<control>H\")\n"
3557 "(menu-path \"<Main>/View/Update\" \"<alt>U\")\n"
3559 "(menu-path \"<Main>/Message/Get new mail\" \"<alt>I\")\n"
3560 "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><alt>I\")\n"
3561 "(menu-path \"<Main>/Message/Compose new message\" \"<alt>N\")\n"
3562 "(menu-path \"<Main>/Message/Reply\" \"<alt>R\")\n"
3563 "(menu-path \"<Main>/Message/Reply to all\" \"<shift><alt>R\")\n"
3564 "(menu-path \"<Main>/Message/Reply to sender\" \"<control><alt>R\")\n"
3565 "(menu-path \"<Main>/Message/Forward\" \"<shift><alt>F\")\n"
3566 "(menu-path \"<Main>/Message/Forward as attachment\" \"<shift><control>F\")\n"
3567 "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
3568 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
3569 "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
3570 "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
3572 "(menu-path \"<Main>/Tool/Address book\" \"<alt>A\")\n"
3573 "(menu-path \"<Main>/Tool/Execute\" \"<alt>X\")\n"
3574 "(menu-path \"<Main>/Tool/Log window\" \"<alt>L\")";
3576 static gchar *empty_menurc =
3577 "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
3578 "(menu-path \"<Main>/File/Save as...\" \"\")\n"
3579 "(menu-path \"<Main>/File/Print...\" \"\")\n"
3580 "(menu-path \"<Main>/File/Exit\" \"\")\n"
3582 "(menu-path \"<Main>/Edit/Copy\" \"\")\n"
3583 "(menu-path \"<Main>/Edit/Select all\" \"\")\n"
3584 "(menu-path \"<Main>/Edit/Find in current message...\" \"\")\n"
3585 "(menu-path \"<Main>/Edit/Search messages...\" \"\")\n"
3587 "(menu-path \"<Main>/View/Thread view\" \"\")\n"
3588 "(menu-path \"<Main>/View/Unthread view\" \"\")\n"
3589 "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
3590 "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
3591 "(menu-path \"<Main>/View/Go to/Other folder...\" \"\")\n"
3592 "(menu-path \"<Main>/View/Open in new window\" \"\")\n"
3593 "(menu-path \"<Main>/View/View source\" \"\")\n"
3594 "(menu-path \"<Main>/View/Show all header\" \"\")\n"
3595 "(menu-path \"<Main>/View/Update\" \"\")\n"
3597 "(menu-path \"<Main>/Message/Get new mail\" \"\")\n"
3598 "(menu-path \"<Main>/Message/Get from all accounts\" \"\")\n"
3599 "(menu-path \"<Main>/Message/Compose new message\" \"\")\n"
3600 "(menu-path \"<Main>/Message/Reply\" \"\")\n"
3601 "(menu-path \"<Main>/Message/Reply to all\" \"\")\n"
3602 "(menu-path \"<Main>/Message/Reply to sender\" \"\")\n"
3603 "(menu-path \"<Main>/Message/Forward\" \"\")\n"
3604 "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
3605 "(menu-path \"<Main>/Message/Move...\" \"\")\n"
3606 "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
3607 "(menu-path \"<Main>/Message/Delete\" \"\")\n"
3608 "(menu-path \"<Main>/Message/Mark/Unmark\" \"\")\n"
3610 "(menu-path \"<Main>/Tool/Address book\" \"\")\n"
3611 "(menu-path \"<Main>/Tool/Execute\" \"\")\n"
3612 "(menu-path \"<Main>/Tool/Log window\" \"\")";
3614 text = gtk_entry_get_text(entry);
3616 if (!strcmp(text, _("Default")))
3617 rc_str = default_menurc;
3618 else if (!strcmp(text, _("Mew / Wanderlust")))
3619 rc_str = mew_wl_menurc;
3620 else if (!strcmp(text, _("Old Sylpheed")))
3621 rc_str = old_sylpheed_menurc;
3625 gtk_item_factory_parse_rc_string(empty_menurc);
3626 gtk_item_factory_parse_rc_string(rc_str);
3629 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
3632 GtkWidget *menuitem;
3635 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3636 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3637 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
3638 g_free(*((gchar **)pparam->data));
3639 *((gchar **)pparam->data) = g_strdup(charset);
3642 static void prefs_common_charset_set_optmenu(PrefParam *pparam)
3645 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3647 GtkWidget *menuitem;
3651 g_return_if_fail(optmenu != NULL);
3652 g_return_if_fail(*((gchar **)pparam->data) != NULL);
3654 menu = gtk_option_menu_get_menu(optmenu);
3655 for (cur = GTK_MENU_SHELL(menu)->children;
3656 cur != NULL; cur = cur->next) {
3657 menuitem = GTK_WIDGET(cur->data);
3658 charset = gtk_object_get_user_data(GTK_OBJECT(menuitem));
3659 if (!strcmp(charset, *((gchar **)pparam->data))) {
3660 gtk_option_menu_set_history(optmenu, n);
3666 gtk_option_menu_set_history(optmenu, 0);
3667 prefs_common_charset_set_data_from_optmenu(pparam);
3670 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam)
3673 GtkWidget *menuitem;
3675 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3676 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3677 *((RecvDialogMode *)pparam->data) = GPOINTER_TO_INT
3678 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3681 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
3683 RecvDialogMode mode = *((RecvDialogMode *)pparam->data);
3684 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3686 GtkWidget *menuitem;
3689 case RECV_DIALOG_ALWAYS:
3690 gtk_option_menu_set_history(optmenu, 0);
3692 case RECV_DIALOG_ACTIVE:
3693 gtk_option_menu_set_history(optmenu, 1);
3695 case RECV_DIALOG_NEVER:
3696 gtk_option_menu_set_history(optmenu, 2);
3701 menu = gtk_option_menu_get_menu(optmenu);
3702 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3703 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3706 static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
3709 prefs_common_cancel();
3713 static void prefs_common_key_pressed(GtkWidget *widget, GdkEventKey *event,
3716 if (event && event->keyval == GDK_Escape)
3717 prefs_common_cancel();
3720 static void prefs_common_ok(void)
3722 prefs_common_apply();
3723 gtk_widget_hide(dialog.window);
3724 if (quote_desc_win && GTK_WIDGET_VISIBLE(quote_desc_win))
3725 gtk_widget_hide(quote_desc_win);
3730 static void prefs_common_apply(void)
3732 prefs_set_data_from_dialog(param);
3733 main_window_reflect_prefs_all();
3734 prefs_common_save_config();
3736 inc_autocheck_timer_remove();
3737 inc_autocheck_timer_set();
3740 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam)
3743 GtkWidget *menuitem;
3745 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3746 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3747 *((NextUnreadMsgDialogShow *)pparam->data) = GPOINTER_TO_INT
3748 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3751 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam)
3753 NextUnreadMsgDialogShow dialog_show;
3754 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3756 GtkWidget *menuitem;
3758 dialog_show = *((NextUnreadMsgDialogShow *)pparam->data);
3760 switch (dialog_show) {
3761 case NEXTUNREADMSGDIALOG_ALWAYS:
3762 gtk_option_menu_set_history(optmenu, 0);
3764 case NEXTUNREADMSGDIALOG_ASSUME_YES:
3765 gtk_option_menu_set_history(optmenu, 1);
3767 case NEXTUNREADMSGDIALOG_ASSUME_NO:
3768 gtk_option_menu_set_history(optmenu, 2);
3773 menu = gtk_option_menu_get_menu(optmenu);
3774 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3775 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
3778 static void prefs_common_cancel(void)
3780 gtk_widget_hide(dialog.window);
3785 static struct _ComposePrefs
3789 GtkWidget *close_btn;
3792 static void compose_prefs_key_pressed(GtkWidget *widget, GdkEventKey *event);
3793 static gint compose_prefs_delete_event(GtkWidget *widget, GdkEventAny *event);
3794 static void compose_prefs_close(GtkWidget *widget);
3795 static void compose_prefs_fmt_create(void);
3797 static void compose_prefs_close(GtkWidget *widget)
3799 gtk_widget_hide(composeprefs.window);
3802 static gint compose_prefs_delete_event(GtkWidget *widget, GdkEventAny *event)
3804 gtk_widget_hide(composeprefs.window);
3809 static void compose_prefs_key_pressed(GtkWidget *widget, GdkEventKey *event)
3811 if (event && event->keyval == GDK_Escape) {
3812 gtk_widget_hide(composeprefs.window);
3816 /* static void prefs_recvdialog_set_data_from_optmenu(PrefParam *pparam)
3819 GtkWidget *menuitem;
3821 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
3822 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3823 *((RecvDialogShow *)pparam->data) = GPOINTER_TO_INT
3824 (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
3827 /* static void prefs_recvdialog_set_optmenu(PrefParam *pparam)
3829 RecvDialogShow dialog_show;
3830 GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
3832 GtkWidget *menuitem;
3834 dialog_show = *((RecvDialogShow *)pparam->data);
3836 switch (dialog_show) {
3837 case RECVDIALOG_ALWAYS:
3838 gtk_option_menu_set_history(optmenu, 0);
3840 case RECVDIALOG_WINDOW_ACTIVE:
3841 gtk_option_menu_set_history(optmenu, 1);
3843 case RECVDIALOG_NEVER:
3844 gtk_option_menu_set_history(optmenu, 2);
3849 menu = gtk_option_menu_get_menu(optmenu);
3850 menuitem = gtk_menu_get_active(GTK_MENU(menu));
3851 gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));