From e12c9f5886150adacd75320d1ce5eebe929690ef Mon Sep 17 00:00:00 2001
From: Ludovic Hussonnois <ludovic.hussonnois@c-s.fr>
Date: Tue, 25 Apr 2017 17:54:08 +0100
Subject: [PATCH] ENH: Connect Signal/Slot to edit projection reference zoom
 level.

---
 .../Monteverdi/src/mvdMainWindow.cxx          | 25 ++++++++-----------
 .../include/mvdProjectionBarWidget.h          |  3 +++
 .../src/mvdProjectionBarWidget.cxx            | 13 ++++++++++
 3 files changed, 27 insertions(+), 14 deletions(-)

diff --git a/Modules/Visualization/Monteverdi/src/mvdMainWindow.cxx b/Modules/Visualization/Monteverdi/src/mvdMainWindow.cxx
index 656587c0ad..136343a139 100644
--- a/Modules/Visualization/Monteverdi/src/mvdMainWindow.cxx
+++ b/Modules/Visualization/Monteverdi/src/mvdMainWindow.cxx
@@ -107,7 +107,6 @@ namespace mvd
 /* CONSTANTS                                                                 */
 
 #define REFERENCE_LAYER_COMBOBOX_NAME "referenceLayerComboBox"
-#define REFERENCE_PROJECTION_ZOOM_LINE_EDIT "ProjZoomLineEdit"
 
 #define FORCE_NO_GLSL ( ( defined( OTB_DEBUG ) && 0 ) || 0 )
 
@@ -142,9 +141,9 @@ MainWindow
 #endif // USE_TABBED_VIEW
   m_StatusBarWidget( NULL ),
   m_ShaderWidget( NULL ),
-  m_ProjectionBarWidget( NULL ),
   m_FilenameDragAndDropEventFilter( NULL ),
   m_KeymapDialog( NULL ),
+  m_ProjectionBarWidget( NULL ),
   m_GLSL140( -2 ),
   m_isGLSLAvailable( false ),
   m_ForceNoGLSL( false )
@@ -639,23 +638,21 @@ MainWindow
   assert( m_ProjectionBarWidget!=NULL );
   assert( m_ImageView!=NULL );
 
-/*
   QObject::connect(
-          m_ImageView,
-          SIGNAL( ScaleChanged( double, double ) ),
-          // to:
-          m_ProjectionBarWidget,
-          SLOT( SetProjectionScale( double, double ) )
+    m_ImageView,
+    SIGNAL( ScaleChanged( double, double ) ),
+    // to:
+    m_ProjectionBarWidget,
+    SLOT( SetProjectionScale( double, double ) )
   );
 
   QObject::connect(
-          m_ProjectionBarWidget,
-          SIGNAL( ProjectionScaleChanged( double ) ),
-          // to:
-          m_ImageView->GetManipulator(),
-          SLOT( ZoomTo( double ) )
+    m_ProjectionBarWidget,
+    SIGNAL( ProjectionScaleChanged( double ) ),
+    // to:
+    m_ImageView->GetManipulator(),
+    SLOT( ZoomTo( double ) )
   );
-  */
 
 
 }
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdProjectionBarWidget.h b/Modules/Visualization/MonteverdiGui/include/mvdProjectionBarWidget.h
index 658487758c..5a2d40ee79 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdProjectionBarWidget.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdProjectionBarWidget.h
@@ -84,6 +84,9 @@ public:
   /** \brief Destructor. */
   ~ProjectionBarWidget() ITK_OVERRIDE;
 
+public slots:
+  void SetProjectionScale(double scale_x, double scale_y);
+
 private:
 
   /**
diff --git a/Modules/Visualization/MonteverdiGui/src/mvdProjectionBarWidget.cxx b/Modules/Visualization/MonteverdiGui/src/mvdProjectionBarWidget.cxx
index dde1b582d8..0e74ba6632 100644
--- a/Modules/Visualization/MonteverdiGui/src/mvdProjectionBarWidget.cxx
+++ b/Modules/Visualization/MonteverdiGui/src/mvdProjectionBarWidget.cxx
@@ -37,6 +37,19 @@ ProjectionBarWidget::~ProjectionBarWidget()
   m_UI = NULL;
 }
 
+void ProjectionBarWidget::SetProjectionScale(double scale_x, double scale_y)
+{
+  QString text = "1:1";
+
+  if( scale_x>1.0 )
+    text = QString( "%1:1" ).arg( scale_x );
+
+  else if( scale_x<1.0 )
+    text = QString( "1:%1" ).arg( 1.0 / scale_x );
+
+  m_UI->projectionScaleLineEdit->setText(text);
+}
+
 void ProjectionBarWidget::on_projectionScaleLineEdit_returnPressed()
 {
   ChangeScale();
-- 
GitLab