Use util_clip_triangle() in pan_item_tri_new()
[geeqie.git] / src / options.h
index a119d81..402347c 100644 (file)
 #ifndef OPTIONS_H
 #define OPTIONS_H
 
-typedef struct _ConfOptions ConfOptions;
+#include <cairo.h>
+#include <gdk/gdk.h>
+#include <glib.h>
 
-struct _ConfOptions
+#include "typedefs.h"
+
+struct SecureSaveInfo;
+
+#define COLOR_PROFILE_INPUTS 4
+
+/**
+ * @enum DnDAction
+ * drag and drop default action
+ */
+enum DnDAction {
+       DND_ACTION_ASK,
+       DND_ACTION_COPY,
+       DND_ACTION_MOVE
+};
+
+enum ZoomStyle {
+       ZOOM_GEOMETRIC  = 0,
+       ZOOM_ARITHMETIC = 1
+};
+
+struct ConfOptions
 {
        /* ui */
        gboolean progressive_key_scrolling;
@@ -31,14 +54,23 @@ struct _ConfOptions
        gboolean place_dialogs_under_mouse;
        gboolean mousewheel_scrolls;
        gboolean image_lm_click_nav;
+       gboolean image_l_click_archive;
        gboolean image_l_click_video;
        gchar *image_l_click_video_editor;
        gboolean show_icon_names;
+       gboolean show_star_rating;
+       gboolean draw_rectangle;
+       gboolean show_predefined_keyword_tree;
+       gboolean overunderexposed;
+       gboolean expand_menu_toolbar;
+       gboolean hamburger_menu;
 
        /* various */
        gboolean tree_descend_subdirs;
        gboolean view_dir_list_single_click_enter;
 
+       gboolean circular_selection_lists;
+
        gboolean lazy_image_sync;
        gboolean update_on_time_change;
 
@@ -50,49 +82,92 @@ struct _ConfOptions
        gboolean sort_totals;
 
        gint open_recent_list_maxsize;
+       gint recent_folder_image_list_maxsize;
        gint dnd_icon_size;
+       DnDAction dnd_default_action;
        gint clipboard_selection;
 
        gboolean save_window_positions;
        gboolean use_saved_window_positions_for_new_windows;
+       gboolean save_window_workspace;
        gboolean tools_restore_state;
        gboolean save_dialog_window_positions;
+       gboolean hide_window_decorations;
+       gboolean show_window_ids;
 
        gint log_window_lines;
 
-       /* info sidebar component heights */
+       gboolean marks_save;            /**< save marks on exit */
+       gchar *marks_tooltips[FILEDATA_MARKS_SIZE];
+
+       gboolean appimage_notifications;
+
+       gboolean with_rename;
+       gboolean collections_duplicates;
+       gboolean collections_on_top;
+       gboolean hide_window_in_fullscreen;
+       gboolean hide_osd_in_fullscreen;
+
+       gchar *help_search_engine;
+
+       /**
+        * @struct info_comment
+        * info sidebar component height
+        */
        struct {
                gint height;
        } info_comment;
 
+       /**
+        * @struct info_keywords
+        * info sidebar component height
+        */
        struct {
                gint height;
        } info_keywords;
 
+       /**
+        * @struct info_title
+        * info sidebar component height
+        */
        struct {
                gint height;
        } info_title;
 
+       /**
+        * @struct info_rating
+        * info sidebar component height
+        */
        struct {
                gint height;
        } info_rating;
 
+       /**
+        * @struct info_headline
+        * info sidebar component height
+        */
+       struct {
+               gint height;
+       } info_headline;
+
        /* file ops */
        struct {
                gboolean enable_in_place_rename;
 
                gboolean confirm_delete;
+               gboolean confirm_move_to_trash;
                gboolean enable_delete_key;
                gboolean safe_delete_enable;
+               gboolean use_system_trash;
                gchar *safe_delete_path;
                gint safe_delete_folder_maxsize;
+               gboolean no_trash;
        } file_ops;
 
        /* image */
        struct {
                gboolean exif_rotate_enable;
-               gboolean exif_proof_rotate_enable;
-               guint scroll_reset_method;
+               ScrollReset scroll_reset_method;
                gboolean fit_window_to_image;
                gboolean limit_window_size;
                gint max_window_size;
@@ -100,22 +175,24 @@ struct _ConfOptions
                gint max_autofit_size;
                gint max_enlargement_size;
 
-               gint tile_cache_max;    /* in megabytes */
-               gint image_cache_max;   /* in megabytes */
+               gint tile_cache_max;    /**< in megabytes */
+               gint image_cache_max;   /**< in megabytes */
                gboolean enable_read_ahead;
 
                ZoomMode zoom_mode;
                gboolean zoom_2pass;
                gboolean zoom_to_fit_allow_expand;
                guint zoom_quality;
-               gint zoom_increment;    /* 100 is 1.0, 5 is 0.05, 200 is 2.0, etc. */
-               gboolean use_clutter_renderer;
+               gint zoom_increment;    /**< 100 is 1.0, 5 is 0.05, 200 is 2.0, etc. */
+               ZoomStyle zoom_style;
 
                gboolean use_custom_border_color_in_fullscreen;
                gboolean use_custom_border_color;
-               GdkColor border_color;
-               GdkColor alpha_color_1;
-               GdkColor alpha_color_2;
+               GdkRGBA border_color;
+               GdkRGBA alpha_color_1;
+               GdkRGBA alpha_color_2;
+
+               gint tile_size;
        } image;
 
        /* thumbnails */
@@ -128,8 +205,9 @@ struct _ConfOptions
                gboolean spec_standard;
                guint quality;
                gboolean use_exif;
+               gboolean use_color_management;
                gboolean use_ft_metadata;
-//             gboolean use_ft_metadata_small;
+               gint collection_preview;
        } thumbnails;
 
        /* file filtering */
