allow opening multiple MussaWindows
[mussa.git] / qui / MussaWindow.cpp
index e11e586772994fb566fcbf6bb75188195ca248e2..6ecb88aa563cae84f467f6769e2a91d811deec05 100644 (file)
@@ -64,6 +64,27 @@ MussaWindow::MussaWindow(Mussa *analysis_, QWidget *parent) :
   updateAnalysis();
 }
 
+MussaWindow::~MussaWindow()
+{
+  if (analysis != 0) delete analysis;
+  aligned_windows.clear();
+  if (motif_editor != 0) delete motif_editor;
+
+  if (aboutAction != 0) delete aboutAction;
+  if (closeAction != 0) delete closeAction;
+  if (createNewAnalysisAction != 0) delete createNewAnalysisAction;
+  if (createSubAnalysisAction != 0) delete createSubAnalysisAction;
+  if (editMotifsAction != 0) delete editMotifsAction;
+  if (loadMotifListAction != 0) delete loadMotifListAction;
+  if (loadMupaAction != 0) delete loadMupaAction;
+  if (loadSavedAnalysisAction != 0) delete loadSavedAnalysisAction;
+  if (newMussaWindowAction != 0) delete newMussaWindowAction;
+  if (saveMotifListAction != 0) delete saveMotifListAction;
+  if (showMussaViewToolbarAction != 0) delete showMussaViewToolbarAction;
+  if (toggleMotifsAction != 0) delete toggleMotifsAction;
+  if (saveBrowserPixmapAction != 0) delete saveBrowserPixmapAction;
+}
+
 void MussaWindow::setAnalysis(Mussa *new_analysis)
 {
   if (new_analysis != 0) {
@@ -117,6 +138,12 @@ void MussaWindow::setupActions()
           this, SLOT(loadSavedAnalysis()));
   loadSavedAnalysisAction->setIcon(QIcon(":/icons/fileopen.png"));
 
+  newMussaWindowAction = new QAction(tr("&New Mussa Window"), this);
+  newMussaWindowAction->setStatusTip("open another mussa window to allow comparing results");
+  connect(newMussaWindowAction, SIGNAL(triggered()), 
+          this, SLOT(newMussaWindow()));
+  newMussaWindowAction->setIcon(QIcon(":/icons/window_new.png"));
+
   saveMotifListAction = new QAction(tr("Save Motifs"), this);
   connect(saveMotifListAction, SIGNAL(triggered()), 
           this, SLOT(saveMotifList()));
@@ -162,6 +189,7 @@ void MussaWindow::setupMainMenu()
   
   QMenu *newMenu;
   newMenu = menuBar()->addMenu(tr("&File"));
+  newMenu->addAction(newMussaWindowAction);
   newMenu->addAction(createNewAnalysisAction);
   newMenu->addAction(loadMupaAction);
   newMenu->addAction(loadSavedAnalysisAction);
@@ -317,6 +345,13 @@ void MussaWindow::loadSavedAnalysis()
   assert (analysis != 0);
 }
 
+void MussaWindow::newMussaWindow()
+{
+  Mussa *a = new Mussa();
+  MussaWindow *win = new MussaWindow(a);
+  win->show();
+}
+
 void MussaWindow::setSoftThreshold(int threshold)
 {
   if (analysis->get_soft_thres() != threshold) {