From: corredor <> Date: Thu, 22 Apr 2010 07:55:54 +0000 (+0000) Subject: Stable version ... The connection is correctly painted :) X-Git-Tag: v1_0_0~104 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=eaf825847b9ac4bd762deafa59a7df1c2ceba433;p=bbtkGEditor.git Stable version ... The connection is correctly painted :) --- diff --git a/lib/EditorGraphicBBS/bbsKernelEditorGraphic/GConnectorModel.cxx b/lib/EditorGraphicBBS/bbsKernelEditorGraphic/GConnectorModel.cxx index 05ce3b8..58f601b 100644 --- a/lib/EditorGraphicBBS/bbsKernelEditorGraphic/GConnectorModel.cxx +++ b/lib/EditorGraphicBBS/bbsKernelEditorGraphic/GConnectorModel.cxx @@ -79,6 +79,10 @@ namespace bbtk endPort->getInicPoint(xIport,yIport,zIport); setFinalPoint(xCenter,yIport,zCenter); + + manualPoint* point = _model->GetManualPoint(_model->GetSizeLstPoints()-1); + point->SetPoint(xCenter,yIport,zCenter); + cout<<"RaC GConnectorModel::setEndPort size:"<<_model->GetSizeLstPoints()<update(idController,command); - } - _changed=false; + _observers[i]->update(idCaller,command); } } - //========================================================================= - - void Observable::setChanged() - { - _changed=true; - } - //========================================================================= void Observable::addObserver(Observer *observer) diff --git a/lib/EditorGraphicBBS/bbsKernelEditorGraphic/Observable.h b/lib/EditorGraphicBBS/bbsKernelEditorGraphic/Observable.h index 18fad74..c00e754 100644 --- a/lib/EditorGraphicBBS/bbsKernelEditorGraphic/Observable.h +++ b/lib/EditorGraphicBBS/bbsKernelEditorGraphic/Observable.h @@ -69,17 +69,11 @@ namespace bbtk //Public methods void addObserver(Observer *observer); - bool hasChanged(); - - void notifyObservers(int idController=-1,int command=REPAINT); - - void setChanged(); + void notifyObservers(int idCaller,int command=REPAINT); private: - //Private Attributes - bool _changed; - + //Private Attributes std::vector _observers; //Private Methods diff --git a/lib/EditorGraphicBBS/bbsKernelEditorGraphic/wxVtkSceneManager.cxx b/lib/EditorGraphicBBS/bbsKernelEditorGraphic/wxVtkSceneManager.cxx index 4e337be..daa6327 100644 --- a/lib/EditorGraphicBBS/bbsKernelEditorGraphic/wxVtkSceneManager.cxx +++ b/lib/EditorGraphicBBS/bbsKernelEditorGraphic/wxVtkSceneManager.cxx @@ -180,8 +180,7 @@ namespace bbtk controller->setModelAndView(model,view); //Resgiter change to the observers of the actual model - model->setChanged(); - model->notifyObservers(); + model->notifyObservers(_idManager); //Register the controller of the new object registerController((InteractorStyleMaracas*) controller); @@ -233,7 +232,7 @@ namespace bbtk //Associates the controller with the correspondent model and view controller->setModelAndView(model,view); - model->notifyObservers(); + model->notifyObservers(_idManager); //Register the controller of the new object registerController((InteractorStyleMaracas*) controller); @@ -250,7 +249,7 @@ namespace bbtk int type = GCONNECTOR; manualConnectorContourController* manContourControl = new manualConnectorContourController(); - manualConnectorContourView* manViewerContour = new manualConnectorContourView(); + manualConnectorContourView* manContourView = new manualConnectorContourView(); manualContourModel* manContourModel = new manualContourModel(); GConnectorController* connectorcontroller = new GConnectorController(); @@ -261,21 +260,21 @@ namespace bbtk manContourModel->SetCloseContour(false); connectorModel->setStartPort(startPort); - manViewerContour->SetModel( manContourModel ); - manViewerContour->SetWxVtkBaseView( _baseView ); - manViewerContour->SetRange( 0.5 ); - manViewerContour->SetZ( 900 ); + manContourView->SetModel( manContourModel ); + manContourView->SetWxVtkBaseView( _baseView ); + manContourView->SetRange( 0.5 ); + manContourView->SetZ( 900 ); - manViewerContour->SetColorNormalContour(0, 0, 1); - manViewerContour->SetColorEditContour(0.5, 0.5, 0.5); - manViewerContour->SetColorSelectContour(1, 0.8, 0); - manViewerContour->SetWidthLine(1); + manContourView->SetColorNormalContour(0, 0, 1); + manContourView->SetColorEditContour(0.5, 0.5, 0.5); + manContourView->SetColorSelectContour(1, 0.8, 0); + manContourView->SetWidthLine(1); - manContourControl->SetModelView( manContourModel , manViewerContour ); + manContourControl->SetModelView( manContourModel , manContourView ); manContourControl->CreateNewManualContour(); - manViewerContour->RefreshContour(); + manContourView->RefreshContour(); double x,y,z; @@ -285,14 +284,14 @@ namespace bbtk manContourModel->SetCloseContour(false); manContourModel->AddPoint(x,y,z); - manViewerContour->AddPoint(); + manContourView->AddPoint(); manContourModel->AddPoint(x,y,z); - manViewerContour->AddPoint(); + manContourView->AddPoint(); int bak= manContourControl->GetNumberOfPointsManualContour() - 1; manContourControl->_bakIdPoint=bak; - manViewerContour->Refresh(); + manContourView->Refresh(); manContourControl->SetMoving( false ); @@ -300,7 +299,8 @@ namespace bbtk connectorcontroller->setManualContourController(manContourControl); connectorModel->setManualContourModel(manContourModel); - connectorcontroller->setModelAndView(connectorModel,NULL); + connectorView->setManualContourView(manContourView); + connectorcontroller->setModelAndView(connectorModel,connectorView); int newId = _controllers.size(); connectorcontroller->setId(newId); @@ -344,11 +344,9 @@ namespace bbtk if(command == INIT_CREATION_CONTOUR) { GObjectController* cont = _controllers[idController]; - if(cont->getGObjectType() == GPORT) - { - GPortModel* startOutputPort = (GPortModel*)cont->getModel(); - createGConnector(startOutputPort); - } + GPortModel* startOutputPort = (GPortModel*)cont->getModel(); + createGConnector(startOutputPort); + // The last one is the controller of the connector for(int i=0;i<_controllers.size()-1;i++) { @@ -376,26 +374,22 @@ namespace bbtk } else if(command == FIN_CREATION_CONTOUR && _worldState == CREATING_CONTOUR) { + _worldState = NOTHING_HAPPENS; int id = _controllers.size()-1; GObjectController* cont = _controllers[id]; GConnectorModel* modelContour = (GConnectorModel*)cont->getModel(); GObjectController* finPort = _controllers[idController]; - if(cont->getGObjectType() == GPORT) + if(finPort->getGObjectType() == GPORT) { GPortModel* modelPort = (GPortModel*)finPort->getModel(); modelContour->setEndPort(modelPort); } - manualContourControler* manCont = ((GConnectorController*)cont)->getManualContourController(); - - //manCont->SetCompleteCreation( true ); - //manCont->SetKeyBoardMoving( false ); - //manCont->GetManualContourModel()->SetCloseContour(false); - //manCont->SetEditable( false ); - //manCont->SetPosibleToMove( false ); - //manCont->SetState(0); + manualConnectorContourController* manCont = ((GConnectorController*)cont)->getManualContourController(); + manualConnectorContourView* connView = (manualConnectorContourView*)manCont->GetManualViewBaseContour(); + connView->Refresh(); for(int i=0;i<_controllers.size();i++) { diff --git a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GBlackBoxController.cxx b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GBlackBoxController.cxx index 952e9a9..4554e54 100644 --- a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GBlackBoxController.cxx +++ b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GBlackBoxController.cxx @@ -65,26 +65,23 @@ namespace bbtk int state = _view->getState(); //Evaluate new state - if(!_model->hasChanged() && state == DRAG) + if( state == DRAG) { moveObject(X,Y); - _model->setChanged(); } - if(!_model->hasChanged() && state == NOTHING_HAPPENS) + if(state == NOTHING_HAPPENS) { if(_view->isPointInside(X,Y)) { - _view->setState(HIGHLIGHTED); - _model->setChanged(); + _view->setState(HIGHLIGHTED); } } - if(!_model->hasChanged() && state==HIGHLIGHTED) + if( state==HIGHLIGHTED) { if(!_view->isPointInside(X,Y)) { _view->setState(NOTHING_HAPPENS); - _model->setChanged(); } } @@ -109,20 +106,18 @@ namespace bbtk int state = _view->getState(); //Evaluate new state - if(!_model->hasChanged() && state==HIGHLIGHTED) + if( state==HIGHLIGHTED) { _view->isStartDragging(true); _view->setState(DRAG); - _model->setChanged(); } - if( !_model->hasChanged() && state == SELECTED) + if( state == SELECTED) { if(_view->isPointInside(X,Y)) { _view->isStartDragging(true); _view->setState(DRAG); - _model->setChanged(); } } @@ -145,16 +140,14 @@ namespace bbtk int state = _view->getState(); //Evaluate new state - if(!_model->hasChanged() && state==CLICKED) + if(state==CLICKED) { _view->setState(SELECTED); - _model->setChanged(); } - if( !_model->hasChanged() && state == DRAG) + if( state == DRAG) { _view->setState(SELECTED); - _model->setChanged(); } _model->notifyObservers(_id); @@ -193,10 +186,9 @@ namespace bbtk int state = _view->getState(); //Evaluate new state - if( !_model->hasChanged() && state == SELECTED) + if( state == SELECTED) { _view->setState(NOTHING_HAPPENS); - _model->setChanged(); } _model->notifyObservers(_id); diff --git a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GConnectorController.cxx b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GConnectorController.cxx index 02c5fed..3f97b7c 100644 --- a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GConnectorController.cxx +++ b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GConnectorController.cxx @@ -174,14 +174,14 @@ namespace bbtk //========================================================================= - manualContourControler* GConnectorController::getManualContourController() + manualConnectorContourController* GConnectorController::getManualContourController() { return _controller; } //========================================================================= - void GConnectorController::setManualContourController(manualContourControler* controller) + void GConnectorController::setManualContourController(manualConnectorContourController* controller) { _controller = controller; _controller->SetVtkInteractorStyleBaseView(_vtkInteractorStyleBaseView); diff --git a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GConnectorController.h b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GConnectorController.h index fa92fc1..bc3308b 100644 --- a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GConnectorController.h +++ b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GConnectorController.h @@ -45,9 +45,10 @@ Version: $Revision$ //Includes same project #include "GObjectController.h" +#include "manualConnectorContourView.h" +#include "manualConnectorContourController.h" //Includes creaMaracasVisu -#include //Includes std #include @@ -75,13 +76,13 @@ namespace bbtk virtual bool OnMiddleButtonDown(); virtual bool OnMiddleButtonUp(); - manualContourControler* getManualContourController(); - void setManualContourController(manualContourControler* controller); + manualConnectorContourController* getManualContourController(); + void setManualContourController(manualConnectorContourController* controller); private: //Attributes - manualContourControler* _controller; + manualConnectorContourController* _controller; //Private Methods diff --git a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GConnectorView.cxx b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GConnectorView.cxx index 9c2388f..6617b1f 100644 --- a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GConnectorView.cxx +++ b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GConnectorView.cxx @@ -41,19 +41,29 @@ namespace bbtk //========================================================================= + GConnectorView::GConnectorView() { } //========================================================================= + GConnectorView::~GConnectorView() { } + //========================================================================= + + void GConnectorView::setManualContourView(manualViewContour *viewContour) + { + manViewContour = viewContour; + } - void GConnectorView::TransfromCoordViewWorld(double &X, double &Y, double &Z, int type) + //========================================================================= + + manualViewContour* GConnectorView::getManualContourView() { - //_wxvtkbaseview->TransCoordScreenToWorld(X,Y,Z,type); + return manViewContour; } } // EO namespace bbtk diff --git a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GConnectorView.h b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GConnectorView.h index fb98251..ade0a50 100644 --- a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GConnectorView.h +++ b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GConnectorView.h @@ -47,6 +47,7 @@ Version: $Revision$ #include "vtkGObjectView.h" //Includes creaMaracasVisu +#include //Includes std #include @@ -64,13 +65,14 @@ namespace bbtk GConnectorView(); ~GConnectorView(); - //Public methods - virtual void TransfromCoordViewWorld(double &X, double &Y, double &Z, int type=2); + //Public methods + void setManualContourView(manualViewContour* viewContour); + manualViewContour* getManualContourView(); private: //Attributes - + manualViewContour* manViewContour; //Private Methods diff --git a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GObjectController.cxx b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GObjectController.cxx index 0dffa0e..2c90897 100644 --- a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GObjectController.cxx +++ b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GObjectController.cxx @@ -77,26 +77,23 @@ namespace bbtk int state = _view->getState(); //Evaluate new state - if(!_model->hasChanged() && state == DRAG) + if( state == DRAG) { moveObject(X,Y); - _model->setChanged(); } - if(!_model->hasChanged() && state == NOTHING_HAPPENS) + if( state == NOTHING_HAPPENS) { if(_view->isPointInside(X,Y)) { - _view->setState(HIGHLIGHTED); - _model->setChanged(); + _view->setState(HIGHLIGHTED); } } - if(!_model->hasChanged() && state==HIGHLIGHTED) + if( state==HIGHLIGHTED) { if(!_view->isPointInside(X,Y)) { _view->setState(NOTHING_HAPPENS); - _model->setChanged(); } } @@ -129,7 +126,6 @@ namespace bbtk { _view->isStartDragging(true); _model->setState(DRAG); - _model->setChanged(); } if( !_model->hasChanged() && state == SELECTED) @@ -138,7 +134,6 @@ namespace bbtk { _view->isStartDragging(true); _model->setState(DRAG); - _model->setChanged(); } } @@ -170,13 +165,11 @@ namespace bbtk if(!_model->hasChanged() && state==CLICKED) { _model->setState(SELECTED); - _model->setChanged(); } if( !_model->hasChanged() && state == DRAG) { _model->setState(SELECTED); - _model->setChanged(); } _model->notifyObservers(); @@ -223,10 +216,9 @@ namespace bbtk int state = _view->getState(); //Evaluate new state - if( !_model->hasChanged() && state == SELECTED) + if( state == SELECTED) { _view->setState(NOTHING_HAPPENS); - _model->setChanged(); } _model->notifyObservers(_id); diff --git a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GPortController.cxx b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GPortController.cxx index 6610608..e2203ce 100644 --- a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GPortController.cxx +++ b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/GPortController.cxx @@ -77,32 +77,27 @@ namespace bbtk bool GPortController::OnLeftButtonUp() { int state = _view->getState(); - if(state == HIGHLIGHTED && _isLeftClickDown) + if(_isLeftClickDown) { - _isLeftClickDown=false; - - if ( _vtkInteractorStyleBaseView!=NULL ) + if(state==HIGHLIGHTED) { - int X,Y; - wxVTKRenderWindowInteractor *wxVTKiren; - wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor(); - wxVTKiren->GetEventPosition(X,Y); - int portType = ((GPortModel*)_model)->getPortType(); //Evaluate new state if(portType==GOUTPUTPORT) { - _model->setChanged(); _model->notifyObservers(_id,INIT_CREATION_CONTOUR); } else if (portType==GINPUTPORT) { - _model->setChanged(); _model->notifyObservers(_id,FIN_CREATION_CONTOUR); } - } + else + { + _view->setState(NOTHING_HAPPENS); + } + _isLeftClickDown=false; } return true; diff --git a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/manualConnectorContourView.cxx b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/manualConnectorContourView.cxx index e361e63..4bbaecb 100644 --- a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/manualConnectorContourView.cxx +++ b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/manualConnectorContourView.cxx @@ -58,11 +58,12 @@ namespace bbtk //========================================================================= - void manualConnectorContourView::removeStartAndEnd() + void manualConnectorContourView::updateStartAndEnd(double* start , double* end) { - _wxvtkbaseview->GetRenderer()->RemoveActor( _lstViewPoints[0]->GetVtkActor() ); + _manContModel->MovePoint(0,start[0],start[1],start[2]); + _manContModel->MovePoint(_manContModel->GetSizeLstPoints()-1,end[0],end[1],end[2]); - _wxvtkbaseview->GetRenderer()->RemoveActor( _lstViewPoints[_lstViewPoints.size()-1]->GetVtkActor() ); + Refresh(); } //========================================================================= diff --git a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/manualConnectorContourView.h b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/manualConnectorContourView.h index bcc076f..43fd428 100644 --- a/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/manualConnectorContourView.h +++ b/lib/EditorGraphicBBS/bbsVtkGUIEditorGraphic/manualConnectorContourView.h @@ -67,7 +67,7 @@ namespace bbtk //Public methods virtual void TransfromCoordViewWorld(double &X, double &Y, double &Z, int type=2); - void removeStartAndEnd(); + void updateStartAndEnd(double* start , double* end); private: