#include "UINetworkController.h" #include "UIDocumentController.h" #include "UINodeController.h" #include "UITerminalController.h" #include "UINetTerminalController.h" #include "UILinkController.h" #include #include "QtNetwork.h" #include "UILink.h" #include "UINote.h" namespace FD { using namespace std; UINetworkController::UINetworkController() : UINetwork(NULL,NULL,false), m_QtNetwork(NULL) { } UINetworkController::UINetworkController(UIDocumentController *_doc, xmlNodePtr net) : UINetwork(_doc,net,false), m_QtNetwork(NULL) { //Load XML load(net); } UINetworkController::UINetworkController(UIDocumentController *doc, const std::string &_name, UINetwork::Type type) : UINetwork(doc,_name,type), m_QtNetwork(NULL) { } UINode* UINetworkController::newNode(UINetwork* _net, std::string _name, std::string _type, double _x, double _y, bool doInit) { cerr<<"UINode* UINetworkController::newNode "<updateAllNetworks(); //CREATE MODEL & CONTROLLER UINodeController *nodeController = new UINodeController(dynamic_cast(_net),_name,_type,_x,_y); //UPDATE VIEW //TO DO, UPDATE MULTIPLE VIEWS? if (m_QtNetwork) { //QtNode *qtNode = m_QtNetwork->addNode(nodeController); //nodeController->setQtNode(qtNode); } nodeController->updateView(m_QtNetwork); //UPDATE VIEW //nodeController->updateTerminals(); //nodeController->updateParameters(); return nodeController; } UINode* UINetworkController::newNode(UINetwork* _net, xmlNodePtr def) { cerr<<"UINode* UINetworkController::newNode (XML)"<(_net),def); //UPDATE VIEW //TO DO, UPDATE MULTIPLE VIEWS? if (m_QtNetwork) { nodeController->updateView(m_QtNetwork); //QtNode *qtNode = m_QtNetwork->addNode(nodeController); //nodeController->setQtNode(qtNode); } else { cerr<<"WARNING : UINode* UINetworkController::newNode --> No QtNetwork defined."<updateTerminals(); //nodeController->updateParameters(); return nodeController; } UILink* UINetworkController::newLink (UITerminal *_from, UITerminal *_to,const char *str) { cerr<<"UILink* UINetworkController::newLink"<(_from), // ); UILinkController *linkController = new UILinkController(dynamic_cast(_from),dynamic_cast(_to),str); linkController->updateView( m_QtNetwork ); return linkController; } UINote* UINetworkController::newNote(const std::string &text, double x, double y, bool visible) { return new UINote(text,x,y,visible); } UINetTerminal * UINetworkController::newNetTerminal (UITerminal *_terminal, UINetTerminal::NetTermType _type, const std::string &_name, const std::string &_objType, const std::string &_description) { return new UINetTerminalController(dynamic_cast(_terminal),_type,_name,_objType,_description); } UINodeController* UINetworkController::createNode(std::string type, double x, double y, bool doInit) { UINodeController* myNode = dynamic_cast(newNode(this,"name",type,x,y,doInit)); addNode(myNode); return myNode; } void UINetworkController::removeNode(UINodeController* node) { cerr<<"UINetworkController::removeNode(UINodeController* node)"< terminal = node->getInputs(); for( unsigned int i = 0; i < terminal.size();i++ ) { node->removeTerminal( dynamic_cast(terminal[i]) ); } terminal = node->getOutputs(); for( unsigned int i = 0; i < terminal.size();i++ ) { node->removeTerminal( dynamic_cast(terminal[i]) ); } m_QtNetwork->removeNode(node->getQtNode()); UINetwork::removeNode(node); cerr<<"UINetworkController::removeNode(UINodeController* node) END"<removeLink(link->getQtLink()); UINetwork::removeLink(link); } void UINetworkController::updateView(QtDocument *doc) { getDocument()->updateAllNetworks(); if (doc) { //CREATE VIEW IF REQUIRED if (!m_QtNetwork) { m_QtNetwork = doc->addNetwork(this); } //UPDATE VIEW FOR EACH NODES for (unsigned int i =0; i < nodes.size(); i++) { UINodeController *nodeCtrl = dynamic_cast(nodes[i]); if (nodeCtrl) { nodeCtrl->updateView(m_QtNetwork); } } //UPDATE VIEW FOR EACH LINKS for (unsigned int i = 0; i < links.size(); i++) { UILinkController *linkCtrl = dynamic_cast(links[i]); if (linkCtrl) { linkCtrl->updateView(m_QtNetwork); } } }//if doc } } //namespace FD