Move all colors into an array
[claws.git] / src / prefs_common.h
index 75f9288705c209a6a2a53b5741d5a5cdc8e4a1cc..e4b38a86e97e2990ab9ab13278a1c95a0f26178d 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team
+ * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
+ * Copyright (C) 1999-2016 Hiroyuki Yamamoto and the Claws Mail team
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  *
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * 
  */
 
 #ifndef __PREFS_COMMON_H__
 #define __PREFS_COMMON_H__
 
 #ifdef HAVE_CONFIG_H
-#  include "config.h"
+#include "config.h"
+#include "claws-features.h"
 #endif
 
 #include <glib.h>
@@ -33,6 +33,9 @@
 #include "textview.h"
 #include "procmime.h"
 #include "prefs_msg_colors.h"
+#include "prefs_summary_open.h"
+
+#define CLAWS_CONFIG_VERSION 2
 
 typedef struct _PrefsCommon    PrefsCommon;
 
@@ -71,12 +74,16 @@ typedef enum
 typedef enum
 {
        ACTION_UNSET = 0, /* for backward compatibility */
-       ACTION_MARKED,
-       ACTION_NEW,
-       ACTION_UNREAD,
+       ACTION_OLDEST_MARKED,
+       ACTION_OLDEST_NEW,
+       ACTION_OLDEST_UNREAD,
        ACTION_LAST_OPENED,
-       ACTION_LAST_LIST,
-       ACTION_NOTHING
+       ACTION_NEWEST_LIST,
+       ACTION_NOTHING,
+       ACTION_OLDEST_LIST,
+       ACTION_NEWEST_MARKED,
+       ACTION_NEWEST_NEW,
+       ACTION_NEWEST_UNREAD
 } EntryAction;
 
 typedef enum
@@ -86,11 +93,61 @@ typedef enum
        NEXTUNREADMSGDIALOG_ASSUME_NO
 } NextUnreadMsgDialogShow;
 
