pass default_dir around
[mussa.git] / qui / ImageSaveDialog.cpp
index 0357af402dc97c7585c1a2995b4d8053d045c8c1..3a0a63f36fa3cb0f297a86d1813e3c0ae3a0b0d0 100644 (file)
 
 #include <iostream>
 
-ImageSaveDialog::ImageSaveDialog(QGLWidget *newglwidget, QWidget *parent)
-  : QDialog(parent)
+#include <boost/filesystem/path.hpp>
+namespace fs = boost::filesystem;
+
+ImageSaveDialog::ImageSaveDialog(boost::shared_ptr<QDir> default_dir_,
+                                 QGLWidget *newglwidget, 
+                                 QWidget *parent)
+  : QDialog(parent),
+    default_dir(default_dir_)
 {
   setWindowTitle(tr("Mussa Save Image"));
 
@@ -60,6 +66,11 @@ ImageSaveDialog::ImageSaveDialog(QGLWidget *newglwidget, QWidget *parent)
   setLayout(layout);
 }
 
+QDir ImageSaveDialog::defaultDir() const
+{
+  return *default_dir;
+}
+
 void ImageSaveDialog::accept()
 {
   bool endDialog = true;
@@ -113,7 +124,7 @@ void ImageSaveDialog::savePixmap(bool &endDialog)
   QString filePath;
   filePath = QFileDialog::getSaveFileName(this,
             "Choose a filename to save image",
-            ".",
+            default_dir->absolutePath(),
             "Images (*.png *.jpg)");  
 
   if (filePath.isNull()) {
@@ -136,5 +147,7 @@ void ImageSaveDialog::savePixmap(bool &endDialog)
       filePath.append(".png");
       pixmap.save(filePath, "PNG");
     }
+    fs::path path(filePath.toStdString(), fs::native);
+    default_dir->setPath(path.branch_path().native_directory_string().c_str());
   }
 }