diff --git a/modules/gui/pymod/export_sequence_viewerV2.cc b/modules/gui/pymod/export_sequence_viewerV2.cc
index 4731c1cacdebc24bb312901e94f96847bb1d7370..67eebd8eee27a43bc923b2c4440078f40fb84a4d 100644
--- a/modules/gui/pymod/export_sequence_viewerV2.cc
+++ b/modules/gui/pymod/export_sequence_viewerV2.cc
@@ -16,7 +16,10 @@
 // along with this library; if not, write to the Free Software Foundation, Inc.,
 // 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 //------------------------------------------------------------------------------
+#include <vector>
+
 #include <boost/python.hpp>
+#include <boost/python/suite/indexing/vector_indexing_suite.hpp>
 
 #include <ost/gui/sequence/sequence_viewer.hh>
 
@@ -43,6 +46,51 @@ void change_display_mode_c(SequenceViewerV2* seq_viewer, const seq::AlignmentHan
   seq_viewer->ChangeDisplayMode(alignment, mode);
 }
 
+void get_current_display_mode_a(SequenceViewerV2* seq_viewer)
+{
+  seq_viewer->GetCurrentDisplayMode();
+}
+
+void get_current_display_mode_b(SequenceViewerV2* seq_viewer, const gfx::EntityP& entity)
+{
+  seq_viewer->GetCurrentDisplayMode(entity);
+}
+
+void get_current_display_mode_c(SequenceViewerV2* seq_viewer, const seq::AlignmentHandle& alignment)
+{
+  seq_viewer->GetCurrentDisplayMode(alignment);
+}
+
+std::vector<QString> get_display_modes_a(SequenceViewerV2* seq_viewer)
+{
+  std::vector<QString> modes;
+  const QStringList& list = seq_viewer->GetDisplayModes();
+  for (int i=0; i<list.size(); i++){
+    modes.push_back(list.at(i));
+  }
+  return modes;
+}
+
+std::vector<QString> get_display_modes_b(SequenceViewerV2* seq_viewer, const gfx::EntityP& entity)
+{
+  std::vector<QString> modes;
+  const QStringList& list = seq_viewer->GetDisplayModes(entity);
+  for (int i=0; i<list.size(); i++){
+    modes.push_back(list.at(i));
+  }
+  return modes;
+}
+
+std::vector<QString> get_display_modes_c(SequenceViewerV2* seq_viewer, const seq::AlignmentHandle& alignment)
+{
+  std::vector<QString> modes;
+  const QStringList& list = seq_viewer->GetDisplayModes(alignment);
+  for (int i=0; i<list.size(); i++){
+    modes.push_back(list.at(i));
+  }
+  return modes;
+}
+
 }
 
 
@@ -53,11 +101,21 @@ void export_SequenceViewerV2()
     .def("Hide", &SequenceViewerV2::hide)
     .def("AddAlignment", &SequenceViewerV2::AddAlignment)
     .def("RemoveAlignment", &SequenceViewerV2::RemoveAlignment)
+    .def("GetDisplayModes", &get_display_modes_a)
+    .def("GetDisplayModes", &get_display_modes_b)
+    .def("GetDisplayModes", &get_display_modes_c)
+    .def("GetCurrentDisplayMode", &get_current_display_mode_a)
+    .def("GetCurrentDisplayMode", &get_current_display_mode_b)
+    .def("GetCurrentDisplayMode", &get_current_display_mode_c)
     .def("ChangeDisplayMode",&change_display_mode_a)
     .def("ChangeDisplayMode",&change_display_mode_b)
     .def("ChangeDisplayMode",&change_display_mode_c)
     .def("GetQObject",&get_py_qobject<SequenceViewerV2>)
     .add_property("qobject", &get_py_qobject<SequenceViewerV2>)
   ;
+
+  class_<std::vector<QString> >("QStringList", init<>())
+    .def(vector_indexing_suite<std::vector<QString>, true >())
+  ;
 }
 
diff --git a/modules/gui/src/sequence/sequence_model.cc b/modules/gui/src/sequence/sequence_model.cc
index f5eb3fe14818eb93cba811ac699a65cba4404e39..1191e7ac5e9e478b08059700bd538a6e85a8516c 100644
--- a/modules/gui/src/sequence/sequence_model.cc
+++ b/modules/gui/src/sequence/sequence_model.cc
@@ -294,7 +294,29 @@ void SequenceModel::DoubleClicked(const QModelIndex& index)
   }
 }
 
