summaryrefslogtreecommitdiffstats
path: root/src/client
diff options
context:
space:
mode:
Diffstat (limited to 'src/client')
-rw-r--r--src/client/ClientStore.cpp108
-rw-r--r--src/client/ClientStore.hpp4
-rw-r--r--src/client/DeprecatedLoader.cpp65
-rw-r--r--src/client/HTTPEngineSender.cpp32
-rw-r--r--src/client/HTTPEngineSender.hpp14
-rw-r--r--src/client/OSCClientReceiver.cpp40
-rw-r--r--src/client/OSCClientReceiver.hpp2
-rw-r--r--src/client/OSCEngineSender.cpp66
-rw-r--r--src/client/OSCEngineSender.hpp14
-rw-r--r--src/client/ObjectModel.cpp2
-rw-r--r--src/client/ObjectModel.hpp6
-rw-r--r--src/client/PluginModel.cpp2
-rw-r--r--src/client/SigClientInterface.hpp18
-rw-r--r--src/client/ThreadedSigClientInterface.cpp26
-rw-r--r--src/client/ThreadedSigClientInterface.hpp18
15 files changed, 116 insertions, 301 deletions
diff --git a/src/client/ClientStore.cpp b/src/client/ClientStore.cpp
index 64b6ae09..c28bdca0 100644
--- a/src/client/ClientStore.cpp
+++ b/src/client/ClientStore.cpp
@@ -45,11 +45,8 @@ ClientStore::ClientStore(SharedPtr<EngineInterface> engine, SharedPtr<SigClientI
emitter->signal_object_destroyed.connect(sigc::mem_fun(this, &ClientStore::destroy));
emitter->signal_object_renamed.connect(sigc::mem_fun(this, &ClientStore::rename));
- emitter->signal_new_object.connect(sigc::mem_fun(this, &ClientStore::new_object));
emitter->signal_new_plugin.connect(sigc::mem_fun(this, &ClientStore::new_plugin));
- emitter->signal_new_patch.connect(sigc::mem_fun(this, &ClientStore::new_patch));
- emitter->signal_new_node.connect(sigc::mem_fun(this, &ClientStore::new_node));
- emitter->signal_new_port.connect(sigc::mem_fun(this, &ClientStore::new_port));
+ emitter->signal_put.connect(sigc::mem_fun(this, &ClientStore::put));
emitter->signal_clear_patch.connect(sigc::mem_fun(this, &ClientStore::clear_patch));
emitter->signal_connection.connect(sigc::mem_fun(this, &ClientStore::connect));
emitter->signal_disconnection.connect(sigc::mem_fun(this, &ClientStore::disconnect));
@@ -78,7 +75,6 @@ ClientStore::add_object(SharedPtr<ObjectModel> object)
if (existing != end()) {
PtrCast<ObjectModel>(existing->second)->set(object);
} else {
-
if (!object->path().is_root()) {
SharedPtr<ObjectModel> parent = this->object(object->path().parent());
if (parent) {
@@ -271,69 +267,61 @@ ClientStore::new_plugin(const URI& uri, const URI& type_uri, const Symbol& symbo
}
-bool
-ClientStore::new_object(const Shared::GraphObject* object)
-{
- using namespace Shared;
-
- const Patch* patch = dynamic_cast<const Patch*>(object);
- if (patch) {
- new_patch(patch->path(), patch->internal_polyphony());
- return true;
- }
-
- const Node* node = dynamic_cast<const Node*>(object);
- if (node) {
- new_node(node->path(), node->plugin()->uri());
- return true;
- }
-
- const Port* port = dynamic_cast<const Port*>(object);
- if (port) {
- new_port(port->path(), port->type().uri(), port->index(), !port->is_input());
- return true;
- }
-
- return false;
-}
-
-
void
-ClientStore::new_patch(const Path& path, uint32_t poly)
+ClientStore::put(const Path& path, const Resource::Properties& properties)
{
- SharedPtr<PatchModel> p(new PatchModel(path, poly));
- add_object(p);
-}
-
-
-void
-ClientStore::new_node(const Path& path, const URI& plugin_uri)
-{
- SharedPtr<PluginModel> plug = plugin(plugin_uri);
- if (!plug) {
- SharedPtr<NodeModel> n(new NodeModel(plugin_uri, path));
- //add_plugin_orphan(n);
- add_object(n);
+ typedef Resource::Properties::const_iterator iterator;
+ cerr << "CLIENT PUT " << path << " {" << endl;
+ for (iterator i = properties.begin(); i != properties.end(); ++i)
+ cerr << "\t" << i->first << " = " << i->second << " :: " << i->second.type() << endl;
+ cerr << "}" << endl;
+
+ bool is_patch, is_node, is_port, is_output;
+ DataType data_type(DataType::UNKNOWN);
+ ResourceImpl::type(properties, is_patch, is_node, is_port, is_output, data_type);
+
+ if (is_patch) {
+ uint32_t poly = 1;
+ iterator p = properties.find("ingen:polyphony");
+ if (p != properties.end() && p->second.is_valid() && p->second.type() == Atom::INT)
+ poly = p->second.get_int32();
+ SharedPtr<PatchModel> model(new PatchModel(path, poly));
+ model->merge_properties(properties);
+ add_object(model);
+ } else if (is_node) {
+ const Resource::Properties::const_iterator p = properties.find("rdf:instanceOf");
+ SharedPtr<PluginModel> plug;
+ if (p->second.is_valid() && p->second.type() == Atom::URI) {
+ if ((plug = plugin(p->second.get_uri()))) {
+ SharedPtr<NodeModel> n(new NodeModel(plug, path));
+ n->merge_properties(properties);
+ add_object(n);
+ } else {
+ SharedPtr<NodeModel> n(new NodeModel(p->second.get_uri(), path));
+ n->merge_properties(properties);
+ //add_plugin_orphan(n);
+ add_object(n);
+ }
+ } else {
+ cerr << "ERROR: Plugin with no type" << endl;
+ }
+ } else if (is_port) {
+ if (data_type != DataType::UNKNOWN) {
+ PortModel::Direction pdir = is_output ? PortModel::OUTPUT : PortModel::INPUT;
+ SharedPtr<PortModel> p(new PortModel(path, 0, data_type, pdir));
+ p->merge_properties(properties);
+ add_object(p);
+ } else {
+ cerr << "WARNING: Illegal port " << path << endl;
+ }
} else {
- SharedPtr<NodeModel> n(new NodeModel(plug, path));
- add_object(n);
+ cerr << "WARNING: Ignoring object " << path << " with unknown type "
+ << is_patch << " " << is_node << " " << is_port << endl;
}
}
void
-ClientStore::new_port(const Path& path, const URI& type, uint32_t index, bool is_output)
-{
- PortModel::Direction pdir = is_output ? PortModel::OUTPUT : PortModel::INPUT;
-
- SharedPtr<PortModel> p(new PortModel(path, index, type, pdir));
- add_object(p);
- /*if (p->parent())
- resolve_connection_orphans(p);*/
-}
-
-
-void
ClientStore::clear_patch(const Path& path)
{
iterator i = find(path);
diff --git a/src/client/ClientStore.hpp b/src/client/ClientStore.hpp
index 63949d1d..68b87889 100644
--- a/src/client/ClientStore.hpp
+++ b/src/client/ClientStore.hpp
@@ -69,9 +69,7 @@ public:
// CommonInterface
void new_plugin(const Raul::URI& uri, const Raul::URI& type_uri, const Raul::Symbol& symbol);
bool new_object(const Shared::GraphObject* object);
- void new_patch(const Raul::Path& path, uint32_t poly);
- void new_node(const Raul::Path& path, const Raul::URI& plugin_uri);
- void new_port(const Raul::Path& path, const Raul::URI& type, uint32_t index, bool is_output);
+ void put(const Raul::Path& path, const Shared::Resource::Properties& properties);
void rename(const Raul::Path& old_path, const Raul::Path& new_path);
void set_variable(const Raul::URI& subject_path, const Raul::URI& predicate, const Raul::Atom& value);
void set_property(const Raul::URI& subject_path, const Raul::URI& predicate, const Raul::Atom& value);
diff --git a/src/client/DeprecatedLoader.cpp b/src/client/DeprecatedLoader.cpp
index 261b1e35..f593c3be 100644
--- a/src/client/DeprecatedLoader.cpp
+++ b/src/client/DeprecatedLoader.cpp
@@ -50,20 +50,20 @@ namespace Client {
class ControlModel
{
public:
- ControlModel(const Raul::Path& port_path, float value)
+ ControlModel(const Path& port_path, float value)
: _port_path(port_path)
, _value(value)
{
assert(_port_path.find("//") == string::npos);
}
- const Raul::Path& port_path() const { return _port_path; }
+ const Path& port_path() const { return _port_path; }
void port_path(const string& p) { _port_path = p; }
float value() const { return _value; }
void value(float v) { _value = v; }
private:
- Raul::Path _port_path;
+ Path _port_path;
float _value;
};
@@ -171,9 +171,9 @@ DeprecatedLoader::add_variable(GraphObject::Properties& data, string old_key, st
free(locale);
if (endptr != c_val && *endptr == '\0')
- data[key] = Atom(fval);
+ data.insert(make_pair(key, Atom(fval)));
else
- data[key] = Atom(Atom::STRING, value);
+ data.insert(make_pair(key, Atom(Atom::STRING, value)));
free(c_val);
}
@@ -229,7 +229,7 @@ DeprecatedLoader::load_patch(const Glib::ustring& filename,
poly = poly_param->second.get_int32();
if (initial_data.find("filename") == initial_data.end())
- initial_data["filename"] = Atom(filename.c_str()); // FIXME: URL?
+ initial_data.insert(make_pair("filename", Atom(filename.c_str()))); // FIXME: URL?
xmlDocPtr doc = xmlParseFile(filename.c_str());
@@ -292,7 +292,10 @@ DeprecatedLoader::load_patch(const Glib::ustring& filename,
// Create it, if we're not merging
if (!existing && !path.is_root()) {
- _engine->new_patch(path, poly);
+ Resource::Properties props;
+ props.insert(make_pair("rdf:type", Atom(Atom::URI, "ingen:Patch")));
+ props.insert(make_pair("ingen:polyphony", Atom((int32_t)poly)));
+ _engine->put(path, props);
for (GraphObject::Properties::const_iterator i = initial_data.begin(); i != initial_data.end(); ++i)
_engine->set_variable(path, i->first, i->second);
}
@@ -450,27 +453,37 @@ DeprecatedLoader::load_node(const Path& parent, xmlDocPtr doc, const xmlNodePtr
if (plugin_uri == "") {
bool is_port = false;
+ Resource::Properties props;
+ props.insert(make_pair("rdf:type", Atom(Atom::URI, "ingen:Patch")));
+
if (plugin_type == "Internal") {
- // FIXME: indices
+ is_port = true;
if (plugin_label == "audio_input") {
- _engine->new_port(path, "lv2:AudioPort", 0, false);
- is_port = true;
+ props.insert(make_pair("rdf:type", Atom(Atom::URI, "lv2:AudioPort")));
+ props.insert(make_pair("rdf:type", Atom(Atom::URI, "lv2:InputPort")));
+ _engine->put(path, props);
} else if (plugin_label == "audio_output") {
- _engine->new_port(path, "lv2:AudioPort", 0, true);
- is_port = true;
+ props.insert(make_pair("rdf:type", Atom(Atom::URI, "lv2:AudioPort")));
+ props.insert(make_pair("rdf:type", Atom(Atom::URI, "lv2:OutputPort")));
+ _engine->put(path, props);
} else if (plugin_label == "control_input") {
- _engine->new_port(path, "lv2:ControlPort", 0, false);
- is_port = true;
+ props.insert(make_pair("rdf:type", Atom(Atom::URI, "lv2:ControlPort")));
+ props.insert(make_pair("rdf:type", Atom(Atom::URI, "lv2:InputPort")));
+ _engine->put(path, props);
} else if (plugin_label == "control_output" ) {
- _engine->new_port(path, "lv2:ControlPort", 0, true);
- is_port = true;
+ props.insert(make_pair("rdf:type", Atom(Atom::URI, "lv2:ControlPort")));
+ props.insert(make_pair("rdf:type", Atom(Atom::URI, "lv2:OutputPort")));
+ _engine->put(path, props);
} else if (plugin_label == "midi_input") {
- _engine->new_port(path, "lv2ev:EventPort", 0, false);
- is_port = true;
+ props.insert(make_pair("rdf:type", Atom(Atom::URI, "lv2ev:EventPort")));
+ props.insert(make_pair("rdf:type", Atom(Atom::URI, "lv2:InputPort")));
+ _engine->put(path, props);
} else if (plugin_label == "midi_output" ) {
- _engine->new_port(path, "lv2ev:EventPort", 0, true);
- is_port = true;
+ props.insert(make_pair("rdf:type", Atom(Atom::URI, "lv2ev:EventPort")));
+ props.insert(make_pair("rdf:type", Atom(Atom::URI, "lv2:OutputPort")));
+ _engine->put(path, props);
} else {
+ is_port = false;
cerr << "WARNING: Unknown internal plugin label \"" << plugin_label << "\"" << endl;
}
}
@@ -491,6 +504,8 @@ DeprecatedLoader::load_node(const Path& parent, xmlDocPtr doc, const xmlNodePtr
path = new_path;
+ _engine->put(path, props);
+
for (GraphObject::Properties::const_iterator i = initial_data.begin(); i != initial_data.end(); ++i)
_engine->set_variable(path, i->first, i->second);
@@ -510,7 +525,10 @@ DeprecatedLoader::load_node(const Path& parent, xmlDocPtr doc, const xmlNodePtr
if (plugin_uri == "")
plugin_uri = "om:" + plugin_type + ":" + library_name + ":" + plugin_label;
- _engine->new_node(path, plugin_uri);
+ Resource::Properties props;
+ props.insert(make_pair("rdf:type", Atom(Atom::URI, "ingen:Node")));
+ props.insert(make_pair("rdf:instanceOf", Atom(Atom::URI, plugin_uri)));
+ _engine->put(path, props);
_engine->set_variable(path, "ingen:polyphonic", bool(polyphonic));
@@ -522,7 +540,10 @@ DeprecatedLoader::load_node(const Path& parent, xmlDocPtr doc, const xmlNodePtr
// Not deprecated
} else {
- _engine->new_node(path, plugin_uri);
+ Resource::Properties props;
+ props.insert(make_pair("rdf:type", Atom(Atom::URI, "ingen:Node")));
+ props.insert(make_pair("rdf:instanceOf", Atom(Atom::URI, plugin_uri)));
+ _engine->put(path, props);
_engine->set_variable(path, "ingen:polyphonic", bool(polyphonic));
for (GraphObject::Properties::const_iterator i = initial_data.begin(); i != initial_data.end(); ++i)
_engine->set_variable(path, i->first, i->second);
diff --git a/src/client/HTTPEngineSender.cpp b/src/client/HTTPEngineSender.cpp
index 443dcfb6..596793f9 100644
--- a/src/client/HTTPEngineSender.cpp
+++ b/src/client/HTTPEngineSender.cpp
@@ -102,39 +102,11 @@ HTTPEngineSender::quit()
// Object commands
-bool
-HTTPEngineSender::new_object(const Shared::GraphObject* object)
-{
- return false;
-}
-
-
-void
-HTTPEngineSender::new_patch(const Path& path,
- uint32_t poly)
-{
-}
-
-
-void
-HTTPEngineSender::new_port(const Path& path,
- const URI& type,
- uint32_t index,
- bool is_output)
-{
- const string uri = _engine_url.str() + "/patch" + path.str();
- cout << "HTTP " << uri << " NEW PORT: " << path << endl;
- SoupMessage* msg = soup_message_new("PUT", uri.c_str());
- string str = string("NEW PORT").append(path.str()).append(type.str());
- soup_message_set_request(msg, "application/x-turtle",
- SOUP_MEMORY_COPY, str.c_str(), str.length());
- soup_session_send_message(_session, msg);
-}
void
-HTTPEngineSender::new_node(const Path& path,
- const URI& plugin_uri)
+HTTPEngineSender::put(const Raul::Path& path,
+ const Shared::Resource::Properties& properties)
{
}
diff --git a/src/client/HTTPEngineSender.hpp b/src/client/HTTPEngineSender.hpp
index f30b9e37..41107cb0 100644
--- a/src/client/HTTPEngineSender.hpp
+++ b/src/client/HTTPEngineSender.hpp
@@ -74,18 +74,8 @@ public:
// Object commands
- virtual bool new_object(const Shared::GraphObject* object);
-
- virtual void new_patch(const Raul::Path& path,
- uint32_t poly);
-
- virtual void new_node(const Raul::Path& path,
- const Raul::URI& plugin_uri);
-
- virtual void new_port(const Raul::Path& path,
- const Raul::URI& type,
- uint32_t index,
- bool is_output);
+ virtual void put(const Raul::Path& path,
+ const Shared::Resource::Properties& properties);
virtual void clear_patch(const Raul::Path& path);
diff --git a/src/client/OSCClientReceiver.cpp b/src/client/OSCClientReceiver.cpp
index dac558f5..e8b8c33b 100644
--- a/src/client/OSCClientReceiver.cpp
+++ b/src/client/OSCClientReceiver.cpp
@@ -149,8 +149,8 @@ OSCClientReceiver::setup_callbacks()
lo_server_thread_add_method(_st, "/ingen/rename", "ss", rename_cb, this);
lo_server_thread_add_method(_st, "/ingen/new_connection", "ss", connection_cb, this);
lo_server_thread_add_method(_st, "/ingen/disconnection", "ss", disconnection_cb, this);
- lo_server_thread_add_method(_st, "/ingen/new_node", "ss", new_node_cb, this);
lo_server_thread_add_method(_st, "/ingen/new_port", "sisi", new_port_cb, this);
+ lo_server_thread_add_method(_st, "/ingen/put", NULL, new_port_cb, this);
lo_server_thread_add_method(_st, "/ingen/set_variable", NULL, set_variable_cb, this);
lo_server_thread_add_method(_st, "/ingen/set_property", NULL, set_property_cb, this);
lo_server_thread_add_method(_st, "/ingen/set_port_value", "sf", set_port_value_cb, this);
@@ -170,14 +170,6 @@ OSCClientReceiver::_error_cb(const char* path, const char* types, lo_arg** argv,
int
-OSCClientReceiver::_new_patch_cb(const char* path, const char* types, lo_arg** argv, int argc, lo_message msg)
-{
- _target->new_patch(&argv[0]->s, argv[1]->i); // path, poly
- return 0;
-}
-
-
-int
OSCClientReceiver::_destroyed_cb(const char* path, const char* types, lo_arg** argv, int argc, lo_message msg)
{
_target->destroy((const char*)&argv[0]->s);
@@ -225,36 +217,6 @@ OSCClientReceiver::_disconnection_cb(const char* path, const char* types, lo_arg
}
-/** Notification of a new node creation.
- */
-int
-OSCClientReceiver::_new_node_cb(const char* path, const char* types, lo_arg** argv, int argc, lo_message msg)
-{
- const char* uri = &argv[0]->s;
- const char* node_path = &argv[1]->s;
-
- _target->new_node(uri, node_path);
-
- return 0;
-}
-
-
-/** Notification of a new port creation.
- */
-int
-OSCClientReceiver::_new_port_cb(const char* path, const char* types, lo_arg** argv, int argc, lo_message msg)
-{
- const char* port_path = &argv[0]->s;
- const uint32_t index = argv[1]->i;
- const char* type = &argv[2]->s;
- const bool is_output = (argv[3]->i == 1);
-
- _target->new_port(port_path, type, index, is_output);
-
- return 0;
-}
-
-
/** Notification of a new or updated variable.
*/
int
diff --git a/src/client/OSCClientReceiver.hpp b/src/client/OSCClientReceiver.hpp
index 7608fff3..58f66836 100644
--- a/src/client/OSCClientReceiver.hpp
+++ b/src/client/OSCClientReceiver.hpp
@@ -89,8 +89,8 @@ private:
LO_HANDLER(rename);
LO_HANDLER(connection);
LO_HANDLER(disconnection);
- LO_HANDLER(new_node);
LO_HANDLER(new_port);
+ LO_HANDLER(put);
LO_HANDLER(set_variable);
LO_HANDLER(set_property);
LO_HANDLER(set_port_value);
diff --git a/src/client/OSCEngineSender.cpp b/src/client/OSCEngineSender.cpp
index 86e9e8a8..23a98934 100644
--- a/src/client/OSCEngineSender.cpp
+++ b/src/client/OSCEngineSender.cpp
@@ -132,71 +132,11 @@ OSCEngineSender::quit()
// Object commands
-bool
-OSCEngineSender::new_object(const Shared::GraphObject* object)
-{
- using namespace Shared;
-
- const Patch* patch = dynamic_cast<const Patch*>(object);
- if (patch) {
- new_patch(patch->path(), patch->internal_polyphony());
- return true;
- }
-
- const Node* node = dynamic_cast<const Node*>(object);
- if (node) {
- new_node(node->path(), node->plugin()->uri());
- return true;
- }
-
- const Port* port = dynamic_cast<const Port*>(object);
- if (port) {
- new_port(port->path(), port->type().uri(), port->index(), !port->is_input());
- return true;
- }
-
- return false;
-}
-
-
void
-OSCEngineSender::new_patch(const Path& path,
- uint32_t poly)
+OSCEngineSender::put(const Raul::Path& path,
+ const Shared::Resource::Properties& properties)
{
- send("/ingen/new_patch", "isi",
- next_id(),
- path.c_str(),
- poly,
- LO_ARGS_END);
-}
-
-
-void
-OSCEngineSender::new_port(const Path& path,
- const URI& type,
- uint32_t index,
- bool is_output)
-{
- // FIXME: use index
- send("/ingen/new_port", "issi",
- next_id(),
- path.c_str(),
- type.c_str(),
- (is_output ? 1 : 0),
- LO_ARGS_END);
-}
-
-
-void
-OSCEngineSender::new_node(const Path& path,
- const URI& plugin_uri)
-{
-
- send("/ingen/new_node", "iss",
- next_id(),
- path.c_str(),
- plugin_uri.c_str(),
- LO_ARGS_END);
+ cerr << "OSC ENGINE PUT " << path << endl;
}
diff --git a/src/client/OSCEngineSender.hpp b/src/client/OSCEngineSender.hpp
index 8383dd53..2b02ca6e 100644
--- a/src/client/OSCEngineSender.hpp
+++ b/src/client/OSCEngineSender.hpp
@@ -77,18 +77,8 @@ public:
// Object commands
- virtual bool new_object(const Shared::GraphObject* object);
-
- virtual void new_patch(const Raul::Path& path,
- uint32_t poly);
-
- virtual void new_node(const Raul::Path& path,
- const Raul::URI& plugin_uri);
-
- virtual void new_port(const Raul::Path& path,
- const Raul::URI& type,
- uint32_t index,
- bool is_output);
+ virtual void put(const Raul::Path& path,
+ const Shared::Resource::Properties& properties);
virtual void clear_patch(const Raul::Path& path);
diff --git a/src/client/ObjectModel.cpp b/src/client/ObjectModel.cpp
index ef4884e1..2d3251c6 100644
--- a/src/client/ObjectModel.cpp
+++ b/src/client/ObjectModel.cpp
@@ -105,7 +105,7 @@ ObjectModel::set(SharedPtr<ObjectModel> o)
Properties::const_iterator mine = _variables.find(v->first);
if (mine != _variables.end())
cerr << "WARNING: " << _path << "Client/Server variable mismatch: " << v->first << endl;
- _variables[v->first] = v->second;
+ _variables.insert(make_pair(v->first, v->second));
signal_variable.emit(v->first, v->second);
}
}
diff --git a/src/client/ObjectModel.hpp b/src/client/ObjectModel.hpp
index e30ef2b2..8c7c631d 100644
--- a/src/client/ObjectModel.hpp
+++ b/src/client/ObjectModel.hpp
@@ -62,8 +62,10 @@ public:
signal_property.emit(key, value);
}
- virtual void set_variable(const Raul::URI& key, const Raul::Atom& value)
- { _variables[key] = value; signal_variable.emit(key, value); }
+ virtual void set_variable(const Raul::URI& key, const Raul::Atom& value) {
+ _variables.insert(make_pair(key, value));
+ signal_variable.emit(key, value);
+ }
const Properties& variables() const { return _variables; }
Properties& variables() { return _variables; }
diff --git a/src/client/PluginModel.cpp b/src/client/PluginModel.cpp
index 9a470346..4db79091 100644
--- a/src/client/PluginModel.cpp
+++ b/src/client/PluginModel.cpp
@@ -43,7 +43,7 @@ PluginModel::PluginModel(const URI& uri, const URI& type_uri)
{
Glib::Mutex::Lock lock(_rdf_world->mutex());
assert(_rdf_world);
- set_property("rdf:type", Raul::Atom(Raul::Atom::URI, this->type_uri()));
+ add_property("rdf:type", Raul::Atom(Raul::Atom::URI, this->type_uri()));
#ifdef HAVE_SLV2
SLV2Value plugin_uri = slv2_value_new_uri(_slv2_world, uri.c_str());
_slv2_plugin = slv2_plugins_get_by_uri(_slv2_plugins, plugin_uri);
diff --git a/src/client/SigClientInterface.hpp b/src/client/SigClientInterface.hpp
index 128fddf0..7c3bee05 100644
--- a/src/client/SigClientInterface.hpp
+++ b/src/client/SigClientInterface.hpp
@@ -45,9 +45,6 @@ public:
Raul::URI uri() const { return "ingen:internal"; }
- // Signal parameters match up directly with ClientInterface calls
- sigc::signal<bool, const Shared::GraphObject*> signal_new_object;
-
sigc::signal<void, int32_t> signal_response_ok;
sigc::signal<void, int32_t, std::string> signal_response_error;
sigc::signal<void> signal_bundle_begin;
@@ -55,8 +52,8 @@ public:
sigc::signal<void, std::string> signal_error;
sigc::signal<void, Raul::URI, Raul::URI, Raul::Symbol> signal_new_plugin;
sigc::signal<void, Raul::Path, uint32_t> signal_new_patch;
- sigc::signal<void, Raul::Path, Raul::URI> signal_new_node;
sigc::signal<void, Raul::Path, Raul::URI, uint32_t, bool> signal_new_port;
+ sigc::signal<void, Raul::Path, Shared::Resource::Properties> signal_put;
sigc::signal<void, Raul::Path> signal_clear_patch;
sigc::signal<void, Raul::Path, Raul::Path> signal_object_renamed;
sigc::signal<void, Raul::Path> signal_object_destroyed;
@@ -101,17 +98,8 @@ protected:
void new_plugin(const Raul::URI& uri, const Raul::URI& type_uri, const Raul::Symbol& symbol)
{ if (_enabled) signal_new_plugin.emit(uri, type_uri, symbol); }
- bool new_object(const Shared::GraphObject* object)
- { if (_enabled) signal_new_object.emit(object); return false; }
-
- void new_patch(const Raul::Path& path, uint32_t poly)
- { if (_enabled) signal_new_patch.emit(path, poly); }
-
- void new_node(const Raul::Path& path, const Raul::URI& plugin_uri)
- { if (_enabled) signal_new_node.emit(path, plugin_uri); }
-
- void new_port(const Raul::Path& path, const Raul::URI& type, uint32_t index, bool is_output)
- { if (_enabled) signal_new_port.emit(path, type, index, is_output); }
+ void put(const Raul::Path& path, const Shared::Resource::Properties& properties)
+ { if (_enabled) signal_put.emit(path, properties); }
void connect(const Raul::Path& src_port_path, const Raul::Path& dst_port_path)
{ if (_enabled) signal_connection.emit(src_port_path, dst_port_path); }
diff --git a/src/client/ThreadedSigClientInterface.cpp b/src/client/ThreadedSigClientInterface.cpp
index c6ddd09e..5bd7e8b3 100644
--- a/src/client/ThreadedSigClientInterface.cpp
+++ b/src/client/ThreadedSigClientInterface.cpp
@@ -77,31 +77,5 @@ ThreadedSigClientInterface::emit_signals()
}
-bool
-ThreadedSigClientInterface::new_object(const Shared::GraphObject* object)
-{
- using namespace Shared;
- const Patch* patch = dynamic_cast<const Patch*>(object);
- if (patch) {
- new_patch(patch->path(), patch->internal_polyphony());
- return true;
- }
-
- const Node* node = dynamic_cast<const Node*>(object);
- if (node) {
- new_node(node->path(), node->plugin()->uri());
- return true;
- }
-
- const Port* port = dynamic_cast<const Port*>(object);
- if (port) {
- new_port(port->path(), port->type().uri(), port->index(), !port->is_input());
- return true;
- }
-
- return false;
-}
-
-
} // namespace Client
} // namespace Ingen
diff --git a/src/client/ThreadedSigClientInterface.hpp b/src/client/ThreadedSigClientInterface.hpp
index 029a30c1..7b7d11e2 100644
--- a/src/client/ThreadedSigClientInterface.hpp
+++ b/src/client/ThreadedSigClientInterface.hpp
@@ -51,9 +51,8 @@ public:
, response_error_slot(signal_response_error.make_slot())
, error_slot(signal_error.make_slot())
, new_plugin_slot(signal_new_plugin.make_slot())
- , new_patch_slot(signal_new_patch.make_slot())
- , new_node_slot(signal_new_node.make_slot())
, new_port_slot(signal_new_port.make_slot())
+ , put_slot(signal_put.make_slot())
, connection_slot(signal_connection.make_slot())
, clear_patch_slot(signal_clear_patch.make_slot())
, object_destroyed_slot(signal_object_destroyed.make_slot())
@@ -93,16 +92,8 @@ public:
void new_plugin(const Raul::URI& uri, const Raul::URI& type_uri, const Raul::Symbol& symbol)
{ push_sig(sigc::bind(new_plugin_slot, uri, type_uri, symbol)); }
- bool new_object(const Shared::GraphObject* object);
-
- void new_patch(const Raul::Path& path, uint32_t poly)
- { push_sig(sigc::bind(new_patch_slot, path, poly)); }
-
- void new_node(const Raul::Path& path, const Raul::URI& plugin_uri)
- { push_sig(sigc::bind(new_node_slot, path, plugin_uri)); }
-
- void new_port(const Raul::Path& path, const Raul::URI& type, uint32_t index, bool is_output)
- { push_sig(sigc::bind(new_port_slot, path, type, index, is_output)); }
+ void put(const Raul::Path& path, const Shared::Resource::Properties& properties)
+ { push_sig(sigc::bind(put_slot, path, properties)); }
void connect(const Raul::Path& src_port_path, const Raul::Path& dst_port_path)
{ push_sig(sigc::bind(connection_slot, src_port_path, dst_port_path)); }
@@ -152,9 +143,8 @@ private:
sigc::slot<void, int32_t, std::string> response_error_slot;
sigc::slot<void, std::string> error_slot;
sigc::slot<void, Raul::URI, Raul::URI, Raul::Symbol> new_plugin_slot;
- sigc::slot<void, Raul::Path, uint32_t> new_patch_slot;
- sigc::slot<void, Raul::Path, Raul::URI> new_node_slot;
sigc::slot<void, Raul::Path, Raul::URI, uint32_t, bool> new_port_slot;
+ sigc::slot<void, Raul::Path, Shared::Resource::Properties> put_slot;
sigc::slot<void, Raul::Path, Raul::Path> connection_slot;
sigc::slot<void, Raul::Path> clear_patch_slot;
sigc::slot<void, Raul::Path> object_destroyed_slot;