X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FEditorGraphicBBS%2FbbsKernelEditorGraphic%2FwxVtkSceneManager.cxx;h=c4efe5605d986f87da642f9bbcd499ea122c47e3;hb=a6d479881eeb637cd06afa3b2177e430fa05571e;hp=f1f1fed1e047a0ab667d5f178a6c9842c147b749;hpb=3babfd57a9b4b3cffba34415e928239592e7d4a1;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsKernelEditorGraphic/wxVtkSceneManager.cxx b/lib/EditorGraphicBBS/bbsKernelEditorGraphic/wxVtkSceneManager.cxx index f1f1fed..c4efe56 100644 --- a/lib/EditorGraphicBBS/bbsKernelEditorGraphic/wxVtkSceneManager.cxx +++ b/lib/EditorGraphicBBS/bbsKernelEditorGraphic/wxVtkSceneManager.cxx @@ -66,7 +66,7 @@ namespace bbtk void wxVtkSceneManager::disconnectDrop() { _baseView->GetWxVTKRenderWindowInteractor()->SetDropTarget(NULL); - } + } //========================================================================= @@ -118,7 +118,7 @@ namespace bbtk //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; + double yy = windowHeight-y; //z value is not important yet, because it is only used a parallel projection double zz = 900; @@ -323,6 +323,14 @@ namespace bbtk //========================================================================= + void wxVtkSceneManager::unregisterController(InteractorStyleMaracas *param) + { + vtkInteractorStyleBaseView* baseViewControlManager = (vtkInteractorStyleBaseView*)_baseView->GetInteractorStyleBaseView(); + baseViewControlManager->RemoveInteractorStyleMaracas( param ); + } + + //========================================================================= + vtkRenderer* wxVtkSceneManager::getRenderer() { return _baseView->GetRenderer(); @@ -562,6 +570,69 @@ namespace bbtk //========================================================================= + bool wxVtkSceneManager::OnChar() + { + char keyCode = _vtkInteractorStyleBaseView->GetInteractor()-> GetKeyCode(); + + // KeyCode 127 : Delete Key + // KeyCode 8 : Backspace Key + if(keyCode == 8 || keyCode == 127) + { + if(_selectedObjects.size()>0) + { + for(int i=0;i<_selectedObjects.size();i++) + { + int id = _selectedObjects[i]; + removeObject(id); + } + _selectedObjects.clear(); + } + } + + return true; + } + + //========================================================================= + + void wxVtkSceneManager::removeObject(int id) + { + GObjectController *control = _controllers[id]; + std::vector controllersToRemove; + + if(control->getGObjectType()==GBLACKBOX) + { + GBlackBoxModel *bbmod = (GBlackBoxModel*)control->getModel(); + std::vectorinputs = bbmod->getInputPorts(); + + for(int i = 0;igetObjectId()); + } + + std::vectoroutputs = bbmod->getOutputPorts(); + + for(int i = 0;igetObjectId()); + } + + controllersToRemove.push_back(control->getId()); + } + + for(int i = 0;iremoveFromScene(); + unregisterController((InteractorStyleMaracas*)cont); + _controllers.erase(id); + } + + + } + + //========================================================================= + void wxVtkSceneManager::displayBlackBoxInfo(std::string packageName, std::string boxName) { _parent->displayBlackBoxInfo(packageName,boxName); @@ -576,6 +647,122 @@ namespace bbtk //========================================================================= + std::string wxVtkSceneManager::getDiagramScript() + { + bool existsExec=false; + + std::vector packages; + std::vector boxes; + std::vector connections; + std::vector execBoxes; + + std::map::iterator it; + + for(it = _controllers.begin(); it != _controllers.end(); ++it) + { + GObjectController *desc = it->second; + int type = desc->getGObjectType(); + + if(type==GBLACKBOX) + { + GBlackBoxModel *mod = (GBlackBoxModel*)desc->getModel(); + + std::string pkg = mod->getBBTKPackage(); + bool existsPkg = false; + for(int t = 0;tfirst); + if(mod->isExecutable()) + { + execBoxes.push_back(it->first); + existsExec=true; + } + } + else if(type==GCONNECTOR) + { + connections.push_back(it->first); + } + } + + std::string script = ""; + script+="# BBTK GEditor Script\n"; + script+="# ----------------------\n"; + if(existsExec) + { + int i; + for(i = 0; igetModel(); + + script+=model->getBBTKType(); + script+=" "; + script+=model->getBBTKName(); + script+="\n"; + } + + for(i = 0; igetModel(); + + //Start Connection info + GPortModel *start = model->getStartPort(); + script+=start->getParentBox()->getBBTKName(); + script+="."; + script+=start->getBBTKName(); + + script+=" "; + + //End Connection info + GPortModel *end = model->getEndPort(); + script+=end->getParentBox()->getBBTKName(); + script+="."; + script+=end->getBBTKName(); + + script+="\n"; + } + + for(i = 0; igetModel(); + + script+=model->getBBTKName(); + script+="\n"; + } + + } + + return script; + } + + //========================================================================= + } // EO namespace bbtk // EOF