summaryrefslogtreecommitdiffstats
path: root/ingen/client
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2015-02-08 07:02:59 +0000
committerDavid Robillard <d@drobilla.net>2015-02-08 07:02:59 +0000
commit0f9c8151d5b42b243a499bb31a1e1f0b2e8c5f6f (patch)
tree1ed4df4df4c3f160120544d92c681f1b4519e1aa /ingen/client
parent8733afb7ae9a04f46ac6318667182da16eca9fe5 (diff)
downloadingen-0f9c8151d5b42b243a499bb31a1e1f0b2e8c5f6f.tar.gz
ingen-0f9c8151d5b42b243a499bb31a1e1f0b2e8c5f6f.tar.bz2
ingen-0f9c8151d5b42b243a499bb31a1e1f0b2e8c5f6f.zip
Server-side copy paste with LV2 state support.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5541 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'ingen/client')
-rw-r--r--ingen/client/ClientStore.hpp5
-rw-r--r--ingen/client/SigClientInterface.hpp4
-rw-r--r--ingen/client/ThreadedSigClientInterface.hpp5
3 files changed, 12 insertions, 2 deletions
diff --git a/ingen/client/ClientStore.hpp b/ingen/client/ClientStore.hpp
index f53217b4..1871fca2 100644
--- a/ingen/client/ClientStore.hpp
+++ b/ingen/client/ClientStore.hpp
@@ -55,7 +55,6 @@ public:
ClientStore(
URIs& uris,
Log& log,
- SPtr<Interface> engine = SPtr<Interface>(),
SPtr<SigClientInterface> emitter = SPtr<SigClientInterface>());
Raul::URI uri() const { return Raul::URI("ingen:/clients/store"); }
@@ -81,6 +80,9 @@ public:
const Resource::Properties& remove,
const Resource::Properties& add);
+ void copy(const Raul::Path& old_path,
+ const Raul::URI& new_uri);
+
void move(const Raul::Path& old_path,
const Raul::Path& new_path);
@@ -129,7 +131,6 @@ private:
URIs& _uris;
Log& _log;
- SPtr<Interface> _engine;
SPtr<SigClientInterface> _emitter;
SPtr<Plugins> _plugins; ///< Map, keyed by plugin URI
diff --git a/ingen/client/SigClientInterface.hpp b/ingen/client/SigClientInterface.hpp
index 07e6e333..39fff895 100644
--- a/ingen/client/SigClientInterface.hpp
+++ b/ingen/client/SigClientInterface.hpp
@@ -53,6 +53,7 @@ public:
INGEN_SIGNAL(error, void, std::string)
INGEN_SIGNAL(put, void, Raul::URI, Resource::Properties, Resource::Graph)
INGEN_SIGNAL(delta, void, Raul::URI, Resource::Properties, Resource::Properties)
+ INGEN_SIGNAL(object_copied, void, Raul::Path, Raul::URI)
INGEN_SIGNAL(object_moved, void, Raul::Path, Raul::Path)
INGEN_SIGNAL(object_deleted, void, Raul::URI)
INGEN_SIGNAL(connection, void, Raul::Path, Raul::Path)
@@ -97,6 +98,9 @@ protected:
void del(const Raul::URI& uri)
{ EMIT(object_deleted, uri); }
+ void copy(const Raul::Path& old_path, const Raul::URI& new_uri)
+ { EMIT(object_copied, old_path, new_uri); }
+
void move(const Raul::Path& old_path, const Raul::Path& new_path)
{ EMIT(object_moved, old_path, new_path); }
diff --git a/ingen/client/ThreadedSigClientInterface.hpp b/ingen/client/ThreadedSigClientInterface.hpp
index ab9a7ee9..0d5d5e57 100644
--- a/ingen/client/ThreadedSigClientInterface.hpp
+++ b/ingen/client/ThreadedSigClientInterface.hpp
@@ -59,6 +59,7 @@ public:
, connection_slot(_signal_connection.make_slot())
, object_deleted_slot(_signal_object_deleted.make_slot())
, object_moved_slot(_signal_object_moved.make_slot())
+ , object_copied_slot(_signal_object_copied.make_slot())
, disconnection_slot(_signal_disconnection.make_slot())
, disconnect_all_slot(_signal_disconnect_all.make_slot())
, property_change_slot(_signal_property_change.make_slot())
@@ -97,6 +98,9 @@ public:
void move(const Raul::Path& old_path, const Raul::Path& new_path)
{ push_sig(sigc::bind(object_moved_slot, old_path, new_path)); }
+ void copy(const Raul::Path& old_path, const Raul::URI& new_uri)
+ { push_sig(sigc::bind(object_copied_slot, old_path, new_uri)); }
+
void disconnect(const Raul::Path& tail, const Raul::Path& head)
{ push_sig(sigc::bind(disconnection_slot, tail, head)); }
@@ -157,6 +161,7 @@ private:
sigc::slot<void, Raul::Path, Raul::Path> connection_slot;
sigc::slot<void, Raul::URI> object_deleted_slot;
sigc::slot<void, Raul::Path, Raul::Path> object_moved_slot;
+ sigc::slot<void, Raul::Path, Raul::URI> object_copied_slot;
sigc::slot<void, Raul::Path, Raul::Path> disconnection_slot;
sigc::slot<void, Raul::Path, Raul::Path> disconnect_all_slot;
sigc::slot<void, Raul::URI, Raul::URI, Atom> property_change_slot;