implement analysis save as dialog
authorDiane Trout <diane@caltech.edu>
Tue, 12 Sep 2006 01:40:55 +0000 (01:40 +0000)
committerDiane Trout <diane@caltech.edu>
Tue, 12 Sep 2006 01:40:55 +0000 (01:40 +0000)
this does seem to let you save an analysis. So I need to get the autosaving
to turn off.

and it defaults to the app "current" directory which isn't ideal.

qui/MussaWindow.cpp
qui/MussaWindow.hpp
qui/mussagl.cpp

index b0d5dbde2e4962d9765305e7fd6546d4021088fa..1e8d06cb3ddfb1adb9572633eada961da07968d4 100644 (file)
@@ -22,6 +22,7 @@
 #include <iostream>
 
 #include <boost/filesystem/path.hpp>
+#include <boost/filesystem/operations.hpp>
 namespace fs = boost::filesystem;
 #include <boost/bind.hpp>
 
@@ -129,6 +130,10 @@ void MussaWindow::setupActions()
   connect(createSubAnalysisAction, SIGNAL(triggered()), 
           this, SLOT(createSubAnalysis()));
 
+  saveAnalysisAction = new QAction(tr("Save Analysis"), this);
+  connect(saveAnalysisAction, SIGNAL(triggered()), 
+          this, SLOT(saveAnalysis()));
+
   editMotifsAction = new QAction(tr("Edit Motifs"), this);;
   connect(editMotifsAction, SIGNAL(triggered()), this, SLOT(editMotifs()));
   
@@ -208,6 +213,7 @@ void MussaWindow::setupMainMenu()
   newMenu->addAction(createNewAnalysisAction);
   newMenu->addAction(loadMupaAction);
   newMenu->addAction(loadSavedAnalysisAction);
+  newMenu->addAction(saveAnalysisAction);
   newMenu->addSeparator();
   newMenu->addAction(loadMotifListAction);
   newMenu->addAction(saveMotifListAction);
@@ -304,6 +310,39 @@ void MussaWindow::createSubAnalysis()
   }
 }
 
+void MussaWindow::saveAnalysis()
+{
+  std::auto_ptr<QFileDialog> dialog(new QFileDialog(this));
+  dialog->setAcceptMode(QFileDialog::AcceptSave);
+  dialog->setFileMode(QFileDialog::AnyFile);
+
+  QStringList fileNames;
+  if (not dialog->exec()) {
+    return;
+  }
+  fileNames = dialog->selectedFiles();
+   
+  if (fileNames.size() != 1) {
+    return;
+  }
+
+  fs::path save_path(fileNames[0].toStdString());
+  // do you want to overwrite?
+  if (fs::exists(save_path) and 
+      QMessageBox::question(
+        this,
+        tr("Overwrite File? -- Mussa"),
+        tr("A file called %1 already exists"
+           "do you want to overwrite it?")
+           .arg(fileNames[0]),
+        tr("&Yes"), tr("&No"),
+        QString(), 0, 1)
+      ) {
+    return;
+  }
+  analysis->save(save_path);
+}
+
 void MussaWindow::editMotifs()
 {
   if (motif_editor != 0) {
index 30900c83b9ee019697d3156ebec5321826a06c3f..fede80b8ee23dc72cf4a42e535a9e58d7b8ce121 100644 (file)
@@ -47,6 +47,8 @@ public slots:
   void createNewAnalysis();
   //! launch a sub analysis
   void createSubAnalysis();
+  //! save an analysis
+  void saveAnalysis();
   //\@}
 
   //! \defgroup MotifHandling Handling of motif lists
@@ -101,6 +103,7 @@ protected:
   QAction *closeAction;
   QAction *createNewAnalysisAction;
   QAction *createSubAnalysisAction;
+  QAction *saveAnalysisAction;
   QAction *editMotifsAction;
   QAction *loadMotifListAction;
   QAction *loadMupaAction;
index 6b8eaed6fddd215cdb3eee7b97737f3e1497a4b0..4a4363808120801a6b878d8d1f32846f56c5c71c 100644 (file)
@@ -43,7 +43,6 @@ int main(int argc, char **argv)
   }
 #endif
   //opts.doc_dir = get_doc_dir();
-
   QApplication app(argc, argv, opts.useGUI);
   Q_INIT_RESOURCE(icons);