Author: post
Date: 2010-09-19 17:17:04 +0200 (Sun, 19 Sep 2010)
New Revision: 3536
Modified:
trunk/src/rs-tethered-shooting.c
Log:
Add custom tags to new images in tethered shooting.
Modified: trunk/src/rs-tethered-shooting.c
===================================================================
--- trunk/src/rs-tethered-shooting.c 2010-09-19 14:34:50 UTC (rev 3535)
+++ trunk/src/rs-tethered-shooting.c 2010-09-19 15:17:04 UTC (rev 3536)
@@ -35,6 +35,7 @@
#include <fcntl.h>
#include "filename.h"
#include <rs-store.h>
+#include <rs-library.h>
#ifdef WITH_GCONF
#include <gconf/gconf-client.h>
#endif
@@ -369,7 +370,31 @@
}
+static void add_tags_to_photo(TetherInfo* t, const char* filename)
+{
+ const gchar* photo_tags =
rs_conf_get_string("tether-tags-for-new-images");
+ if (!photo_tags)
+ return;
+
+ RSLibrary *lib = rs_library_get_singleton();
+ if (t->rs->photo && t->rs->photo->metadata)
+ rs_library_add_photo_with_metadata(lib, filename,
t->rs->photo->metadata);
+ else
+ return;
+
+ gchar** split_tags = g_strsplit_set(photo_tags, " .,/;:~^*|&",0);
+ int i = 0;
+ while (split_tags[i] != NULL)
+ {
+ rs_library_add_tag(lib, split_tags[i]);
+ rs_library_photo_add_tag(lib, filename, split_tags[i], FALSE);
+ i++;
+ }
+ g_strfreev(split_tags);
+}
+
+
static void
add_file_to_store(TetherInfo* t, const char* tmp_name)
{
@@ -398,6 +423,8 @@
rs_store_load_file(t->rs->store, filename);
if (!rs_store_set_selected_name(t->rs->store, filename, TRUE))
append_status(t, "Could not open image!\n");
+ else if (t->rs->photo)
+ add_tags_to_photo(t, filename);
}
#define RS_NUM_SETTINGS 3
@@ -647,6 +674,14 @@
}
static void
+tags_entry_changed(GtkEntry *entry, gpointer user_data)
+{
+ const gchar* tags = gtk_entry_get_text(GTK_ENTRY(entry));
+ rs_conf_set_string("tether-tags-for-new-images", tags);
+}
+
+
+static void
filename_entry_changed(GtkEntry *entry, gpointer user_data)
{
CAMERA_FILENAME *filename = (CAMERA_FILENAME *) user_data;
@@ -707,6 +742,7 @@
GtkWidget *status_window;
GtkWidget *status_textview;
+ GtkWidget *tags_entry;
/* A box to hold everything */
GtkBox *main_box = GTK_BOX(gtk_vbox_new (FALSE, 7));
@@ -805,8 +841,21 @@
gtk_box_pack_start(GTK_BOX(box), example_hbox, FALSE, TRUE, 0);
update_example(filename);
+ h_box = GTK_BOX(gtk_hbox_new (FALSE, 0));
+ label = gtk_label_new(_("Tags for new images:"));
+ gtk_box_pack_start(GTK_BOX(h_box), label, FALSE, TRUE, 5);
+
+ tags_entry = gtk_entry_new();
+ gchar* tags = rs_conf_get_string("tether-tags-for-new-images");
+ if (tags)
+ gtk_entry_set_text(GTK_ENTRY(tags_entry), tags);
+ g_signal_connect(tags_entry, "changed", G_CALLBACK(tags_entry_changed),
NULL);
+ gtk_box_pack_start(GTK_BOX(h_box), tags_entry, TRUE, TRUE, 5);
+ gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(h_box), FALSE, TRUE, 0);
+
+
/* Add filename& tags box */
- gtk_box_pack_start(GTK_BOX(main_box), gui_box(_("Filename & Tags"),
GTK_WIDGET(box), "tether_filename_tags", TRUE), FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(main_box), gui_box(_("Filename & Tags"),
GTK_WIDGET(box), "tether_filename_tags", TRUE), FALSE, FALSE, 0);
/* PREFERENCES */
box = GTK_BOX(gtk_vbox_new (FALSE, 5));
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit