X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FEditorGraphicBBS%2FbbsWxGUIEditorGraphic%2FwxVtkSceneManager.cxx;h=3cb95f86f21e22778fb95e3f97f47a42029d7e57;hb=ac275a79f43b892b4b5182f91b980ada0c8f4926;hp=1573fd28474a9519760dca9b5423427995cbdede;hpb=910f9d7a7aecf26c88db3f595969a67ae5c27f78;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx index 1573fd2..3cb95f8 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx @@ -1,4 +1,4 @@ -/*========================================================================= +/*========================================================================= Program: bbtk Module: $RCSfile$ Language: C++ @@ -11,31 +11,35 @@ Version: $Revision$ * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux * -* This software is governed by the CeCILL-B license under French law and -* abiding by the rules of distribution of free software. You can use, -* modify and/ or redistribute the software under the terms of the CeCILL-B -* license as circulated by CEA, CNRS and INRIA at the following URL -* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +* This software is governed by the CeCILL-B license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL-B +* license as circulated by CEA, CNRS and INRIA at the following URL +* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html * or in the file LICENSE.txt. * * As a counterpart to the access to the source code and rights to copy, * modify and redistribute granted by the license, users are provided only * with a limited warranty and the software's author, the holder of the * economic rights, and the successive licensors have only limited -* liability. +* liability. * * The fact that you are presently reading this means that you have had * knowledge of the CeCILL-B license and that you accept its terms. -* ------------------------------------------------------------------------ */ +* ------------------------------------------------------------------------ */ /** -* \file -* \brief Class bbtk::wxVtkSceneManager . +* \file +* \brief Class bbtk::wxVtkSceneManager . */ #include "wxVtkSceneManager.h" + #include + #include + + namespace bbtk { @@ -43,26 +47,28 @@ namespace bbtk //========================================================================= wxVtkSceneManager::wxVtkSceneManager(wxGEditorTabPanel *parent, wxVtk3DBaseView *baseView,int idManager) { - _parent = parent; - _numBoxes=0; - _idManager=idManager; - _baseView=baseView; - _startDragging=false; - _isComplexBox=false; + _parent = parent; + _numBoxes = 0; + _idManager = idManager; + _baseView = baseView; + _startDragging = false; + _isComplexBox = false; if( _baseView!=NULL ) { -//EED02JUIN2010 +//EED02JUIN2010 printf ("RaC-EED 21-06-2010 %p wxVtkSceneManager::wxVtkSceneManager If you comment this line, the drag and drop functionnality is not initialized.\n" , this ); - _baseView->GetWxVTKRenderWindowInteractor()->SetDropTarget((wxDropTarget*)parent); +#ifdef __APPLE__ + _baseView->GetWxVTKRenderWindowInteractor()->SetDropTarget((wxDropTarget*)parent); +#endif configureBaseView(); _worldState=NOTHING_HAPPENS; registerController(this); - + } - _idConnectionInCreation=-1; - _contLastId=0; + _idConnectionInCreation = -1; + _contLastId = 0; } @@ -82,7 +88,7 @@ namespace bbtk printf ("EED %p ~wxVtkSceneManager()\n" , this ); disconnectDrop(); } - + //========================================================================= void wxVtkSceneManager::configureBaseView() @@ -96,20 +102,89 @@ namespace bbtk interactorstylebaseview->SetInteractor ( iren ); iren->SetInteractorStyle(interactorstylebaseview); interactorstylebaseview->SetwxVtkBaseView(_baseView); - + _baseView->GetRenderer()->GetActiveCamera()->ParallelProjectionOn(); - _baseView->GetRenderer()->ResetCamera(-100,100,-100,100,900,1000); - + _baseView->GetRenderer()->ResetCamera(-100,100,-100,100,800,1100); + _baseView->GetRenderer()->SetBackground(0.9,0.9,0.9); - _baseView->GetRenderer()->GradientBackgroundOff(); + _baseView->GetRenderer()->GradientBackgroundOn(); _baseView->Refresh(); + + // Actos Port_Text + _textActor = vtkTextActor3D::New(); + _textActor->SetPosition( -9999 , -9999 , 900 ); + _textActor->SetInput( "" ); + _textActor->GetTextProperty()->SetFontSize(60); + _textActor->GetTextProperty()->BoldOn(); + _textActor->GetTextProperty()->SetColor(PORTTEXT_NH_R,PORTTEXT_NH_G,PORTTEXT_NH_B); + + _baseView->GetRenderer()->AddActor( _textActor ); + + + // Actor Fill_Port_Text + + //------------ + double xInic = 0; + double yInic = 0; + double zInic = 900; + + vtkPolygon *aPolygon = vtkPolygon::New(); + _fillObjectActor = vtkActor::New(); + + _pts = vtkPoints::New(); + + double w=100,h=10,b=h/15,t=3; + _pts->SetNumberOfPoints(21); + _pts->InsertPoint(0, xInic+w*0.33-t/2 , yInic , zInic ); + _pts->InsertPoint(1, xInic+w*0.33 , yInic-t , zInic ); + _pts->InsertPoint(2, xInic+w*0.33+t/2 , yInic , zInic ); + _pts->InsertPoint(3, xInic+w*0.33+t/2 , yInic , zInic ); + _pts->InsertPoint(4, xInic+w-b*4 , yInic+b*0 , zInic ); + + _pts->InsertPoint( 5, xInic+w-b*4 , yInic+b*0 , zInic ); + _pts->InsertPoint( 6, xInic+w-b*2 , yInic+b*1 , zInic ); + _pts->InsertPoint( 7, xInic+w-b*1 , yInic+b*2 , zInic ); + _pts->InsertPoint( 8, xInic+w-b*0 , yInic+b*4 , zInic ); + + _pts->InsertPoint( 9, xInic+w-b*0 , yInic+h-b*4 , zInic ); + _pts->InsertPoint(10, xInic+w-b*1 , yInic+h-b*2 , zInic ); + _pts->InsertPoint(11, xInic+w-b*2 , yInic+h-b*1 , zInic ); + _pts->InsertPoint(12, xInic+w-b*4 , yInic+h-b*0 , zInic ); + + _pts->InsertPoint(13, xInic+b*4 , yInic+h-b*0 , zInic ); + _pts->InsertPoint(14, xInic+b*2 , yInic+h-b*1 , zInic ); + _pts->InsertPoint(15, xInic+b*1 , yInic+h-b*2 , zInic ); + _pts->InsertPoint(16, xInic+b*0 , yInic+h-b*4 , zInic ); + + _pts->InsertPoint(17, xInic+b*0 , yInic+b*4 , zInic ); + _pts->InsertPoint(18, xInic+b*1 , yInic+b*2 , zInic ); + _pts->InsertPoint(19, xInic+b*2 , yInic+b*1 , zInic ); + _pts->InsertPoint(20, xInic+b*4 , yInic+b*0 , zInic ); + + aPolygon->GetPointIds()->SetNumberOfIds(21); + for (int i=0;i<21; i++) + { + aPolygon->GetPointIds()->SetId(i, i); + } + + vtkUnstructuredGrid *aPolygonGrid = vtkUnstructuredGrid::New(); + aPolygonGrid->Allocate(1, 1); + aPolygonGrid->InsertNextCell(aPolygon->GetCellType(), aPolygon->GetPointIds()); + aPolygonGrid->SetPoints(_pts); + _aPolygonMapper = vtkDataSetMapper::New(); + _aPolygonMapper->SetInput(aPolygonGrid); + _fillObjectActor->SetMapper(_aPolygonMapper); + _fillObjectActor->GetProperty()->SetColor(PORTFILL_NH_R,PORTFILL_NH_G,PORTFILL_NH_B); + _fillObjectActor->GetProperty()->SetOpacity(0); + _aPolygonMapper->Modified(); + + _baseView->GetRenderer()->AddActor( _fillObjectActor ); } //========================================================================= - + std::string wxVtkSceneManager::generateANewNameForABox() { - _numBoxes++; std::stringstream boxname; if(_numBoxes<10) { @@ -117,11 +192,12 @@ namespace bbtk }else{ boxname << "Box" << _numBoxes; } + _numBoxes++; return boxname.str(); } //========================================================================= - + std::string wxVtkSceneManager::findANewNameForABox() { std::string boxname=generateANewNameForABox(); @@ -134,57 +210,64 @@ namespace bbtk return boxname; } + //========================================================================= + void wxVtkSceneManager::configGBlackBox(int idBox, double xIn, double yIn, double zIn, std::string name, bool boxExecutable,double xEn,double yEn,double zEn) + { + GObjectController *cont = _controllers[idBox]; + GBlackBoxModel *bbmod = (GBlackBoxModel*)cont->getModel(); + bbmod->setBBTKName(name); + bbmod->setInicPoint(xIn,yIn,zIn); + bbmod->setFinalPoint(xEn,yEn,zEn); + bbmod->setExecutable(boxExecutable); + + bbmod->notifyObservers(_idManager); + + } + + //========================================================================= - int wxVtkSceneManager::createGBlackBox(int x, int y, std::string packageName, std::string boxType) + int wxVtkSceneManager::createGBlackBox(int x, int y, std::string packageName, std::string boxType) { _worldState = NOTHING_HAPPENS; - int windowWidth = _baseView->GetRenWin()->GetSize()[0]; +//EED int windowWidth = _baseView->GetRenWin()->GetSize()[0]; 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); - + BlackBoxDescriptor::Pointer descriptor = GObjectsMVCFactory::getInstance()->getBlackBoxDescriptor(packageName, boxType); - + //Prepares the initial model - //The coordinates obtained are the following. Top-Left:x=0,y=0 Bottom-Right:x=width,y=height + //The coordinates obtained are the following. Top-Left:x=0,y=0 Bottom-Right:x=width,y=height double xx = x; double yy = windowHeight-y; - + //z value is not important yet, because it is only used a parallel projection double zz = 900; - _baseView->TransCoordScreenToWorld(xx,yy,zz); model->setInicPoint(xx,yy,zz); - -//EED Borrame _numBoxes++; + std::stringstream stream; - - str:string newBoxName = findANewNameForABox(); + + std::string newBoxName; + newBoxName = findANewNameForABox(); + + stream << newBoxName; -/* EED Borrame - if(_numBoxes<10) - { - stream << "Box0" << _numBoxes; - } - else - { - stream << "Box" << _numBoxes; - } -*/ + std::string arraystring = stream.str(); model->setBBTKName(arraystring); model->setBBTKType(boxType); model->setBBTKPackage(packageName); - + model->addObserver(view); model->addObserver(this); @@ -218,13 +301,13 @@ namespace bbtk view->setModel(model); view->setBaseView(_baseView); view->initVtkObjects(); - + //Associates the controller with the correspondent model and view controller->setModelAndView(model,view); //Resgiter change to the observers of the actual model model->notifyObservers(_idManager); - + int newId = addObjectController(controller); return newId; @@ -235,104 +318,107 @@ namespace bbtk int wxVtkSceneManager::createGComplexBoxInputPort(std::string inputName) { - int windowWidth=_baseView->GetRenWin()->GetSize()[0]; +//EED int windowWidth=_baseView->GetRenWin()->GetSize()[0]; int windowHeight=_baseView->GetRenWin()->GetSize()[1]; - - int type = GCOMPLEXINPUTPORT; + + int type = GCOMPLEXINPUTPORT; //Create the MVC Objects - - GComplexBoxPortModel *model = (GComplexBoxPortModel*)GObjectsMVCFactory::getInstance()->createGObjectModel(type); - vtkGObjectView *view = GObjectsMVCFactory::getInstance()->createGObjectView(type); - GObjectController* controller = GObjectsMVCFactory::getInstance()->createGObjectController(type); - - //Prepares the initial model - double xx = 5; - double yy = windowHeight-5; - + GComplexBoxPortModel *model = (GComplexBoxPortModel*)GObjectsMVCFactory::getInstance()->createGObjectModel(type); + vtkGObjectView *view = GObjectsMVCFactory::getInstance()->createGObjectView(type); + GObjectController* controller = GObjectsMVCFactory::getInstance()->createGObjectController(type); + + //Prepares the initial model + + double xx = 5; + double yy = windowHeight-5; + //z value is not important yet, because it is only used a parallel projection - double zz = 900; + double zz = 900; +printf("EED wxVtkSceneManager::createGComplexBoxInputPort 900-450\n"); _baseView->TransCoordScreenToWorld(xx,yy,zz); model->setInicPoint(xx,yy,zz); - + model->setBBTKName(inputName); model->setBBTKType("ComplexInputPort"); model->setComplexPortType(type); - + model->addObserver(view); model->addObserver(this); - - //create the output port + + //create the output port GPortController* portController = createGPort(GOUTPUTPORT,inputName,"ComplexInputPort",0,model); model->addOutputPort((GPortModel*)portController->getModel()); - + //Associates the view with the correspondent renderer and the model. //(NOTE: Refresh is only made by the view) view->setModel(model); view->setBaseView(_baseView); view->initVtkObjects(); - + //Associates the controller with the correspondent model and view controller->setModelAndView(model,view); //Resgiter change to the observers of the actual model model->notifyObservers(_idManager); - + int newId = addObjectController(controller); return newId; } //========================================================================= - + int wxVtkSceneManager::createGComplexBoxOutputPort(std::string outputName) { - int windowWidth=_baseView->GetRenWin()->GetSize()[0]; +//EED int windowWidth=_baseView->GetRenWin()->GetSize()[0]; int windowHeight=_baseView->GetRenWin()->GetSize()[1]; - int type = GCOMPLEXOUTPUTPORT; + int type = GCOMPLEXOUTPUTPORT; //Create the MVC Objects - - GComplexBoxPortModel *model = (GComplexBoxPortModel*)GObjectsMVCFactory::getInstance()->createGObjectModel(type); - vtkGObjectView *view = GObjectsMVCFactory::getInstance()->createGObjectView(type); - GObjectController* controller = GObjectsMVCFactory::getInstance()->createGObjectController(type); - - //Prepares the initial model - double xx = 5; - double yy = windowHeight-5; - + GComplexBoxPortModel *model = (GComplexBoxPortModel*)GObjectsMVCFactory::getInstance()->createGObjectModel(type); + vtkGObjectView *view = GObjectsMVCFactory::getInstance()->createGObjectView(type); + GObjectController *controller = GObjectsMVCFactory::getInstance()->createGObjectController(type); + + //Prepares the initial model + + double xx = 5; + double yy = windowHeight-5; + //z value is not important yet, because it is only used a parallel projection - double zz = 900; + double zz = 900; + +printf("EED wxVtkSceneManager::createGComplexBoxOutputPort 900-450\n"); _baseView->TransCoordScreenToWorld(xx,yy,zz); model->setInicPoint(xx,yy,zz); - + model->setBBTKName(outputName); model->setBBTKType("ComplexOutputPort"); model->setComplexPortType(type); - + model->addObserver(view); model->addObserver(this); - - //create the output port + + //create the output port GPortController* portController = createGPort(GINPUTPORT,outputName,"ComplexInputPort",0,model); model->addInputPort((GPortModel*)portController->getModel()); - + //Associates the view with the correspondent renderer and the model. //(NOTE: Refresh is only made by the view) view->setModel(model); view->setBaseView(_baseView); view->initVtkObjects(); - + //Associates the controller with the correspondent model and view controller->setModelAndView(model,view); //Resgiter change to the observers of the actual model model->notifyObservers(_idManager); - + int newId = addObjectController(controller); return newId; } @@ -362,12 +448,12 @@ namespace bbtk int type = GPORT; //Create the MVC Objects - GPortModel *model = (GPortModel*)GObjectsMVCFactory::getInstance()->createGObjectModel(type); - vtkGObjectView *view = GObjectsMVCFactory::getInstance()->createGObjectView(type); - GObjectController* controller = GObjectsMVCFactory::getInstance()->createGObjectController(type); + GPortModel *model = (GPortModel*)GObjectsMVCFactory::getInstance()->createGObjectModel(type); + vtkGObjectView *view = GObjectsMVCFactory::getInstance()->createGObjectView(type); + GObjectController* controller = GObjectsMVCFactory::getInstance()->createGObjectController(type); model->registerInBox(blackBox,portType, posInBox); - + model->setBBTKType(bbtkType); model->setBBTKName(bbtkName); @@ -379,13 +465,13 @@ namespace bbtk view->setModel(model); view->setBaseView(_baseView); view->initVtkObjects(); - + //Associates the controller with the correspondent model and view controller->setModelAndView(model,view); model->notifyObservers(_idManager); - int newId = addObjectController(controller); + addObjectController(controller); return (GPortController*)controller; } @@ -397,12 +483,12 @@ namespace bbtk int type = GCONNECTOR; manualConnectorContourController* manContourControl = new manualConnectorContourController(); - manualConnectorContourView* manContourView = new manualConnectorContourView(); - manualContourModel* manContourModel = new manualContourModel(); + manualConnectorContourView* manContourView = new manualConnectorContourView(); + manualContourModel* manContourModel = new manualContourModel(); - GConnectorController* connectorcontroller = new GConnectorController(); - GConnectorModel* connectorModel = new GConnectorModel(); - vtkGConnectorView* connectorView = new vtkGConnectorView(); + GConnectorController* connectorcontroller = new GConnectorController(); + GConnectorModel* connectorModel = new GConnectorModel(); + vtkGConnectorView* connectorView = new vtkGConnectorView(); connectorModel->setGObjectType(type); manContourModel->SetCloseContour(false); @@ -420,7 +506,7 @@ namespace bbtk manContourView->SetShowText(false); manContourControl->SetModelView( manContourModel , manContourView ); - + manContourControl->CreateNewManualContour(); manContourView->RefreshContour(); @@ -431,7 +517,7 @@ namespace bbtk manContourControl->SetState(1); manContourModel->SetCloseContour(false); - + manContourModel->AddPoint(x,y,z); manContourView->AddPoint(); @@ -448,12 +534,12 @@ namespace bbtk int newId = addObjectController(connectorcontroller); - connectorcontroller->setManualContourController(manContourControl); + connectorcontroller->setManualContourController(manContourControl); connectorModel->setManualContourModel(manContourModel); connectorView->setManualContourView(manContourView); connectorView->setModel(connectorModel); connectorView->setBaseView(_baseView); - + connectorModel->addObserver(connectorView); connectorModel->addObserver(this); @@ -492,37 +578,65 @@ namespace bbtk } //========================================================================= - + + //========================================================================= + int wxVtkSceneManager::GetIndexInSelected(int idControler) + { + int index=-1; + for (int i=0; i<(int)_selectedObjects.size(); i++) + { + if(_selectedObjects[i]==idControler) + { + index=i; + break; + } + } + return index; + } + //========================================================================= + void wxVtkSceneManager::update(int idController,int command) { + if(command != NO_COMMAND) { if(command == ADD_TO_SELECTED) { - GObjectController* cont = _controllers[idController]; +//EEDBorrame GObjectController* cont = _controllers[idController]; - bool foundID=false; - for (int i=0; i<_selectedObjects.size() && foundID==false; i++) + if (GetIndexInSelected(idController)==-1) { - int id = _selectedObjects[i]; - if(id==idController) - { - foundID = true; - } - } - if(!foundID) - { - int id = idController; - _selectedObjects.push_back(id); + _selectedObjects.push_back(idController); } - } +//EEDBorrame +// bool foundID=false; +// for (int i=0; i<(int)_selectedObjects.size() && foundID==false; i++) +// { +// if(_selectedObjects[i]==idController) +// { +// foundID = true; +// } +// } +// if(!foundID) +// { +// _selectedObjects.push_back(idController); +// } + + }else if(command == REMOVE_FROM_SELECTED) + { + int index=GetIndexInSelected(idController); + if (index>=0) + { + _selectedObjects.erase( _selectedObjects.begin()+index ); + } + } else if(command == INIT_CREATION_CONTOUR) - { - _worldState = INIT_CREATION_CONTOUR; - GObjectController* cont = _controllers[idController]; + { + _worldState = INIT_CREATION_CONTOUR; + GObjectController* cont = _controllers[idController]; GPortModel* startOutputPort = (GPortModel*)cont->getModel(); - + // The last one is the controller of the connector std::map::iterator it2; @@ -549,29 +663,26 @@ namespace bbtk cont->getView()->setState(NOTHING_HAPPENS); cont->getModel()->notifyObservers(_idManager); cont->SetActive(false); - } + } } - _selectedObjects.clear(); - _idConnectionInCreation=createGConnector(startOutputPort); - } else if(command == FIN_CREATION_CONTOUR && _worldState == INIT_CREATION_CONTOUR) - { - _worldState = NOTHING_HAPPENS; + { + _worldState = NOTHING_HAPPENS; //int id = _controllers.size()-1; - GObjectController* cont = _controllers[_idConnectionInCreation]; - GConnectorModel* modelContour = (GConnectorModel*)cont->getModel(); + GObjectController *cont = _controllers[_idConnectionInCreation]; + GConnectorModel *modelContour = (GConnectorModel*)cont->getModel(); + GObjectController *finPort = _controllers[idController]; - GObjectController* finPort = _controllers[idController]; if(finPort->getGObjectType() == GPORT) { GPortModel* modelPort = (GPortModel*)finPort->getModel(); modelContour->setEndPort(modelPort); - } + } - manualConnectorContourController* manCont = ((GConnectorController*)cont)->getManualContourController(); + manualConnectorContourController* manCont = ((GConnectorController*)cont)->getManualContourController(); manualConnectorContourView* connView = (manualConnectorContourView*)manCont->GetManualViewBaseContour(); connView->Refresh(); @@ -585,11 +696,12 @@ namespace bbtk cont->getView()->setState(NOTHING_HAPPENS); cont->getModel()->notifyObservers(_idManager); } - cont->SetActive(true); + cont->SetActive(true); } } - + } + } //========================================================================= @@ -597,14 +709,16 @@ namespace bbtk bool wxVtkSceneManager::OnMouseMove() { int X,Y; + bool okStatusMessage = false; + bool okPortMessage = false; wxVTKRenderWindowInteractor *wxVTKiren; wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor(); wxVTKiren->GetEventPosition(X,Y); - - + + if(_worldState == DRAG_OBJECTS) - { - for (int i=0; i<_selectedObjects.size(); i++) + { + for (int i=0; i<(int)_selectedObjects.size(); i++) { int id = _selectedObjects[i]; GObjectController* cont = _controllers[id]; @@ -619,6 +733,7 @@ namespace bbtk std::map::iterator it; + for(it = _controllers.begin(); it != _controllers.end(); ++it) { GObjectController *desc = it->second; @@ -628,39 +743,68 @@ namespace bbtk vconn->updateStartEndPoints(); } } - + _startDragging=false; } else if(_worldState == NOTHING_HAPPENS || _worldState == INIT_CREATION_CONTOUR) { std::map::iterator it; - + double px, py, pz; for(it = _controllers.begin(); it != _controllers.end(); ++it) { GObjectController *desc = it->second; - int type = desc->getGObjectType(); - int state = desc->getView()->getState(); - - if(state == HIGHLIGHTED){ + int type = desc->getGObjectType(); + int state = desc->getView()->getState(); + desc->getModel()->getCenter(px,py,pz); + if(state == HIGHLIGHTED){ + okStatusMessage = true; updateStatusBar(desc->getStatusText()); if(type==GBLACKBOX) { GBlackBoxModel *mod = (GBlackBoxModel*)desc->getModel(); _parent->displayBlackBoxInfo(mod->getBBTKPackage(),mod->getBBTKType()); - } - } + } // if GBLACKBOX + if(type==GPORT) + { + // PortText + okPortMessage = true; + py=py+5; + _textActor->SetInput( desc->getStatusText().c_str() ); + _textActor->SetScale(0.1); + _textActor->SetPosition( px-25 ,py+1 , pz+2 ); + + // FillPortText + px=px-33; + py=py; + _fillObjectActor->SetScale(1); + _fillObjectActor->GetProperty()->SetOpacity(0.50); + _fillObjectActor->SetPosition(px,py,1); + _aPolygonMapper->Modified(); + } // if GPORT + + } // for controllers it } } - + if (okStatusMessage==false) + { + updateStatusBar(""); + } + + if (okPortMessage==false) + { + _textActor->SetScale(0.0001); + _fillObjectActor->SetScale(0.0001); + } return true; } //========================================================================= - + bool wxVtkSceneManager::OnLeftButtonDown() { + if(_worldState==INIT_CREATION_CONTOUR) { bool isOverPort=false; @@ -670,62 +814,64 @@ namespace bbtk GObjectController *desc = it->second; if(desc->getGObjectType()==GPORT) { - GPortModel* portmod=(GPortModel*)desc->getModel(); - vtkGObjectView* portView=desc->getView(); + GPortModel *portmod = (GPortModel*)desc->getModel(); + vtkGObjectView *portView = desc->getView(); if(portmod->getPortType()==GINPUTPORT && portView->getState()==HIGHLIGHTED) { isOverPort=true; - } - } - } - + } // if + } // if + } // for + if(isOverPort==false) { - _worldState=NOTHING_HAPPENS; - //int lastId = _controllers.size()-1; - GConnectorController *connector = (GConnectorController*)_controllers[_controllers.size()-1]; - connector->removeFromScene(); - unregisterController(connector); - _controllers.erase(_controllers.size()-1); - - for(it = _controllers.begin(); it != _controllers.end(); ++it) + CancelConnection(); + UnSelectBlackBoxes(); + } // isOverPort + + } else { //_worldState + + _worldState = DRAG_OBJECTS; + _startDragging = true; + + int shiftkey = _vtkInteractorStyleBaseView->GetInteractor()->GetShiftKey(); + int ctrlkey = _vtkInteractorStyleBaseView->GetInteractor()->GetControlKey(); + ctrlkey = ctrlkey + shiftkey; + + GObjectController *cont = GetGBlackBoxControlerPointedByMouse(); + + + if (GetGBlackBoxControlerPointedByMouse()!=NULL) + { + int state=cont->getView()->getState() ; + if( (ctrlkey==0) && (state==HIGHLIGHTED) ) { - GObjectController *desc = it->second; - desc->SetActive(true); - desc->getView()->setState(NOTHING_HAPPENS); - desc->getModel()->notifyObservers(_idManager); + UnSelectBlackBoxes(); } } - } - - if(_selectedObjects.size()!=0) - { - _worldState = DRAG_OBJECTS; - _startDragging = true; - - for (int i = 0; i < _selectedObjects.size(); i++) + for (int i = 0; i < (int)_selectedObjects.size(); i++) { int id = _selectedObjects[i]; GObjectController* cont = _controllers[id]; cont->getView()->setState(DRAG); cont->getModel()->notifyObservers(_idManager); - } - } - - + } // for + + } // if _selectedObjects.size + return true; } //========================================================================= - + bool wxVtkSceneManager::OnLeftButtonUp() { if(_worldState == DRAG_OBJECTS) { _worldState = NOTHING_HAPPENS; - for (int i = 0; i < _selectedObjects.size(); i++) + for (int i = 0; i < (int)_selectedObjects.size(); i++) { int id = _selectedObjects[i]; GObjectController* cont = _controllers[id]; @@ -737,18 +883,18 @@ namespace bbtk } //========================================================================= - - bool wxVtkSceneManager::OnRightButtonUp() + void wxVtkSceneManager::CancelConnection() { if(_worldState==INIT_CREATION_CONTOUR) { _worldState=NOTHING_HAPPENS; //int lastId = _controllers.size()-1; + GConnectorController *connector = (GConnectorController*)_controllers[_idConnectionInCreation]; connector->removeFromScene(); unregisterController(connector); - _controllers.erase(_idConnectionInCreation); - + _controllers.erase(_idConnectionInCreation); + std::map::iterator it; for(it = _controllers.begin(); it != _controllers.end(); ++it) { @@ -756,28 +902,75 @@ namespace bbtk desc->SetActive(true); desc->getView()->setState(NOTHING_HAPPENS); desc->getModel()->notifyObservers(_idManager); - } - } + } // for + }// if + } + + + //========================================================================= - - for (int i = 0; i < _selectedObjects.size(); i++) + bool wxVtkSceneManager::OnRightButtonUp() + { + if(_worldState==INIT_CREATION_CONTOUR) { - int id = _selectedObjects[i]; - GObjectController* cont = _controllers[id]; - cont->SetActive(true); - cont->getView()->setState(NOTHING_HAPPENS); - cont->getModel()->notifyObservers(_idManager); + CancelConnection(); } - - _selectedObjects.clear(); - + UnSelectBlackBoxes(); return true; } //========================================================================= + GObjectController *wxVtkSceneManager::GetGBlackBoxControlerPointedByMouse() + { + GObjectController *result=NULL; + int X,Y; + wxVTKRenderWindowInteractor *wxVTKiren; + wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor(); + wxVTKiren->GetEventPosition(X,Y); + + std::map::iterator it; + + for(it = _controllers.begin(); it != _controllers.end() ; ++it) + { + GObjectController *cont = it->second; + int type = cont->getGObjectType(); + + if( cont->getView()->isPointInside(X,Y)==true ) + { + if(type==GBLACKBOX) + { + result=cont; + } // if type + } // if isPointInside + } // for it + return result; + } + + //========================================================================= + void wxVtkSceneManager::UnSelectBlackBoxes() + { + for (int i=0; i< (int)_selectedObjects.size(); i++) + { + int id = _selectedObjects[i]; + GObjectController* control = _controllers[id]; + control->getView()->setState(NOTHING_HAPPENS); + }// for _selectedObjects + _selectedObjects.clear(); + } + + //========================================================================= bool wxVtkSceneManager::OnLeftDClick() { + GObjectController *cont = GetGBlackBoxControlerPointedByMouse(); + if (cont!=NULL) + { + UnSelectBlackBoxes(); + _parent->editBlackBox( (GBlackBoxModel*)cont->getModel() ); + } + +/*EED Borrame + int X,Y; wxVTKRenderWindowInteractor *wxVTKiren; wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor(); @@ -791,12 +984,12 @@ namespace bbtk { GObjectController *cont = it->second; int type = cont->getGObjectType(); - + if(cont->getView()->isPointInside(X,Y)) { if(type==GBLACKBOX) { - for (int i=0; i<_selectedObjects.size(); i++) + for (int i=0; i< (int)_selectedObjects.size(); i++) { int id = _selectedObjects[i]; GObjectController* control = _controllers[id]; @@ -807,7 +1000,7 @@ namespace bbtk GBlackBoxModel *bbmodel = (GBlackBoxModel*)cont->getModel(); _parent->editBlackBox(bbmodel); } - clickOnObject = true; + clickOnObject = true; } } @@ -815,16 +1008,16 @@ namespace bbtk { //_parent->editDiagramParameters(this); } - +*/ return true; } - + //========================================================================= bool wxVtkSceneManager::OnChar() - { + { char keyCode = _vtkInteractorStyleBaseView->GetInteractor()-> GetKeyCode(); - + // KeyCode 127 : Delete Key // KeyCode 8 : Backspace Key if(keyCode == 8 || keyCode == 127) @@ -833,7 +1026,7 @@ namespace bbtk { for(int i=0;i<(int)_selectedObjects.size();i++) { - int id = _selectedObjects[i]; + int id = _selectedObjects[i]; std::map::iterator it; it = _controllers.find(id); if (it!=_controllers.end()) @@ -852,7 +1045,7 @@ namespace bbtk void wxVtkSceneManager::AddControlerToBeRemove(std::vector *controllersToRemove, int id) { - + int i; bool ok=true; for(i=0 ; i < (int)controllersToRemove->size() ; i++ ) @@ -862,16 +1055,16 @@ namespace bbtk ok=false; } } - + if (ok==true) { controllersToRemove->push_back( id ); } - + } - + //========================================================================= - + void wxVtkSceneManager::deleteObject(int id) { GObjectController *control = _controllers[id]; @@ -881,7 +1074,7 @@ namespace bbtk { GBoxModel *bbmod = (GBoxModel*)control->getModel(); std::vector inputs = bbmod->getInputPorts(); - + bool boxConnected = false; // Add box input controllers to be removed @@ -930,12 +1123,12 @@ namespace bbtk AddControlerToBeRemove( &controllersToRemove, bbmod->getObjectId() ); } else if(control->getGObjectType()==GCONNECTOR) - { + { GConnectorModel *conMod = (GConnectorModel*)control->getModel(); AddControlerToBeRemove( &controllersToRemove, conMod->getObjectId() ); } - + std::map::iterator it; for(int i = 0;i<(int)controllersToRemove.size();i++) @@ -946,7 +1139,7 @@ namespace bbtk if(cont!=NULL) { cont->removeFromScene(); - unregisterController((InteractorStyleMaracas*)cont); + unregisterController((InteractorStyleMaracas*)cont); _controllers.erase(it); }//if }// for @@ -966,9 +1159,32 @@ namespace bbtk _parent->updateStatusBar(textStatus); } + + //========================================================================= + std::string wxVtkSceneManager::LineNumber(bool withLineNumber, int &value) + { + std::string result=""; + if (withLineNumber==true) + { + value++; + stringstream StrStream; + StrStream << value; + std::string strValue=StrStream.str(); + if (value<10) + { + result+=" "; + }else if (value<100) + { + result+=" "; + } + + result+=strValue+": "; + } + return result; + } //========================================================================= - std::string wxVtkSceneManager::getDiagramBBS() + std::string wxVtkSceneManager::getDiagramBBS(bool wln) { bool existsExec=false; @@ -987,10 +1203,10 @@ namespace bbtk if(type==GBLACKBOX) { GBlackBoxModel *mod = (GBlackBoxModel*)desc->getModel(); - + std::string pkg = mod->getBBTKPackage(); bool existsPkg = false; - for(int t = 0;t inputs = model->getInputPorts(); - for(int j = 0; jisValueSet()) { - script+="set "; + script+=LineNumber(wln,lnNmbr); + script+=" set "; script+=model->getBBTKName(); script+="."; script+=inputPort->getBBTKName(); @@ -1061,10 +1285,17 @@ namespace bbtk } } + script+=LineNumber(wln,lnNmbr); + script+="\n"; + } - for(i = 0; igetModel(); - + std::string pkg = mod->getBBTKPackage(); bool existsPkg = false; - for(int t = 0;t inputs = model->getInputPorts(); - for(int j = 0; jisValueSet()) { - script+="set "; + script+=" set "; script+=model->getBBTKName(); script+="."; script+=inputPort->getBBTKName(); @@ -1204,6 +1441,7 @@ namespace bbtk script+="\n"; } } + script+="\n"; } @@ -1211,8 +1449,9 @@ namespace bbtk std::string complexInputs=""; std::string complexOutputs=""; + script+="\n"; - for(i = 0; i::iterator it; for(it = _controllers.begin(); it != _controllers.end(); ++it) { - GObjectController *cont = it->second; + GObjectController *cont = it->second; cont->removeFromScene(); unregisterController((InteractorStyleMaracas*)cont); } _selectedObjects.clear(); - _controllers.clear(); + _controllers.clear(); refreshScene(); } //========================================================================= + + void wxVtkSceneManager::refresh() + { + _baseView->Refresh(); + } + //========================================================================= + void wxVtkSceneManager::refreshScene() { _baseView->RefreshView(); } //========================================================================= - + void wxVtkSceneManager::centerView() { double temp[3]; @@ -1354,7 +1602,7 @@ namespace bbtk sprintf (buffer, "%d", insize); content+=buffer; content+="\n"; - + for(int i = 0;i> numInputs; - + for(int i = 0;igetModel(); - cbmod->setInicPoint(xIn,yIn,zIn); - cbmod->notifyObservers(_idManager); + configGComBoxInputOutputPort(true, inputPortName,xIn,yIn,zIn); + + } // for input complex box @@ -1511,11 +1764,11 @@ namespace bbtk strcpy( outputs, line.c_str() ); result = strtok( outputs, delims ); result = strtok( NULL, delims ); - + int numOutputs; std::istringstream outps(result); outps >> numOutputs; - + for(int i = 0;igetModel(); - cbmod->setInicPoint(xIn,yIn,zIn); - cbmod->notifyObservers(_idManager); + configGComBoxInputOutputPort(false, outputPortName,xIn,yIn,zIn); + } // for output complex box } // complex box @@ -1559,11 +1809,11 @@ namespace bbtk strcpy( boxes, line.c_str() ); result = strtok( boxes, delims ); result = strtok( NULL, delims ); - + int numBoxes; std::istringstream is(result); is >> numBoxes; - + for(int i = 0;i> yIn; std::istringstream zSt(zInic); zSt >> zIn; - + //---------- getline(inputStream,line);//xEnd:yEnd:zEnd strcpy( coord, line.c_str() ); @@ -1622,22 +1872,19 @@ namespace bbtk std::istringstream zEt(zEnd); zEt >> zEn; - int idBox = createGBlackBox(0,0,package,type); - GObjectController *cont = _controllers[idBox]; - GBlackBoxModel *bbmod = (GBlackBoxModel*)cont->getModel(); - bbmod->setBBTKName(name); - bbmod->setInicPoint(xIn,yIn,zIn); - bbmod->setFinalPoint(xEn,yEn,zEn); - + bool boxExecutable=false; if(isExec=="TRUE") { - bbmod->setExecutable(true); - } - else if(isExec=="FALSE") - { - bbmod->setExecutable(false); + boxExecutable= true; } - + + int idBox = createGBlackBox(xIn,yIn,package,type); + configGBlackBox(idBox, xIn,yIn,zIn,name, boxExecutable,xEn,yEn,zEn); + + GObjectController *cont = _controllers[idBox]; + GBlackBoxModel *bbmod = (GBlackBoxModel*)cont->getModel(); + + //---------- getline(inputStream,line);//PORT o FIN_BOX std::string port=line.substr(0,4); @@ -1651,14 +1898,14 @@ namespace bbtk result = strtok( NULL, delims );//value std::string value(result); - bbmod->setValueToInput(name,value); + bbmod->setValueToInput(name,value); getline(inputStream,line);//PORT o FIN_BOX port=line.substr(0,4); - } // while + } // while - bbmod->notifyObservers(_idManager); - } // boxes +//EED bbmod->notifyObservers(_idManager); + } // for boxes /// CONNECTIONS //---------- @@ -1667,11 +1914,11 @@ namespace bbtk strcpy( conns, line.c_str() ); result = strtok( conns, delims ); result = strtok( NULL, delims ); - + int numConns; std::istringstream isCons(result); isCons >> numConns; - + for(int i = 0;i lstB = getBlackBoxes(); + int idCon = configGConnetion(nameStartBox, nameStartPort, nameEndBox, nameEndPort); - GPortModel *startP=NULL; - GPortModel *endP=NULL; - for(int j = 0;jgetModel(); - if(_controllers[idB]->getModel()->getBBTKName()==nameStartBox) - { - startP = bbMod->getOutputPort(nameStartPort); - } - else if(_controllers[idB]->getModel()->getBBTKName()==nameEndBox) + //Readding control points of the manualContour + //ups1 + GConnectorController *tempp = (GConnectorController*)_controllers[idCon]; + GConnectorModel *conMod = (GConnectorModel*)tempp->getModel(); + vtkGConnectorView *conView= (vtkGConnectorView*)tempp->getView(); + getline(inputStream,line); //NumberOfControlPoints:## + strcpy( conns, line.c_str() ); + result = strtok( conns, delims ); + result = strtok( NULL, delims ); + + int numberOfControlPoints; + std::istringstream isCons(result); + isCons >> numberOfControlPoints; + + for (int ii=0;iigetInputPort(nameEndPort); + getline(inputStream,line); //XX:YY:ZZ + char connec[200]; + strcpy( connec, line.c_str() ); + + double px,py,pz; + result = strtok( connec, delims ); + std::istringstream isPointX(result); + isPointX >> px; + result = strtok( NULL, delims ); + std::istringstream isPointY(result); + isPointY >> py; + result = strtok( NULL, delims ); + std::istringstream isPointZ(result); + isPointZ >> pz; + + conMod->getManualContourModel()->InsertPoint_id(ii+1,px,py,pz); + conView->getManualContourView()->AddPoint(); } - } // for + }// version !=1.0 + + } // for numConns + + } // start + + refresh(); + } + //========================================================================= + + + + //========================================================================= + void wxVtkSceneManager::configGComBoxInputOutputPort(bool inputoutput, std::string portName, double xIn, double yIn,double zIn) + { + int idPort; + if (inputoutput==true) + { + idPort = createGComplexBoxInputPort(portName); + } else { + idPort = createGComplexBoxOutputPort(portName); + } + GObjectController *cont = _controllers[idPort]; + GBoxModel *cbmod = (GBoxModel*)cont->getModel(); + cbmod->setInicPoint(xIn,yIn,zIn); + cbmod->notifyObservers(_idManager); + } + //========================================================================= + - if(_isComplexBox) + //========================================================================= + GBoxModel* wxVtkSceneManager::findGBox(std::string boxname) + { + int j; + int idB; + GBoxModel *bMod; + GBoxModel *boxModel = NULL; + std::vector lstB = getBlackBoxes(); + for(j = 0;j<(int)lstB.size();j++) + { + idB = lstB[j]; + bMod = (GBoxModel*)_controllers[idB]->getModel(); + if(_controllers[idB]->getModel()->getBBTKName()==boxname) + { + boxModel = bMod; + } + } // for + + if((_isComplexBox) && (boxModel==NULL)) + { + std::vector lstInputs = getComplexInputPorts(); + for(j = 0;j<(int)lstInputs.size();j++) + { + idB = lstInputs[j]; + bMod = (GBoxModel*)_controllers[idB]->getModel(); + if(_controllers[idB]->getModel()->getBBTKName()==boxname) { - if(startP==NULL) - { - std::vector lstInputs = getComplexInputPorts(); - for(int j = 0;jgetModel(); - if(_controllers[idB]->getModel()->getBBTKName()==nameStartBox) - { - startP = cbMod->getOutputPort(nameStartPort); - } - } - } + boxModel = bMod; + } + } // for - if(endP==NULL) - { - std::vector lstOutputs = getComplexOutputPorts(); - for(int j = 0;jgetModel(); - if(_controllers[idB]->getModel()->getBBTKName()==nameEndBox) - { - endP = cbMod->getInputPort(nameEndPort); - } - } - } - } // complex box - - int idCon = createGConnector(startP); - _worldState = NOTHING_HAPPENS; - GConnectorController *tempp = (GConnectorController*)_controllers[idCon]; - - GConnectorModel *conMod = (GConnectorModel*)tempp->getModel(); - vtkGConnectorView *conView = (vtkGConnectorView*)tempp->getView(); - tempp->endContourCreation(); - conMod->setEndPort(endP); - conView->updateStartEndPoints(); + std::vector lstOutputs = getComplexOutputPorts(); + for(j = 0;j<(int)lstOutputs.size();j++) + { + int idB = lstOutputs[j]; + bMod = (GBoxModel*)_controllers[idB]->getModel(); + if(_controllers[idB]->getModel()->getBBTKName()==boxname) + { + boxModel = bMod; + } + } // for - } // for numConns - } // start + } // complex box + return boxModel; + } + + //========================================================================= + + + int wxVtkSceneManager::configGConnetion(std::string nameStartBox, std::string nameStartPort, std::string + nameEndBox, std::string nameEndPort) + { + + GBoxModel *boxModel; + GPortModel *startP = NULL; + GPortModel *endP = NULL; + + boxModel= findGBox(nameStartBox); + if (boxModel!=NULL) + { + startP = boxModel->getOutputPort(nameStartPort); + } + + boxModel= findGBox(nameEndBox); + if (boxModel!=NULL) + { + endP = boxModel->getInputPort(nameEndPort); + } + +//ups2 + int idCon = createGConnector(startP); + _worldState = NOTHING_HAPPENS; + GConnectorController *tempp = (GConnectorController*)_controllers[idCon]; + + GConnectorModel *conMod = (GConnectorModel*)tempp->getModel(); + vtkGConnectorView *conView = (vtkGConnectorView*)tempp->getView(); + tempp->endContourCreation(); + conMod->setEndPort(endP); + conView->updateStartEndPoints(); + return idCon; } //========================================================================= @@ -1761,7 +2095,7 @@ namespace bbtk std::map::iterator it; for(it = _controllers.begin(); it != _controllers.end(); ++it) { - GObjectController *cont = it->second; + GObjectController *cont = it->second; if(cont->getModel()->getBBTKName()==boxname) { ok=true; @@ -1778,7 +2112,7 @@ namespace bbtk std::map::iterator it; for(it = _controllers.begin(); it != _controllers.end(); ++it) { - GObjectController *cont = it->second; + GObjectController *cont = it->second; if(cont->getGObjectType()==GBLACKBOX) { vect.push_back(cont->getId()); @@ -1795,7 +2129,7 @@ namespace bbtk std::map::iterator it; for(it = _controllers.begin(); it != _controllers.end(); ++it) { - GObjectController *cont = it->second; + GObjectController *cont = it->second; if(cont->getGObjectType()==GCOMPLEXINPUTPORT) { vect.push_back(cont->getId()); @@ -1812,7 +2146,7 @@ namespace bbtk std::map::iterator it; for(it = _controllers.begin(); it != _controllers.end(); ++it) { - GObjectController *cont = it->second; + GObjectController *cont = it->second; if(cont->getGObjectType()==GCOMPLEXOUTPUTPORT) { vect.push_back(cont->getId()); @@ -1829,7 +2163,7 @@ namespace bbtk std::map::iterator it; for(it = _controllers.begin(); it != _controllers.end(); ++it) { - GObjectController *cont = it->second; + GObjectController *cont = it->second; if(cont->getGObjectType()==GCONNECTOR) { vect.push_back(cont->getId()); @@ -1839,7 +2173,7 @@ namespace bbtk } //========================================================================= - + bool wxVtkSceneManager::isComplexBox() { return _isComplexBox; @@ -1851,7 +2185,7 @@ namespace bbtk { _isComplexBox=val; } - + //========================================================================= int wxVtkSceneManager::addObjectController(GObjectController* objController) @@ -1859,7 +2193,7 @@ namespace bbtk //Register the controller of the new object registerController((InteractorStyleMaracas*) objController); - //Add the object to the objects list + //Add the object to the objects list int newId = _contLastId;//_controllers.size(); objController->setId(newId); _controllers[newId] = objController; @@ -1883,7 +2217,7 @@ namespace bbtk std::map::iterator it; for(it = _controllers.begin(); it != _controllers.end(); ++it) { - GObjectController *cont = it->second; + GObjectController *cont = it->second; if(cont->getGObjectType()==GBLACKBOX && cont->getView()->getState()==SELECTED) { mapSelected[cont->getId()]=cont; @@ -1893,7 +2227,7 @@ namespace bbtk std::map::iterator it2; for(it2 = _controllers.begin(); it2 != _controllers.end(); ++it2) { - GObjectController *cont = it2->second; + GObjectController *cont = it2->second; if(cont->getGObjectType()==GCONNECTOR) { GConnectorModel* cmod = (GConnectorModel*)cont->getModel(); @@ -1902,13 +2236,12 @@ namespace bbtk std::map::iterator iterOBJ1 = mapSelected.find(startPortParentBox->getObjectId()); std::map::iterator iterOBJ2 = mapSelected.find(endPortParentBox->getObjectId()); - + if(iterOBJ1 != mapSelected.end() && iterOBJ2 != mapSelected.end()) - { + { int ID = cont->getId(); mapSelected[ID]=cont; } - } } return mapSelected; @@ -1918,11 +2251,11 @@ namespace bbtk void wxVtkSceneManager::addObjects(std::map objectsMap) { - + std::map oldIdNewIdBoxes; std::vector connections; - std::map::iterator it; + std::map::iterator it; for(it = objectsMap.begin(); it != objectsMap.end(); ++it) { GObjectController *cont = it->second; @@ -1938,9 +2271,9 @@ namespace bbtk int idcB = copyBox->getObjectId(); oldIdNewIdBoxes[idcB]=idBox; - cont = _controllers[idBox]; + cont = _controllers[idBox]; GBlackBoxModel* newbox = (GBlackBoxModel*)cont->getModel(); - newbox->setInicPoint(xInic,yInic,zInic); + newbox->setInicPoint(xInic,yInic,zInic); int num = newbox->getNumInputPorts(); for(int j=0;jgetId(); connections.push_back(idCon); } - + } - - for(int i = 0 ;igetModel(); - + GPortModel* startPort = connectModel->getStartPort(); int startPortIndex = startPort->getPosInBox(); GPortModel* endPort = connectModel->getEndPort(); - int endPortIndex = endPort->getPosInBox(); + int endPortIndex = endPort->getPosInBox(); GBlackBoxModel* startPortParentBox = (GBlackBoxModel*)startPort->getParentBox(); GBlackBoxModel* endPortParentBox = (GBlackBoxModel*)endPort->getParentBox(); - + int idNewStartBox = oldIdNewIdBoxes[startPortParentBox->getObjectId()]; int idNewEndBox = oldIdNewIdBoxes[endPortParentBox->getObjectId()]; @@ -1979,17 +2312,17 @@ namespace bbtk GPortModel* newStartPort = newStartBox->getOutputPort(startPortIndex); GPortModel* newEndPort = newEndBox->getInputPort(endPortIndex); - // Creates connection + // Creates connection int idCon = createGConnector(newStartPort); - GConnectorController *tempp = (GConnectorController*)_controllers[idCon]; + GConnectorController *tempp = (GConnectorController*)_controllers[idCon]; GConnectorModel *conMod = (GConnectorModel*)tempp->getModel(); vtkGConnectorView *conView = (vtkGConnectorView*)tempp->getView(); tempp->endContourCreation(); - conMod->setEndPort(newEndPort); + conMod->setEndPort(newEndPort); conView->updateStartEndPoints(); } - std::map::iterator itIds; + std::map::iterator itIds; for(itIds = oldIdNewIdBoxes.begin(); itIds != oldIdNewIdBoxes.end(); ++itIds) { int idOld = itIds->first; @@ -2003,11 +2336,11 @@ namespace bbtk std::vector newInputConnections = newBox->getConnectedInputs(); std::vector newOutputConnections = newBox->getConnectedOutputs(); - for(int k = 0; kgetInputPort(posInBox); std::string inputPortName = inputPort->getBBTKName(); @@ -2029,28 +2362,28 @@ namespace bbtk yIn+=20; cbmod->setInicPoint(xIn,yIn,zIn); cbmod->notifyObservers(_idManager); - + GPortModel* inputPortEnd = newBox->getInputPort(posInBox); - // Creates connection + // Creates connection int idCon = createGConnector(cbmod->getOutputPort(0)); - GConnectorController *tempp = (GConnectorController*)_controllers[idCon]; + GConnectorController *tempp = (GConnectorController*)_controllers[idCon]; GConnectorModel *conMod = (GConnectorModel*)tempp->getModel(); vtkGConnectorView *conView = (vtkGConnectorView*)tempp->getView(); tempp->endContourCreation(); - conMod->setEndPort(inputPortEnd); + conMod->setEndPort(inputPortEnd); conView->updateStartEndPoints(); } - + } - - for(int k = 0; kgetOutputPort(posInBox); std::string outputPortName = outputPort->getBBTKName(); @@ -2072,20 +2405,20 @@ namespace bbtk yIn-=20; cbmod->setInicPoint(xIn,yIn,zIn); cbmod->notifyObservers(_idManager); - + GPortModel* outputPortEnd = newBox->getOutputPort(posInBox); - // Creates connection + // Creates connection int idCon = createGConnector(outputPortEnd); - GConnectorController *tempp = (GConnectorController*)_controllers[idCon]; + GConnectorController *tempp = (GConnectorController*)_controllers[idCon]; GConnectorModel *conMod = (GConnectorModel*)tempp->getModel(); vtkGConnectorView *conView = (vtkGConnectorView*)tempp->getView(); tempp->endContourCreation(); - conMod->setEndPort(cbmod->getInputPort(0)); + conMod->setEndPort(cbmod->getInputPort(0)); conView->updateStartEndPoints(); } - + } } @@ -2093,7 +2426,7 @@ namespace bbtk } - //========================================================================= + //========================================================================= } // EO namespace bbtk