+typedef enum
+{
+       SHOW_NAME,
+       SHOW_ADDR,
+       SHOW_BOTH
+} SummaryFromShow;
+
+typedef enum
+{
+       AVATARS_DISABLE = 0,
+       AVATARS_ENABLE_CAPTURE = 1,
+       AVATARS_ENABLE_RENDER = 2,
+       AVATARS_ENABLE_BOTH = 3
+} EnableAvatars;
+
+typedef enum
+{
+       COL_MISSPELLED,
+       COL_QUOTE_LEVEL1,
+       COL_QUOTE_LEVEL2,
+       COL_QUOTE_LEVEL3,
+       COL_QUOTE_LEVEL1_BG,
+       COL_QUOTE_LEVEL2_BG,
+       COL_QUOTE_LEVEL3_BG,
+       COL_URI,
+       COL_TGT_FOLDER,
+       COL_SIGNATURE,
+       COL_EMPHASIS,
+       COL_DEFAULT_HEADER,
+       COL_DEFAULT_HEADER_BG,
+       COL_TAGS,
+       COL_TAGS_BG,
+       COL_QS_ACTIVE,
+       COL_QS_ACTIVE_BG,
+       COL_QS_ERROR,
+       COL_QS_ERROR_BG,
+       COL_LOG_MSG,
+       COL_LOG_WARN,
+       COL_LOG_ERROR,
+       COL_LOG_IN,
+       COL_LOG_OUT,
+       COL_LOG_STATUS_OK,
+       COL_LOG_STATUS_NOK,
+       COL_LOG_STATUS_SKIP,
+       COL_NEW,
+       COL_DIFF_ADDED,
+       COL_DIFF_DELETED,
+       COL_DIFF_HUNK,
+       COL_LAST_COLOR_INDEX
+} ColorIndex;
+
 struct _PrefsCommon
 {
-#ifdef MAEMO
-       gchar *data_root;
-#endif
+       gint config_version;
+
        /* Receive */
        gboolean use_extinc;
        gchar *extinc_cmd;
@@ -102,10 +159,6 @@ struct _PrefsCommon
        gboolean newmail_notify_auto;
        gboolean newmail_notify_manu;
        gchar   *newmail_notify_cmd;
-#ifdef MAEMO
-       gboolean maemo_play_sound;
-       gboolean maemo_show_banner;
-#endif
        RecvDialogMode recv_dialog_mode;
        gint receivewin_width;
        gint receivewin_height;
@@ -120,7 +173,11 @@ struct _PrefsCommon
        gint sendwin_height;
        gchar *outgoing_charset;
        TransferEncodingMethod encoding_method;
-
+       gboolean outgoing_fallback_to_ascii;
+       gboolean rewrite_first_from;
+       gboolean warn_empty_subj;
+       gint warn_sending_many_recipients_num;
+       gboolean hide_timezone;
        gboolean allow_jisx0201_kana;
 
        /* Compose */
@@ -128,7 +185,9 @@ struct _PrefsCommon
        gint linewrap_len;
        gboolean linewrap_quote;
        gboolean linewrap_pastes;
+       gboolean primary_paste_unselects;
        gboolean autowrap;
+       gboolean auto_indent;
        gboolean auto_exteditor;
        gboolean reply_account_autosel;
        gboolean default_reply_list;
@@ -137,11 +196,16 @@ struct _PrefsCommon
        gboolean show_ruler;
        gboolean autosave;
        gint autosave_length;
+       gboolean autosave_encrypted;
+       gboolean warn_large_insert;
+       gint warn_large_insert_size;
        gboolean compose_no_markup;
        ComposeDndInsertOrAttach compose_dnd_mode;
        gboolean compose_with_format;
        gchar *compose_subject_format;
        gchar *compose_body_format;
+       gboolean show_compose_margin;
+       gboolean type_any_header;
 
        /* Quote */
        gboolean reply_with_quote;
@@ -151,41 +215,33 @@ struct _PrefsCommon
        gchar *fw_quotefmt;
        gboolean forward_as_attachment;
        gboolean redirect_keep_from;
-       gboolean block_cursor;
        gchar *quote_chars;
        
-#if USE_ASPELL
        gboolean enable_aspell;
-       gchar *aspell_path;
        gchar *dictionary;
        gchar *alt_dictionary;
-       gulong misspelled_col;
-       gint aspell_sugmode;
        gboolean check_while_typing;
        gboolean recheck_when_changing_dict;
        gboolean use_alternate;
        gboolean use_both_dicts;
-#endif
-        
+
        /* Display */
-       /* obsolete fonts */
-       gchar *widgetfont_gtk1;
-       gchar *textfont_gtk1;
-       gchar *normalfont_gtk1;
-       gchar *boldfont_gtk1;
-       gchar *smallfont_gtk1;
-
-       /* new fonts */
-       gchar *widgetfont;
+       /* fonts */
        gchar *textfont;
-        gchar *printfont;
+       gchar *printfont;
+       gchar *boldfont;
        gchar *normalfont;
        gchar *smallfont;
        gchar *titlefont;
+       gboolean use_different_print_font;
+       gboolean derive_from_normal_font;
 
        /* custom colors */
        ColorlabelPrefs custom_colorlabel[COLORLABELS];
 
+       /* program colors */
+       gulong color[COL_LAST_COLOR_INDEX];
+
        /* image viewer */
        gboolean display_img;
        gboolean resize_img;
@@ -200,17 +256,20 @@ struct _PrefsCommon
        gboolean swap_from;
        gboolean use_addr_book;
        gchar *date_format;
+       gboolean *msgview_date_format;
 
        gboolean use_stripes_everywhere;
        gboolean use_stripes_in_summaries; /* overrides if use_stripes_everywhere is set to TRUE */
        gint stripes_color_offset;
-       gboolean enable_dotted_lines;
        gboolean enable_hscrollbar;
        gboolean bold_unread;
+       gboolean next_on_delete;
        gboolean enable_thread;
        gboolean thread_by_subject;
        gint thread_by_subject_max_age; /*!< Max. age of a thread which was threaded
                                         *   by subject (days) */
+       FolderSortKey default_sort_key;
+       FolderSortType default_sort_type;
 
        gchar *last_opened_folder;
        gboolean goto_last_folder_on_startup;
@@ -264,31 +323,27 @@ struct _PrefsCommon
        gint mainwin_y;
        gint mainwin_width;
        gint mainwin_height;
+       gint mainwin_maximised;
+       gint mainwin_fullscreen;
+       gint mainwin_menubar;
 
        gint msgwin_width;
        gint msgwin_height;
 
+       gint mimeview_tree_height;
+       
        gint sourcewin_width;
        gint sourcewin_height;
 
        gint compose_width;
        gint compose_height;
+       gint compose_notebook_height;
        gint compose_x;
        gint compose_y;
 
        /* Message */
        gboolean enable_color;
        gboolean enable_bgcolor;
-       gulong quote_level1_col;
-       gulong quote_level2_col;
-       gulong quote_level3_col;
-       gulong quote_level1_bgcol;
-       gulong quote_level2_bgcol;
-       gulong quote_level3_bgcol;
-       gulong uri_col;
-       gulong tgt_folder_col;
-       gulong signature_col;
-       gulong emphasis_col;
        gboolean recycle_quote_colors;
        gboolean display_header_pane;
        gboolean display_header;
@@ -296,14 +351,16 @@ struct _PrefsCommon
        gint line_space;
        gboolean render_html;
        gboolean invoke_plugin_on_html;
+       gboolean promote_html_part;
        gboolean textview_cursor_visible;
        gboolean enable_smooth_scroll;
        gint scroll_step;
        gboolean scroll_halfpage;
+       gboolean hide_quoted;
        gboolean respect_flowed_format;
+       gboolean show_all_headers;
 
        gboolean show_other_header;
-       gboolean use_different_print_font;
        GSList *disphdr_list;
 
        gboolean attach_desc;
@@ -315,47 +372,58 @@ struct _PrefsCommon
        gchar *attach_load_dir;
 
        GList *mime_open_cmd_history;
-
-#if USE_GPGME
-       /* Privacy */
-       gboolean auto_check_signatures;
-       gboolean gpg_signature_popup;
-       gboolean store_passphrase;
-       gint store_passphrase_timeout;
-       gboolean passphrase_grab;
-       gboolean gpg_warning;
-#endif /* USE_GPGME */
+       gboolean show_inline_attachments;
 
        /* Addressbook */
        gboolean addressbook_use_editaddress_dialog;
        gint addressbook_hpaned_pos;
        gint addressbook_vpaned_pos;
+       GList *addressbook_custom_attributes;
 
        /* Interface */
        gboolean layout_mode;
 
        gint statusbar_update_step;
        gboolean emulate_emacs;
+
+       gboolean open_selected_on_folder_open;
+       gboolean open_selected_on_search_results;
+       gboolean open_selected_on_prevnext;
+       gboolean open_selected_on_deletemove;
+       gboolean open_selected_on_directional;
        gboolean always_show_msg;
+
        gboolean mark_as_read_on_new_window;
        gboolean mark_as_read_delay;
        gboolean immediate_exec;
        SelectOnEntry select_on_entry;
+       gboolean show_tooltips;
 
-       EntryAction summary_select_prio[6];
+       EntryAction summary_select_prio[SUMMARY_OPEN_ACTIONS-1];
 
        NextUnreadMsgDialogShow next_unread_msg_dialog;
+       SummaryFromShow summary_from_show;
        gboolean add_address_by_click;
        gchar *pixmap_theme_path;
+#ifdef HAVE_SVG
+       gboolean enable_alpha_svg;
+       gboolean enable_pixmap_scaling;
+       gboolean pixmap_scaling_auto;
+       gint pixmap_scaling_ppi;
+#endif
        int hover_timeout; /* msecs mouse hover timeout */
        gboolean ask_mark_all_read;
        gboolean ask_apply_per_account_filtering_rules;
        gint apply_per_account_filtering_rules;
 
        /* Other */
+#ifndef G_OS_WIN32
        gchar *uri_cmd;
-       gchar *print_cmd;
+#else
+       gchar *gtk_theme;
+#endif
        gchar *ext_editor_cmd;
+       gboolean cmds_use_system_default;
 
        gboolean cliplog;
        guint loglength;
@@ -364,15 +432,6 @@ struct _PrefsCommon
        gboolean enable_log_error;
        gboolean enable_log_status;
 
-       gulong log_msg_color;
-       gulong log_warn_color;
-       gulong log_error_color;
-       gulong log_in_color;
-       gulong log_out_color;
-       gulong log_status_ok_color;
-       gulong log_status_nok_color;
-       gulong log_status_skip_color;
-
        gboolean enable_filtering_debug;
        gint filtering_debug_level;
        gboolean enable_filtering_debug_inc;
@@ -380,10 +439,11 @@ struct _PrefsCommon
        gboolean enable_filtering_debug_folder_proc;
        gboolean enable_filtering_debug_pre_proc;
        gboolean enable_filtering_debug_post_proc;
-    gboolean filtering_debug_cliplog;
-    guint filtering_debug_loglength;
+       gboolean filtering_debug_cliplog;
+       guint filtering_debug_loglength;
 
-    gboolean confirm_on_exit;
+       gboolean confirm_on_exit;
+       gboolean session_passwords;
        gboolean clean_on_exit;
        gboolean ask_on_clean;
        gboolean warn_queued_on_exit;
@@ -405,8 +465,7 @@ struct _PrefsCommon
        gint summary_quicksearch_recurse;
        gint summary_quicksearch_dynamic;
        gint summary_quicksearch_autorun;
-       gulong color_new;
-       
+
        GList *summary_quicksearch_history;
        GList *summary_search_from_history;
        GList *summary_search_to_history;
@@ -414,6 +473,7 @@ struct _PrefsCommon
        GList *summary_search_body_history;
        GList *summary_search_adv_condition_history;
        GList *message_search_history;
+       GList *compose_save_to_history;
 
        gint filteringwin_width;
        gint filteringwin_height;
@@ -454,6 +514,12 @@ struct _PrefsCommon
        gint addressaddwin_height;
        gint addressbook_folderselwin_width;
        gint addressbook_folderselwin_height;
+       gint aboutwin_width;
+       gint aboutwin_height;
+       gint addrgather_width;
+       gint addrgather_height;
+       gint news_subscribe_width;
+       gint news_subscribe_height;
 
        gint warn_dnd;
        gint broken_are_utf8;
@@ -467,6 +533,11 @@ struct _PrefsCommon
        
        gchar *print_paper_type;
        gint print_paper_orientation;
+       gint print_margin_top;
+       gint print_margin_bottom;
+       gint print_margin_left;
+       gint print_margin_right;
+  
        gint print_use_color;
        gint print_use_collate;
        gint print_use_reverse;
@@ -474,10 +545,34 @@ struct _PrefsCommon
        gint print_imgs;
        gint print_previewwin_width;
        gint print_previewwin_height;
+       
+       gboolean use_networkmanager;
+       gboolean use_shred;
+       gboolean two_line_vert;
+       gboolean inherit_folder_props;
+       gboolean flush_metadata;
+
+       gint nav_history_length;
+
+       gboolean folder_search_wildcard;
+       gboolean address_search_wildcard;
+
+       guint enable_avatars;
+
+#ifndef PASSWORD_CRYPTO_OLD
+       gboolean use_master_passphrase;
+       gchar *master_passphrase;
+       gchar *master_passphrase_salt;
+       guint master_passphrase_pbkdf2_rounds;
+#endif
 };
 
 extern PrefsCommon prefs_common;
 
+PrefsCommon *prefs_common_get_prefs(void);
+
+GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
+                                                                                                                         GList *default_list);
 void prefs_common_read_config  (void);
 void prefs_common_write_config (void);
 void prefs_common_open         (void);
@@ -488,5 +583,15 @@ void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt);
 gchar *pref_get_pref_from_textview(GtkTextView *textview);
 gchar *pref_get_pref_from_entry(GtkEntry *entry);
 const gchar *prefs_common_translated_header_name(const gchar *header_name);
+const gchar *prefs_common_get_uri_cmd(void);
+const gchar *prefs_common_get_ext_editor_cmd(void);
+
+#define OPEN_SELECTED(when) (prefs_common.always_show_msg || prefs_common.when)
+
+#define OPEN_SELECTED_ON_FOLDER_OPEN OPEN_SELECTED(open_selected_on_folder_open)
+#define OPEN_SELECTED_ON_SEARCH_RESULTS OPEN_SELECTED(open_selected_on_search_results)
+#define OPEN_SELECTED_ON_PREVNEXT OPEN_SELECTED(open_selected_on_prevnext)
+#define OPEN_SELECTED_ON_DELETEMOVE OPEN_SELECTED(open_selected_on_deletemove)
+#define OPEN_SELECTED_ON_DIRECTIONAL OPEN_SELECTED(open_selected_on_directional)
 
 #endif /* __PREFS_COMMON_H__ */