diff --git a/modules/gui/pymod/export_data_viewer.cc b/modules/gui/pymod/export_data_viewer.cc
index 993f272a8bbf28417568c1118e1b847acb040665..1a3ada014c63e320b7448a0896238fa169a280b0 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 14e15380a5c3dbc2e271b8dec3d99cdefb59bea1..a0d75b28f02c392663832d1e4b02d427326115e1 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 3fd08f9775ea06762342272e6ce41d5f40737856..6594b588cfb4a00b9710d8da4dcd618680b64d3b 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 ec113e525419d81359650d68106d9a868ec9d7e6..9249bef7d2bf66487ef423ad37f50e9f4e506ae0 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 60999a9003355073ef1810d7067c0a7f635a0847..9e165925e8e516f9320ee85da51ca895eb1b806c 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;