Use util_clip_triangle() in pan_item_tri_new()
[geeqie.git] / src / options.h
index c1f9256..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,15 +54,16 @@ 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 show_guidelines;
        gboolean draw_rectangle;
        gboolean show_predefined_keyword_tree;
        gboolean overunderexposed;
        gboolean expand_menu_toolbar;
+       gboolean hamburger_menu;
 
        /* various */
        gboolean tree_descend_subdirs;
@@ -58,6 +82,7 @@ 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;
@@ -67,6 +92,7 @@ struct _ConfOptions
        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;
@@ -74,9 +100,13 @@ struct _ConfOptions
        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;
 
@@ -112,6 +142,14 @@ struct _ConfOptions
                gint height;
        } info_rating;
 
+       /**
+        * @struct info_headline
+        * info sidebar component height
+        */
+       struct {
+               gint height;
+       } info_headline;
+
        /* file ops */
        struct {
                gboolean enable_in_place_rename;
@@ -129,8 +167,7 @@ struct _ConfOptions
        /* 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;
@@ -147,13 +184,15 @@ struct _ConfOptions
                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;
+               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 */
@@ -169,7 +208,6 @@ struct _ConfOptions
                gboolean use_color_management;
                gboolean use_ft_metadata;
                gint collection_preview;
-//             gboolean use_ft_metadata_small;
        } thumbnails;
 
        /* file filtering */
@@ -198,10 +236,7 @@ struct _ConfOptions
 
        /* file sorting */
        struct {
-               SortType method;
-               gboolean ascending;
                gboolean case_sensitive; /**< file sorting method (case) */
-               gboolean natural;
        } file_sort;
 
        /* slideshow */
@@ -280,11 +315,13 @@ 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;
@@ -333,6 +370,7 @@ struct _ConfOptions
                gboolean paused;
                gboolean line_wrap;
                gboolean timer_data;
+               gchar *action; /** Used with F1 key */
        } log_window;
 
        /* star rating */
@@ -353,6 +391,24 @@ struct _ConfOptions
                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 */
 
@@ -360,12 +416,34 @@ struct _ConfOptions
 
        gboolean read_metadata_in_idle;
 
-       gboolean disable_gpu; /**< GPU - see main.c */
-       gboolean override_disable_gpu; /**< GPU - see main.c */
+       gboolean disable_gpu; /**< GPU - see main.cc */
+       gboolean override_disable_gpu; /**< GPU - see main.cc */
 
        GList *disabled_plugins;
 };
 
+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;
 
@@ -374,6 +452,152 @@ 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);