diff src/preferences.c @ 222:77f1bcc6c161

various exif improvements based on patch by Uwe Ohse try to compute 35mm focal length
author nadvornik
date Wed, 02 Apr 2008 20:44:40 +0000
parents f4a0555794a9
children 73efc1ba150f
line wrap: on
line diff
--- a/src/preferences.c	Wed Apr 02 12:12:50 2008 +0000
+++ b/src/preferences.c	Wed Apr 02 20:44:40 2008 +0000
@@ -28,6 +28,8 @@
 #include "ui_misc.h"
 #include "ui_tabcomp.h"
 #include "ui_utildlg.h"
+#include "bar_exif.h"
+#include "exif.h"
 
 #include <math.h>
 
@@ -330,6 +332,11 @@
 	if (buf && strlen(buf) > 0) color_profile_screen_file = g_strdup(buf);
 #endif
 
+	for (i=0; ExifUIList[i].key; i++)
+		{
+		ExifUIList[i].current = ExifUIList[i].temp;
+		}
+
 	l_conf = layout_config_get(layout_widget, &new_style);
 
 	if (new_style != layout_style ||
@@ -396,6 +403,41 @@
  *-----------------------------------------------------------------------------
  */ 
 
+static void exif_item_cb(GtkWidget *combo, gpointer data)
+{
+	gint *option = data;
+	*option = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
+}
+
+static void exif_item(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_new_text();
+
+	/* note: the order is important, it must match the values of 
+	 * EXIF_UI_OFF, _IFSET, _ON */
+	gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("Never"));
+	gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("If set"));
+	gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("Always"));
+
+	gtk_combo_box_set_active(GTK_COMBO_BOX(combo), option);
+
+	g_signal_connect(G_OBJECT(combo), "changed",
+			 G_CALLBACK(exif_item_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);
+}
+
 static void quality_menu_cb(GtkWidget *combo, gpointer data)
 {
 	gint *option = data;
@@ -1217,6 +1259,40 @@
 	gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
 	gtk_widget_show(button);
 
+	/* exif tab */
+
+	scrolled = gtk_scrolled_window_new(NULL, NULL);
+	gtk_container_set_border_width(GTK_CONTAINER(scrolled), PREF_PAD_BORDER);
+	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
+				       GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+
+	label = gtk_label_new(_("Exif"));
+	gtk_notebook_append_page(GTK_NOTEBOOK(notebook), scrolled, label);
+	gtk_widget_show(scrolled);
+
+	viewport = gtk_viewport_new(NULL, NULL);
+	gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport), GTK_SHADOW_NONE);
+	gtk_container_add(GTK_CONTAINER(scrolled), viewport);
+	gtk_widget_show(viewport);
+
+	vbox = gtk_vbox_new(FALSE, 0);
+	gtk_container_add(GTK_CONTAINER(viewport), vbox);
+	gtk_widget_show(vbox);
+
+	group = pref_group_new(vbox, FALSE, _("What to show in properties dialog:"), 
+			       GTK_ORIENTATION_VERTICAL);
+	table = pref_table_new(group, 2, 2, FALSE, FALSE);
+
+	for (i = 0; ExifUIList[i].key; i++)
+		{
+		static gint cc;
+		const gchar *title;
+	  
+	  	title = exif_get_description_by_key(ExifUIList[i].key);
+		exif_item(table, 0, i, title, ExifUIList[i].current,
+			  &ExifUIList[i].temp);
+		}
+
 	/* advanced entry tab */
 
 	scrolled = gtk_scrolled_window_new(NULL, NULL);