@@ -158,15 +236,12 @@ struct _ConfOptions
 
        /* file sorting */
        struct {
-               SortType method;
-               gboolean ascending;
-               gboolean case_sensitive; /* file sorting method (case) */
-               gboolean natural;
+               gboolean case_sensitive; /**< file sorting method (case) */
        } file_sort;
 
        /* slideshow */
        struct {
-               gint delay;     /* in tenths of a second */
+               gint delay;     /**< in tenths of a second */
                gboolean random;
                gboolean repeat;
        } slideshow;
@@ -240,17 +315,23 @@ struct _ConfOptions
                gboolean keywords_case_sensitive;
                gboolean write_orientation;
                gboolean sidecar_extended_name;
+
+               gboolean check_spelling;
        } metadata;
 
        /* Stereo */
        struct {
-               gint mode;;
+               gint mode;
                gint fsmode;
                gboolean enable_fsmode;
                gint fixed_w, fixed_h;
                gint fixed_x1, fixed_y1;
                gint fixed_x2, fixed_y2;
-               struct { /* options in this struct are packed to mode and fsmode entries */
+               /**
+                * @struct tmp
+                * options in this struct are packed to mode and fsmode entries
+                */
+               struct {
                        gboolean mirror_right;
                        gboolean mirror_left;
                        gboolean flip_right;
@@ -266,7 +347,17 @@ struct _ConfOptions
                } tmp;
        } stereo;
 
-       /* copy move rename */
+       /* External preview extraction */
+       struct {
+               gboolean enable;
+               gchar *select; /**< path to executable */
+               gchar *extract; /**< path to executable */
+       } external_preview;
+
+       /**
+        * @struct cp_mv_rn
+        * copy move rename
+        */
        struct {
                gint auto_start;
                gchar *auto_end;
@@ -279,17 +370,234 @@ struct _ConfOptions
                gboolean paused;
                gboolean line_wrap;
                gboolean timer_data;
+               gchar *action; /** Used with F1 key */
        } log_window;
+
+       /* star rating */
+       struct {
+               gunichar star;
+               gunichar rejected;
+       } star_rating;
+
+       /* Printer */
+       struct {
+               gchar *image_font;
+               gchar *page_font;
+               gboolean show_image_text;
+               gboolean show_page_text;
+               gchar *page_text;
+               gint image_text_position;
+               gint page_text_position;
+               gchar *template_string;
+       } printer;
+
+       /* Threads */
+       struct {
+               gint duplicates;
+       } threads;
+
+       /* Selectable bars */
+       struct {
+               gboolean menu_bar;
+               gboolean tool_bar;
+               gboolean status_bar;
+       } selectable_bars;
+
+       /* Alternate similarity algorithm */
+       struct {
+               gboolean enabled;
+               gboolean grayscale; /**< convert fingerprint to greyscale */
+       } alternate_similarity_algorithm;
+
+       gchar *mouse_button_8; /**< user-definable mouse buttons */
+       gchar *mouse_button_9; /**< user-definable mouse buttons */
+
+       gboolean class_filter[FILE_FORMAT_CLASSES]; /**< class file filter */
+
+       gboolean read_metadata_in_idle;
+
+       gboolean disable_gpu; /**< GPU - see main.cc */
+       gboolean override_disable_gpu; /**< GPU - see main.cc */
+
+       GList *disabled_plugins;
 };
 
