]> Creatis software - bbtkGEditor.git/blobdiff - lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GBoxController.cxx
#3252Select mechanism of boxes
[bbtkGEditor.git] / lib / EditorGraphicBBS / bbsVtkGUIEditorGraphic / GBoxController.cxx
index ad8024df98fa1cea91c0aba25213f0ebd705ba9d..ba87c386f5b6430d8d937386ac1ba8636591cb86 100644 (file)
@@ -80,20 +80,17 @@ namespace bbtk
        }
        //=========================================================================
 
+/*
        bool GBoxController::OnMouseMove()
        {
-
                if ( _vtkInteractorStyleBaseView!=NULL)
                {
                        int X,Y;
                        crea::wxVTKRenderWindowInteractor *_wxVTKiren;
                        _wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor();
                        _wxVTKiren->GetEventPosition( X , Y );
-
                        int state  = _view->getState();
-
                        //Evaluate new state
-
                        if(state == NOTHING_HAPPENS)
                        {
                                if(_view->isPointInside(X,Y))
@@ -108,31 +105,107 @@ namespace bbtk
                                        _view->setState(NOTHING_HAPPENS);
                                }
                        }
-
                        _model->notifyObservers(getId());
-
                }
                return true;
        }
+ */
+
+//=========================================================================
+bool GBoxController::OnMouseMove()
+{
+    if ( _vtkInteractorStyleBaseView!=NULL)
+    {
+        int X,Y;
+        crea::wxVTKRenderWindowInteractor *_wxVTKiren;
+        _wxVTKiren= _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor();
+        _wxVTKiren->GetEventPosition( X , Y );
+        int state  = _view->getState();
+        //Evaluate new state
+        if(state == NOTHING_HAPPENS)
+        {
+            if(_view->isPointInside(X,Y))
+            {
+                _view->setState(HIGHLIGHTED);
+            }
+                    return true; // to avoid to redraw all if nothing
+        } // state
+        if( state==HIGHLIGHTED)
+        {
+            if(!_view->isPointInside(X,Y))
+            {
+                _view->setState(NOTHING_HAPPENS);
+            }
+        } // state
+//            if ((state==DRAG) && (_isLeftClickDown==true) )
+//            {
+//                _objHasBeenMoved=true;
+//            } // state
+        _model->notifyObservers(getId());
+    }
+    return true;
+}
+
+
+
+
 
        //=========================================================================
 
+/*
        bool GBoxController::OnLeftButtonDown()
        {
            bool ok=true;
                int state  = _view->getState();
-
                //Evaluate new state
                if(state == HIGHLIGHTED)
                {
-                   ok=false;
-                       _isLeftClickDown=true;
+                   ok               = false;
+                       _isLeftClickDown = true;
                        _view->setState(SELECTED);
                        _model->notifyObservers(getId(),ADD_TO_SELECTED);
                }
                return ok;
-
        }
+*/
+
+bool GBoxController::OnLeftButtonDown()
+{
+//        _objHasBeenMoved = false;
+    _isLeftClickDown = true;
+    bool ok=true;
+    int X,Y;
+    crea::wxVTKRenderWindowInteractor *_wxVTKiren;
+    _wxVTKiren= _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor();
+    _wxVTKiren->GetEventPosition( X , Y );
+    int state  = _view->getState();
+    //Evaluate new state
+    if(_view->isPointInside(X,Y))
+    {
+//        if(state == HIGHLIGHTED)
+//EED3oct2010        if ( (state == HIGHLIGHTED) && (ctrlkey==1  ) )
+        if(state == SELECTED)
+        {
+            _view->setState(NOTHING_HAPPENS);
+            _model->notifyObservers(getId(),REMOVE_FROM_SELECTED);
+        } else {
+            ok=false;
+            _view->setState(SELECTED);
+            _model->notifyObservers(getId(),ADD_TO_SELECTED);
+        }
+    } // EED 2022-09-16
+    int shiftkey            = _vtkInteractorStyleBaseView->GetInteractor()->GetShiftKey();
+    int ctrlkey             = _vtkInteractorStyleBaseView->GetInteractor()->GetControlKey();
+    ctrlkey = ctrlkey + shiftkey;
+    if ( (state==DRAG) && (ctrlkey==1) &&  (_view->isPointInside(X,Y)==true) )
+    {
+        _view->setState(NOTHING_HAPPENS);
+        _model->notifyObservers(getId(),REMOVE_FROM_SELECTED);
+    }
+    return ok;
+}
+
+
 
        //=========================================================================
 
@@ -143,6 +216,7 @@ namespace bbtk
                wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor();
                wxVTKiren->GetEventPosition(X,Y);
 
+ /*
                int state  = _view->getState();
                //Evaluate new state
                if(_isLeftClickDown)
@@ -155,6 +229,7 @@ namespace bbtk
                                _model->notifyObservers(getId());
                        }
                }
+*/
        return true;
 
        }