/*
- * Geeqie
- * (C) 2006 John Ellis
- * Copyright (C) 2008 - 2012 The Geeqie Team
+ * Copyright (C) 2006 John Ellis
+ * Copyright (C) 2008 - 2016 The Geeqie Team
*
* Author: John Ellis
*
- * This software is released under the GNU General Public License (GNU GPL).
- * Please read the included file COPYING for more information.
- * This software comes with no warranty of any kind, use at your own risk!
+ * 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-
#include "main.h"
#include "preferences.h"
#include <math.h>
+#ifdef HAVE_LCMS
+#ifdef HAVE_LCMS2
+#include <lcms2.h>
+#else
+#include <lcms.h>
+#endif
+#endif
#define EDITOR_NAME_MAX_LENGTH 32
#define EDITOR_COMMAND_MAX_LENGTH 1024
static void zoom_increment_cb(GtkWidget *spin, gpointer data)
{
- c_options->image.zoom_increment = (gint)(gtk_spin_button_get_value(GTK_SPIN_BUTTON(spin)) * 10.0 + 0.01);
+ c_options->image.zoom_increment = (gint)(gtk_spin_button_get_value(GTK_SPIN_BUTTON(spin)) * 100.0 + 0.01);
}
static void slideshow_delay_cb(GtkWidget *spin, gpointer data)
if (options->file_filter.show_parent_directory != c_options->file_filter.show_parent_directory) refresh = TRUE;
if (options->file_filter.show_dot_directory != c_options->file_filter.show_dot_directory) refresh = TRUE;
if (options->file_sort.case_sensitive != c_options->file_sort.case_sensitive) refresh = TRUE;
+ if (options->file_sort.natural != c_options->file_sort.natural) refresh = TRUE;
if (options->file_filter.disable_file_extension_checks != c_options->file_filter.disable_file_extension_checks) refresh = TRUE;
if (options->file_filter.disable != c_options->file_filter.disable) refresh = TRUE;
options->file_ops.safe_delete_folder_maxsize = c_options->file_ops.safe_delete_folder_maxsize;
options->tools_restore_state = c_options->tools_restore_state;
options->save_window_positions = c_options->save_window_positions;
+ options->use_saved_window_positions_for_new_windows = c_options->use_saved_window_positions_for_new_windows;
options->image.zoom_mode = c_options->image.zoom_mode;
options->image.scroll_reset_method = c_options->image.scroll_reset_method;
options->image.zoom_2pass = c_options->image.zoom_2pass;
options->image.max_window_size = c_options->image.max_window_size;
options->image.limit_autofit_size = c_options->image.limit_autofit_size;
options->image.max_autofit_size = c_options->image.max_autofit_size;
+ options->image.max_enlargement_size = c_options->image.max_enlargement_size;
options->image.use_clutter_renderer = c_options->image.use_clutter_renderer;
options->progressive_key_scrolling = c_options->progressive_key_scrolling;
+ options->keyboard_scroll_step = c_options->keyboard_scroll_step;
+
if (options->thumbnails.max_width != c_options->thumbnails.max_width
|| options->thumbnails.max_height != c_options->thumbnails.max_height
|| options->thumbnails.quality != c_options->thumbnails.quality)
options->file_filter.disable_file_extension_checks = c_options->file_filter.disable_file_extension_checks;
options->file_sort.case_sensitive = c_options->file_sort.case_sensitive;
+ options->file_sort.natural = c_options->file_sort.natural;
options->file_filter.disable = c_options->file_filter.disable;
config_entry_to_option(sidecar_ext_entry, &options->sidecar.ext, NULL);
options->slideshow.delay = c_options->slideshow.delay;
options->mousewheel_scrolls = c_options->mousewheel_scrolls;
+ options->image_lm_click_nav = c_options->image_lm_click_nav;
options->file_ops.enable_in_place_rename = c_options->file_ops.enable_in_place_rename;
- options->collections.rectangular_selection = c_options->collections.rectangular_selection;
-
options->image.tile_cache_max = c_options->image.tile_cache_max;
options->image.image_cache_max = c_options->image.image_cache_max;
view_window_colors_update();
}
+ options->image.alpha_color_1 = c_options->image.alpha_color_1;
+ options->image.alpha_color_2 = c_options->image.alpha_color_2;
+
options->fullscreen.screen = c_options->fullscreen.screen;
options->fullscreen.clean_flip = c_options->fullscreen.clean_flip;
options->fullscreen.disable_saver = c_options->fullscreen.disable_saver;
options->image_overlay.background_blue = c_options->image_overlay.background_blue;
options->image_overlay.background_alpha = c_options->image_overlay.background_alpha;
options->update_on_time_change = c_options->update_on_time_change;
- options->image.exif_rotate_enable = c_options->image.exif_rotate_enable;
options->image.exif_proof_rotate_enable = c_options->image.exif_proof_rotate_enable;
options->duplicates_similarity_threshold = c_options->duplicates_similarity_threshold;
options->tree_descend_subdirs = c_options->tree_descend_subdirs;
+ options->view_dir_list_single_click_enter = c_options->view_dir_list_single_click_enter;
+
options->open_recent_list_maxsize = c_options->open_recent_list_maxsize;
options->dnd_icon_size = c_options->dnd_icon_size;
options->metadata.save_legacy_format = c_options->metadata.save_legacy_format;
options->metadata.sync_grouped_files = c_options->metadata.sync_grouped_files;
options->metadata.confirm_write = c_options->metadata.confirm_write;
+ options->metadata.sidecar_extended_name = c_options->metadata.sidecar_extended_name;
options->metadata.confirm_timeout = c_options->metadata.confirm_timeout;
options->metadata.confirm_after_timeout = c_options->metadata.confirm_after_timeout;
options->metadata.confirm_on_image_change = c_options->metadata.confirm_on_image_change;
options->stereo.fixed_x2 = c_options->stereo.fixed_x2;
options->stereo.fixed_y2 = c_options->stereo.fixed_y2;
+ options->info_keywords.height = c_options->info_keywords.height;
+ options->info_title.height = c_options->info_title.height;
+ options->info_comment.height = c_options->info_comment.height;
+ options->info_rating.height = c_options->info_rating.height;
+
#ifdef DEBUG
set_debug_level(debug_c);
#endif
}
config_entry_to_option(color_profile_screen_file_entry, &options->color_profile.screen_file, NULL);
options->color_profile.use_x11_screen_profile = c_options->color_profile.use_x11_screen_profile;
+ if (options->color_profile.render_intent != c_options->color_profile.render_intent)
+ {
+ options->color_profile.render_intent = c_options->color_profile.render_intent;
+ color_man_update();
+ }
#endif
image_options_sync();
filter_store = NULL;
}
+static void config_window_help_cb(GtkWidget *widget, gpointer data)
+{
+ GtkWidget *notebook = data;
+ gint i;
+
+ static gchar *html_section[] =
+ {
+ "GuideOptionsGeneral.html",
+ "GuideOptionsImage.html",
+ "GuideOptionsWindow.html",
+ "GuideOptionsKeyboard.html",
+ "GuideOptionsFiltering.html",
+ "GuideOptionsMetadata.html",
+ "GuideOptionsColor.html",
+ "GuideOptionsSteroa.html",
+ "GuideOptionsBehavior.html"
+ };
+
+ i = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook));
+ help_window_show(html_section[i]);
+}
+
static gboolean config_window_delete(GtkWidget *widget, GdkEventAny *event, gpointer data)
{
config_window_close_cb(NULL, NULL);
static void config_window_apply_cb(GtkWidget *widget, gpointer data)
{
+ LayoutWindow *lw;
+ lw = layout_window_list->data;
+
config_window_apply();
+ layout_util_sync(lw);
}
static void config_window_save_cb(GtkWidget *widget, gpointer data)
static void image_overlay_help_cb(GtkWidget *widget, gpointer data)
{
- help_window_show("overlay");
+ help_window_show("GuideOptionsWindow.html#OverlayScreenDisplay");
}
static void image_overlay_set_font_cb(GtkWidget *widget, gpointer data)
{
- GenericDialog *dialog;
+#if GTK_CHECK_VERSION(3,4,0)
+ GtkWidget *dialog;
char *font;
PangoFontDescription *font_desc;
- dialog = gtk_font_chooser_dialog_new("Image Overlay Font", gtk_widget_get_toplevel(widget));
- gtk_font_chooser_set_font(dialog, options->image_overlay.font);
+ dialog = gtk_font_chooser_dialog_new("Image Overlay Font", GTK_WINDOW(gtk_widget_get_toplevel(widget)));
+ gtk_font_chooser_set_font(GTK_FONT_CHOOSER(dialog), options->image_overlay.font);
if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_CANCEL)
{
}
gtk_widget_destroy(dialog);
+#else
+ const char *font;
+
+ font = gtk_font_button_get_font_name(GTK_FONT_BUTTON(widget));
+ c_options->image_overlay.font = g_strdup(font);
+#endif
}
static void image_overlay_set_text_colour_cb(GtkWidget *widget, gpointer data)
{
- GenericDialog *dialog;
+ GtkWidget *dialog;
+#if GTK_CHECK_VERSION(3,4,0)
GdkRGBA colour;
- dialog = gtk_color_chooser_dialog_new("Image Overlay Text Colour", gtk_widget_get_toplevel(widget));
+ dialog = gtk_color_chooser_dialog_new("Image Overlay Text Colour", GTK_WINDOW(gtk_widget_get_toplevel(widget)));
colour.red = options->image_overlay.text_red;
colour.green = options->image_overlay.text_green;
colour.blue = options->image_overlay.text_blue;
colour.alpha = options->image_overlay.text_alpha;
- gtk_color_chooser_set_rgba(dialog, &colour);
+ gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(dialog), &colour);
+ gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(dialog), TRUE);
if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_CANCEL)
{
- gtk_color_chooser_get_rgba(dialog, &colour);
+ gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(dialog), &colour);
c_options->image_overlay.text_red = colour.red*255;
c_options->image_overlay.text_green = colour.green*255;
c_options->image_overlay.text_blue = colour.blue*255;
c_options->image_overlay.text_alpha = colour.alpha*255;
}
+ gtk_widget_destroy(dialog);
+#else
+ GdkColor colour;
+ GtkColorSelection *colorsel;
+
+ dialog = gtk_color_selection_dialog_new("Image Overlay Text Colour");
+ gtk_window_set_keep_above(GTK_WINDOW(dialog),TRUE);
+ colour.red = options->image_overlay.text_red*257;
+ colour.green = options->image_overlay.text_green*257;
+ colour.blue = options->image_overlay.text_blue*257;
+ colorsel = GTK_COLOR_SELECTION(gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(dialog)));
+ gtk_color_selection_set_has_opacity_control(colorsel, TRUE);
+ gtk_color_selection_set_current_color(colorsel, &colour);
+ gtk_color_selection_set_current_alpha(colorsel, options->image_overlay.text_alpha*257);
+
+ if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK)
+ {
+ gtk_color_selection_get_current_color(colorsel, &colour);
+ c_options->image_overlay.text_red = colour.red/257;
+ c_options->image_overlay.text_green = colour.green/257;
+ c_options->image_overlay.text_blue = colour.blue/257;
+ c_options->image_overlay.text_alpha = gtk_color_selection_get_current_alpha(colorsel)/257;
+ }
gtk_widget_destroy (dialog);
+#endif
}
+
static void image_overlay_set_background_colour_cb(GtkWidget *widget, gpointer data)
{
- GenericDialog *dialog;
+ GtkWidget *dialog;
+#if GTK_CHECK_VERSION(3,4,0)
GdkRGBA colour;
- dialog = gtk_color_chooser_dialog_new("Image Overlay Background Colour", gtk_widget_get_toplevel(widget));
+ dialog = gtk_color_chooser_dialog_new("Image Overlay Background Colour", GTK_WINDOW(gtk_widget_get_toplevel(widget)));
colour.red = options->image_overlay.background_red;
colour.green = options->image_overlay.background_green;
colour.blue = options->image_overlay.background_blue;
colour.alpha = options->image_overlay.background_alpha;
- gtk_color_chooser_set_rgba(dialog, &colour);
+ gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(dialog), &colour);
+ gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(dialog), TRUE);
if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_CANCEL)
{
- gtk_color_chooser_get_rgba(dialog, &colour);
+ gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(dialog), &colour);
c_options->image_overlay.background_red = colour.red*255;
c_options->image_overlay.background_green = colour.green*255;
c_options->image_overlay.background_blue = colour.blue*255;
c_options->image_overlay.background_alpha = colour.alpha*255;
}
- gtk_widget_destroy (dialog);
+ gtk_widget_destroy(dialog);
+#else
+ GdkColor colour;
+ GtkColorSelection *colorsel;
+
+ dialog = gtk_color_selection_dialog_new("Image Overlay Background Colour");
+ gtk_window_set_keep_above(GTK_WINDOW(dialog),TRUE);
+ colour.red = options->image_overlay.background_red*257;
+ colour.green = options->image_overlay.background_green*257;
+ colour.blue = options->image_overlay.background_blue*257;
+ colorsel = GTK_COLOR_SELECTION(gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(dialog)));
+ gtk_color_selection_set_has_opacity_control(colorsel, TRUE);
+ gtk_color_selection_set_current_color(colorsel, &colour);
+ gtk_color_selection_set_current_alpha(colorsel, options->image_overlay.background_alpha*257);
+
+ if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK)
+ {
+ gtk_color_selection_get_current_color(colorsel, &colour);
+ c_options->image_overlay.background_red = colour.red/257;
+ c_options->image_overlay.background_green = colour.green/257;
+ c_options->image_overlay.background_blue = colour.blue/257;
+ c_options->image_overlay.background_alpha = gtk_color_selection_get_current_alpha(colorsel)/257;
+ }
+ gtk_widget_destroy(dialog);
+#endif
}
static void accel_store_populate(void)
static void config_tab_general(GtkWidget *notebook)
{
GtkWidget *vbox;
+ GtkWidget *hbox;
GtkWidget *group;
GtkWidget *subgroup;
GtkWidget *button;
pref_checkbox_new_int(group, _("Refresh on file change"),
options->update_on_time_change, &c_options->update_on_time_change);
+
+ group = pref_group_new(vbox, FALSE, _("Info sidebar heights"), GTK_ORIENTATION_VERTICAL);
+ pref_label_new(group, _("NOTE! Geeqie must be restarted for changes to take effect"));
+ hbox = pref_box_new(group, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_SPACE);
+ pref_spin_new_int(hbox, _("Keywords:"), NULL,
+ 1, 9999, 1,
+ options->info_keywords.height, &c_options->info_keywords.height);
+ pref_spin_new_int(hbox, _("Title:"), NULL,
+ 1, 9999, 1,
+ options->info_title.height, &c_options->info_title.height);
+ pref_spin_new_int(hbox, _("Comment:"), NULL,
+ 1, 9999, 1,
+ options->info_comment.height, &c_options->info_comment.height);
+ pref_spin_new_int(hbox, _("Rating:"), NULL,
+ 1, 9999, 1,
+ options->info_rating.height, &c_options->info_rating.height);
}
/* image tab */
GtkWidget *group;
GtkWidget *button;
GtkWidget *ct_button;
+ GtkWidget *enlargement_button;
GtkWidget *table;
GtkWidget *spin;
pref_checkbox_new_int(group, _("Two pass rendering (apply HQ zoom and color correction in second pass)"),
options->image.zoom_2pass, &c_options->image.zoom_2pass);
- pref_checkbox_new_int(group, _("Allow enlargement of image for zoom to fit"),
+ hbox = pref_box_new(group, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_SPACE);
+ enlargement_button = pref_checkbox_new_int(hbox, _("Allow enlargement of image for zoom to fit (max. size in %)"),
options->image.zoom_to_fit_allow_expand, &c_options->image.zoom_to_fit_allow_expand);
+ spin = pref_spin_new_int(hbox, NULL, NULL,
+ 100, 999, 1,
+ options->image.max_enlargement_size, &c_options->image.max_enlargement_size);
+ pref_checkbox_link_sensitivity(enlargement_button, spin);
hbox = pref_box_new(group, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_SPACE);
- ct_button = pref_checkbox_new_int(hbox, _("Limit image size when autofitting (%):"),
+ ct_button = pref_checkbox_new_int(hbox, _("Limit image size when autofitting (% of window):"),
options->image.limit_autofit_size, &c_options->image.limit_autofit_size);
spin = pref_spin_new_int(hbox, NULL, NULL,
10, 150, 1,
c_options->image.zoom_increment = options->image.zoom_increment;
spin = pref_spin_new(group, _("Zoom increment:"), NULL,
- 0.1, 4.0, 0.1, 1, (gdouble)options->image.zoom_increment / 10.0,
+ 0.01, 4.0, 0.01, 2, (gdouble)options->image.zoom_increment / 100.0,
G_CALLBACK(zoom_increment_cb), NULL);
gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(spin), GTK_UPDATE_ALWAYS);
- group = pref_group_new(vbox, FALSE, _("When new image is selected:"), GTK_ORIENTATION_HORIZONTAL);
-
- vbox2 = pref_box_new(group, TRUE, GTK_ORIENTATION_VERTICAL, PREF_PAD_SPACE);
- c_options->image.zoom_mode = options->image.zoom_mode;
- button = pref_radiobutton_new(vbox2, NULL, _("Zoom to original size"),
- (options->image.zoom_mode == ZOOM_RESET_ORIGINAL),
- G_CALLBACK(zoom_mode_cb), GINT_TO_POINTER(ZOOM_RESET_ORIGINAL));
- button = pref_radiobutton_new(vbox2, button, _("Fit image to window"),
- (options->image.zoom_mode == ZOOM_RESET_FIT_WINDOW),
- G_CALLBACK(zoom_mode_cb), GINT_TO_POINTER(ZOOM_RESET_FIT_WINDOW));
- button = pref_radiobutton_new(vbox2, button, _("Leave Zoom at previous setting"),
- (options->image.zoom_mode == ZOOM_RESET_NONE),
- G_CALLBACK(zoom_mode_cb), GINT_TO_POINTER(ZOOM_RESET_NONE));
-
- vbox2 = pref_box_new(group, TRUE, GTK_ORIENTATION_VERTICAL, PREF_PAD_SPACE);
- c_options->image.scroll_reset_method = options->image.scroll_reset_method;
- button = pref_radiobutton_new(vbox2, NULL, _("Scroll to top left corner"),
- (options->image.scroll_reset_method == SCROLL_RESET_TOPLEFT),
- G_CALLBACK(scroll_reset_cb), GINT_TO_POINTER(SCROLL_RESET_TOPLEFT));
- button = pref_radiobutton_new(vbox2, button, _("Scroll to image center"),
- (options->image.scroll_reset_method == SCROLL_RESET_CENTER),
- G_CALLBACK(scroll_reset_cb), GINT_TO_POINTER(SCROLL_RESET_CENTER));
- button = pref_radiobutton_new(vbox2, button, _("Keep the region from previous image"),
- (options->image.scroll_reset_method == SCROLL_RESET_NOCHANGE),
- G_CALLBACK(scroll_reset_cb), GINT_TO_POINTER(SCROLL_RESET_NOCHANGE));
-
-
group = pref_group_new(vbox, FALSE, _("Appearance"), GTK_ORIENTATION_VERTICAL);
pref_checkbox_new_int(group, _("Use custom border color in window mode"),
pref_color_button_new(group, _("Border color"), &options->image.border_color,
G_CALLBACK(pref_color_button_set_cb), &c_options->image.border_color);
- group = pref_group_new(vbox, FALSE, _("Convenience"), GTK_ORIENTATION_VERTICAL);
+ c_options->image.border_color = options->image.border_color;
- pref_checkbox_new_int(group, _("Auto rotate image using Exif information"),
- options->image.exif_rotate_enable, &c_options->image.exif_rotate_enable);
+ pref_color_button_new(group, _("Alpha channel color 1"), &options->image.alpha_color_1,
+ G_CALLBACK(pref_color_button_set_cb), &c_options->image.alpha_color_1);
+
+ pref_color_button_new(group, _("Alpha channel color 2"), &options->image.alpha_color_2,
+ G_CALLBACK(pref_color_button_set_cb), &c_options->image.alpha_color_2);
+
+ c_options->image.alpha_color_1 = options->image.alpha_color_1;
+ c_options->image.alpha_color_2 = options->image.alpha_color_2;
+
+ group = pref_group_new(vbox, FALSE, _("Convenience"), GTK_ORIENTATION_VERTICAL);
pref_checkbox_new_int(group, _("Auto rotate proofs using Exif information"),
options->image.exif_proof_rotate_enable, &c_options->image.exif_proof_rotate_enable);
group = pref_group_new(vbox, FALSE, _("State"), GTK_ORIENTATION_VERTICAL);
- pref_checkbox_new_int(group, _("Remember window positions"),
- options->save_window_positions, &c_options->save_window_positions);
+ ct_button = pref_checkbox_new_int(group, _("Remember window positions"),
+ options->save_window_positions, &c_options->save_window_positions);
+
+ button = pref_checkbox_new_int(group, _("Use saved window positions also for new windows"),
+ options->use_saved_window_positions_for_new_windows, &c_options->use_saved_window_positions_for_new_windows);
+ pref_checkbox_link_sensitivity(ct_button, button);
+
pref_checkbox_new_int(group, _("Remember tool state (float/hidden)"),
options->tools_restore_state, &c_options->tools_restore_state);
hbox = pref_box_new(group, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_BUTTON_GAP);
+#if GTK_CHECK_VERSION(3,4,0)
button = pref_button_new(NULL, GTK_STOCK_SELECT_FONT, _("Font"), FALSE,
G_CALLBACK(image_overlay_set_font_cb), notebook);
- gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, NULL, 0);
+#else
+ button = gtk_font_button_new();
+ gtk_font_button_set_title(GTK_FONT_BUTTON(button), "Image Overlay Font");
+ gtk_font_button_set_font_name(GTK_FONT_BUTTON(button), options->image_overlay.font);
+ g_signal_connect(G_OBJECT(button), "font-set",
+ G_CALLBACK(image_overlay_set_font_cb),NULL);
+#endif
+ gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
gtk_widget_show(button);
button = pref_button_new(NULL, GTK_STOCK_COLOR_PICKER, _("Text"), FALSE,
options->file_filter.show_parent_directory, &c_options->file_filter.show_parent_directory);
pref_checkbox_new_int(group, _("Case sensitive sort"),
options->file_sort.case_sensitive, &c_options->file_sort.case_sensitive);
+ pref_checkbox_new_int(group, _("Natural sort order"),
+ options->file_sort.natural, &c_options->file_sort.natural);
pref_checkbox_new_int(group, _("Disable file extension checks"),
options->file_filter.disable_file_extension_checks, &c_options->file_filter.disable_file_extension_checks);
label = pref_label_new(group, _("Metadata are written in the following order. The process ends after first success."));
gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
- ct_button = pref_checkbox_new_int(group, _("1) Save metadata in image files, resp. sidecar files, according to the XMP standard"),
+ ct_button = pref_checkbox_new_int(group, _("1) Save metadata in image files, or sidecar files, according to the XMP standard"),
options->metadata.save_in_image_file, &c_options->metadata.save_in_image_file);
#ifndef HAVE_EXIV2
gtk_widget_set_sensitive(ct_button, FALSE);
pref_checkbox_new_int(hbox, _("Ask before writing to image files"),
options->metadata.confirm_write, &c_options->metadata.confirm_write);
+ pref_checkbox_new_int(hbox, _("Create sidecar files named image.ext.xmp (as opposed to image.xmp)"),
+ options->metadata.sidecar_extended_name, &c_options->metadata.sidecar_extended_name);
+
group = pref_group_new(vbox, FALSE, _("Step 2 and 3: write to Geeqie private files"), GTK_ORIENTATION_VERTICAL);
#ifndef HAVE_EXIV2
gtk_widget_set_sensitive(group, FALSE);
}
/* metadata tab */
+#ifdef HAVE_LCMS
+static void intent_menu_cb(GtkWidget *combo, gpointer data)
+{
+ gint *option = data;
+
+ switch (gtk_combo_box_get_active(GTK_COMBO_BOX(combo)))
+ {
+ case 0:
+ default:
+ *option = INTENT_PERCEPTUAL;
+ break;
+ case 1:
+ *option = INTENT_RELATIVE_COLORIMETRIC;
+ break;
+ case 2:
+ *option = INTENT_SATURATION;
+ break;
+ case 3:
+ *option = INTENT_ABSOLUTE_COLORIMETRIC;
+ break;
+ }
+}
+
+static void add_intent_menu(GtkWidget *table, gint column, gint row, const gchar *text,
+ gint option, gint *option_c)
+{
+ GtkWidget *combo;
+ gint current = 0;
+
+ *option_c = option;
+
+ pref_table_label(table, column, row, text, 0.0);
+
+ combo = gtk_combo_box_text_new();
+
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("Perceptual"));
+ if (option == INTENT_PERCEPTUAL) current = 0;
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("Relative Colorimetric"));
+ if (option == INTENT_RELATIVE_COLORIMETRIC) current = 1;
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("Saturation"));
+ if (option == INTENT_SATURATION) current = 2;
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("Absolute Colorimetric"));
+ if (option == INTENT_ABSOLUTE_COLORIMETRIC) current = 3;
+
+ gtk_combo_box_set_active(GTK_COMBO_BOX(combo), current);
+
+ gtk_widget_set_tooltip_text(combo,"Refer to the lcms documentation for the defaults used when the selected Intent is not available");
+
+ g_signal_connect(G_OBJECT(combo), "changed",
+ G_CALLBACK(intent_menu_cb), option_c);
+
+ gtk_table_attach(GTK_TABLE(table), combo, column + 1, column + 2, row, row + 1,
+ GTK_EXPAND | GTK_FILL, 0, 0, 0);
+ gtk_widget_show(combo);
+}
+#endif
+
static void config_tab_color(GtkWidget *notebook)
{
GtkWidget *label;
options->color_profile.screen_file, NULL, NULL);
tab_completion_add_select_button(color_profile_screen_file_entry, _("Select color profile"), FALSE);
gtk_widget_set_size_request(color_profile_screen_file_entry, 160, -1);
+#ifdef HAVE_LCMS
+ add_intent_menu(table, 0, 1, _("Render Intent:"), options->color_profile.render_intent, &c_options->color_profile.render_intent);
+#endif
gtk_table_attach(GTK_TABLE(table), tabcomp, 1, 2,
0, 1,
GTK_FILL | GTK_EXPAND, 0, 0, 0);
+
gtk_widget_show(tabcomp);
}
group = pref_group_new(vbox, FALSE, _("Behavior"), GTK_ORIENTATION_VERTICAL);
- pref_checkbox_new_int(group, _("Rectangular selection in icon view"),
- options->collections.rectangular_selection, &c_options->collections.rectangular_selection);
-
pref_checkbox_new_int(group, _("Descend folders in tree view"),
options->tree_descend_subdirs, &c_options->tree_descend_subdirs);
pref_checkbox_new_int(group, _("In place renaming"),
options->file_ops.enable_in_place_rename, &c_options->file_ops.enable_in_place_rename);
- pref_spin_new_int(group, _("Open recent list maximum size"), NULL,
+ pref_checkbox_new_int(group, _("List directory view uses single click to enter"),
+ options->view_dir_list_single_click_enter, &c_options->view_dir_list_single_click_enter);
+
+ pref_spin_new_int(group, _("Recent folder list maximum size"), NULL,
1, 50, 1, options->open_recent_list_maxsize, &c_options->open_recent_list_maxsize);
pref_spin_new_int(group, _("Drag'n drop icon size"), NULL,
pref_checkbox_new_int(group, _("Progressive keyboard scrolling"),
options->progressive_key_scrolling, &c_options->progressive_key_scrolling);
+ pref_spin_new_int(group, _("Keyboard scrolling step multiplier:"), NULL,
+ 1, 32, 1, options->keyboard_scroll_step, (int *)&c_options->keyboard_scroll_step);
pref_checkbox_new_int(group, _("Mouse wheel scrolls image"),
options->mousewheel_scrolls, &c_options->mousewheel_scrolls);
-
- group = pref_group_new(vbox, FALSE, _("Similarities"), GTK_ORIENTATION_VERTICAL);
-
- pref_spin_new_int(group, _("Custom similarity threshold:"), NULL,
- 0, 100, 1, options->duplicates_similarity_threshold, (int *)&c_options->duplicates_similarity_threshold);
- pref_checkbox_new_int(group, _("Rotation invariant duplicate check"),
- options->rot_invariant_sim, &c_options->rot_invariant_sim);
+ pref_checkbox_new_int(group, _("Navigation by left or middle click on image"),
+ options->image_lm_click_nav, &c_options->image_lm_click_nav);
#ifdef DEBUG
group = pref_group_new(vbox, FALSE, _("Debugging"), GTK_ORIENTATION_VERTICAL);
pref_spin_new_int(group, _("Debug level:"), NULL,
DEBUG_LEVEL_MIN, DEBUG_LEVEL_MAX, 1, get_debug_level(), &debug_c);
+
+ pref_spin_new_int(group, _("Log Window max. lines:"), NULL,
+ 1, 99999, 1, options->log_window_lines, &options->log_window_lines);
#endif
}
gtk_container_add(GTK_CONTAINER(configwindow), win_vbox);
gtk_widget_show(win_vbox);
+ notebook = gtk_notebook_new();
+ gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);
+ gtk_box_pack_start(GTK_BOX(win_vbox), notebook, TRUE, TRUE, 0);
+
+ config_tab_general(notebook);
+ config_tab_image(notebook);
+ config_tab_windows(notebook);
+ config_tab_accelerators(notebook);
+ config_tab_files(notebook);
+ config_tab_metadata(notebook);
+ config_tab_color(notebook);
+ config_tab_stereo(notebook);
+ config_tab_behavior(notebook);
+
hbox = gtk_hbutton_box_new();
gtk_button_box_set_layout(GTK_BUTTON_BOX(hbox), GTK_BUTTONBOX_END);
gtk_box_set_spacing(GTK_BOX(hbox), PREF_PAD_BUTTON_GAP);
gtk_box_pack_end(GTK_BOX(win_vbox), hbox, FALSE, FALSE, 0);
gtk_widget_show(hbox);
+ button = pref_button_new(NULL, GTK_STOCK_HELP, NULL, FALSE,
+ G_CALLBACK(config_window_help_cb), notebook);
+ gtk_container_add(GTK_CONTAINER(hbox), button);
+ gtk_widget_set_can_default(button, TRUE);
+ gtk_widget_show(button);
+
button = pref_button_new(NULL, GTK_STOCK_OK, NULL, FALSE,
G_CALLBACK(config_window_ok_cb), NULL);
gtk_container_add(GTK_CONTAINER(hbox), button);
gtk_box_reorder_child(GTK_BOX(hbox), ct_button, -1);
}
- notebook = gtk_notebook_new();
- gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);
- gtk_box_pack_start(GTK_BOX(win_vbox), notebook, TRUE, TRUE, 0);
-
- config_tab_general(notebook);
- config_tab_image(notebook);
- config_tab_windows(notebook);
- config_tab_accelerators(notebook);
- config_tab_files(notebook);
- config_tab_metadata(notebook);
- config_tab_color(notebook);
- config_tab_stereo(notebook);
- config_tab_behavior(notebook);
-
gtk_widget_show(notebook);
gtk_widget_show(configwindow);
buf = g_strdup_printf(_("%s %s\n\nCopyright (c) 2006 John Ellis\nCopyright (c) %s The Geeqie Team\nwebsite: %s\nemail: %s\n\nReleased under the GNU General Public License"),
GQ_APPNAME,
VERSION,
- "2008 - 2012",
+ "2008 - 2016",
GQ_WEBSITE,
GQ_EMAIL_ADDRESS);
label = gtk_label_new(buf);