X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FEditorGraphicBBS%2FbbsWxGUIEditorGraphic%2FwxVtkSceneManager.cxx;h=b88f527cad467418da510f634b114e5d0e33699f;hb=1a1d60ee9a094a5adfbe674e5d81a8fa846c099f;hp=b27c724c5da02616bba5127a61f1fb27a31cb2fe;hpb=a50e41251cd0693e7fed99110e1e6cf901bcec82;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx index b27c724..b88f527 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx @@ -35,14 +35,11 @@ #include "wxVtkSceneManager.h" - #include #include - namespace bbtk { -cvs //========================================================================= wxVtkSceneManager::wxVtkSceneManager(wxGEditorTabPanel *parent, wxVtk3DBaseView *baseView, int idManager) { @@ -62,13 +59,11 @@ wxVtkSceneManager::wxVtkSceneManager(wxGEditorTabPanel *parent, 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); - - #ifdef __APPLE__ - + "RaC-EED 21-06-2010 %p wxVtkSceneManager::wxVtkSceneManager If you comment this line, the drag and drop functionnality is not initialized.\n", + this); +//#ifdef __APPLE__ _baseView->GetWxVTKRenderWindowInteractor()->SetDropTarget((wxDropTarget*)parent); - - #endif +//#endif configureBaseView(); _worldState = NOTHING_HAPPENS; @@ -92,9 +87,10 @@ void wxVtkSceneManager::disconnectDrop() { wxVtkSceneManager::~wxVtkSceneManager() { //FCY memory leaks - printf("EED %p ~wxVtkSceneManager()\n", this); + printf("EED %p ~wxVtkSceneManager() START\n", this); disconnectDrop(); delete _baseView; + printf("EED %p ~wxVtkSceneManager() END\n", this); } //========================================================================= @@ -114,15 +110,16 @@ void wxVtkSceneManager::configureBaseView() { interactorstylebaseview->SetwxVtkBaseView(_baseView); _baseView->GetRenderer()->GetActiveCamera()->ParallelProjectionOn(); - _baseView->GetRenderer()->ResetCamera(-100, 100, -100, 100, 800, 1100); + _baseView->GetRenderer()->ResetCamera(-100, 100, -100, 100, -1000, 1000); + _baseView->GetRenderer()->GetActiveCamera()->Zoom(10); + _baseView->GetRenderer()->SetBackground(0.9, 0.9, 0.9); _baseView->GetRenderer()->GradientBackgroundOn(); - _baseView->Refresh(); // Actos Port_Text _textActor = vtkTextActor3D::New(); - _textActor->SetPosition(-9999, -9999, 900); + _textActor->SetPosition(-9999, -9999, GPOSITION_Z); _textActor->SetInput(""); _textActor->GetTextProperty()->SetFontSize(60); _textActor->GetTextProperty()->BoldOn(); @@ -136,7 +133,7 @@ void wxVtkSceneManager::configureBaseView() { //------------ double xInic = 0; double yInic = 0; - double zInic = 900; + double zInic = GPOSITION_Z; vtkPolygon *aPolygon = vtkPolygon::New(); _fillObjectActor = vtkActor::New(); @@ -257,7 +254,9 @@ int wxVtkSceneManager::createGBlackBox(int x, int y, std::string packageName, BlackBoxDescriptor::Pointer descriptor = GObjectsMVCFactory::getInstance()->getBlackBoxDescriptor( packageName, boxType); - + 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 @@ -265,7 +264,7 @@ int wxVtkSceneManager::createGBlackBox(int x, int y, std::string packageName, double yy = windowHeight - y; //z value is not important yet, because it is only used a parallel projection - double zz = 900; + double zz = GPOSITION_Z; _baseView->TransCoordScreenToWorld(xx, yy, zz); model->setInicPoint(xx, yy, zz); @@ -353,8 +352,7 @@ int wxVtkSceneManager::createGComplexBoxInputPort(std::string inputName) { double yy = windowHeight - 5; //z value is not important yet, because it is only used a parallel projection - double zz = 900; - printf("EED wxVtkSceneManager::createGComplexBoxInputPort 900-450\n"); + double zz = GPOSITION_Z; _baseView->TransCoordScreenToWorld(xx, yy, zz); model->setInicPoint(xx, yy, zz); @@ -368,7 +366,7 @@ int wxVtkSceneManager::createGComplexBoxInputPort(std::string inputName) { //create the output port GPortController* portController = createGPort(GOUTPUTPORT, inputName, - "ComplexInputPort", 0, model); + "ComplexOutputPortType","ComplexOutputPortDescriopton", 0, model); model->addOutputPort((GPortModel*) portController->getModel()); //Associates the view with the correspondent renderer and the model. @@ -412,9 +410,7 @@ int wxVtkSceneManager::createGComplexBoxOutputPort(std::string outputName) { double yy = windowHeight - 5; //z value is not important yet, because it is only used a parallel projection - double zz = 900; - - printf("EED wxVtkSceneManager::createGComplexBoxOutputPort 900-450\n"); + double zz = GPOSITION_Z; _baseView->TransCoordScreenToWorld(xx, yy, zz); model->setInicPoint(xx, yy, zz); @@ -428,7 +424,7 @@ int wxVtkSceneManager::createGComplexBoxOutputPort(std::string outputName) { //create the output port GPortController* portController = createGPort(GINPUTPORT, outputName, - "ComplexInputPort", 0, model); + "ComplexInputPort","ComplexInputPortDescription", 0, model); model->addInputPort((GPortModel*) portController->getModel()); //Associates the view with the correspondent renderer and the model. @@ -452,7 +448,7 @@ int wxVtkSceneManager::createGComplexBoxOutputPort(std::string outputName) { int wxVtkSceneManager::createGInputPort(int portType, int posinBox, GBoxModel *blackBox, BlackBoxInputDescriptor *desc) { GPortController* portController = createGPort(portType, desc->GetName(), - desc->GetTypeName(), posinBox, blackBox); + desc->GetTypeName(), desc->GetDescription(), posinBox, blackBox); blackBox->addInputPort((GPortModel*) portController->getModel()); return portController->getId(); } @@ -462,7 +458,7 @@ int wxVtkSceneManager::createGInputPort(int portType, int posinBox, int wxVtkSceneManager::createGOutputPort(int portType, int posinBox, GBoxModel *blackBox, BlackBoxOutputDescriptor *desc) { GPortController* portController = createGPort(portType, desc->GetName(), - desc->GetTypeName(), posinBox, blackBox); + desc->GetTypeName(),desc->GetDescription(), posinBox, blackBox); blackBox->addOutputPort((GPortModel*) portController->getModel()); return portController->getId(); } @@ -470,7 +466,7 @@ int wxVtkSceneManager::createGOutputPort(int portType, int posinBox, //========================================================================= GPortController* wxVtkSceneManager::createGPort(int portType, - std::string bbtkName, std::string bbtkType, int posInBox, + std::string bbtkName, std::string bbtkType, std::string bbtkDescription, int posInBox, GBoxModel *blackBox) { int type = GPORT; @@ -488,6 +484,7 @@ GPortController* wxVtkSceneManager::createGPort(int portType, model->setBBTKType(bbtkType); model->setBBTKName(bbtkName); + model->setBBTKDescription(bbtkDescription); model->addObserver(view); model->addObserver(this); @@ -513,15 +510,12 @@ GPortController* wxVtkSceneManager::createGPort(int portType, int wxVtkSceneManager::createGConnector(GPortModel* startPort) { int type = GCONNECTOR; - manualConnectorContourController* manContourControl = - new manualConnectorContourController(); - manualConnectorContourView* manContourView = - new manualConnectorContourView(); - manualContourModel* manContourModel = new manualContourModel(); - - GConnectorController* connectorcontroller = new GConnectorController(); - GConnectorModel* connectorModel = new GConnectorModel(); - vtkGConnectorView* connectorView = new vtkGConnectorView(); + manualConnectorContourController *manContourControl = new manualConnectorContourController(); + manualConnectorContourView *manContourView = new manualConnectorContourView(); + manualContourModel *manContourModel = new manualContourModel(); + GConnectorController *connectorcontroller = new GConnectorController(); + GConnectorModel *connectorModel = new GConnectorModel(); + vtkGConnectorView *connectorView = new vtkGConnectorView(); connectorModel->setGObjectType(type); manContourModel->SetCloseContour(false); @@ -530,33 +524,29 @@ int wxVtkSceneManager::createGConnector(GPortModel* startPort) { manContourView->SetModel(manContourModel); manContourView->SetWxVtkBaseView(_baseView); manContourView->SetRange(0.5); - manContourView->SetZ(900); + manContourView->SetZ(GPOSITION_Z); manContourView->SetColorNormalContour(0, 0, 1); manContourView->SetColorEditContour(0.5, 0.5, 0.5); manContourView->SetColorSelectContour(1, 0.8, 0); - - - /** + + /** * JGRR AND CM - * Width increased from 2 to 5, it simplifies line handling and spline control :P + * Width increased from 2 to 3, it simplifies line handling and spline control :P * @param WidthLine - */ - - manContourView->SetWidthLine( 5 ) ; - - + */ + manContourView->SetWidthLine( 3 ) ; manContourView->SetShowText(false); manContourControl->SetModelView(manContourModel, manContourView); manContourControl->CreateNewManualContour(); - manContourView->RefreshContour(); double x, y, z; connectorModel->getInicPoint(x, y, z); - + + manContourControl->SetState(1); manContourModel->SetCloseContour(false); @@ -568,8 +558,7 @@ int wxVtkSceneManager::createGConnector(GPortModel* startPort) { int bak = manContourControl->GetNumberOfPointsManualContour() - 1; manContourControl->_bakIdPoint = bak; - manContourView->Refresh(); - + manContourControl->SetMoving(false); connectorcontroller->setModelAndView(connectorModel, connectorView); @@ -585,6 +574,8 @@ int wxVtkSceneManager::createGConnector(GPortModel* startPort) { connectorModel->addObserver(connectorView); connectorModel->addObserver(this); +// manContourView->Refresh(); + return newId; } @@ -637,35 +628,17 @@ void wxVtkSceneManager::update(int idController, int command) { if (command != NO_COMMAND) { if (command == ADD_TO_SELECTED) { - //EEDBorrame GObjectController* cont = _controllers[idController]; - if (GetIndexInSelected(idController) == -1) { _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) { - - - // JGRR & CM WH + + // JGRR & CM WH typedef std::map::iterator TIterator ; TIterator iter ; TIterator iter_end ; @@ -695,11 +668,10 @@ void wxVtkSceneManager::update(int idController, int command) { } } - // EO JGRR & CM WH - - - _worldState = INIT_CREATION_CONTOUR; - GObjectController* cont = _controllers[idController]; + // EO JGRR & CM WH + + _worldState = INIT_CREATION_CONTOUR; + GObjectController* cont = _controllers[idController]; GPortModel* startOutputPort = (GPortModel*) cont->getModel(); // The last one is the controller of the connector @@ -724,53 +696,46 @@ void wxVtkSceneManager::update(int idController, int command) { } _selectedObjects.clear(); _idConnectionInCreation = createGConnector(startOutputPort); - } else if (command == FIN_CREATION_CONTOUR && _worldState - == INIT_CREATION_CONTOUR) { + } else if (command == FIN_CREATION_CONTOUR && _worldState == INIT_CREATION_CONTOUR) { _worldState = NOTHING_HAPPENS; //int id = _controllers.size()-1; - GObjectController *cont = _controllers[_idConnectionInCreation]; - GConnectorModel *modelContour = (GConnectorModel*) cont->getModel(); - GObjectController *finPort = _controllers[idController]; + GObjectController *cont = _controllers[_idConnectionInCreation]; + GConnectorModel *modelContour = (GConnectorModel*) cont->getModel(); + GObjectController *finPort = _controllers[idController]; if (finPort->getGObjectType() == GPORT) { GPortModel* modelPort = (GPortModel*) finPort->getModel(); modelContour->setEndPort(modelPort); - - - // JGRR CM - typedef std::map::iterator TIterator ; - TIterator c_it = _controllers.begin( ) ; - TIterator iter_end = _controllers.end( ) ; - // Go through all componets - for ( c_it ; c_it != iter_end ; c_it++ ) { - GObjectController* obc = c_it->second ; - int obc_type = obc->getModel( )->getGObjectType( ) ; - int obc_state = obc->getView( )->getState( ) ; - // if the component is a port and the type is the same of that selected - if ( ( obc_type == GPORT ) && ( obc_state == POSSIBLE_CONNECTION )) { - // Return element to neutral state if not selected - obc->getView( )->setState( NOTHING_HAPPENS ) ; - } - if ( ( obc_type == GPORT ) && (obc_state == SELECTED_POSSIBLE_CONNECTION )) { - // Change element to connected state - obc->getView( )->setState( HIGHLIGHTED ) ; - - } - - } - // EO JGRR CM - - _parent->saveTempDiagram(); - } - manualConnectorContourController - * manCont = - ((GConnectorController*) cont)->getManualContourController(); - manualConnectorContourView - * connView = - (manualConnectorContourView*) manCont->GetManualViewBaseContour(); - connView->Refresh(); + // JGRR CM + typedef std::map::iterator TIterator; + TIterator c_it = _controllers.begin(); + TIterator iter_end = _controllers.end(); + // Go through all componets + for (c_it; c_it != iter_end; c_it++) { + GObjectController* obc = c_it->second; + int obc_type = obc->getModel()->getGObjectType(); + int obc_state = obc->getView()->getState(); + // if the component is a port and the type is the same of that selected + if ((obc_type == GPORT) && (obc_state == POSSIBLE_CONNECTION)) { + // Return element to neutral state if not selected + obc->getView()->setState(NOTHING_HAPPENS); + } + if ((obc_type == GPORT) && (obc_state == SELECTED_POSSIBLE_CONNECTION)) { + // Change element to connected state + obc->getView()->setState(HIGHLIGHTED); + + } + + } + // EO JGRR CM + + _parent->saveTempandUpdate("create connection"); + } + manualConnectorContourController *manCont = ((GConnectorController*) cont)->getManualContourController(); + manualConnectorContourView *connView = (manualConnectorContourView*) manCont->GetManualViewBaseContour(); + std::map::iterator it2; for (it2 = _controllers.begin(); it2 != _controllers.end(); ++it2) { @@ -781,21 +746,21 @@ void wxVtkSceneManager::update(int idController, int command) { } cont->SetActive(true); } + connView->Refresh(); } } - + } //========================================================================= bool wxVtkSceneManager::OnMouseMove() { int X, Y; - bool okStatusMessage = false; - bool okPortMessage = false; + bool okStatusMessage = false; + bool okPortMessage = false; wxVTKRenderWindowInteractor *wxVTKiren; - wxVTKiren - = _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor(); + wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor(); wxVTKiren->GetEventPosition(X, Y); if (_worldState == DRAG_OBJECTS) { @@ -822,17 +787,18 @@ bool wxVtkSceneManager::OnMouseMove() { _startDragging = false; - } else if (_worldState == NOTHING_HAPPENS || _worldState - == INIT_CREATION_CONTOUR) { + } 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(); + int type = desc->getGObjectType(); + int state = desc->getView()->getState(); desc->getModel()->getCenter(px, py, pz); - if (state == HIGHLIGHTED) { + // JGRR & CM + if ((state == HIGHLIGHTED) || (state == SELECTED_POSSIBLE_CONNECTION )) { + // EO JGRR & CM okStatusMessage = true; updateStatusBar(desc->getStatusText()); if (type == GBLACKBOX) { @@ -887,16 +853,15 @@ bool wxVtkSceneManager::OnLeftButtonDown() { if (portmod->getPortType() == GINPUTPORT && portView->getState() == HIGHLIGHTED) { isOverPort = true; - } // if - - // JGRR & CM - if ( portmod->getPortType( ) == GINPUTPORT && portView->getState( ) == SELECTED_POSSIBLE_CONNECTION ) { - isOverPort = true ; - portView->setState( HIGHLIGHTED); - } - // EO JGRR & CM - - } // if + } // if + // JGRR & CM + if ( portmod->getPortType( ) == GINPUTPORT && portView->getState( ) == SELECTED_POSSIBLE_CONNECTION ) { + isOverPort = true ; + portView->setState( HIGHLIGHTED); + } + // EO JGRR & CM + + } // if } // for if (isOverPort == false) { @@ -907,14 +872,12 @@ bool wxVtkSceneManager::OnLeftButtonDown() { } else { //_worldState - _worldState = DRAG_OBJECTS; - _startDragging = true; + _worldState = DRAG_OBJECTS; + _startDragging = true; - int shiftkey = - _vtkInteractorStyleBaseView->GetInteractor()->GetShiftKey(); - int ctrlkey = - _vtkInteractorStyleBaseView->GetInteractor()->GetControlKey(); - ctrlkey = ctrlkey + shiftkey; + int shiftkey = _vtkInteractorStyleBaseView->GetInteractor()->GetShiftKey(); + int ctrlkey = _vtkInteractorStyleBaseView->GetInteractor()->GetControlKey(); + ctrlkey = ctrlkey + shiftkey; GObjectController *cont = GetGBlackBoxControlerPointedByMouse(); @@ -1036,6 +999,7 @@ void wxVtkSceneManager::UnSelectBlackBoxes() { int id = _selectedObjects[i]; GObjectController* control = _controllers[id]; control->getView()->setState(NOTHING_HAPPENS); + control->getModel()->notifyObservers(_idManager); }// for _selectedObjects _selectedObjects.clear(); } @@ -1093,38 +1057,49 @@ bool wxVtkSceneManager::OnLeftDClick() { //========================================================================= -bool wxVtkSceneManager::OnChar() { - char keyCode = _vtkInteractorStyleBaseView->GetInteractor()-> GetKeyCode(); - int ctrlkey = _vtkInteractorStyleBaseView->GetInteractor()->GetControlKey(); +bool wxVtkSceneManager::OnChar() +{ + bool ok=false; + bool oktmp; + char keyCode = _vtkInteractorStyleBaseView->GetInteractor()-> GetKeyCode(); + int ctrlkey = _vtkInteractorStyleBaseView->GetInteractor()->GetControlKey(); // KeyCode 127 : Delete Key // KeyCode 8 : Backspace Key - if (keyCode == 8 || keyCode == 127) { - if (_selectedObjects.size() > 0) { - for (int i = 0; i < (int) _selectedObjects.size(); i++) { + if (keyCode == 8 || keyCode == 127) + { + for (int i = 0; i < (int) _selectedObjects.size(); i++) + { int id = _selectedObjects[i]; std::map::iterator it; it = _controllers.find(id); - if (it != _controllers.end()) { - deleteObject(id); - } + if (it != _controllers.end()) + { + oktmp = deleteObject(id); + ok = ok||oktmp; + } // if + }// for selected objects + if (ok) _selectedObjects.clear(); + _parent->saveTempandUpdate("delete object"); + }// if keyCode + + /// Duplicate +#ifdef MACOSX + if((keyCode==0) && (ctrlkey==1)) { +#else + ctrlkey+=keyCode; + if(ctrlkey==5){ +#endif + if(_selectedObjects.size()){ + std::cout<<"objects to copy :"; + for(int i=0;i<_selectedObjects.size();i++){ + std::cout<<_selectedObjects.at(i)<<" "; } - _selectedObjects.clear(); - } - } - - /// Duplicate - if(ctrlkey==5){ - if(_selectedObjects.size()){ - std::cout<<"objects to copy :"; - for(int i=0;i<_selectedObjects.size();i++){ - std::cout<<_selectedObjects.at(i)<<" "; - } - DuplicateObjects(getSelectedObjects()); - }else{ - std::cout<<"No objects to copy\n"; - } - } + DuplicateObjects(getSelectedObjects()); + }else{ + std::cout<<"No objects to copy\n"; + } // _selectedObjects.size + } // ctrlkey 5 return true; } @@ -1150,10 +1125,11 @@ void wxVtkSceneManager::AddControlerToBeRemove( //========================================================================= -void wxVtkSceneManager::deleteObject(int id) { +bool wxVtkSceneManager::deleteObject(int id) +{ + bool result=true; GObjectController *control = _controllers[id]; std::vector controllersToRemove; - if (control->getGObjectType() == GBLACKBOX || control->getGObjectType() == GCOMPLEXINPUTPORT || control->getGObjectType() == GCOMPLEXOUTPUTPORT) { @@ -1164,8 +1140,7 @@ void wxVtkSceneManager::deleteObject(int id) { // Add box input controllers to be removed for (int i = 0; i < (int) inputs.size(); i++) { - AddControlerToBeRemove(&controllersToRemove, - inputs[i]->getObjectId()); + AddControlerToBeRemove(&controllersToRemove, inputs[i]->getObjectId()); if (inputs[i]->isConnected()) { boxConnected = true; } @@ -1175,8 +1150,7 @@ void wxVtkSceneManager::deleteObject(int id) { // Add box output controllers to be removed for (int i = 0; i < (int) outputs.size(); i++) { - AddControlerToBeRemove(&controllersToRemove, - outputs[i]->getObjectId()); + AddControlerToBeRemove(&controllersToRemove, outputs[i]->getObjectId()); if (outputs[i]->isConnected()) { boxConnected = true; } @@ -1189,17 +1163,13 @@ void wxVtkSceneManager::deleteObject(int id) { int type = cont->getGObjectType(); if (type == GCONNECTOR) { GConnectorModel *conMod = (GConnectorModel*) cont->getModel(); - if (conMod->getStartPort() != NULL - && conMod->getStartPort()->getParentBox()->getObjectId() - == bbmod->getObjectId()) { - AddControlerToBeRemove(&controllersToRemove, - conMod->getObjectId()); + if (conMod->getStartPort() != NULL && conMod->getStartPort()->getParentBox()->getObjectId() == bbmod->getObjectId()) + { + AddControlerToBeRemove(&controllersToRemove,conMod->getObjectId()); } - if (conMod->getEndPort() != NULL - && conMod->getEndPort()->getParentBox()->getObjectId() - == bbmod->getObjectId()) { - AddControlerToBeRemove(&controllersToRemove, - conMod->getObjectId()); + if (conMod->getEndPort() != NULL && conMod->getEndPort()->getParentBox()->getObjectId() == bbmod->getObjectId()) + { + AddControlerToBeRemove(&controllersToRemove,conMod->getObjectId()); } } } @@ -1207,8 +1177,15 @@ void wxVtkSceneManager::deleteObject(int id) { // Add box controller to be removed AddControlerToBeRemove(&controllersToRemove, bbmod->getObjectId()); } else if (control->getGObjectType() == GCONNECTOR) { - GConnectorModel *conMod = (GConnectorModel*) control->getModel(); - AddControlerToBeRemove(&controllersToRemove, conMod->getObjectId()); + GConnectorController *gconnectorcontroler = (GConnectorController*)control; + if (gconnectorcontroler->getManualContourController()->IsEditable()==false) + { + GConnectorModel *conMod = (GConnectorModel*) control->getModel(); + AddControlerToBeRemove(&controllersToRemove, conMod->getObjectId()); + } else{ + gconnectorcontroler->getManualContourController()->OnChar(); + result = false; + } } std::map::iterator it; @@ -1223,7 +1200,9 @@ void wxVtkSceneManager::deleteObject(int id) { _controllers.erase(it); }//if }// for - _parent->saveTempDiagram(); + + + return result; } //========================================================================= @@ -1640,7 +1619,6 @@ void wxVtkSceneManager::deleteAllBoxes() { } _selectedObjects.clear(); _controllers.clear(); - refreshScene(); } //========================================================================= @@ -1663,8 +1641,6 @@ void wxVtkSceneManager::centerView() { _baseView->GetRenderer()->GetActiveCamera()->SetFocalPoint(0, 0, temp[2]); _baseView->GetRenderer()->GetActiveCamera()->GetPosition(temp); _baseView->GetRenderer()->GetActiveCamera()->SetPosition(0, 0, temp[2]); - _baseView->RefreshView(); - } //========================================================================= @@ -1783,6 +1759,9 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { if (line == "# - BBTKGEditor v 1.2 BBG BlackBox Diagram file") { version = line.substr(18, 3); } + if (line == "# - BBTKGEditor v 1.3 BBG BlackBox Diagram file") { + version = line.substr(18, 3); + } } else if (line == "APP_START") { start = true; break; @@ -1881,6 +1860,11 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { std::istringstream zSt(zInic); zSt >> zIn; + if (version<="1.2") + { + if (zIn==900) zIn=GPOSITION_Z; + } + getline(inputStream, line);//FIN_COMPLEX_PORT configGComBoxInputOutputPort(true, inputPortName, xIn, yIn, zIn); @@ -1927,10 +1911,14 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { std::istringstream zSt(zInic); zSt >> zIn; + if (version<="1.2") + { + if (zIn==900) zIn=GPOSITION_Z; + } + getline(inputStream, line);//FIN_COMPLEX_PORT - configGComBoxInputOutputPort(false, outputPortName, xIn, yIn, - zIn); + configGComBoxInputOutputPort(false, outputPortName, xIn, yIn, zIn); } // for output complex box @@ -1986,6 +1974,13 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { std::istringstream zSt(zInic); zSt >> zIn; + + if (version<="1.2") + { + if (zIn==900) zIn=GPOSITION_Z; + } + + //---------- getline(inputStream, line);//xEnd:yEnd:zEnd strcpy(coord, line.c_str()); @@ -2004,14 +1999,19 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { std::istringstream zEt(zEnd); zEt >> zEn; + if (version<="1.2") + { + if (zEn==900) zEn=GPOSITION_Z; + } + + bool boxExecutable = false; if (isExec == "TRUE") { boxExecutable = true; } int idBox = createGBlackBox(xIn, yIn, package, type); - configGBlackBox(idBox, xIn, yIn, zIn, name, boxExecutable, xEn, - yEn, zEn); + configGBlackBox(idBox, xIn, yIn, zIn, name, boxExecutable, xEn, yEn, zEn); GObjectController *cont = _controllers[idBox]; GBlackBoxModel *bbmod = (GBlackBoxModel*) cont->getModel(); @@ -2029,6 +2029,7 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { std::string value(result); bbmod->setValueToInput(name, value); + getline(inputStream, line);//PORT o FIN_BOX port = line.substr(0, 4); } // while @@ -2064,17 +2065,13 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { result = strtok(NULL, delims); std::string nameEndPort(result); - int idCon = configGConnetion(nameStartBox, nameStartPort, - nameEndBox, nameEndPort); + int idCon = configGConnetion(nameStartBox, nameStartPort,nameEndBox, nameEndPort); if (version != "1.0") { //Readding control points of the manualContour - //ups1 - GConnectorController *tempp = - (GConnectorController*) _controllers[idCon]; - GConnectorModel *conMod = (GConnectorModel*) tempp->getModel(); - vtkGConnectorView *conView = - (vtkGConnectorView*) tempp->getView(); + 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); @@ -2099,9 +2096,13 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { result = strtok(NULL, delims); std::istringstream isPointZ(result); isPointZ >> pz; - - conMod->getManualContourModel()->InsertPoint_id(ii + 1, px, - py, pz); + + if (version<="1.2") + { + if (pz==900) pz=GPOSITION_Z; + } + + conMod->getManualContourModel()->InsertPoint_id(ii + 1, px, py, pz); conView->getManualContourView()->AddPoint(); } }// version !=1.0 @@ -2110,7 +2111,6 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { } // start - refresh(); } //========================================================================= @@ -2185,11 +2185,17 @@ int wxVtkSceneManager::configGConnetion(std::string nameStartBox, boxModel = findGBox(nameStartBox); if (boxModel != NULL) { startP = boxModel->getOutputPort(nameStartPort); + if(startP == NULL){ + printf("SCP: ERROR in wxVtkSceneManager::configGConnetion start port %s is null. Port name is probably wrong.\n", nameStartPort.c_str()); + } } boxModel = findGBox(nameEndBox); if (boxModel != NULL) { endP = boxModel->getInputPort(nameEndPort); + if(endP == NULL){ + printf("SCP: ERROR in wxVtkSceneManager::configGConnetion end port %s is null. Port name is probably wrong\n", nameStartPort.c_str(), nameEndPort.c_str()); + } } //ups2 @@ -2296,9 +2302,7 @@ int wxVtkSceneManager::addObjectController(GObjectController* objController) { int newId = _contLastId;//_controllers.size(); objController->setId(newId); _controllers[newId] = objController; - std::cout - << "DFCH: int wxVtkSceneManager::addObjectController(GObjectController* objController) ---- _contLastId = " - << _contLastId << std::endl; + //std::cout << "DFCH: int wxVtkSceneManager::addObjectController(GObjectController* objController) ---- _contLastId = " << _contLastId << std::endl; _contLastId++; return newId; } @@ -2397,7 +2401,6 @@ void wxVtkSceneManager::DuplicateObjects(std::map objec cont->getModel()->notifyObservers(_idManager); } - refreshScene(); } @@ -2638,7 +2641,6 @@ void wxVtkSceneManager::SetCbPackageName(std::string packagename) { } } - //========================================================================= std::string wxVtkSceneManager::GetCbPackageName() { return _cbPackageName; @@ -2678,14 +2680,14 @@ void wxVtkSceneManager::SetDescription(std::string description) { } } - //========================================================================= std::string wxVtkSceneManager::GetDescription() { return _Description; } //========================================================================= -// JGRR & CM + + void wxVtkSceneManager::printAll(int com , int sta ){ int tmpState = sta ; @@ -2741,4 +2743,5 @@ void wxVtkSceneManager::printAll(int com , int sta ){ } // EO namespace bbtk -// EOF +// EOF +