X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FEditorGraphicBBS%2FbbsWxGUIEditorGraphic%2FwxVtkSceneManager.cxx;h=731585d7ac15b80496e0cc030a37f53f072113f2;hb=511369e67cf26244fc8768a727a03f42ff42865f;hp=7c2ff2df3823ff29006145257918127a15abf9ef;hpb=d94d2f7794610cbd1e659632bc7da4802796b621;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx index 7c2ff2d..731585d 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx @@ -73,23 +73,25 @@ namespace bbtk { wxVtkSceneManager::wxVtkSceneManager(wxGEditorTabPanel *parent, wxVtk3DBaseView *baseView, int idManager,Factory::Pointer bbtkfactory) { - _cbName = "ComplexBoxName"; - _cbPackageName = "PackageName"; - _Author = "Author ??"; - _Category = ""; - _Description = "Description ??"; - - _bugTextActor_text = "void"; + _cbName = "ComplexBoxName"; + _cbPackageName = "PackageName"; + _Author = "Author ??"; + _Category = ""; + _Description = "Description ??"; + _MessageKind = "-"; + _MessageLevel = "-"; + + _bugTextActor_text = "void"; _bugTextActor_status = 0; - _parent = parent; - _numBoxes = 0; - _idManager = idManager; - _baseView = baseView; - _bbtkfactory = bbtkfactory; + _parent = parent; + _numBoxes = 0; + _idManager = idManager; + _baseView = baseView; + _bbtkfactory = bbtkfactory; - _startDragging = false; - _isComplexBox = false; + _startDragging = false; + _isComplexBox = false; if (_baseView != NULL) { //EED02JUIN2010 @@ -114,7 +116,6 @@ wxVtkSceneManager::wxVtkSceneManager(wxGEditorTabPanel *parent, wxVtk3DBaseView void wxVtkSceneManager::disconnectDrop() { - printf("EED %p ~wxVtkSceneManager::disconnectDrop()\n", this); //EED02JUIN2010 _baseView->GetWxVTKRenderWindowInteractor()->SetDropTarget(NULL); // _baseView->GetWxVTKRenderWindowInteractor()->SetDropTarget( new tmpClasswxTextDropTarget() ); } @@ -124,10 +125,8 @@ void wxVtkSceneManager::disconnectDrop() wxVtkSceneManager::~wxVtkSceneManager() { //FCY memory leaks - printf("EED %p ~wxVtkSceneManager() START\n", this); disconnectDrop(); delete _baseView; - printf("EED %p ~wxVtkSceneManager() END\n", this); } //========================================================================= @@ -278,6 +277,7 @@ int wxVtkSceneManager::createGBlackBox(int x, int y, std::string packageName,std //EED 15 oct 2012 BlackBoxDescriptor::Pointer descriptor = GObjectsMVCFactory::getInstance()->getBlackBoxDescriptor(packageName, boxType); + Package::Pointer k; std::map< std::string, BlackBoxDescriptor::Pointer> mapDesc; try{ @@ -326,15 +326,28 @@ int wxVtkSceneManager::createGBlackBox(int x, int y, std::string packageName,std model->addObserver(view); model->addObserver(this); + +//EED2017 change order + //Associates the view with the correspondent renderer and the model. + //(NOTE: Refresh is only made by the view) + view->setModel(model); + view->setBaseView(_baseView); + + //Associates the controller with the correspondent model and view + controller->setModelAndView(model, view); + + //Iterate and create the input ports std::map descriptorInMap = descriptor->GetInputDescriptorMap(); std::map::iterator itInput; - int i = 0; - for (itInput = descriptorInMap.begin(); itInput != descriptorInMap.end(); ++itInput) { + for (itInput = descriptorInMap.begin(); itInput != descriptorInMap.end(); ++itInput) + { BlackBoxInputDescriptor *desc = itInput->second; - createGInputPort(GINPUTPORT, i, model, desc); +//EED2017-04-07 +// createGInputPort(GINPUTPORT, i, model, desc); + createGInputPort(GINPUTPORT, i, controller, desc); i++; } @@ -342,27 +355,21 @@ int wxVtkSceneManager::createGBlackBox(int x, int y, std::string packageName,std std::map descriptorOutMap = descriptor->GetOutputDescriptorMap(); std::map::iterator itOutput; - i = 0; - for (itOutput = descriptorOutMap.begin(); itOutput - != descriptorOutMap.end(); ++itOutput) { + for (itOutput = descriptorOutMap.begin(); itOutput!= descriptorOutMap.end(); ++itOutput) + { BlackBoxOutputDescriptor *desc = itOutput->second; - createGOutputPort(GOUTPUTPORT, i, model, desc); +//EED2017-04-07 +// createGOutputPort(GOUTPUTPORT, i, model, desc); + createGOutputPort(GOUTPUTPORT, i, controller, desc); i++; } - //Associates the view with the correspondent renderer and the model. - //(NOTE: Refresh is only made by the view) - view->setModel(model); - view->setBaseView(_baseView); +//EED2017 change order 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; @@ -477,21 +484,35 @@ int wxVtkSceneManager::createGComplexBoxOutputPort(std::string outputName) { //========================================================================= -int wxVtkSceneManager::createGInputPort(int portType, int posinBox, GBoxModel *blackBox, BlackBoxInputDescriptor *desc) +//EED2017-04-08 +//int wxVtkSceneManager::createGInputPort(int portType, int posinBox, GBoxModel *blackBox, BlackBoxInputDescriptor *desc) +int wxVtkSceneManager::createGInputPort(int portType, int posinBox, GObjectController *gBoxControler, BlackBoxInputDescriptor *desc) { + GBoxModel *blackBox=(GBoxModel*)gBoxControler->getModel(); GPortController* portController = createGPort(portType, desc->GetName(), desc->GetTypeName(), desc->GetDescription(), posinBox, blackBox); - blackBox->addInputPort((GPortModel*) portController->getModel()); + blackBox->addInputPort( (GPortModel*)portController->getModel() ); + + vtkGBoxView *vtkgboxView=(vtkGBoxView*)gBoxControler->getView(); + vtkgboxView->addInputPort( (vtkGPortView*)portController->getView() ); + return portController->getId(); } //========================================================================= -int wxVtkSceneManager::createGOutputPort(int portType, int posinBox,GBoxModel *blackBox, BlackBoxOutputDescriptor *desc) +//EED2017-04-08 +//int wxVtkSceneManager::createGOutputPort(int portType, int posinBox,GBoxModel *blackBox, BlackBoxOutputDescriptor *desc) +int wxVtkSceneManager::createGOutputPort(int portType, int posinBox,GObjectController *gBoxControler, BlackBoxOutputDescriptor *desc) { + GBoxModel *blackBox=(GBoxModel*)gBoxControler->getModel(); GPortController* portController = createGPort(portType, desc->GetName(), desc->GetTypeName(),desc->GetDescription(), posinBox, blackBox); blackBox->addOutputPort((GPortModel*) portController->getModel()); + + vtkGBoxView *vtkgboxView=(vtkGBoxView*)gBoxControler->getView(); + vtkgboxView->addOutputPort( (vtkGPortView*)portController->getView() ); + return portController->getId(); } @@ -502,37 +523,27 @@ GPortController* wxVtkSceneManager::createGPort(int portType,std::string bbtkNam 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); model->setBBTKDescription(bbtkDescription); - model->addObserver(view); model->addObserver(this); - //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(); +//EED017 view->initVtkObjects(); + view->createVtkObjects(); +// view->addVtkActors(); //Associates the controller with the correspondent model and view controller->setModelAndView(model, view); - model->notifyObservers(_idManager); - addObjectController(controller); - return (GPortController*) controller; } @@ -568,7 +579,8 @@ int wxVtkSceneManager::createGConnector(GPortModel* startPort) * JGRR AND CM * Width increased from 2 to 3, it simplifies line handling and spline control :P * @param WidthLine - */ + */ + //EED2017 manContourView->SetWidthLine( 3 ) ; manContourView->SetShowText(false); @@ -703,10 +715,10 @@ void wxVtkSceneManager::update(int idController, int command) { // Highliht element obc->getView( )->setState( POSSIBLE_CONNECTION ) ; //obc->getView( )->setState( HIGHLIGHTED ) ; - } - } - } - } + } // if obc_type + } // for c_it + } // if + } // if iter // EO JGRR & CM WH @@ -768,7 +780,6 @@ void wxVtkSceneManager::update(int idController, int command) { if ((obc_type == GPORT) && (obc_state == SELECTED_POSSIBLE_CONNECTION)) { // Change element to connected state obc->getView()->setState(HIGHLIGHTED); - } } @@ -1352,6 +1363,7 @@ bool wxVtkSceneManager::MakeBoxExecutable() { //========================================================================= std::string wxVtkSceneManager::getDiagramBBS(bool wln) { + std::cout << "wxVtkSceneManager::getDiagramBBS" << std::endl; bool existsExec = false; std::vector packages; @@ -1409,7 +1421,7 @@ std::string wxVtkSceneManager::getDiagramBBS(bool wln) { script += "\n"; //ups2 - + script += LineNumber(wln, lnNmbr); script += "author \""; script += _Author; @@ -1434,9 +1446,10 @@ std::string wxVtkSceneManager::getDiagramBBS(bool wln) { script += LineNumber(wln, lnNmbr); script += "new "; int id = boxes[i]; - GObjectController *control = _controllers[id]; - GBlackBoxModel *model = (GBlackBoxModel*) control->getModel(); + GObjectController *control = _controllers[id]; + GBlackBoxModel *model = (GBlackBoxModel*) control->getModel(); + script += model->getBBTKPackage()+":"; script += model->getBBTKType(); script += " "; script += model->getBBTKName(); @@ -1500,6 +1513,7 @@ std::string wxVtkSceneManager::getDiagramBBS(bool wln) { } else { + script += LineNumber(wln, lnNmbr); script += "connect "; script += startBox->getBBTKName(); script += "."; @@ -1515,16 +1529,29 @@ std::string wxVtkSceneManager::getDiagramBBS(bool wln) { script += "\n"; } + script += LineNumber(wln, lnNmbr); script += "\n"; } script += LineNumber(wln, lnNmbr); script += "\n"; + script += LineNumber(wln, lnNmbr); script += "\n"; + + script += LineNumber(wln, lnNmbr); script += "# Complex input ports\n"; script += complexInputs; + if((_MessageKind!="-")&&(_MessageLevel!="-")){ + script += LineNumber(wln, lnNmbr); + script += "message "; + script += _MessageKind; + script += " "; + script += _MessageLevel; + script += "\n"; + } + for (i = 0; i < (int) execBoxes.size(); i++) { script += LineNumber(wln, lnNmbr); script += "exec "; @@ -1544,6 +1571,7 @@ std::string wxVtkSceneManager::getDiagramBBS(bool wln) { //========================================================================= std::string wxVtkSceneManager::saveComplexBoxBBS() { + std::cout<<"wxVtkSceneManager::saveComplexBoxBBS"< packages; std::vector boxes; std::vector connections; @@ -1617,6 +1645,7 @@ std::string wxVtkSceneManager::saveComplexBoxBBS() { GObjectController *control = _controllers[id]; GBlackBoxModel *model = (GBlackBoxModel*) control->getModel(); + script += model->getBBTKPackage()+":"; script += model->getBBTKType(); script += " "; script += model->getBBTKName(); @@ -1710,7 +1739,17 @@ std::string wxVtkSceneManager::saveComplexBoxBBS() { script += "\n"; - for (i = 0; i < (int) execBoxes.size(); i++) { + if((_MessageKind!="-")&&(_MessageLevel!="-")) + { + script += "message "; + script += _MessageKind; + script += " "; + script += _MessageLevel; + script += "\n"; + } + + for (i = 0; i < (int) execBoxes.size(); i++) + { script += "exec "; int id = execBoxes[i]; GObjectController *control = _controllers[id]; @@ -1748,23 +1787,45 @@ void wxVtkSceneManager::refresh() { } //========================================================================= -void wxVtkSceneManager::refreshScene() { +void wxVtkSceneManager::refreshScene() +{ _baseView->RefreshView(); } //========================================================================= -void wxVtkSceneManager::centerView() { +void wxVtkSceneManager::centerView() +{ + double bb[6]; + _baseView->GetRenderer()->ComputeVisiblePropBounds(bb); + double temp[3]; _baseView->GetRenderer()->GetActiveCamera()->GetFocalPoint(temp); _baseView->GetRenderer()->GetActiveCamera()->SetFocalPoint(0, 0, temp[2]); _baseView->GetRenderer()->GetActiveCamera()->GetPosition(temp); _baseView->GetRenderer()->GetActiveCamera()->SetPosition(0, 0, temp[2]); + + _baseView->GetRenderer()->ResetCamera(); + _baseView->GetRenderer()->ResetCameraClippingRange(); + +/* + double tt=_baseView->GetRenderer()->GetNearClippingPlaneTolerance(); + printf("EED wxVtkSceneManager::centerView() tolerance=%f\n",tt); + double cr1,cr2; + _baseView->GetRenderer()->GetActiveCamera()->GetClippingRange(cr1,cr2); + printf("EED wxVtkSceneManager::centerView() cr1=%f cr2=%f\n",cr1,cr2); + _baseView->GetRenderer()->GetActiveCamera()->SetClippingRange(0.01,100000); + _baseView->GetRenderer()->GetActiveCamera()->GetClippingRange(cr1,cr2); + printf("EED wxVtkSceneManager::centerView() cr1=%f cr2=%f\n",cr1,cr2); +*/ + + _baseView->GetRenderer()->Render(); } //========================================================================= -void wxVtkSceneManager::saveDiagram(std::string &content) { +void wxVtkSceneManager::saveDiagram(std::string &content) +{ char buffer[50]; content += "CATEGORY:"; @@ -1849,10 +1910,17 @@ void wxVtkSceneManager::saveDiagram(std::string &content) { sprintf(buffer, "%d", bsize); content += buffer; content += "\n"; - + for (int i = 0; i < bsize; i++) { int id = boxes[i]; +// std::cout<<"id "<getStatusText()<getModel()->getBBTKType()<getModel()->getBBTKType();//CFT +// std::cout<<"nname: "<getModel()->getBBTKName()<getModel()->getGObjectType()<getModel()->save(content); } @@ -1889,7 +1957,6 @@ void wxVtkSceneManager::getCleanLine(stringstream &inputStream, std::string &lin //========================================================================= void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { - int size; std::string version = ""; std::string line = ""; @@ -2149,7 +2216,8 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) std::istringstream is(result); is >> numBoxes; - for (int i = 0; i < numBoxes; i++) { + for (int i = 0; i < numBoxes; i++) + { //---------- getCleanLine(inputStream, line);//BOX getCleanLine(inputStream, line);//package:type:name @@ -2221,7 +2289,8 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) bool boxExecutable = false; - if (isExec == "TRUE") { + if (isExec == "TRUE") + { boxExecutable = true; } @@ -2278,7 +2347,8 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) isCons >> numConns; - for (int i = 0; i < numConns; i++) { + for (int i = 0; i < numConns; i++) + { //---------- getCleanLine(inputStream, line);//CONNECTION getCleanLine(inputStream, line);//Startbox.PortName:EndBox.PortName @@ -2294,7 +2364,6 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) result = strtok(NULL, delims); std::string nameEndPort(result); - int idCon = configGConnetion(nameStartBox, nameStartPort,nameEndBox, nameEndPort); if (version != "1.0") { @@ -2933,6 +3002,31 @@ std::string wxVtkSceneManager::GetDescription() { //========================================================================= +void wxVtkSceneManager::SetMessageKind(std::string kind) { + _MessageKind = kind; + +} + +//========================================================================= + +std::string wxVtkSceneManager::GetMessageKind(){ + return _MessageKind; +} + +//========================================================================= + +void wxVtkSceneManager::SetMessageLevel(std::string Level){ + _MessageLevel = Level; +} + +//========================================================================= + +std::string wxVtkSceneManager::GetMessageLevel(){ + return _MessageLevel; +} + +//========================================================================= + std::vector< std::string> wxVtkSceneManager::GetExternalInputsNames() {