diff src/layout_util.c @ 1293:48e064b37ba6

separated "normal" and advanced exif, "Normal" exif is now in the generic bar, advanced exif is in separate window.
author nadvornik
date Sun, 15 Feb 2009 09:36:53 +0000
parents 4a3ae0e6f1eb
children 55ea4962887a
line wrap: on
line diff
--- a/src/layout_util.c	Sat Feb 14 20:26:30 2009 +0000
+++ b/src/layout_util.c	Sun Feb 15 09:36:53 2009 +0000
@@ -14,7 +14,7 @@
 #include "main.h"
 #include "layout_util.h"
 
-#include "bar_exif.h"
+#include "advanced_exif.h"
 #include "bar_sort.h"
 #include "bar.h"
 #include "cache_maint.h"
@@ -679,8 +679,7 @@
 	
 	layout_exit_fullscreen(lw);
 
-	if (lw->bar_exif_enabled == gtk_toggle_action_get_active(action)) return;
-	layout_bar_exif_toggle(lw);
+	layout_exif_window_new(lw);
 }
 
 static void layout_menu_bar_sort_cb(GtkToggleAction *action, gpointer data)
@@ -1211,7 +1210,7 @@
   { "FloatTools",	NULL,		N_("_Float file list"),	"L",		NULL,	CB(layout_menu_float_cb),	 FALSE  },
   { "HideToolbar",	NULL,		N_("Hide tool_bar"),	NULL,		NULL,	CB(layout_menu_toolbar_cb),	 FALSE  },
   { "SBar",		NULL,		N_("_Info"),		"<control>K",	NULL,	CB(layout_menu_bar_cb),		 FALSE  },
-  { "SBarExif",		NULL,		N_("E_xif data"),	"<control>E",	NULL,	CB(layout_menu_bar_exif_cb),	 FALSE  },
+  { "ExifWin",		NULL,		N_("E_xif window"),	"<control>E",	NULL,	CB(layout_menu_bar_exif_cb),	 FALSE  },
   { "SBarSort",		NULL,		N_("Sort _manager"),	"<control>S",	NULL,	CB(layout_menu_bar_sort_cb),	 FALSE  },
   { "SlideShow",	NULL,		N_("Toggle _slideshow"),"S",		NULL,	CB(layout_menu_slideshow_cb),	 FALSE  },
 };
@@ -1368,7 +1367,7 @@
 "      <placeholder name='ToolsSection'/>"
 "      <separator/>"
 "      <menuitem action='SBar'/>"
-"      <menuitem action='SBarExif'/>"
+"      <menuitem action='ExifWin'/>"
 "      <menuitem action='SBarSort'/>"
 "      <placeholder name='SideBarSection'/>"
 "      <separator/>"
@@ -1865,9 +1864,6 @@
 	action = gtk_action_group_get_action(lw->action_group, "SBar");
 	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->bar_enabled);
 
-	action = gtk_action_group_get_action(lw->action_group, "SBarExif");
-	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->bar_exif_enabled);
-
 	action = gtk_action_group_get_action(lw->action_group, "SBarSort");
 	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->bar_sort_enabled);
 
@@ -1879,6 +1875,10 @@
 
 	action = gtk_action_group_get_action(lw->action_group, "SlideShow");
 	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), layout_image_slideshow_active(lw));
+
+	action = gtk_action_group_get_action(lw->action_group, "ExifWin");
+	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), !!lw->exif_window);
+
 }
 
 void layout_util_sync_thumb(LayoutWindow *lw)
@@ -2034,81 +2034,6 @@
 //	bar_maint_renamed(lw->bar_info, layout_image_get_fd(lw));
 }
 
