]> Creatis software - bbtkGEditor.git/blobdiff - lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx
v1.1.0 BUG 1400
[bbtkGEditor.git] / lib / EditorGraphicBBS / bbsWxGUIEditorGraphic / wxVtkSceneManager.cxx
index dc5545af9ba4652599f22fd17aa1b2209c125b68..7d9da52b1a58b8aa451c7d207c9eba772fcfc9fb 100644 (file)
@@ -110,14 +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();
 
        // Actos Port_Text
        _textActor = vtkTextActor3D::New();
-       _textActor->SetPosition(-9999, -9999, 900);
+       _textActor->SetPosition(-9999, -9999, GPOSITION_Z);
        _textActor->SetInput("<void>");
        _textActor->GetTextProperty()->SetFontSize(60);
        _textActor->GetTextProperty()->BoldOn();
@@ -131,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();
@@ -262,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);
 
@@ -350,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);
@@ -409,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);
@@ -510,15 +509,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);
@@ -527,7 +523,7 @@ 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);
@@ -535,7 +531,7 @@ int wxVtkSceneManager::createGConnector(GPortModel* startPort) {
         
         /**
          * 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( 3 ) ;
@@ -548,7 +544,8 @@ int wxVtkSceneManager::createGConnector(GPortModel* startPort) {
 
        double x, y, z;
        connectorModel->getInicPoint(x, y, z);
-
+       
+       
        manContourControl->SetState(1);
        manContourModel->SetCloseContour(false);
 
@@ -576,7 +573,8 @@ int wxVtkSceneManager::createGConnector(GPortModel* startPort) {
        connectorModel->addObserver(connectorView);
        connectorModel->addObserver(this);
 
-        manContourView->Refresh();
+//     manContourView->Refresh();
+       
        return newId;
 }
 
@@ -629,26 +627,9 @@ 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) {
@@ -688,8 +669,8 @@ void wxVtkSceneManager::update(int idController, int command) {
 
                 // EO JGRR & CM WH  
                      
-                        _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
@@ -714,13 +695,12 @@ 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();
@@ -752,12 +732,8 @@ void wxVtkSceneManager::update(int idController, int command) {
                                                                _parent->saveTempandUpdate("create connection");
                        }
 
-                       manualConnectorContourController
-                                       * manCont =
-                                                       ((GConnectorController*) cont)->getManualContourController();
-                       manualConnectorContourView
-                                       * connView =
-                                                       (manualConnectorContourView*) manCont->GetManualViewBaseContour();
+                       manualConnectorContourController        *manCont        = ((GConnectorController*) cont)->getManualContourController();
+                       manualConnectorContourView                      *connView       = (manualConnectorContourView*) manCont->GetManualViewBaseContour();
                                      
                        std::map<int, GObjectController*>::iterator it2;
 
@@ -769,7 +745,7 @@ void wxVtkSceneManager::update(int idController, int command) {
                                }
                                cont->SetActive(true);
                        }
-                        connView->Refresh();          
+                       connView->Refresh();          
                }
 
        }
@@ -780,11 +756,10 @@ void wxVtkSceneManager::update(int idController, int command) {
 
 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) {
@@ -811,14 +786,13 @@ 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<int, GObjectController*>::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);
 
                         // JGRR & CM
@@ -897,14 +871,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();
 
@@ -1180,17 +1152,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());
                                }
                        }
                }
@@ -1771,6 +1739,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;
@@ -1869,6 +1840,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);
@@ -1915,10 +1891,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
 
@@ -1974,6 +1954,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());
@@ -1992,14 +1979,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();
@@ -2053,17 +2045,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);
@@ -2088,9 +2076,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