X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FEditorGraphicBBS%2FbbsWxGUIEditorGraphic%2FwxVtkSceneManager.cxx;h=b5e431c7c3816a5368d4ec88efde27a08bca5075;hb=0209f53d6a0dbefceb3610b8d074e8fc4dcaba33;hp=3a411d84aae13f951de908eb7ca225c46b5dfe04;hpb=e4d5a319ef249bde6c4f4ddfee66f6258558bf91;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx index 3a411d8..b5e431c 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx @@ -41,20 +41,25 @@ namespace bbtk { //========================================================================= -wxVtkSceneManager::wxVtkSceneManager(wxGEditorTabPanel *parent, - wxVtk3DBaseView *baseView, int idManager) { - _cbName = "ComplexBoxName"; - _cbPackageName = "PackageName"; - _Author = "Author ??"; - _Category = ""; - _Description = "Description ??"; - - _parent = parent; - _numBoxes = 0; - _idManager = idManager; - _baseView = baseView; - _startDragging = false; - _isComplexBox = false; + +// EED 15 oct 2012 wxVtkSceneManager::wxVtkSceneManager(wxGEditorTabPanel *parent, wxVtk3DBaseView *baseView, int idManager,Factory::Pointer bbtkfactory) + +wxVtkSceneManager::wxVtkSceneManager(wxGEditorTabPanel *parent, wxVtk3DBaseView *baseView, int idManager,Factory::Pointer bbtkfactory) +{ + _cbName = "ComplexBoxName"; + _cbPackageName = "PackageName"; + _Author = "Author ??"; + _Category = ""; + _Description = "Description ??"; + + _parent = parent; + _numBoxes = 0; + _idManager = idManager; + _baseView = baseView; + _bbtkfactory = bbtkfactory; + + _startDragging = false; + _isComplexBox = false; if (_baseView != NULL) { //EED02JUIN2010 @@ -70,14 +75,15 @@ wxVtkSceneManager::wxVtkSceneManager(wxGEditorTabPanel *parent, registerController(this); } - _idConnectionInCreation = -1; - _contLastId = 0; + _idConnectionInCreation = -1; + _contLastId = 0; } //========================================================================= -void wxVtkSceneManager::disconnectDrop() { +void wxVtkSceneManager::disconnectDrop() +{ printf("EED %p ~wxVtkSceneManager::disconnectDrop()\n", this); //EED02JUIN2010 _baseView->GetWxVTKRenderWindowInteractor()->SetDropTarget(NULL); // _baseView->GetWxVTKRenderWindowInteractor()->SetDropTarget( new tmpClasswxTextDropTarget() ); @@ -85,7 +91,8 @@ void wxVtkSceneManager::disconnectDrop() { //========================================================================= -wxVtkSceneManager::~wxVtkSceneManager() { +wxVtkSceneManager::~wxVtkSceneManager() +{ //FCY memory leaks printf("EED %p ~wxVtkSceneManager() START\n", this); disconnectDrop(); @@ -95,16 +102,15 @@ wxVtkSceneManager::~wxVtkSceneManager() { //========================================================================= -void wxVtkSceneManager::configureBaseView() { +void wxVtkSceneManager::configureBaseView() +{ printf("EED wxVtkSceneManager::configureBaseView 0\n"); - vtkInteractorStyleBaseView2D *interactorstylebaseview = - vtkInteractorStyleBaseView2D::New(); + vtkInteractorStyleBaseView2D *interactorstylebaseview = vtkInteractorStyleBaseView2D::New(); _baseView->SetInteractorStyleBaseView(interactorstylebaseview); // Important to activate the 2D interaction system - wxVTKRenderWindowInteractor *iren = - _baseView->GetWxVTKRenderWindowInteractor(); + wxVTKRenderWindowInteractor *iren = _baseView->GetWxVTKRenderWindowInteractor(); interactorstylebaseview->SetInteractor(iren); iren->SetInteractorStyle(interactorstylebaseview); interactorstylebaseview->SetwxVtkBaseView(_baseView); @@ -123,8 +129,7 @@ void wxVtkSceneManager::configureBaseView() { _textActor->SetInput(""); _textActor->GetTextProperty()->SetFontSize(60); _textActor->GetTextProperty()->BoldOn(); - _textActor->GetTextProperty()->SetColor(PORTTEXT_NH_R, PORTTEXT_NH_G, - PORTTEXT_NH_B); + _textActor->GetTextProperty()->SetColor(PORTTEXT_NH_R, PORTTEXT_NH_G,PORTTEXT_NH_B); _baseView->GetRenderer()->AddActor(_textActor); @@ -232,31 +237,39 @@ void wxVtkSceneManager::configGBlackBox(int idBox, double xIn, double yIn, //========================================================================= -int wxVtkSceneManager::createGBlackBox(int x, int y, std::string packageName, - std::string boxType) { - _worldState = NOTHING_HAPPENS; - //EED int windowWidth = _baseView->GetRenWin()->GetSize()[0]; - int windowHeight = _baseView->GetRenWin()->GetSize()[1]; - - int type = GBLACKBOX; - +int wxVtkSceneManager::createGBlackBox(int x, int y, std::string packageName,std::string boxType) +{ + _worldState = NOTHING_HAPPENS; + int windowHeight = _baseView->GetRenWin()->GetSize()[1]; + int type = GBLACKBOX; //Create the MVC Objects + GBlackBoxModel *model = (GBlackBoxModel*) GObjectsMVCFactory::getInstance()->createGObjectModel(type); + vtkGObjectView *view = GObjectsMVCFactory::getInstance()->createGObjectView(type); + GObjectController *controller = GObjectsMVCFactory::getInstance()->createGObjectController(type); - GBlackBoxModel - *model = - (GBlackBoxModel*) GObjectsMVCFactory::getInstance()->createGObjectModel( - type); - vtkGObjectView *view = - GObjectsMVCFactory::getInstance()->createGObjectView(type); - GObjectController* controller = - GObjectsMVCFactory::getInstance()->createGObjectController(type); +//EED 15 oct 2012 BlackBoxDescriptor::Pointer descriptor = GObjectsMVCFactory::getInstance()->getBlackBoxDescriptor(packageName, boxType); + + Package::Pointer k; + std::map< std::string, BlackBoxDescriptor::Pointer> mapDesc; + try{ + k = _bbtkfactory->GetPackage(packageName); + mapDesc = k->GetDescriptorMap(); + }catch(Exception e){ + printf("EED. ERROR!: Exception in wxVtkSceneManager::createGBlackBox for package %s, NOT EXIST\n", packageName.c_str()); + } - BlackBoxDescriptor::Pointer descriptor = - GObjectsMVCFactory::getInstance()->getBlackBoxDescriptor( - packageName, boxType); - if (descriptor == NULL){ + BlackBoxDescriptor::Pointer descriptor; + try{ + descriptor = mapDesc[boxType]; + }catch(Exception e){ + printf("EED. ERROR!: Exception in wxVtkSceneManager::createGBlackBox for box %s of package %s, NOT EXIST\n", boxType.c_str(),packageName.c_str()); + } + + if (descriptor == NULL) + { printf("SCP: ERROR in wxVtkSceneManager::createGBlackBox, box %s probably does not exist.\n", boxType.c_str()); - } + } + //Prepares the initial model //The coordinates obtained are the following. Top-Left:x=0,y=0 Bottom-Right:x=width,y=height @@ -337,14 +350,9 @@ int wxVtkSceneManager::createGComplexBoxInputPort(std::string inputName) { //Create the MVC Objects - GComplexBoxPortModel - *model = - (GComplexBoxPortModel*) GObjectsMVCFactory::getInstance()->createGObjectModel( - type); - vtkGObjectView *view = - GObjectsMVCFactory::getInstance()->createGObjectView(type); - GObjectController* controller = - GObjectsMVCFactory::getInstance()->createGObjectController(type); + GComplexBoxPortModel *model = (GComplexBoxPortModel*) GObjectsMVCFactory::getInstance()->createGObjectModel(type); + vtkGObjectView *view = GObjectsMVCFactory::getInstance()->createGObjectView(type); + GObjectController *controller = GObjectsMVCFactory::getInstance()->createGObjectController(type); //Prepares the initial model @@ -395,14 +403,9 @@ int wxVtkSceneManager::createGComplexBoxOutputPort(std::string outputName) { //Create the MVC Objects - GComplexBoxPortModel - *model = - (GComplexBoxPortModel*) GObjectsMVCFactory::getInstance()->createGObjectModel( - type); - vtkGObjectView *view = - GObjectsMVCFactory::getInstance()->createGObjectView(type); - GObjectController *controller = - GObjectsMVCFactory::getInstance()->createGObjectController(type); + GComplexBoxPortModel *model = (GComplexBoxPortModel*) GObjectsMVCFactory::getInstance()->createGObjectModel(type); + vtkGObjectView *view = GObjectsMVCFactory::getInstance()->createGObjectView(type); + GObjectController *controller = GObjectsMVCFactory::getInstance()->createGObjectController(type); //Prepares the initial model @@ -445,8 +448,8 @@ int wxVtkSceneManager::createGComplexBoxOutputPort(std::string outputName) { //========================================================================= -int wxVtkSceneManager::createGInputPort(int portType, int posinBox, - GBoxModel *blackBox, BlackBoxInputDescriptor *desc) { +int wxVtkSceneManager::createGInputPort(int portType, int posinBox, GBoxModel *blackBox, BlackBoxInputDescriptor *desc) +{ GPortController* portController = createGPort(portType, desc->GetName(), desc->GetTypeName(), desc->GetDescription(), posinBox, blackBox); blackBox->addInputPort((GPortModel*) portController->getModel()); @@ -455,8 +458,8 @@ int wxVtkSceneManager::createGInputPort(int portType, int posinBox, //========================================================================= -int wxVtkSceneManager::createGOutputPort(int portType, int posinBox, - GBoxModel *blackBox, BlackBoxOutputDescriptor *desc) { +int wxVtkSceneManager::createGOutputPort(int portType, int posinBox,GBoxModel *blackBox, BlackBoxOutputDescriptor *desc) + { GPortController* portController = createGPort(portType, desc->GetName(), desc->GetTypeName(),desc->GetDescription(), posinBox, blackBox); blackBox->addOutputPort((GPortModel*) portController->getModel()); @@ -465,9 +468,8 @@ int wxVtkSceneManager::createGOutputPort(int portType, int posinBox, //========================================================================= -GPortController* wxVtkSceneManager::createGPort(int portType, - std::string bbtkName, std::string bbtkType, std::string bbtkDescription, int posInBox, - GBoxModel *blackBox) { +GPortController* wxVtkSceneManager::createGPort(int portType,std::string bbtkName, std::string bbtkType, std::string bbtkDescription, int posInBox,GBoxModel *blackBox) +{ int type = GPORT; //Create the MVC Objects @@ -509,9 +511,6 @@ GPortController* wxVtkSceneManager::createGPort(int portType, int wxVtkSceneManager::createGConnector(GPortModel* startPort) { - - - int type = GCONNECTOR; manualConnectorContourController *manContourControl = new manualConnectorContourController(); @@ -587,41 +586,44 @@ int wxVtkSceneManager::createGConnector(GPortModel* startPort) //========================================================================= -void wxVtkSceneManager::registerController(InteractorStyleMaracas *param) { - vtkInteractorStyleBaseView - * baseViewControlManager = - (vtkInteractorStyleBaseView*) _baseView->GetInteractorStyleBaseView(); +void wxVtkSceneManager::registerController(InteractorStyleMaracas *param) +{ + vtkInteractorStyleBaseView * baseViewControlManager = (vtkInteractorStyleBaseView*) _baseView->GetInteractorStyleBaseView(); baseViewControlManager->AddInteractorStyleMaracas(param); } //========================================================================= -void wxVtkSceneManager::unregisterController(InteractorStyleMaracas *param) { - vtkInteractorStyleBaseView - * baseViewControlManager = - (vtkInteractorStyleBaseView*) _baseView->GetInteractorStyleBaseView(); +void wxVtkSceneManager::unregisterController(InteractorStyleMaracas *param) +{ + vtkInteractorStyleBaseView *baseViewControlManager = (vtkInteractorStyleBaseView*) _baseView->GetInteractorStyleBaseView(); baseViewControlManager->RemoveInteractorStyleMaracas(param); } //========================================================================= -vtkRenderer* wxVtkSceneManager::getRenderer() { +vtkRenderer* wxVtkSceneManager::getRenderer() +{ return _baseView->GetRenderer(); } //========================================================================= -vtkRenderWindow* wxVtkSceneManager::getRenderWindow() { +vtkRenderWindow* wxVtkSceneManager::getRenderWindow() +{ return _baseView->GetRenWin(); } //========================================================================= //========================================================================= -int wxVtkSceneManager::GetIndexInSelected(int idControler) { +int wxVtkSceneManager::GetIndexInSelected(int idControler) +{ int index = -1; - for (int i = 0; i < (int) _selectedObjects.size(); i++) { - if (_selectedObjects[i] == idControler) { + for (int i = 0; i < (int) _selectedObjects.size(); i++) + { + if (_selectedObjects[i] == idControler) + { index = i; break; } @@ -632,18 +634,21 @@ int wxVtkSceneManager::GetIndexInSelected(int idControler) { void wxVtkSceneManager::update(int idController, int command) { - if (command != NO_COMMAND) { - if (command == ADD_TO_SELECTED) { - if (GetIndexInSelected(idController) == -1) { + if (command != NO_COMMAND) + { + if (command == ADD_TO_SELECTED) + { + if (GetIndexInSelected(idController) == -1) + { _selectedObjects.push_back(idController); } } else if (command == REMOVE_FROM_SELECTED) { int index = GetIndexInSelected(idController); - if (index >= 0) { + if (index >= 0) + { _selectedObjects.erase(_selectedObjects.begin() + index); } } else if (command == INIT_CREATION_CONTOUR) { - // JGRR & CM WH typedef std::map::iterator TIterator ; TIterator iter ; @@ -683,12 +688,14 @@ void wxVtkSceneManager::update(int idController, int command) { // The last one is the controller of the connector std::map::iterator it2; - - for (it2 = _controllers.begin(); it2 != _controllers.end(); ++it2) { + for (it2 = _controllers.begin(); it2 != _controllers.end(); ++it2) + { GObjectController *cont = it2->second; - if (cont->getGObjectType() == GPORT) { + if (cont->getGObjectType() == GPORT) + { GPortModel* port = (GPortModel*) cont->getModel(); - if (port->getPortType() == GINPUTPORT) { + if (port->getPortType() == GINPUTPORT) + { cont->SetActive(true); } else { cont->getView()->setState(NOTHING_HAPPENS); @@ -710,7 +717,8 @@ void wxVtkSceneManager::update(int idController, int command) { GConnectorModel *modelContour = (GConnectorModel*) cont->getModel(); GObjectController *finPort = _controllers[idController]; - if (finPort->getGObjectType() == GPORT) { + if (finPort->getGObjectType() == GPORT) + { GPortModel* modelPort = (GPortModel*) finPort->getModel(); modelContour->setEndPort(modelPort); @@ -745,7 +753,8 @@ void wxVtkSceneManager::update(int idController, int command) { std::map::iterator it2; - for (it2 = _controllers.begin(); it2 != _controllers.end(); ++it2) { + for (it2 = _controllers.begin(); it2 != _controllers.end(); ++it2) + { GObjectController *cont = it2->second; if (cont->getView() != NULL) { cont->getView()->setState(NOTHING_HAPPENS); @@ -1416,32 +1425,66 @@ std::string wxVtkSceneManager::getDiagramBBS(bool wln) { script += LineNumber(wln, lnNmbr); script += "\n"; + + std::string complexInputs=""; + for (i = 0; i < (int) connections.size(); i++) { - script += LineNumber(wln, lnNmbr); - script += "connect "; + //script += LineNumber(wln, lnNmbr); + //script += "connect "; int id = connections[i]; GObjectController *control = _controllers[id]; GConnectorModel *model = (GConnectorModel*) control->getModel(); - //Start Connection info - GPortModel *start = model->getStartPort(); - script += start->getParentBox()->getBBTKName(); - script += "."; - script += start->getBBTKName(); - script += " "; + //Connection info + GPortModel *start = model->getStartPort(); + GBoxModel *startBox = start->getParentBox(); - //End Connection info GPortModel *end = model->getEndPort(); - script += end->getParentBox()->getBBTKName(); - script += "."; - script += end->getBBTKName(); + GBoxModel *endBox = end->getParentBox(); + + if (startBox->getGObjectType() == GCOMPLEXINPUTPORT) + { + complexInputs += "input "; + complexInputs += startBox->getBBTKName(); + + complexInputs += " "; + complexInputs += endBox->getBBTKName(); + complexInputs += "."; + complexInputs += end->getBBTKName(); + + complexInputs += " "; + complexInputs += "\" \""; + + complexInputs += "\n"; + } + else + { + script += "connect "; + script += startBox->getBBTKName(); + script += "."; + script += start->getBBTKName(); + + script += " "; + + //End Connection info + script += endBox->getBBTKName(); + script += "."; + script += end->getBBTKName(); + + script += "\n"; + } script += "\n"; } script += LineNumber(wln, lnNmbr); script += "\n"; + + script += "\n"; + script += "# Complex input ports\n"; + script += complexInputs; + for (i = 0; i < (int) execBoxes.size(); i++) { script += LineNumber(wln, lnNmbr); script += "exec "; @@ -1617,6 +1660,14 @@ std::string wxVtkSceneManager::saveComplexBoxBBS() { } } + script += "\n"; + script += "# Complex input ports\n"; + script += complexInputs; + + script += "\n"; + script += "# Complex output ports\n"; + script += complexOutputs; + script += "\n"; for (i = 0; i < (int) execBoxes.size(); i++) { @@ -1629,14 +1680,6 @@ std::string wxVtkSceneManager::saveComplexBoxBBS() { script += "\n"; } - script += "\n"; - script += "# Complex input ports\n"; - script += complexInputs; - - script += "\n"; - script += "# Complex output ports\n"; - script += complexOutputs; - script += "\n"; script += "endefine"; script += "\n"; @@ -1709,6 +1752,8 @@ void wxVtkSceneManager::saveDiagram(std::string &content) { content += GetCbPackageName(); content += "\n"; + /* CHANGE TO THE VERSION 1.4 RaC2012 2nd HackFest + * External inputs are possible for applications and complex boxes //Print info complex input ports std::vector inputs = getComplexInputPorts(); int insize = inputs.size(); @@ -1722,6 +1767,7 @@ void wxVtkSceneManager::saveDiagram(std::string &content) { GObjectController *cont = _controllers[id]; cont->getModel()->save(content); } + */ //Print info complex output ports std::vector outputs = getComplexOutputPorts(); @@ -1741,6 +1787,21 @@ void wxVtkSceneManager::saveDiagram(std::string &content) { content += "FALSE\n"; } + // CHANGE TO THE VERSION 1.4 RaC2012 2nd HackFest + // External inputs are possible for applications and complex boxes + std::vector inputs = getComplexInputPorts(); + int insize = inputs.size(); + content += "COMPLEXINPUTS:"; + sprintf(buffer, "%d", insize); + content += buffer; + content += "\n"; + + for (int i = 0; i < insize; i++) { + int id = inputs[i]; + GObjectController *cont = _controllers[id]; + cont->getModel()->save(content); + } + //Print boxes std::vector boxes = getBlackBoxes(); int bsize = boxes.size(); @@ -1788,11 +1849,14 @@ void wxVtkSceneManager::getCleanLine(stringstream &inputStream, std::string &lin //========================================================================= void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { + printf("EED wxVtkSceneManager::loadDiagram Start \n"); int size; std::string version = ""; std::string line = ""; char delims[] = ":"; char *result = NULL; + int MAX_LINE_SIZE=1500; + char poort[MAX_LINE_SIZE]; getCleanLine(inputStream, line); @@ -1814,6 +1878,9 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) if (line == "# - BBTKGEditor v 1.3 BBG BlackBox Diagram file") { version = line.substr(18, 3); } + if (line == "# - BBTKGEditor v 1.4 BBG BlackBox Diagram file") { + version = line.substr(18, 3); + } } else if (line == "APP_START") { start = true; break; @@ -1873,24 +1940,78 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) SetCbPackageName(result); } + if(version < "1.4") + { + //----------------------- + //- COMPLEX INPUT PORTS + //----------------------- + getCleanLine(inputStream, line);//COMPLEXINPUTS:num + char inputs[30]; + strcpy(inputs, line.c_str()); + result = strtok(inputs, delims); + result = strtok(NULL, delims); + + int numInputs; + std::istringstream inps(result); + inps >> numInputs; + + for (int i = 0; i < numInputs; i++) { + //---------- + getCleanLine(inputStream, line);//COMPLEX_PORT + getCleanLine(inputStream, line);//name + std::string inputPortName(line); + + //---------- + getCleanLine(inputStream, line);//xInic:yInic:zInic + char coord[80]; + strcpy(coord, line.c_str()); + result = strtok(coord, delims);//xInic + std::string xInic(result); + result = strtok(NULL, delims);//yInic + std::string yInic(result); + result = strtok(NULL, delims);//zInic + std::string zInic(result); + + double xIn, yIn, zIn; + std::istringstream xSt(xInic); + xSt >> xIn; + std::istringstream ySt(yInic); + ySt >> yIn; + std::istringstream zSt(zInic); + zSt >> zIn; + + if (version<="1.2") + { + if (zIn==900) zIn=GPOSITION_Z; + } + + getCleanLine(inputStream, line);//FIN_COMPLEX_PORT + + configGComBoxInputOutputPort(true, inputPortName, xIn, yIn, zIn); + + } // for input complex box + } + + //----------------------- - //- COMPLEX INPUT PORTS + //- COMPLEX OUTPUT PORTS //----------------------- - getCleanLine(inputStream, line);//COMPLEXINPUTS:num - char inputs[30]; - strcpy(inputs, line.c_str()); - result = strtok(inputs, delims); + + getCleanLine(inputStream, line);//COMPLEXOUTPUTS:num + char outputs[30]; + strcpy(outputs, line.c_str()); + result = strtok(outputs, delims); result = strtok(NULL, delims); - int numInputs; - std::istringstream inps(result); - inps >> numInputs; + int numOutputs; + std::istringstream outps(result); + outps >> numOutputs; - for (int i = 0; i < numInputs; i++) { + for (int i = 0; i < numOutputs; i++) { //---------- getCleanLine(inputStream, line);//COMPLEX_PORT getCleanLine(inputStream, line);//name - std::string inputPortName(line); + std::string outputPortName(line); //---------- getCleanLine(inputStream, line);//xInic:yInic:zInic @@ -1918,30 +2039,33 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) getCleanLine(inputStream, line);//FIN_COMPLEX_PORT - configGComBoxInputOutputPort(true, inputPortName, xIn, yIn, zIn); + configGComBoxInputOutputPort(false, outputPortName, xIn, yIn, zIn); - } // for input complex box + } // for output complex box + } // complex box + // RaC2012 2nd Hackfest + if(version >= "1.4") + { //----------------------- - //- COMPLEX OUTPUT PORTS + //- EXTERNAL INPUT PORTS //----------------------- - - getCleanLine(inputStream, line);//COMPLEXOUTPUTS:num - char outputs[30]; - strcpy(outputs, line.c_str()); - result = strtok(outputs, delims); + getCleanLine(inputStream, line);//COMPLEXINPUTS:num + char inputs[30]; + strcpy(inputs, line.c_str()); + result = strtok(inputs, delims); result = strtok(NULL, delims); - int numOutputs; - std::istringstream outps(result); - outps >> numOutputs; + int numInputs; + std::istringstream inps(result); + inps >> numInputs; - for (int i = 0; i < numOutputs; i++) { + for (int i = 0; i < numInputs; i++) { //---------- getCleanLine(inputStream, line);//COMPLEX_PORT getCleanLine(inputStream, line);//name - std::string outputPortName(line); + std::string inputPortName(line); //---------- getCleanLine(inputStream, line);//xInic:yInic:zInic @@ -1968,12 +2092,11 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) } getCleanLine(inputStream, line);//FIN_COMPLEX_PORT + configGComBoxInputOutputPort(true, inputPortName, xIn, yIn, zIn); - configGComBoxInputOutputPort(false, outputPortName, xIn, yIn, zIn); - - } // for output complex box + } // for external input + } - } // complex box //---------- getCleanLine(inputStream, line);//BOXES:num @@ -2070,13 +2193,26 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) //---------- getCleanLine(inputStream, line);//PORT o FIN_BOX std::string port = line.substr(0, 4); - while (port == "PORT") { + while (port == "PORT") + { getCleanLine(inputStream, line);//name:value - char poort[150]; + if (line.length()>=MAX_LINE_SIZE-1) + { + line=line.substr(0, MAX_LINE_SIZE-1); + } + strcpy(poort, line.c_str()); result = strtok(poort, delims);//name std::string name(result); + + //EED 16 oct 2012 Adding at the end character " if necesary in the value definition result = strtok(NULL, delims);//value + if (( result[0]=='"' ) && ( result[ strlen(result)-1 ]!='"' ) ) + { + std::string tmpString=" "; + tmpString[0]=34; // character " + strcat(result,tmpString.c_str()); + } std::string value(result); bbmod->setValueToInput(name, value); @@ -2162,6 +2298,8 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) } // for numConns } // start + +printf("EED wxVtkSceneManager::loadDiagram End \n"); } //========================================================================= @@ -2199,7 +2337,9 @@ GBoxModel* wxVtkSceneManager::findGBox(std::string boxname) { } } // for - if ((_isComplexBox) && (boxModel == NULL)) { + + + if (boxModel == NULL) { std::vector lstInputs = getComplexInputPorts(); for (j = 0; j < (int) lstInputs.size(); j++) { idB = lstInputs[j]; @@ -2209,6 +2349,8 @@ GBoxModel* wxVtkSceneManager::findGBox(std::string boxname) { } } // for + if(_isComplexBox) + { std::vector lstOutputs = getComplexOutputPorts(); for (j = 0; j < (int) lstOutputs.size(); j++) { int idB = lstOutputs[j]; @@ -2217,8 +2359,9 @@ GBoxModel* wxVtkSceneManager::findGBox(std::string boxname) { boxModel = bMod; } } // for + } - } // complex box + } // inputs/outputs return boxModel; } @@ -2235,6 +2378,10 @@ int wxVtkSceneManager::configGConnetion(std::string nameStartBox, GPortModel *endP = NULL; boxModel = findGBox(nameStartBox); + if(boxModel == NULL) + { + printf("RaC: ERROR in wxVtkSceneManager::configGConnetion A box to connect start port %s is null. Box name is probably wrong.\n", nameStartPort.c_str()); + } if (boxModel != NULL) { startP = boxModel->getOutputPort(nameStartPort); if(startP == NULL){ @@ -2243,6 +2390,10 @@ int wxVtkSceneManager::configGConnetion(std::string nameStartBox, } boxModel = findGBox(nameEndBox); + if(boxModel == NULL) + { + printf("RaC: ERROR in wxVtkSceneManager::configGConnetion A box to connect start port %s is null. Box name is probably wrong.\n", nameStartPort.c_str()); + } if (boxModel != NULL) { endP = boxModel->getInputPort(nameEndPort); if(endP == NULL){ @@ -2252,6 +2403,7 @@ int wxVtkSceneManager::configGConnetion(std::string nameStartBox, //ups2 int idCon = createGConnector(startP); + _worldState = NOTHING_HAPPENS; GConnectorController *tempp = (GConnectorController*) _controllers[idCon]; @@ -2516,8 +2668,7 @@ void wxVtkSceneManager::addObjects(std::map objectsMap) double xInic, yInic, zInic; GBlackBoxModel* copyBox = (GBlackBoxModel*) cont->getModel(); copyBox->getInicPoint(xInic, yInic, zInic); - int idBox = createGBlackBox(0, 0, copyBox->getBBTKPackage(), - copyBox->getBBTKType()); + int idBox = createGBlackBox(0, 0, copyBox->getBBTKPackage(),copyBox->getBBTKType()); int idcB = copyBox->getObjectId(); oldIdNewIdBoxes[idcB] = idBox; @@ -2525,9 +2676,10 @@ void wxVtkSceneManager::addObjects(std::map objectsMap) GBlackBoxModel* newbox = (GBlackBoxModel*) cont->getModel(); newbox->setInicPoint(xInic, yInic, zInic); int num = newbox->getNumInputPorts(); - for (int j = 0; j < num; j++) { + for (int j = 0; j < num; j++) + { newbox->setValueToInputPort(j, copyBox->getValueInputPort(j)); - } + }// for j newbox->notifyObservers(_idManager); } else if (type == GCONNECTOR) { int idCon = cont->getId(); @@ -2727,7 +2879,6 @@ std::string wxVtkSceneManager::GetCategory() { //========================================================================= void wxVtkSceneManager::SetDescription(std::string description) { _Description = description; - std::cout<<"Description:"<<_Description< wxVtkSceneManager::GetExternalInputsNames() +{ + + std::vector< std::string> extInputs; + std::map::iterator it; + for (it = _controllers.begin(); it != _controllers.end(); ++it) + { + GObjectController *cont = it->second; + if (cont->getGObjectType() == GCOMPLEXINPUTPORT) + { + extInputs.push_back(cont->getModel()->getBBTKName()); + } + } + return extInputs; +} + +//========================================================================= + + void wxVtkSceneManager::printAll(int com , int sta ){