dont crash when loading a new analysis
authorDiane Trout <diane@caltech.edu>
Mon, 20 Mar 2006 00:13:45 +0000 (00:13 +0000)
committerDiane Trout <diane@caltech.edu>
Mon, 20 Mar 2006 00:13:45 +0000 (00:13 +0000)
Since the MussaAlignedWindow uses a pointer to the mussa analysis, when
we load a different analysis it crashes. So close (and delete) all the
aligned windows when we load a new analysis.

qui/MussaWindow.cpp
qui/MussaWindow.hpp

index d6b97a6b565fba1f467cf4992c0edc5e5f506b3c..c179b90b8b96d4d40911077552e8968041c73214 100644 (file)
@@ -11,7 +11,6 @@
 #include <QWhatsThis>
 
 #include "qui/MussaWindow.hpp"
-#include "qui/MussaAlignedWindow.hpp"
 #include "mussa_exceptions.hpp"
 
 #include <iostream>
@@ -314,7 +313,8 @@ void MussaWindow::viewMussaAlignment()
                          QObject::tr("you should probably select some paths "
                                      "first"));
   } else {
-    QWidget *ma_win = new MussaAlignedWindow(*analysis, selected_paths);
+    MussaAlignedWindow *ma_win = new MussaAlignedWindow(*analysis, selected_paths);
+    aligned_windows.push_back(ma_win);
     ma_win->show();
   }
 }
@@ -322,6 +322,14 @@ void MussaWindow::viewMussaAlignment()
 void MussaWindow::updateAnalysis()
 {
   cout << "analysis updated" << endl;
+  for (list<MussaAlignedWindow *>::iterator maw_i = aligned_windows.begin();
+       maw_i != aligned_windows.end();
+       ++maw_i)
+  {
+    (*maw_i)->hide();
+    delete *maw_i;
+  }
+
   browser.clear();
   const vector<Sequence>& seqs = analysis->sequences();
   browser.setSequences(seqs, analysis->colorMapper());
index d748b0d69525f6ccd60a2f01e26c004875ca52f2..14c1e1f967a883c8eeb2321ad54f03035a3c101a 100644 (file)
@@ -1,11 +1,14 @@
 #ifndef _MUSSAWINDOW_H_
 #define _MUSSAWINDOW_H_
 
+#include <list>
+
 #include <QMainWindow>
 #include <QPixmap>
 #include <QSpinBox>
 #include <QToolBar>
 
+#include "qui/MussaAlignedWindow.hpp"
 #include "qui/seqbrowser/SequenceBrowserWidget.hpp"
 #include "qui/ThresholdWidget.hpp"
 
@@ -54,6 +57,8 @@ public slots:
   
 protected:
   Mussa *analysis;
+  std::list<MussaAlignedWindow *> aligned_windows;
+
   // display our wonderful mussa output
   SequenceBrowserWidget browser;
   QToolBar mussaViewTB;