X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FEditorGraphicBBS%2FbbsWxGUIEditorGraphic%2FwxVtkSceneManager.cxx;h=dc1ad5a483bb4dc8c2fe8b3fb565e58dae90e615;hb=7b751cdb5f4ee2fd8c86a4f257f30f401de0f78c;hp=c4f2c5d4c9432fe5edf5a42b42548c397f9ade89;hpb=62f479996c001d53a10c45e3ad6a3651b8007668;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx index c4f2c5d..dc1ad5a 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx @@ -54,12 +54,15 @@ namespace bbtk if( _baseView!=NULL ) { //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); configureBaseView(); _worldState=NOTHING_HAPPENS; registerController(this); } + _idConnectionInCreation=-1; + _contLastId=0; } @@ -106,6 +109,7 @@ namespace bbtk int wxVtkSceneManager::createGBlackBox(int x, int y, std::string packageName, std::string boxType) { + _worldState = NOTHING_HAPPENS; int windowWidth=_baseView->GetRenWin()->GetSize()[0]; int windowHeight=_baseView->GetRenWin()->GetSize()[1]; @@ -487,9 +491,11 @@ namespace bbtk // The last one is the controller of the connector - for(int i=0;i<_controllers.size();i++) + std::map::iterator it2; + + for(it2 = _controllers.begin(); it2 != _controllers.end(); ++it2) { - GObjectController* cont = _controllers[i]; + GObjectController *cont = it2->second; if(cont->getGObjectType() == GPORT ) { GPortModel* port = (GPortModel*)cont->getModel(); @@ -514,14 +520,14 @@ namespace bbtk _selectedObjects.clear(); - createGConnector(startOutputPort); + _idConnectionInCreation=createGConnector(startOutputPort); } else if(command == FIN_CREATION_CONTOUR && _worldState == INIT_CREATION_CONTOUR) { _worldState = NOTHING_HAPPENS; - int id = _controllers.size()-1; - GObjectController* cont = _controllers[id]; + //int id = _controllers.size()-1; + GObjectController* cont = _controllers[_idConnectionInCreation]; GConnectorModel* modelContour = (GConnectorModel*)cont->getModel(); GObjectController* finPort = _controllers[idController]; @@ -535,9 +541,11 @@ namespace bbtk manualConnectorContourView* connView = (manualConnectorContourView*)manCont->GetManualViewBaseContour(); connView->Refresh(); - for(int i=0;i<_controllers.size();i++) + std::map::iterator it2; + + for(it2 = _controllers.begin(); it2 != _controllers.end(); ++it2) { - GObjectController* cont = _controllers[i]; + GObjectController *cont = it2->second; if(cont->getView()!=NULL) { cont->getView()->setState(NOTHING_HAPPENS); @@ -640,11 +648,11 @@ namespace bbtk if(isOverPort==false) { _worldState=NOTHING_HAPPENS; - int lastId = _controllers.size()-1; - GConnectorController *connector = (GConnectorController*)_controllers[lastId]; + //int lastId = _controllers.size()-1; + GConnectorController *connector = (GConnectorController*)_controllers[_controllers.size()-1]; connector->removeFromScene(); unregisterController(connector); - _controllers.erase(lastId); + _controllers.erase(_controllers.size()-1); for(it = _controllers.begin(); it != _controllers.end(); ++it) { @@ -701,11 +709,11 @@ namespace bbtk if(_worldState==INIT_CREATION_CONTOUR) { _worldState=NOTHING_HAPPENS; - int lastId = _controllers.size()-1; - GConnectorController *connector = (GConnectorController*)_controllers[lastId]; + //int lastId = _controllers.size()-1; + GConnectorController *connector = (GConnectorController*)_controllers[_idConnectionInCreation]; connector->removeFromScene(); unregisterController(connector); - _controllers.erase(lastId); + _controllers.erase(_idConnectionInCreation); std::map::iterator it; for(it = _controllers.begin(); it != _controllers.end(); ++it) @@ -869,10 +877,13 @@ namespace bbtk for(int i = 0;iremoveFromScene(); - unregisterController((InteractorStyleMaracas*)cont); - _controllers.erase(id); + GObjectController *cont = _controllers[id]; + if(cont!=NULL) + { + cont->removeFromScene(); + unregisterController((InteractorStyleMaracas*)cont); + _controllers.erase(id); + } } @@ -1759,7 +1770,7 @@ namespace bbtk { _isComplexBox=val; } - + //========================================================================= int wxVtkSceneManager::addObjectController(GObjectController* objController) @@ -1768,9 +1779,10 @@ namespace bbtk registerController((InteractorStyleMaracas*) objController); //Add the object to the objects list - int newId = _controllers.size(); + int newId = _contLastId;//_controllers.size(); objController->setId(newId); _controllers[newId] = objController; + _contLastId++; return newId; }