From 39e4a22d9a7f9603494daa8611c9683ab07d8f40 Mon Sep 17 00:00:00 2001
From: Andreas Schenk <andreas_schenk@hms.harvard.edu>
Date: Tue, 31 Jan 2012 16:55:40 -0500
Subject: [PATCH] added SetSelection to DataViewer

---
 modules/gui/pymod/export_data_viewer.cc              |  1 +
 modules/gui/src/data_viewer/data_viewer.cc           |  6 ++++++
 modules/gui/src/data_viewer/data_viewer.hh           |  3 +++
 .../gui/src/data_viewer/data_viewer_panel_base.cc    | 12 ++++++++++++
 .../gui/src/data_viewer/data_viewer_panel_base.hh    |  3 +++
 5 files changed, 25 insertions(+)

diff --git a/modules/gui/pymod/export_data_viewer.cc b/modules/gui/pymod/export_data_viewer.cc
index 993f272a8..1a3ada014 100644
--- a/modules/gui/pymod/export_data_viewer.cc
+++ b/modules/gui/pymod/export_data_viewer.cc
@@ -73,6 +73,7 @@ void export_data_viewer()
     .def("AddOverlay",&DataViewer::AddOverlay,o_AddOverlay())
     .def("ClearOverlays",&DataViewer::ClearOverlays)
     .def("GetSelection",&DataViewer::GetSelection)
+    .def("SetSelection",&DataViewer::SetSelection)
     .def("UpdateView",&DataViewer::UpdateView)
     .def("Recenter",&DataViewer::Recenter)
     .def("AddDockWidget",add_dock1)
diff --git a/modules/gui/src/data_viewer/data_viewer.cc b/modules/gui/src/data_viewer/data_viewer.cc
index 14e15380a..a0d75b28f 100644
--- a/modules/gui/src/data_viewer/data_viewer.cc
+++ b/modules/gui/src/data_viewer/data_viewer.cc
@@ -118,6 +118,12 @@ Extent DataViewer::GetSelection() const
   return panel_->GetSelection();
 }
 
+void DataViewer::SetSelection(const Extent& selection)
+{
+  assert(panel_);
+  panel_->SetSelection(selection);
+}
+
 void DataViewer::SetName(const String& name)
 {
   setWindowTitle(QString::fromStdString(name));
diff --git a/modules/gui/src/data_viewer/data_viewer.hh b/modules/gui/src/data_viewer/data_viewer.hh
index 3fd08f977..6594b588c 100644
--- a/modules/gui/src/data_viewer/data_viewer.hh
+++ b/modules/gui/src/data_viewer/data_viewer.hh
@@ -80,6 +80,9 @@ public:
   //! return currently active selection
   Extent GetSelection() const;
 
+  //! set currently active selection
+  void SetSelection(const Extent& selection);
+
   //! set the name, displayed as the window title
   void SetName(const String& name);
 
diff --git a/modules/gui/src/data_viewer/data_viewer_panel_base.cc b/modules/gui/src/data_viewer/data_viewer_panel_base.cc
index ec113e525..9249bef7d 100644
--- a/modules/gui/src/data_viewer/data_viewer_panel_base.cc
+++ b/modules/gui/src/data_viewer/data_viewer_panel_base.cc
@@ -643,6 +643,18 @@ Extent DataViewerPanelBase::GetSelection() const
   return selection_;
 }
 
+void DataViewerPanelBase::SetSelection(const Extent& selection)
+{
+  selection_=selection;
+  update_rubberband_from_selection_();
+  if(selection==Extent()){
+    rubberband_->hide();
+  }else{
+    rubberband_->show();
+  }
+  UpdateView(false);
+}
+
 Real DataViewerPanelBase::GetZoomScale() const 
 {
   return zoom_scale_;
diff --git a/modules/gui/src/data_viewer/data_viewer_panel_base.hh b/modules/gui/src/data_viewer/data_viewer_panel_base.hh
index 60999a900..9e165925e 100644
--- a/modules/gui/src/data_viewer/data_viewer_panel_base.hh
+++ b/modules/gui/src/data_viewer/data_viewer_panel_base.hh
@@ -101,6 +101,9 @@ public:
   */
   Extent GetSelection() const;
 
+  //! set currently active selection
+  void SetSelection(const Extent& extent);
+
   //! convert window coordinates to image point
   Point WinToPoint(int mx, int my) const;
   Point WinToPoint(const QPoint& p) const;
-- 
GitLab