From: Diane Trout Date: Thu, 4 May 2006 00:39:42 +0000 (+0000) Subject: allow opening multiple MussaWindows X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=mussa.git;a=commitdiff_plain;h=b3c877273eb53bc86372b14dd574c064c0a45b85 allow opening multiple MussaWindows closes ticket:93 the only real downside is on os x the windows land on top of each other. --- diff --git a/icons.qrc b/icons.qrc index 4777b84..854e7cb 100644 --- a/icons.qrc +++ b/icons.qrc @@ -11,5 +11,6 @@ icons/lock.png icons/motif_icon.png icons/viewmag.png + icons/window_new.png diff --git a/icons/README.txt b/icons/README.txt index 7049269..5ce2374 100644 --- a/icons/README.txt +++ b/icons/README.txt @@ -1,6 +1,6 @@ The following icons are from Crystal SVG which is available for use -under LGPL, visit http://www.everaldo.com/ for more info on Crystal -SVG. +under LGPL, visit http://www.everaldo.com/crystal.html for more info on Crystal +SVG. We are currently using the 32x32 pixel images. Crystal SVG Icons: ------------------ @@ -13,6 +13,7 @@ Crystal SVG Icons: * icon.png * image2.png * lock.png + * window_new.png diff --git a/icons/window_new.png b/icons/window_new.png new file mode 100644 index 0000000..b7eadc0 Binary files /dev/null and b/icons/window_new.png differ diff --git a/qui/MussaWindow.cpp b/qui/MussaWindow.cpp index e11e586..6ecb88a 100644 --- a/qui/MussaWindow.cpp +++ b/qui/MussaWindow.cpp @@ -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) { diff --git a/qui/MussaWindow.hpp b/qui/MussaWindow.hpp index b1dc329..d27f618 100644 --- a/qui/MussaWindow.hpp +++ b/qui/MussaWindow.hpp @@ -26,6 +26,7 @@ class MussaWindow : public QMainWindow public: MussaWindow(Mussa* analysis=0, QWidget *parent=0); + ~MussaWindow(); //! switch to a new analysis void setAnalysis(Mussa *new_analysis); @@ -57,6 +58,9 @@ public slots: //! set the soft threshold used by the Nway_Path algorithm void setSoftThreshold(int thres); + //! open a new mussa window so one can compare analyses + void newMussaWindow(); + void showMussaToolbar(); //! open new window showing our alignment @@ -85,6 +89,7 @@ protected: QAction *loadMotifListAction; QAction *loadMupaAction; QAction *loadSavedAnalysisAction; + QAction *newMussaWindowAction; QAction *saveMotifListAction; QAction *showMussaViewToolbarAction; QAction *toggleMotifsAction;