Revision: 1432
http://geeqie.svn.sourceforge.net/geeqie/?rev=1432&view=rev
Author: nadvornik
Date: 2009-02-28 14:40:22 +0000 (Sat, 28 Feb 2009)
Log Message:
-----------
fixed overlay configuration
split overlay options between global and layout window
Modified Paths:
--------------
trunk/src/image-overlay.c
trunk/src/image-overlay.h
trunk/src/layout.c
trunk/src/layout_image.c
trunk/src/options.c
trunk/src/options.h
trunk/src/preferences.c
trunk/src/rcfile.c
trunk/src/typedefs.h
Modified: trunk/src/image-overlay.c
===================================================================
--- trunk/src/image-overlay.c 2009-02-28 12:50:39 UTC (rev 1431)
+++ trunk/src/image-overlay.c 2009-02-28 14:40:22 UTC (rev 1432)
@@ -131,7 +131,6 @@
if (!osd || !osd->histogram) return;
histogram_toggle_channel(osd->histogram);
- options->image_overlay.common.histogram_channel =
histogram_get_channel(osd->histogram);
image_osd_update(imd);
}
@@ -142,7 +141,6 @@
if (!osd || !osd->histogram) return;
histogram_toggle_mode(osd->histogram);
- options->image_overlay.common.histogram_mode =
histogram_get_mode(osd->histogram);
image_osd_update(imd);
}
@@ -153,13 +151,12 @@
if (!imd) return;
osd = image_get_osd_data(imd);
- if (!osd)
+ if (osd->show == OSD_SHOW_NOTHING)
{
image_osd_set(imd, OSD_SHOW_INFO | OSD_SHOW_STATUS);
return;
}
-
- if (osd->show != OSD_SHOW_NOTHING)
+ else
{
if (osd->show & OSD_SHOW_HISTOGRAM)
{
@@ -548,7 +545,7 @@
osd_template_insert(vars, "res", NULL, OSDT_NONE);
}
- text =
image_osd_mkinfo(options->image_overlay.common.template_string, imd, vars);
+ text = image_osd_mkinfo(options->image_overlay.template_string,
imd, vars);
g_hash_table_destroy(vars);
} else {
@@ -1011,9 +1008,11 @@
osd->timer_id = -1;
osd->show = OSD_SHOW_NOTHING;
osd->histogram = NULL;
- osd->x = options->image_overlay.common.x;
- osd->y = options->image_overlay.common.y;
+ osd->x = options->image_overlay.x;
+ osd->y = options->image_overlay.y;
+ osd->histogram = histogram_new();
+
osd->destroy_id = g_signal_connect(G_OBJECT(imd->pr), "destroy",
G_CALLBACK(image_osd_destroy_cb), osd);
image_set_osd_data(imd, osd);
@@ -1021,18 +1020,6 @@
image_set_state_func(osd->imd, image_osd_state_cb, osd);
}
- if (show & OSD_SHOW_HISTOGRAM)
- {
- osd->histogram = histogram_new();
- histogram_set_channel(osd->histogram,
options->image_overlay.common.histogram_channel);
- histogram_set_mode(osd->histogram,
options->image_overlay.common.histogram_mode);
- }
- else if (osd->histogram)
- {
- histogram_free(osd->histogram);
- osd->histogram = NULL;
- }
-
if (show & OSD_SHOW_STATUS)
image_osd_icon(imd, IMAGE_OSD_ICON, -1);
@@ -1046,12 +1033,6 @@
{
if (!imd) return;
- if (show == OSD_SHOW_NOTHING)
- {
- image_osd_remove(imd);
- return;
- }
-
image_osd_enable(imd, show);
}
@@ -1062,6 +1043,26 @@
return osd ? osd->show : OSD_SHOW_NOTHING;
}
+Histogram *image_osd_get_histogram(ImageWindow *imd)
+{
+ OverlayStateData *osd = image_get_osd_data(imd);
+
+ return osd ? osd->histogram : NULL;
+}
+
+void image_osd_copy_status(ImageWindow *src, ImageWindow *dest)
+{
+ Histogram *h_src, *h_dest;
+ image_osd_set(dest, image_osd_get(src));
+
+ h_src = image_osd_get_histogram(src);
+ h_dest = image_osd_get_histogram(dest);
+
+ h_dest->histogram_mode = h_src->histogram_mode;
+ h_dest->histogram_channel = h_src->histogram_channel;
+
+}
+
/* duration:
0 = hide
1 = show
Modified: trunk/src/image-overlay.h
===================================================================
--- trunk/src/image-overlay.h 2009-02-28 12:50:39 UTC (rev 1431)
+++ trunk/src/image-overlay.h 2009-02-28 14:40:22 UTC (rev 1432)
@@ -37,6 +37,10 @@
void image_osd_set(ImageWindow *imd, OsdShowFlags show);
OsdShowFlags image_osd_get(ImageWindow *imd);
+Histogram *image_osd_get_histogram(ImageWindow *imd);
+
+void image_osd_copy_status(ImageWindow *src, ImageWindow *dest);
+
void image_osd_update(ImageWindow *imd);
void image_osd_icon(ImageWindow *imd, ImageOSDFlag flag, gint duration);
Modified: trunk/src/layout.c
===================================================================
--- trunk/src/layout.c 2009-02-28 12:50:39 UTC (rev 1431)
+++ trunk/src/layout.c 2009-02-28 14:40:22 UTC (rev 1432)
@@ -1913,6 +1913,7 @@
void layout_sync_options_with_current_state(LayoutWindow *lw)
{
+ Histogram *histogram;
if (!layout_valid(&lw)) return;
lw->options.main_window.maximized = window_maximized(lw->window);
@@ -1929,6 +1930,12 @@
layout_geometry_get_tools(lw, &lw->options.float_window.x,
&lw->options.float_window.y,
&lw->options.float_window.w,
&lw->options.float_window.h, &lw->options.float_window.vdivider_pos);
+ lw->options.image_overlay.state = image_osd_get(lw->image);
+ histogram = image_osd_get_histogram(lw->image);
+
+ lw->options.image_overlay.histogram_channel =
histogram->histogram_channel;
+ lw->options.image_overlay.histogram_mode = histogram->histogram_mode;
+
// if (options->startup.restore_path && options->startup.use_last_path)
// {
// g_free(options->startup.path);
@@ -1995,6 +2002,7 @@
LayoutWindow *lw;
GdkGeometry hint;
GdkWindowHints hint_mask;
+ Histogram *histogram;
lw = g_new0(LayoutWindow, 1);
@@ -2115,7 +2123,11 @@
gtk_widget_show(lw->window);
layout_tools_hide(lw, lw->options.tools_hidden);
- image_osd_set(lw->image, options->image_overlay.common.state |
(options->image_overlay.common.show_at_startup ? OSD_SHOW_INFO :
OSD_SHOW_NOTHING));
+ image_osd_set(lw->image, lw->options.image_overlay.state);
+ histogram = image_osd_get_histogram(lw->image);
+
+ histogram->histogram_channel =
lw->options.image_overlay.histogram_channel;
+ histogram->histogram_mode = lw->options.image_overlay.histogram_mode;
layout_window_list = g_list_append(layout_window_list, lw);
@@ -2137,8 +2149,6 @@
WRITE_SEPARATOR();
WRITE_BOOL(*layout, save_window_positions);
- WRITE_SEPARATOR();
-
WRITE_INT(*layout, main_window.x);
WRITE_INT(*layout, main_window.y);
WRITE_INT(*layout, main_window.w);
@@ -2165,6 +2175,10 @@
WRITE_SEPARATOR();
WRITE_BOOL(*layout, toolbar_hidden);
+
+ WRITE_UINT(*layout, image_overlay.state);
+ WRITE_INT(*layout, image_overlay.histogram_channel);
+ WRITE_INT(*layout, image_overlay.histogram_mode);
}
@@ -2229,6 +2243,10 @@
if (READ_BOOL(*layout, tools_restore_state)) continue;
if (READ_BOOL(*layout, toolbar_hidden)) continue;
+ if (READ_UINT(*layout, image_overlay.state)) continue;
+ if (READ_INT(*layout, image_overlay.histogram_channel))
continue;
+ if (READ_INT(*layout, image_overlay.histogram_mode)) continue;
+
DEBUG_1("unknown attribute %s = %s", option, value);
}
Modified: trunk/src/layout_image.c
===================================================================
--- trunk/src/layout_image.c 2009-02-28 12:50:39 UTC (rev 1431)
+++ trunk/src/layout_image.c 2009-02-28 14:40:22 UTC (rev 1432)
@@ -99,11 +99,7 @@
if (lw->tools) gtk_widget_set_sensitive(lw->tools, FALSE);
#endif
- if (image_osd_get(lw->full_screen->normal_imd) & OSD_SHOW_INFO)
- {
- image_osd_set(lw->image,
image_osd_get(lw->full_screen->normal_imd));
- image_osd_set(lw->full_screen->normal_imd, OSD_SHOW_NOTHING);
- }
+ image_osd_copy_status(lw->full_screen->normal_imd, lw->image);
}
void layout_image_full_screen_stop(LayoutWindow *lw)
@@ -111,8 +107,7 @@
if (!layout_valid(&lw)) return;
if (!lw->full_screen) return;
- if (image_osd_get(lw->image) & OSD_SHOW_INFO)
- image_osd_set(lw->full_screen->normal_imd,
image_osd_get(lw->image));
+ image_osd_copy_status(lw->image, lw->full_screen->normal_imd);
fullscreen_stop(lw->full_screen);
Modified: trunk/src/options.c
===================================================================
--- trunk/src/options.c 2009-02-28 12:50:39 UTC (rev 1431)
+++ trunk/src/options.c 2009-02-28 14:40:22 UTC (rev 1432)
@@ -59,9 +59,6 @@
options->fullscreen.disable_saver = TRUE;
options->fullscreen.screen = -1;
- options->image_overlay.common.histogram_channel = HCHAN_RGB;
- options->image_overlay.common.histogram_mode = 1;
-
memset(&options->image.border_color, 0,
sizeof(options->image.border_color));
options->image.dither_quality = GDK_RGB_DITHER_NORMAL;
options->image.enable_read_ahead = TRUE;
@@ -83,11 +80,9 @@
options->image.zoom_quality = GDK_INTERP_BILINEAR;
options->image.zoom_to_fit_allow_expand = FALSE;
- options->image_overlay.common.state = OSD_SHOW_NOTHING;
- options->image_overlay.common.show_at_startup = FALSE;
- options->image_overlay.common.template_string = NULL;
- options->image_overlay.common.x = 10;
- options->image_overlay.common.y = -10;
+ options->image_overlay.template_string = NULL;
+ options->image_overlay.x = 10;
+ options->image_overlay.y = -10;
options->layout.dir_view_type = DIRVIEW_LIST;
options->layout.file_view_type = FILEVIEW_LIST;
@@ -114,7 +109,10 @@
options->layout.tools_float = FALSE;
options->layout.tools_hidden = FALSE;
options->layout.tools_restore_state = TRUE;
-
+ options->layout.image_overlay.histogram_channel = HCHAN_RGB;
+ options->layout.image_overlay.histogram_mode = 1;
+ options->layout.image_overlay.state = OSD_SHOW_NOTHING;
+
options->lazy_image_sync = FALSE;
options->mousewheel_scrolls = FALSE;
options->open_recent_list_maxsize = 10;
@@ -181,7 +179,7 @@
options->color_profile.input_name[i] = NULL;
}
-
set_default_image_overlay_template_string(&options->image_overlay.common.template_string);
+
set_default_image_overlay_template_string(&options->image_overlay.template_string);
options->sidecar.ext = g_strdup(".jpg;%raw;.xmp");
options->layout.order = g_strdup("123");
@@ -215,7 +213,6 @@
{
layout_sync_options_with_current_state(lw);
copy_layout_options(&options->layout, &lw->options);
- options->image_overlay.common.state = image_osd_get(lw->image);
layout_sort_get(lw, &options->file_sort.method,
&options->file_sort.ascending);
Modified: trunk/src/options.h
===================================================================
--- trunk/src/options.h 2009-02-28 12:50:39 UTC (rev 1431)
+++ trunk/src/options.h 2009-02-28 14:40:22 UTC (rev 1432)
@@ -140,15 +140,9 @@
/* image overlay */
struct {
- struct {
- guint state;
- gboolean show_at_startup;
- gchar *template_string;
- gint x;
- gint y;
- gint histogram_channel;
- gint histogram_mode;
- } common;
+ gchar *template_string;
+ gint x;
+ gint y;
} image_overlay;
/* layout */
Modified: trunk/src/preferences.c
===================================================================
--- trunk/src/preferences.c 2009-02-28 12:50:39 UTC (rev 1431)
+++ trunk/src/preferences.c 2009-02-28 14:40:22 UTC (rev 1432)
@@ -317,10 +317,9 @@
options->fullscreen.clean_flip = c_options->fullscreen.clean_flip;
options->fullscreen.disable_saver = c_options->fullscreen.disable_saver;
options->fullscreen.above = c_options->fullscreen.above;
- options->image_overlay.common.show_at_startup =
c_options->image_overlay.common.show_at_startup;
- if (c_options->image_overlay.common.template_string)
-
set_image_overlay_template_string(&options->image_overlay.common.template_string,
-
c_options->image_overlay.common.template_string);
+ if (c_options->image_overlay.template_string)
+
set_image_overlay_template_string(&options->image_overlay.template_string,
+
c_options->image_overlay.template_string);
options->update_on_time_change = c_options->update_on_time_change;
options->image.exif_rotate_enable = c_options->image.exif_rotate_enable;
@@ -952,7 +951,7 @@
gtk_text_buffer_get_start_iter(pTextBuffer, &iStart);
gtk_text_buffer_get_end_iter(pTextBuffer, &iEnd);
-
set_image_overlay_template_string(&c_options->image_overlay.common.template_string,
+
set_image_overlay_template_string(&c_options->image_overlay.template_string,
gtk_text_buffer_get_text(pTextBuffer,
&iStart, &iEnd, TRUE));
}
@@ -961,11 +960,11 @@
GtkTextView *text_view = data;
GtkTextBuffer *buffer;
-
set_default_image_overlay_template_string(&options->image_overlay.common.template_string);
+
set_default_image_overlay_template_string(&options->image_overlay.template_string);
if (!configwindow) return;
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view));
- gtk_text_buffer_set_text(buffer,
options->image_overlay.common.template_string, -1);
+ gtk_text_buffer_set_text(buffer,
options->image_overlay.template_string, -1);
}
static void image_overlay_default_template_cb(GtkWidget *widget, gpointer data)
@@ -1536,8 +1535,6 @@
group = pref_group_new(vbox, FALSE, _("Overlay Screen Display"),
GTK_ORIENTATION_VERTICAL);
- pref_checkbox_new_int(group, _("Always show image overlay at startup"),
- options->image_overlay.common.show_at_startup,
&c_options->image_overlay.common.show_at_startup);
pref_label_new(group, _("Image overlay template"));
scrolled = gtk_scrolled_window_new(NULL, NULL);
@@ -1580,7 +1577,7 @@
gtk_widget_show(button);
buffer =
gtk_text_view_get_buffer(GTK_TEXT_VIEW(image_overlay_template_view));
- if (options->image_overlay.common.template_string)
gtk_text_buffer_set_text(buffer, options->image_overlay.common.template_string,
-1);
+ if (options->image_overlay.template_string)
gtk_text_buffer_set_text(buffer, options->image_overlay.template_string, -1);
g_signal_connect(G_OBJECT(buffer), "changed",
G_CALLBACK(image_overlay_template_view_changed_cb),
image_overlay_template_view);
Modified: trunk/src/rcfile.c
===================================================================
--- trunk/src/rcfile.c 2009-02-28 12:50:39 UTC (rev 1431)
+++ trunk/src/rcfile.c 2009-02-28 14:40:22 UTC (rev 1432)
@@ -370,22 +370,18 @@
WRITE_BOOL(*options, fullscreen.disable_saver);
WRITE_BOOL(*options, fullscreen.above);
+ WRITE_SEPARATOR();
// WRITE_SUBTITLE("Image Overlay Options");
- WRITE_UINT(*options, image_overlay.common.state);
- WRITE_BOOL(*options, image_overlay.common.show_at_startup);
- WRITE_CHAR(*options, image_overlay.common.template_string);
- WRITE_INT(*options, image_overlay.common.histogram_channel);
- WRITE_INT(*options, image_overlay.common.histogram_mode);
- WRITE_SEPARATOR();
+ WRITE_CHAR(*options, image_overlay.template_string);
// g_string_append_printf(outstr, "# these are relative positions:\n");
// g_string_append_printf(outstr, "# x >= 0: |x| pixels from left
border\n");
// g_string_append_printf(outstr, "# x < 0 : |x| pixels from right
border\n");
// g_string_append_printf(outstr, "# y >= 0: |y| pixels from top
border\n");
// g_string_append_printf(outstr, "# y < 0 : |y| pixels from bottom
border\n");
- WRITE_INT(*options, image_overlay.common.x);
- WRITE_INT(*options, image_overlay.common.y);
+ WRITE_INT(*options, image_overlay.x);
+ WRITE_INT(*options, image_overlay.y);
// WRITE_SUBTITLE("Slideshow Options");
@@ -672,16 +668,11 @@
if (READ_BOOL(*options, fullscreen.above)) continue;
/* image overlay */
- if (READ_UINT(*options, image_overlay.common.state)) continue;
- if (READ_BOOL(*options, image_overlay.common.show_at_startup))
continue;
- if (READ_CHAR(*options, image_overlay.common.template_string))
continue;
- if (READ_INT(*options, image_overlay.common.histogram_channel))
continue;
- if (READ_INT(*options, image_overlay.common.histogram_mode))
continue;
+ if (READ_CHAR(*options, image_overlay.template_string))
continue;
+ if (READ_INT(*options, image_overlay.x)) continue;
+ if (READ_INT(*options, image_overlay.y)) continue;
- if (READ_INT(*options, image_overlay.common.x)) continue;
- if (READ_INT(*options, image_overlay.common.y)) continue;
-
/* slideshow options */
if (READ_INT_UNIT(*options, slideshow.delay,
SLIDESHOW_SUBSECOND_PRECISION)) continue;
if (READ_BOOL(*options, slideshow.random)) continue;
Modified: trunk/src/typedefs.h
===================================================================
--- trunk/src/typedefs.h 2009-02-28 12:50:39 UTC (rev 1431)
+++ trunk/src/typedefs.h 2009-02-28 14:40:22 UTC (rev 1432)
@@ -519,6 +519,12 @@
gint h;
} properties_window;
+ struct {
+ guint state;
+ gint histogram_channel;
+ gint histogram_mode;
+ } image_overlay;
+
gboolean save_window_positions;
gboolean tools_float;
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Geeqie-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geeqie-svn