X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FEditorGraphicBBS%2FbbsVtkGUIEditorGraphic%2FGBlackBoxController.cxx;h=99c7d07bef0bc8fb3a6a7387d35b5aaf8e3cff19;hb=e4d5a319ef249bde6c4f4ddfee66f6258558bf91;hp=64092751ea809949e320afba7f9b0528253ba2b0;hpb=be7230c59a3a7d7aa5bfee591b35d31e5e7a93b3;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GBlackBoxController.cxx b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GBlackBoxController.cxx index 6409275..99c7d07 100644 --- a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GBlackBoxController.cxx +++ b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GBlackBoxController.cxx @@ -1,4 +1,4 @@ -/*========================================================================= +/*========================================================================= Program: bbtk Module: $RCSfile$ Language: C++ @@ -11,31 +11,34 @@ Version: $Revision$ * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux * -* This software is governed by the CeCILL-B license under French law and -* abiding by the rules of distribution of free software. You can use, -* modify and/ or redistribute the software under the terms of the CeCILL-B -* license as circulated by CEA, CNRS and INRIA at the following URL -* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +* This software is governed by the CeCILL-B license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL-B +* license as circulated by CEA, CNRS and INRIA at the following URL +* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html * or in the file LICENSE.txt. * * As a counterpart to the access to the source code and rights to copy, * modify and redistribute granted by the license, users are provided only * with a limited warranty and the software's author, the holder of the * economic rights, and the successive licensors have only limited -* liability. +* liability. * * The fact that you are presently reading this means that you have had * knowledge of the CeCILL-B license and that you accept its terms. -* ------------------------------------------------------------------------ */ +* ------------------------------------------------------------------------ */ /** -* \file -* \brief Class bbtk::GBlackBoxController +* \file +* \brief Class bbtk::GBlackBoxController */ #include "GBlackBoxController.h" +#ifdef _DEBUG +#define new DEBUG_NEW +#endif namespace bbtk { @@ -43,7 +46,7 @@ namespace bbtk //========================================================================= GBlackBoxController::GBlackBoxController() { - + } //========================================================================= @@ -54,7 +57,7 @@ namespace bbtk bool GBlackBoxController::OnMouseMove() { - + if ( _vtkInteractorStyleBaseView!=NULL) { int X,Y; @@ -63,102 +66,135 @@ namespace bbtk _wxVTKiren->GetEventPosition( X , Y ); int state = _view->getState(); - + //Evaluate new state - + if(state == NOTHING_HAPPENS) { if(_view->isPointInside(X,Y)) { - _view->setState(HIGHLIGHTED); - } - } + _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 GBlackBoxController::OnLeftButtonDown() { + _objHasBeenMoved = false; + _isLeftClickDown = true; + bool ok=true; + + int X,Y; + wxVTKRenderWindowInteractor *_wxVTKiren; + _wxVTKiren= _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor(); + _wxVTKiren->GetEventPosition( X , Y ); + + + int state = _view->getState(); - //Evaluate new state - if(state == HIGHLIGHTED) + + if(_view->isPointInside(X,Y)) + +// if(state == HIGHLIGHTED) +//EED3oct2010 if ( (state == HIGHLIGHTED) && (ctrlkey==1 ) ) + + if(state == SELECTED) { - _isLeftClickDown=true; + _view->setState(NOTHING_HAPPENS); + _model->notifyObservers(getId(),REMOVE_FROM_SELECTED); + } else { + ok=false; _view->setState(SELECTED); _model->notifyObservers(getId(),ADD_TO_SELECTED); } - return true; + + + 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; } //========================================================================= - + bool GBlackBoxController::OnLeftButtonUp() { - int X,Y; - wxVTKRenderWindowInteractor *wxVTKiren; - wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor(); - wxVTKiren->GetEventPosition(X,Y); + _isLeftClickDown = false; + int state = _view->getState(); - int state = _view->getState(); - //Evaluate new state - if(_isLeftClickDown) - { - _isLeftClickDown=false; - if(_view->isPointInside(X,Y)) - { + +//EED Borrame +// int X,Y; +// wxVTKRenderWindowInteractor *wxVTKiren; +// wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor(); +// wxVTKiren->GetEventPosition(X,Y); +// if(_isLeftClickDown) +// { +// _isLeftClickDown=false; +// if(_view->isPointInside(X,Y)) +// { // It is supposed that I'm always inside even if the box is in drag - _view->setState(SELECTED); - _model->notifyObservers(getId()); - } - } - return true; +// _view->setState(SELECTED); +// _model->notifyObservers(getId()); +// } +// } + + + + int shiftkey = _vtkInteractorStyleBaseView->GetInteractor()->GetShiftKey(); + int ctrlkey = _vtkInteractorStyleBaseView->GetInteractor()->GetControlKey(); + ctrlkey = ctrlkey + shiftkey; - } - - //========================================================================= - - bool GBlackBoxController::OnLeftDClick() - { - int X,Y; - wxVTKRenderWindowInteractor *wxVTKiren; - wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor(); - wxVTKiren->GetEventPosition(X,Y); + +//EED 12/07/2012 +// if ( (state==SELECTED) && (ctrlkey==0) && (_objHasBeenMoved==false)) +// { +// _view->setState(NOTHING_HAPPENS); +// _model->notifyObservers(getId(),REMOVE_FROM_SELECTED); +// } + - int state = _view->getState(); - //Evaluate new state - if(_view->isPointInside(X,Y)) - { - _model->notifyObservers(getId(),EDIT_BLACKBOX); - } return true; + } - + //========================================================================= - + bool GBlackBoxController::OnRightButtonUp() { - GBlackBoxModel *bbmodel = (GBlackBoxModel*)_model; - if(bbmodel->isExecutable()) - { - bbmodel->setExecutable(false); - } - return true; } @@ -171,17 +207,24 @@ namespace bbtk wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor(); wxVTKiren->GetEventPosition(X,Y); - int state = _view->getState(); +// int state = _view->getState(); //Evaluate new state if(_view->isPointInside(X,Y)) { GBlackBoxModel *bbmodel = (GBlackBoxModel*)_model; _view->setState(HIGHLIGHTED); - bbmodel->setExecutable(true); + if(bbmodel->isExecutable()) + { + bbmodel->setExecutable(false); + } + else + { + bbmodel->setExecutable(true); + } bbmodel->notifyObservers(getId()); } - + return true; }