[niepce] Implement "Write Metadata"
- From: Hubert Figuière <hub src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [niepce] Implement "Write Metadata"
- Date: Thu, 20 Jun 2013 05:54:18 +0000 (UTC)
commit 2df2029507208b892b51eeb5193fa652366e3126
Author: Hubert Figuière <hub figuiere net>
Date: Thu Jun 20 00:59:16 2013 -0400
Implement "Write Metadata"
src/engine/db/library.cpp | 4 ++++
src/engine/db/library.hpp | 1 +
src/engine/library/commands.cpp | 6 ++++++
src/engine/library/commands.hpp | 4 +++-
src/libraryclient/clientimpl.cpp | 9 +++++++++
src/libraryclient/clientimpl.hpp | 2 ++
src/libraryclient/libraryclient.cpp | 8 +++++++-
src/libraryclient/libraryclient.hpp | 1 +
src/niepce/ui/moduleshell.cpp | 12 ++++++++++--
src/niepce/ui/selectioncontroller.cpp | 8 ++++++++
src/niepce/ui/selectioncontroller.hpp | 2 ++
11 files changed, 53 insertions(+), 4 deletions(-)
---
diff --git a/src/engine/db/library.cpp b/src/engine/db/library.cpp
index 2ab46f0..ae5e78a 100644
--- a/src/engine/db/library.cpp
+++ b/src/engine/db/library.cpp
@@ -783,6 +783,10 @@ bool Library::setMetaData(library_id_t file_id, fwk::PropertyIndex meta,
return retval;
}
+bool Library::writeMetaData(library_id_t file_id)
+{
+ return rewriteXmpForId(file_id, true);
+}
bool Library::moveFileToFolder(library_id_t file_id, library_id_t folder_id)
{
diff --git a/src/engine/db/library.hpp b/src/engine/db/library.hpp
index e4de6ad..c4225df 100644
--- a/src/engine/db/library.hpp
+++ b/src/engine/db/library.hpp
@@ -167,6 +167,7 @@ public:
bool setMetaData(library_id_t file_id, const LibMetadata::Ptr & );
bool setMetaData(library_id_t file_id, fwk::PropertyIndex meta,
const fwk::PropertyValue & value);
+ bool writeMetaData(library_id_t file_id);
bool moveFileToFolder(library_id_t file_id, library_id_t folder_id);
diff --git a/src/engine/library/commands.cpp b/src/engine/library/commands.cpp
index 7d7c0fa..b7fd629 100644
--- a/src/engine/library/commands.cpp
+++ b/src/engine/library/commands.cpp
@@ -125,6 +125,12 @@ void Commands::cmdSetMetadata(const Library::Ptr & lib,
lib->notify(Library::NOTIFY_METADATA_CHANGED, boost::any(m));
}
+void Commands::cmdWriteMetadata(const Library::Ptr & lib,
+ library_id_t file_id)
+{
+ lib->writeMetaData(file_id);
+}
+
void Commands::cmdMoveFileToFolder(const Library::Ptr & lib,
library_id_t file_id, library_id_t from_folder_id,
library_id_t to_folder_id)
diff --git a/src/engine/library/commands.hpp b/src/engine/library/commands.hpp
index 7db756c..f670508 100644
--- a/src/engine/library/commands.hpp
+++ b/src/engine/library/commands.hpp
@@ -1,7 +1,7 @@
/*
* niepce - engine/library/commands.hpp
*
- * Copyright (C) 2007-2009 Hubert Figuiere
+ * Copyright (C) 2007-2013 Hubert Figuiere
*
* 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
@@ -54,6 +54,8 @@ public:
static void cmdSetMetadata(const Library::Ptr & lib,
library_id_t file_id, fwk::PropertyIndex meta,
const fwk::PropertyValue & value);
+ static void cmdWriteMetadata(const Library::Ptr & lib,
+ library_id_t file_id);
static void cmdMoveFileToFolder(const Library::Ptr & lib,
library_id_t file_id, library_id_t from_folder_id,
library_id_t to_folder_id);
diff --git a/src/libraryclient/clientimpl.cpp b/src/libraryclient/clientimpl.cpp
index acfcddd..c106456 100644
--- a/src/libraryclient/clientimpl.cpp
+++ b/src/libraryclient/clientimpl.cpp
@@ -127,6 +127,15 @@ tid_t ClientImpl::setMetadata(eng::library_id_t file_id, int meta,
return id;
}
+tid_t ClientImpl::write_metadata(eng::library_id_t file_id)
+{
+ tid_t id = LibraryClient::newTid();
+ Op::Ptr op(new Op(id, std::bind(&Commands::cmdWriteMetadata, _1,
+ file_id)));
+ m_localLibrary->schedule(op);
+ return id;
+}
+
tid_t ClientImpl::moveFileToFolder(eng::library_id_t file_id,
eng::library_id_t from_folder_id,
eng::library_id_t to_folder_id)
diff --git a/src/libraryclient/clientimpl.hpp b/src/libraryclient/clientimpl.hpp
index 55ad388..ffba6de 100644
--- a/src/libraryclient/clientimpl.hpp
+++ b/src/libraryclient/clientimpl.hpp
@@ -49,6 +49,8 @@ public:
eng::tid_t requestMetadata(eng::library_id_t id);
eng::tid_t setMetadata(eng::library_id_t id, int meta,
const fwk::PropertyValue & value);
+ eng::tid_t write_metadata(eng::library_id_t file_id);
+
eng::tid_t moveFileToFolder(eng::library_id_t file_id,
eng::library_id_t from_folder_id,
eng::library_id_t to_folder_id);
diff --git a/src/libraryclient/libraryclient.cpp b/src/libraryclient/libraryclient.cpp
index 178592f..114be43 100644
--- a/src/libraryclient/libraryclient.cpp
+++ b/src/libraryclient/libraryclient.cpp
@@ -1,7 +1,7 @@
/*
* niepce - libraryclient/libraryclient.cpp
*
- * Copyright (C) 2007-2009 Hubert Figuiere
+ * Copyright (C) 2007-2013 Hubert Figuiere
*
* 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
@@ -97,6 +97,12 @@ eng::tid_t LibraryClient::setMetadata(library_id_t id, fwk::PropertyIndex meta,
return m_pImpl->setMetadata(id, meta, value);
}
+eng::tid_t LibraryClient::write_metadata(eng::library_id_t id)
+{
+ return m_pImpl->write_metadata(id);
+}
+
+
eng::tid_t LibraryClient::moveFileToFolder(eng::library_id_t file_id, eng::library_id_t from_folder,
eng::library_id_t to_folder)
{
diff --git a/src/libraryclient/libraryclient.hpp b/src/libraryclient/libraryclient.hpp
index 2811273..8e18f4d 100644
--- a/src/libraryclient/libraryclient.hpp
+++ b/src/libraryclient/libraryclient.hpp
@@ -70,6 +70,7 @@ public:
eng::tid_t setMetadata(eng::library_id_t id, fwk::PropertyIndex meta, const fwk::PropertyValue & value);
eng::tid_t moveFileToFolder(eng::library_id_t file_id, eng::library_id_t from_folder,
eng::library_id_t to_folder);
+ eng::tid_t write_metadata(eng::library_id_t file_id);
/** get all the labels */
eng::tid_t getAllLabels();
diff --git a/src/niepce/ui/moduleshell.cpp b/src/niepce/ui/moduleshell.cpp
index 5f3c21b..b39b4db 100644
--- a/src/niepce/ui/moduleshell.cpp
+++ b/src/niepce/ui/moduleshell.cpp
@@ -130,7 +130,8 @@ Gtk::Widget * ModuleShell::buildWidget(const Glib::RefPtr<Gtk::UIManager> & mana
5));
m_actionGroup->add(Gtk::Action::create("SetFlag", _("Set _Flag")));
- m_actionGroup->add(Gtk::Action::create("SetFlagReject", _("Flag as _Rejected")),
+ m_actionGroup->add(Gtk::Action::create("SetFlagReject",
+ _("Flag as _Rejected")),
Gtk::AccelKey("x"), sigc::bind(
sigc::mem_fun(*m_selection_controller,
&SelectionController::set_flag),
@@ -148,6 +149,11 @@ Gtk::Widget * ModuleShell::buildWidget(const Glib::RefPtr<Gtk::UIManager> & mana
m_actionGroup->add(Gtk::Action::create("DeleteImage", Gtk::Stock::DELETE));
+ m_actionGroup->add(Gtk::Action::create("WriteMetadata",
+ _("Write metadata")),
+ sigc::mem_fun(*m_selection_controller,
+ &SelectionController::write_metadata));
+
manager->insert_action_group(m_actionGroup);
@@ -159,7 +165,7 @@ Gtk::Widget * ModuleShell::buildWidget(const Glib::RefPtr<Gtk::UIManager> & mana
" <menuitem action='NextImage'/>"
" <separator/>"
" <menuitem action='RotateLeft'/>"
- " <menuitem action='RotateRight'/>"
+ " <menuitem action='RotateRight'/>"
" <separator/>"
" <menu action='SetRating'>"
" <menuitem action='SetRating0'/>"
@@ -183,6 +189,8 @@ Gtk::Widget * ModuleShell::buildWidget(const Glib::RefPtr<Gtk::UIManager> & mana
" </menu>"
" <separator/>"
" <menuitem action='DeleteImage'/>"
+ " <separator/>"
+ " <menuitem action='WriteMetadata'/>"
" </menu>"
" </menubar>"
"</ui>";
diff --git a/src/niepce/ui/selectioncontroller.cpp b/src/niepce/ui/selectioncontroller.cpp
index b158355..8f2e7c7 100644
--- a/src/niepce/ui/selectioncontroller.cpp
+++ b/src/niepce/ui/selectioncontroller.cpp
@@ -278,6 +278,14 @@ void SelectionController::set_properties(const fwk::PropertyBag & props,
}
}
+void SelectionController::write_metadata()
+{
+ eng::library_id_t selection = get_selection();
+ if(selection >= 0) {
+ getLibraryClient()->write_metadata(selection);
+ }
+}
+
void SelectionController::move_to_trash()
{
eng::library_id_t trash_folder = getLibraryClient()->trash_id();
diff --git a/src/niepce/ui/selectioncontroller.hpp b/src/niepce/ui/selectioncontroller.hpp
index 2d2d57b..a258628 100644
--- a/src/niepce/ui/selectioncontroller.hpp
+++ b/src/niepce/ui/selectioncontroller.hpp
@@ -96,6 +96,8 @@ public:
void set_properties(const fwk::PropertyBag & props,
const fwk::PropertyBag & old);
+ /** Write the file(s) metadata to disk. */
+ void write_metadata();
void move_to_trash();
/** get the current selection
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]