-static void layout_bar_exif_destroyed(GtkWidget *widget, gpointer data)
-{
-	LayoutWindow *lw = data;
-
-	if (lw->bar_exif)
-		{
-		lw->bar_exif_advanced = bar_exif_is_advanced(lw->bar_exif);
-		}
-
-	lw->bar_exif = NULL;
-	if (lw->utility_box)
-		{
-		/* destroyed from within itself */
-		lw->bar_exif_enabled = FALSE;
-		layout_util_sync_views(lw);
-		}
-}
-
-static void layout_bar_exif_sized(GtkWidget *widget, GtkAllocation *allocation, gpointer data)
-{
-	LayoutWindow *lw = data;
-
-	if (!lw->bar_exif) return;
-	
-	options->panels.exif.width = lw->bar_exif_width = allocation->width;
-}
-
-static void layout_bar_exif_new(LayoutWindow *lw)
-{
-	if (!lw->utility_box) return;
-
-	lw->bar_exif = bar_exif_new(TRUE, layout_image_get_fd(lw),
-				    lw->bar_exif_advanced, lw->utility_box);
-	g_signal_connect(G_OBJECT(lw->bar_exif), "destroy",
-			 G_CALLBACK(layout_bar_exif_destroyed), lw);
-	g_signal_connect(G_OBJECT(lw->bar_exif), "size_allocate",
-			 G_CALLBACK(layout_bar_exif_sized), lw);
-
-	options->panels.exif.enabled = lw->bar_exif_enabled = TRUE;
-	gtk_widget_set_size_request(lw->bar_exif, lw->bar_exif_width, -1);
-
-	gtk_box_pack_start(GTK_BOX(lw->utility_box), lw->bar_exif, FALSE, FALSE, 0);
-	if (lw->bar) gtk_box_reorder_child(GTK_BOX(lw->utility_box), lw->bar_exif, 1);
-	gtk_widget_show(lw->bar_exif);
-}
-
-static void layout_bar_exif_close(LayoutWindow *lw)
-{
-	if (lw->bar_exif)
-		{
-		bar_exif_close(lw->bar_exif);
-		lw->bar_exif = NULL;
-		}
-	options->panels.exif.enabled = lw->bar_exif_enabled = FALSE;
-}
-
-void layout_bar_exif_toggle(LayoutWindow *lw)
-{
-	if (lw->bar_exif_enabled)
-		{
-		layout_bar_exif_close(lw);
-		}
-	else
-		{
-		layout_bar_exif_new(lw);
-		}
-}
-
-static void layout_bar_exif_new_image(LayoutWindow *lw)
-{
-	if (!lw->bar_exif || !lw->bar_exif_enabled) return;
-
-	bar_exif_set(lw->bar_exif, layout_image_get_fd(lw));
-}
-
 static void layout_bar_sort_destroyed(GtkWidget *widget, gpointer data)
 {
 	LayoutWindow *lw = data;
@@ -2162,7 +2087,8 @@
 void layout_bars_new_image(LayoutWindow *lw)
 {
 	layout_bar_new_image(lw);
-	layout_bar_exif_new_image(lw);
+
+	if (lw->exif_window) advanced_exif_set_fd(lw->exif_window, layout_image_get_fd(lw));
 
 	/* this should be called here to handle the metadata edited in bars */
 	if (options->metadata.confirm_on_image_change)
@@ -2190,18 +2116,12 @@
 		layout_bar_new(lw);
 		}
 
-	if (lw->bar_exif_enabled)
-		{
-		layout_bar_exif_new(lw);
-		}
-
 	return lw->utility_box;
 }
 
 void layout_bars_close(LayoutWindow *lw)
 {
 	layout_bar_sort_close(lw);
-	layout_bar_exif_close(lw);
 	layout_bar_close(lw);
 }
 
@@ -2209,4 +2129,23 @@
 {
 	layout_bar_maint_renamed(lw);
 }
+
+static void layout_exif_window_destroy(GtkWidget *widget, gpointer data)
+{
+	LayoutWindow *lw = data;
+	lw->exif_window = NULL;
+}
+
+void layout_exif_window_new(LayoutWindow *lw)
+{
+	if (!lw->exif_window) 
+		{
+		lw->exif_window = advanced_exif_new();
+		if (!lw->exif_window) return;
+		g_signal_connect(G_OBJECT(lw->exif_window), "destroy",
+				 G_CALLBACK(layout_exif_window_destroy), lw);
+		advanced_exif_set_fd(lw->exif_window, layout_image_get_fd(lw));
+		}
+}
+
 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */