From 118744b3fb76bbf48c71358ea9328612502442af Mon Sep 17 00:00:00 2001
From: stefan <stefan@5a81b35b-ba03-0410-adc8-b2c5c5119f08>
Date: Fri, 28 May 2010 15:09:39 +0000
Subject: [PATCH] New SequenceViewer, not listen to scene if aligment loaded
 from file browser

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2300 5a81b35b-ba03-0410-adc8-b2c5c5119f08
---
 modules/gui/src/file_loader.cc              |  2 +-
 modules/gui/src/sequence/sequence_viewer.cc | 20 ++++++++++++--------
 modules/gui/src/sequence/sequence_viewer.hh |  2 +-
 3 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/modules/gui/src/file_loader.cc b/modules/gui/src/file_loader.cc
index 8552f2dcf..9ae9885b8 100644
--- a/modules/gui/src/file_loader.cc
+++ b/modules/gui/src/file_loader.cc
@@ -322,7 +322,7 @@ gfx::GfxObjP FileLoader::TryLoadAlignment(const QString& filename, io::SequenceI
     handler->Import(seq_list,filename.toStdString());
     seq::AlignmentHandle alignment = seq::AlignmentFromSequenceList(seq_list);
     gui::MainArea* main_area = gui::GostyApp::Instance()->GetPerspective()->GetMainArea();
-    SequenceViewerV2* viewer = new SequenceViewerV2(main_area);
+    SequenceViewerV2* viewer = new SequenceViewerV2(false,main_area);
     viewer->AddAlignment(alignment);
     main_area->AddWidget(filename,viewer);
     throw io::IOFileAlreadyLoadedException("Loaded in DataViewer");
diff --git a/modules/gui/src/sequence/sequence_viewer.cc b/modules/gui/src/sequence/sequence_viewer.cc
index 00ab97447..392309d70 100644
--- a/modules/gui/src/sequence/sequence_viewer.cc
+++ b/modules/gui/src/sequence/sequence_viewer.cc
@@ -70,9 +70,11 @@ struct GetNodesVisitor: public gfx::GfxNodeVisitor {
   gfx::NodePtrList GetNodes(){return nodes_;}
 };
 
-SequenceViewerV2::SequenceViewerV2(QWidget* parent): Widget(NULL,parent)
+SequenceViewerV2::SequenceViewerV2(bool listen_scene, QWidget* parent): Widget(NULL,parent)
 {
-  gfx::Scene::Instance().AttachObserver(this);
+  if(listen_scene){
+    gfx::Scene::Instance().AttachObserver(this);
+  }
   model_ = new SequenceModel(this);
 
   QVBoxLayout* layout = new QVBoxLayout(this);
@@ -102,12 +104,14 @@ SequenceViewerV2::SequenceViewerV2(QWidget* parent): Widget(NULL,parent)
   connect(seq_table_view_,SIGNAL(CopyEvent(QKeyEvent*)),this,SLOT(CopyEvent(QKeyEvent*)));
   connect(seq_table_view_,SIGNAL(MouseWheelEvent(QWheelEvent*)),this,SLOT(MouseWheelEvent(QWheelEvent*)));
 
-  gfx::GfxNodeP root_node = gfx::Scene::Instance().GetRootNode();
-  GetNodesVisitor gnv;
-  gfx::Scene::Instance().Apply(gnv);
-  gfx::NodePtrList list = gnv.GetNodes();
-  for(unsigned int i=0; i<list.size();i++){
-    this->NodeAdded(list[i]);
+  if(listen_scene){
+    gfx::GfxNodeP root_node = gfx::Scene::Instance().GetRootNode();
+    GetNodesVisitor gnv;
+    gfx::Scene::Instance().Apply(gnv);
+    gfx::NodePtrList list = gnv.GetNodes();
+    for(unsigned int i=0; i<list.size();i++){
+      this->NodeAdded(list[i]);
+    }
   }
 }
 
diff --git a/modules/gui/src/sequence/sequence_viewer.hh b/modules/gui/src/sequence/sequence_viewer.hh
index b4134f1fe..10af21bb3 100644
--- a/modules/gui/src/sequence/sequence_viewer.hh
+++ b/modules/gui/src/sequence/sequence_viewer.hh
@@ -44,7 +44,7 @@ namespace ost { namespace gui {
 class DLLEXPORT_OST_GUI SequenceViewerV2 : public Widget, public gfx::SceneObserver  {
   Q_OBJECT
 public:
-  SequenceViewerV2(QWidget* parent=NULL);
+  SequenceViewerV2(bool listen_scene=true, QWidget* parent=NULL);
   ~SequenceViewerV2();
 
   virtual void NodeAdded(const gfx::GfxNodeP& node);
-- 
GitLab