-const QStringList& SequenceModel::GetDisplayModes(gfx::EntityP& entity)
+const QStringList& SequenceModel::GetDisplayModes()
+{
+  display_modes_.clear();
+  bool removed = false;
+  for (int i = 0; i<objects_.size(); i++){
+    const QStringList& list = objects_[i]->GetDisplayModes();
+    for(int j=0; j<list.size(); j++){
+      if(i = 0){
+        display_modes_.append(list.at(i));
+      }
+      else if (!display_modes_.contains(list.at(i))){
+        display_modes_.removeAll(list.at(i));
+        removed = true;
+      }
+    }
+  }
+  if(removed){
+    display_modes_.insert(0," ");
+  }
+  return display_modes_;
+}
+
+const QStringList& SequenceModel::GetDisplayModes(const gfx::EntityP& entity)
 {
   BaseViewObject* item = this->GetItem(entity);
   if(item){
@@ -316,7 +338,23 @@ const QStringList& SequenceModel::GetDisplayModes(const seq::AlignmentHandle& al
   }
 }
 
-const QString& SequenceModel::GetCurrentDisplayMode(gfx::EntityP& entity)
+const QString& SequenceModel::GetCurrentDisplayMode()
+{
+  current_display_mode_.clear();
+  for (int i = 0; i<objects_.size(); i++){
+    const QString& mode = objects_[i]->GetCurrentDisplayMode();
+    if(current_display_mode_.isEmpty()){
+      current_display_mode_ = mode;
+    }
+    else if(current_display_mode_ != mode){
+      current_display_mode_ = " ";
+      break;
+    }
+  }
+  return current_display_mode_;
+}
+
+const QString& SequenceModel::GetCurrentDisplayMode(const gfx::EntityP& entity)
 {
   BaseViewObject* item = this->GetItem(entity);
   if(item){
diff --git a/modules/gui/src/sequence/sequence_model.hh b/modules/gui/src/sequence/sequence_model.hh
index 1cd719ba729315341c33d2328b01abe39f0e04f0..d0afbbc4d8d8f7d5ed192d9ee6cab239f753fbaf 100644
--- a/modules/gui/src/sequence/sequence_model.hh
+++ b/modules/gui/src/sequence/sequence_model.hh
@@ -61,9 +61,11 @@ public:
   int GetGlobalRow(BaseViewObject* obj, int row) const;
 
 
-  const QStringList& GetDisplayModes(gfx::EntityP& entity);
+  const QStringList& GetDisplayModes();
+  const QStringList& GetDisplayModes(const gfx::EntityP& entity);
   const QStringList& GetDisplayModes(const seq::AlignmentHandle& alignment);
-  const QString& GetCurrentDisplayMode(gfx::EntityP& entity);
+  const QString& GetCurrentDisplayMode();
+  const QString& GetCurrentDisplayMode(const gfx::EntityP& entity);
   const QString& GetCurrentDisplayMode(const seq::AlignmentHandle& alignment);
   void SetDisplayMode(const QString& mode);
   void SetDisplayMode(const gfx::EntityP& entity, const QString& mode);
@@ -101,6 +103,8 @@ private:
   PainterList empty_painter_list_;
   QString empty_string_;
   QStringList empty_string_list_;
+  QStringList display_modes_;
+  QString current_display_mode_;
 };
 
 
diff --git a/modules/gui/src/sequence/sequence_viewer.cc b/modules/gui/src/sequence/sequence_viewer.cc
index 3eafc093fe50af6f7ff5e7f35dad7ff9d7fbed96..19f6613d884c0317b21cf52ae189d65f8f932925 100644
--- a/modules/gui/src/sequence/sequence_viewer.cc
+++ b/modules/gui/src/sequence/sequence_viewer.cc
@@ -284,6 +284,32 @@ void SequenceViewerV2::SelectList(const QModelIndexList& list)
   }
 }
 
+const QStringList& SequenceViewerV2::GetDisplayModes()
+{
+  return model_->GetDisplayModes();
+}
+const QStringList& SequenceViewerV2::GetDisplayModes(const seq::AlignmentHandle& alignment)
+{
+  return model_->GetDisplayModes(alignment);
+}
+const QStringList& SequenceViewerV2::GetDisplayModes(const gfx::EntityP& entity)
+{
+  return model_->GetDisplayModes(entity);
+}
+
+const QString& SequenceViewerV2::GetCurrentDisplayMode()
+{
+  return model_->GetCurrentDisplayMode();
+}
+const QString& SequenceViewerV2::GetCurrentDisplayMode(const seq::AlignmentHandle& alignment)
+{
+  return model_->GetCurrentDisplayMode(alignment);
+}
+const QString& SequenceViewerV2::GetCurrentDisplayMode(const gfx::EntityP& entity)
+{
+  return model_->GetCurrentDisplayMode(entity);
+}
+
 void SequenceViewerV2::ChangeDisplayMode(const QString& string)
 {
   model_->SetDisplayMode(string);
diff --git a/modules/gui/src/sequence/sequence_viewer.hh b/modules/gui/src/sequence/sequence_viewer.hh
index 1137697e47c20f51c15edd9894fa241f6ceecff0..d5684fa5b956270fbf0396b1e38c994f029c887c 100644
--- a/modules/gui/src/sequence/sequence_viewer.hh
+++ b/modules/gui/src/sequence/sequence_viewer.hh
@@ -57,6 +57,14 @@ public:
   virtual bool Restore(const QString&){return true;};
   virtual bool Save(const QString&){return true;};
 
+  virtual const QStringList& GetDisplayModes();
+  virtual const QStringList& GetDisplayModes(const seq::AlignmentHandle& alignment);
+  virtual const QStringList& GetDisplayModes(const gfx::EntityP& entity);
+
+  virtual const QString& GetCurrentDisplayMode();
+  virtual const QString& GetCurrentDisplayMode(const seq::AlignmentHandle& alignment);
+  virtual const QString& GetCurrentDisplayMode(const gfx::EntityP& entity);
+
 public slots:
   void ChangeDisplayMode(const QString&);
   void ChangeDisplayMode(const seq::AlignmentHandle&, const QString&);