summaryrefslogtreecommitdiff
path: root/rotord/src
diff options
context:
space:
mode:
authorTim Redfern <tim@eclectronics.org>2013-09-09 10:17:58 +0100
committerTim Redfern <tim@eclectronics.org>2013-09-09 10:17:58 +0100
commit7a8504a5f76b28e2ea6d4d9b4658cfe56b49fb57 (patch)
tree333eb02f7d1c6cdbfe966e679232ba7a1dfc7f27 /rotord/src
parent131b0c7a1951abaf0fe6e58250c9d74306bc5518 (diff)
loading json from patchbay
Diffstat (limited to 'rotord/src')
-rw-r--r--rotord/src/graph.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/rotord/src/graph.cpp b/rotord/src/graph.cpp
index 313df2a..ed8c188 100644
--- a/rotord/src/graph.cpp
+++ b/rotord/src/graph.cpp
@@ -280,7 +280,7 @@ bool Graph::parseJson(string &data,string &media_path){
nodes.clear();
check_audio(root["audio"].asString(),media_path);
init(root["ID"].asString(),root["description"].asString());
- Json::Value jnodes = root["nodes"];
+ Json::Value jnodes = root["nodeDefinitions"];
for ( int i = 0; i < jnodes.size(); ++i ) {
//cerr<<"json found node: "<<jnodes[i]["type"].asString()<<endl;
map<string,string> settings;
@@ -348,7 +348,10 @@ bool Graph::parseJson(string &data,string &media_path){
if (nodes[nodeID]->parameters.find(parameter)!=nodes[nodeID]->parameters.end()) {
float val=jnodes[i]["parameters"][l]["value"].asFloat();
- nodes[nodeID]->parameters.find(parameter)->second->value=val;
+ if (val!=nodes[nodeID]->parameters.find(parameter)->second->value){
+ nodes[nodeID]->parameters.find(parameter)->second->value=val;
+ cerr << "Rotor: set parameter '"<<parameter<<"' of "<<nodeID<<" to "<<val<<endl;
+ }
string fromID=jnodes[i]["parameters"][l]["from"].asString();
if (nodes.find(fromID)!=nodes.end()) {
if (!nodes[nodeID]->parameters[parameter]->connect(nodes[fromID])){
@@ -367,6 +370,10 @@ bool Graph::parseJson(string &data,string &media_path){
string attribute=jnodes[i]["attributes"][m]["name"].asString();
if (nodes[nodeID]->attributes.find(attribute)!=nodes[nodeID]->attributes.end()) {
string val=jnodes[i]["attributes"][m]["value"].asString();
+ if (val!=nodes[nodeID]->attributes.find(attribute)->second->value){
+ nodes[nodeID]->attributes.find(attribute)->second->value=val;
+ cerr << "Rotor: set attribute '"<<attribute<<"' of "<<nodeID<<" to "<<val<<endl;
+ }
nodes[nodeID]->attributes.find(attribute)->second->value=val;
}
else cerr << "Rotor: cannot find attribute '" << attribute << "' of "<<settings["type"]<<" "<< nodeID << endl;