diff --git a/ViewerManager/Controller/otbImageViewerManagerController.cxx b/ViewerManager/Controller/otbImageViewerManagerController.cxx index 5c33f1fd51c12aa28813729b9ac8072c93fb03c7..d4131f375532f455b9c93c19d522845e6544c6ae 100644 --- a/ViewerManager/Controller/otbImageViewerManagerController.cxx +++ b/ViewerManager/Controller/otbImageViewerManagerController.cxx @@ -128,5 +128,19 @@ ImageViewerManagerController } } +void +ImageViewerManagerController +::Link(unsigned int leftChoice, unsigned int rightChoice) +{ + try + { + m_Model->Link(leftChoice,rightChoice); + } + catch (itk::ExceptionObject & err) + { + MsgReporter::GetInstance()->SendError(err.GetDescription()); + } +} + } // end namespace otb diff --git a/ViewerManager/Controller/otbImageViewerManagerController.h b/ViewerManager/Controller/otbImageViewerManagerController.h index 9a8c08d767f654abdac14f66c3e88e8dcabb1b06..1f31e15db829f12db599bdec22b6163e9ee690b9 100644 --- a/ViewerManager/Controller/otbImageViewerManagerController.h +++ b/ViewerManager/Controller/otbImageViewerManagerController.h @@ -106,7 +106,7 @@ public: virtual void UpdateGrayScaleChannelOrder(int choice, unsigned int selectedItem ); virtual void UpdateModulusChannelOrder(int realChoice , int imChoice ,unsigned int selectedItem ); virtual void UpdatePhaseChannelOrder(int realChoice , int imChoice, unsigned int selectedItem); - + virtual void Link(unsigned int leftChoice, unsigned int rightChoice); diff --git a/ViewerManager/Controller/otbImageViewerManagerControllerInterface.h b/ViewerManager/Controller/otbImageViewerManagerControllerInterface.h index 9e31bba096be58518b856dfcc21d890ba7798e22..10de1fa83157056c13e2df7e5934747ac9bf515a 100644 --- a/ViewerManager/Controller/otbImageViewerManagerControllerInterface.h +++ b/ViewerManager/Controller/otbImageViewerManagerControllerInterface.h @@ -73,7 +73,7 @@ public: virtual void UpdateGrayScaleChannelOrder(int choice, unsigned int selectedItem) = 0; virtual void UpdateModulusChannelOrder(int realChoice , int imChoice,unsigned int selectedItem) = 0; virtual void UpdatePhaseChannelOrder(int realChoice , int imChoice, unsigned int selectedItem) = 0; - + virtual void Link(unsigned int leftChoice, unsigned int rightChoice) = 0; /** NewVisu */ virtual VisuControllerPointerType GetVisuController()=0; virtual VisuControllerPointerType GetPreviewVisuController() = 0; diff --git a/ViewerManager/Model/otbImageViewerManagerModel.cxx b/ViewerManager/Model/otbImageViewerManagerModel.cxx index b306ddd13dd9e2907596561b339cacdbc4a219ac..c75895b4a290ec442fc438e4308577b403479a1b 100644 --- a/ViewerManager/Model/otbImageViewerManagerModel.cxx +++ b/ViewerManager/Model/otbImageViewerManagerModel.cxx @@ -109,6 +109,7 @@ ImageViewerManagerModel currentComponent.pWidgetController = controller; currentComponent.pRenderFuntion = rendrerFuntion; currentComponent.pPixelView = pixelView; + currentComponent.pPixelModel = pixelModel; currentComponent.pCurveWidget = curveWidget; /** Add the the struct in the list*/ @@ -258,6 +259,103 @@ ImageViewerManagerModel m_HasChangedChannelOrder = false; } +/** + * + */ +void +ImageViewerManagerModel +::Link(unsigned int leftChoice, unsigned int rightChoice) +{ + + //Get the controllers of the selected images + WidgetControllerPointerType rightController = m_ObjectTrackedList.at(rightChoice-1).pWidgetController; + WidgetControllerPointerType leftController = m_ObjectTrackedList.at(leftChoice-1).pWidgetController; + + //Get the models related to the choosen images + VisuModelPointerType rightRenderModel = m_ObjectTrackedList.at(rightChoice-1).pRendering; + VisuModelPointerType leftRenderModel = m_ObjectTrackedList.at(leftChoice-1).pRendering; + + //Get the views related to the choosen images + VisuViewPointerType pRightVisuView = m_ObjectTrackedList.at(rightChoice-1).pVisuView;; + VisuViewPointerType pLeftVisuView = m_ObjectTrackedList.at(leftChoice-1).pVisuView; + + //Pixel View + PixelDescriptionModelPointerType rightPixelModel = m_ObjectTrackedList.at(rightChoice-1).pPixelModel; + PixelDescriptionModelPointerType leftPixelModel = m_ObjectTrackedList.at(leftChoice-1).pPixelModel; + + // Add the resizing handler + ResizingHandlerType::Pointer rightResizingHandler = ResizingHandlerType::New(); + rightResizingHandler->SetModel(rightRenderModel); + rightResizingHandler->SetView(pLeftVisuView); + + ResizingHandlerType::Pointer leftResizingHandler = ResizingHandlerType::New(); + leftResizingHandler->SetModel(leftRenderModel); + leftResizingHandler->SetView(pRightVisuView); + + rightController->AddActionHandler( leftResizingHandler); + leftController->AddActionHandler(rightResizingHandler); + + // Add the change scaled region handler + ChangeScaledRegionHandlerType::Pointer rightChangeScaledHandler =ChangeScaledRegionHandlerType::New(); + rightChangeScaledHandler->SetModel(rightRenderModel); + rightChangeScaledHandler->SetView(pLeftVisuView); + + ChangeScaledRegionHandlerType::Pointer leftChangeScaledHandler =ChangeScaledRegionHandlerType::New(); + leftChangeScaledHandler->SetModel(leftRenderModel); + leftChangeScaledHandler->SetView(pRightVisuView); + + rightController->AddActionHandler(leftChangeScaledHandler); + leftController->AddActionHandler( rightChangeScaledHandler); + + // Add the change extract region handler + ChangeRegionHandlerType::Pointer rightChangeHandler =ChangeRegionHandlerType::New(); + rightChangeHandler->SetModel(rightRenderModel); + rightChangeHandler->SetView(pLeftVisuView); + + ChangeRegionHandlerType::Pointer leftChangeHandler =ChangeRegionHandlerType::New(); + leftChangeHandler->SetModel(leftRenderModel); + leftChangeHandler->SetView(pRightVisuView); + + rightController->AddActionHandler( leftChangeHandler); + leftController->AddActionHandler(rightChangeHandler); + + // Add the change scaled handler + ChangeScaleHandlerType::Pointer rightChangeScaleHandler =ChangeScaleHandlerType::New(); + rightChangeScaleHandler->SetModel(rightRenderModel ); + rightChangeScaleHandler->SetView(pLeftVisuView); + + ChangeScaleHandlerType::Pointer leftChangeScaleHandler =ChangeScaleHandlerType::New(); + leftChangeScaleHandler->SetModel(leftRenderModel ); + leftChangeScaleHandler->SetView(pRightVisuView); + + rightController->AddActionHandler( leftChangeScaleHandler); + leftController->AddActionHandler(rightChangeScaleHandler); + + //Pixel Description Handling + PixelDescriptionActionHandlerType::Pointer rightPixelActionHandler = PixelDescriptionActionHandlerType::New(); + rightPixelActionHandler->SetView(pLeftVisuView ); + rightPixelActionHandler->SetModel(rightPixelModel); + + PixelDescriptionActionHandlerType::Pointer leftPixelActionHandler = PixelDescriptionActionHandlerType::New(); + leftPixelActionHandler->SetView(pRightVisuView); + leftPixelActionHandler->SetModel(leftPixelModel); + + rightController->AddActionHandler(leftPixelActionHandler ); + leftController->AddActionHandler(rightPixelActionHandler); + +} + +/** + * + */ +void +ImageViewerManagerModel +::AddLinkActionHandler(unsigned int choice) +{ + +} + + } diff --git a/ViewerManager/Model/otbImageViewerManagerModel.h b/ViewerManager/Model/otbImageViewerManagerModel.h index 08c516c093895ce44f5ac12dbb4098c5a125b6a6..4fb3e307de007d451b210506ef3e1b86ef3477a3 100644 --- a/ViewerManager/Model/otbImageViewerManagerModel.h +++ b/ViewerManager/Model/otbImageViewerManagerModel.h @@ -131,7 +131,8 @@ public: VisuViewPointerType pVisuView; StandardRenderingFunctionType::Pointer pRenderFuntion; PixelDescriptionViewType::Pointer pPixelView; - CurvesWidgetType::Pointer pCurveWidget; + PixelDescriptionModelPointerType pPixelModel; + CurvesWidgetType::Pointer pCurveWidget; std::string fileName; }; @@ -152,6 +153,8 @@ public: virtual void UpdateGrayScaleChannelOrder(int choice, unsigned int selectedItem); virtual void UpdateModulusChannelOrder(int realChoice , int imChoice,unsigned int selectedItem ); virtual void UpdatePhaseChannelOrder(int realChoice , int imChoice,unsigned int selectedItem ); + virtual void Link(unsigned int leftChoice, unsigned int rightChoice); + virtual void AddLinkActionHandler(unsigned int choice); /** Method needed to Get the list of componenets stored*/ ObjectTrackedList GetObjectList() @@ -162,7 +165,7 @@ public: /** Boolean Flags */ itkGetMacro(HasImageOpened,bool); itkGetMacro(HasChangedChannelOrder,bool); - + itkGetMacro(HasNewLink,bool); protected: /** This is protected for the singleton. Use GetInstance() instead. */ @@ -192,6 +195,7 @@ private: /** Boolean flags*/ bool m_HasImageOpened; bool m_HasChangedChannelOrder; + bool m_HasNewLink; /** The manipuleted list*/ ObjectTrackedList m_ObjectTrackedList;