-ConfOptions *options;
-CommandLine *command_line;
+struct CommandLine
+{
+       int argc;
+       gchar **argv;
+       gboolean startup_blank;
+       gboolean startup_full_screen;
+       gboolean startup_in_slideshow;
+       gboolean startup_command_line_collection;
+       gboolean tools_hide;
+       gboolean tools_show;
+       gboolean log_window_show;
+       gchar *path;
+       gchar *file;
+       GList *cmd_list;
+       GList *collection_list;
+       gchar *geometry;
+       gchar *regexp;
+       gchar *log_file;
+       SecureSaveInfo *ssi;
+       gboolean new_instance;
+};
+
+extern ConfOptions *options;
+extern CommandLine *command_line;
 
 ConfOptions *init_options(ConfOptions *options);
 void setup_default_options(ConfOptions *options);
 void save_options(ConfOptions *options);
 gboolean load_options(ConfOptions *options);
 
+
+enum StartUpPath {
+       STARTUP_PATH_CURRENT    = 0,
+       STARTUP_PATH_LAST,
+       STARTUP_PATH_HOME,
+};
+
+enum SortActionType {
+       BAR_SORT_COPY = 0,
+       BAR_SORT_MOVE,
+       BAR_SORT_FILTER,
+       BAR_SORT_ACTION_COUNT
+};
+
+enum SortModeType {
+       BAR_SORT_MODE_FOLDER = 0,
+       BAR_SORT_MODE_COLLECTION,
+       BAR_SORT_MODE_COUNT
+};
+
+enum SortSelectionType {
+       BAR_SORT_SELECTION_IMAGE = 0,
+       BAR_SORT_SELECTION_SELECTED,
+       BAR_SORT_SELECTION_COUNT
+};
+
+struct LayoutOptions
+{
+       gchar *id;
+
+       gchar *order;
+       gint style;
+
+       DirViewType dir_view_type;
+       FileViewType file_view_type;
+
+       struct {
+               SortType method;
+               gboolean ascend;
+               gboolean case_sensitive;
+       } dir_view_list_sort;
+
+       struct {
+               SortType method;
+               gboolean ascend;
+               gboolean case_sensitive;
+       } file_view_list_sort;
+
+       gboolean show_thumbnails;
+       gboolean show_marks;
+       gboolean show_file_filter;
+       gboolean show_directory_date;
+       gboolean show_info_pixel;
+       gboolean split_pane_sync;
+       gboolean ignore_alpha;
+
+       struct {
+               gint w;
+               gint h;
+               gint x;
+               gint y;
+               gboolean maximized;
+               gint hdivider_pos;
+               gint vdivider_pos;
+       } main_window;
+
+       struct {
+               gint w;
+               gint h;
+               gint x;
+               gint y;
+               gint vdivider_pos;
+       } float_window;
+
+       struct {
+               gint vdivider_pos;
+       } folder_window;
+
+       struct {
+               gint w;
+               gint h;
+       } properties_window;
+
+       struct {
+               guint state;
+               gint histogram_channel;
+               gint histogram_mode;
+       } image_overlay;
+
+       GdkRectangle log_window;
+
+       struct {
+               gint w;
+               gint h;
+               gint x;
+               gint y;
+               gint page_number;
+       } preferences_window;
+
+       struct {
+               gint w;
+               gint h;
+               gint x;
+               gint y;
+       } search_window;
+
+       struct {
+               gint w;
+               gint h;
+               gint x;
+               gint y;
+       } dupe_window;
+
+       struct {
+               gint w;
+               gint h;
+               gint x;
+               gint y;
+       } advanced_exif_window;
+
+       gboolean tools_float;
+       gboolean tools_hidden;
+       gboolean selectable_toolbars_hidden;
+
+       struct {
+               gboolean info;
+               gboolean sort;
+               gboolean tools_float;
+               gboolean tools_hidden;
+               gboolean hidden;
+       } bars_state;
+
+       gchar *home_path;
+       gchar *last_path;
+
+       StartUpPath startup_path;
+
+       gboolean animate;
+       gint workspace;
+
+       SortActionType action;
+       SortModeType mode;
+       SortSelectionType selection;
+       gchar *filter_key;
+};
+
 void copy_layout_options(LayoutOptions *dest, const LayoutOptions *src);
 void free_layout_options_content(LayoutOptions *dest);
 LayoutOptions *init_layout_options(LayoutOptions *options);