diff options
Diffstat (limited to 'rotord/src/graph.cpp')
| -rw-r--r-- | rotord/src/graph.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/rotord/src/graph.cpp b/rotord/src/graph.cpp index 8b85113..60af1c8 100644 --- a/rotord/src/graph.cpp +++ b/rotord/src/graph.cpp @@ -55,21 +55,23 @@ bool Graph::set_resolution(int w,int h){ } else return false; } -bool Graph::load(string data){ +bool Graph::load(string data,string media_path){ if (xml.loadFromBuffer(data)){ - return parseXml(); + return parseXml(media_path); } + cerr<<"Rotor: failed to load graph from string"<<endl; return false; } -bool Graph::loadFile(string &filename){ - loaded=false; +bool Graph::loadFile(string &filename,string media_path){ + if (loaded) printf("loading graph: %s\n",filename.c_str()); if(xml.loadFile(filename) ){ - return parseXml(); + return parseXml(media_path); } else return false; } -bool Graph::parseXml(){ +bool Graph::parseXml(string media_path){ + if (loaded) nodes.clear(); init(xml.getAttribute("patchbay","ID","",0),xml.getValue("patchbay","",0)); if(xml.pushTag("patchbay")) { int n1=xml.getNumTags("node"); @@ -82,6 +84,7 @@ bool Graph::parseXml(){ //cerr << "Got attribute: " << attr << ":" << xml.getAttribute("node",attr,"",i1) << endl; } settings["description"]=xml.getValue("node","",i1); + settings["media_path"]=media_path; Node* node=factory.create(settings); if (node) { string nodeID=xml.getAttribute("node","ID","",i1); |
