]> Creatis software - bbtkGEditor.git/blobdiff - lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx
v1.1.0 Feature 1407
[bbtkGEditor.git] / lib / EditorGraphicBBS / bbsWxGUIEditorGraphic / wxVtkSceneManager.cxx
index 7d9da52b1a58b8aa451c7d207c9eba772fcfc9fb..b88f527cad467418da510f634b114e5d0e33699f 100644 (file)
@@ -366,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.
@@ -424,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.
@@ -448,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();
 }
@@ -458,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();
 }
@@ -466,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;
 
@@ -484,6 +484,7 @@ GPortController* wxVtkSceneManager::createGPort(int portType,
 
        model->setBBTKType(bbtkType);
        model->setBBTKName(bbtkName);
+       model->setBBTKDescription(bbtkDescription);
 
        model->addObserver(view);
        model->addObserver(this);
@@ -1056,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<int, GObjectController*>::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();
-               }
-       }
-        ctrlkey+=keyCode;
-        /// 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;
 }
@@ -1113,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<int> controllersToRemove;
-
        if (control->getGObjectType() == GBLACKBOX || control->getGObjectType()
                        == GCOMPLEXINPUTPORT || control->getGObjectType()
                        == GCOMPLEXOUTPUTPORT) {
@@ -1127,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;
                        }
@@ -1138,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;
                        }
@@ -1166,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<int, GObjectController*>::iterator it;
@@ -1182,7 +1200,9 @@ void wxVtkSceneManager::deleteObject(int id) {
                        _controllers.erase(it);
                }//if
        }// for
-       _parent->saveTempandUpdate("delete object");
+       
+       
+       return result;
 }
 
 //=========================================================================