From 3eda414d910c71bab04a66a1cd09e72b34f18e08 Mon Sep 17 00:00:00 2001 From: matlabbe Date: Mon, 24 Mar 2014 21:11:02 +0000 Subject: [PATCH] Added menu actions "Save settings..." and "Load settings..." git-svn-id: http://find-object.googlecode.com/svn/trunk/find_object@198 620bd6b2-0a58-f614-fd9a-1bd335dccda9 --- src/MainWindow.cpp | 73 ++++++++++++++++++++++++++++++++++++++++++-- src/MainWindow.h | 8 ++++- src/ui/mainWindow.ui | 29 +++++++++++++----- 3 files changed, 98 insertions(+), 12 deletions(-) diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 71bb4e6c..ed1747ce 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -38,9 +38,10 @@ #include "utilite/UDirectory.h" // Camera ownership transferred -MainWindow::MainWindow(Camera * camera, QWidget * parent) : +MainWindow::MainWindow(Camera * camera, const QString & settings, QWidget * parent) : QMainWindow(parent), camera_(camera), + settings_(settings), likelihoodCurve_(0), lowestRefreshRate_(99), objectsModified_(false) @@ -67,9 +68,14 @@ MainWindow::MainWindow(Camera * camera, QWidget * parent) : ui_->dockWidget_plot->setVisible(false); ui_->widget_controls->setVisible(false); + if(settings_.isEmpty()) + { + settings_ = Settings::iniDefaultPath(); + } + QByteArray geometry; QByteArray state; - Settings::loadSettings(Settings::iniDefaultPath(), &geometry, &state); + Settings::loadSettings(settings_, &geometry, &state); this->restoreGeometry(geometry); this->restoreState(state); @@ -121,6 +127,8 @@ connect(ui_->toolBox, SIGNAL(parametersChanged(const QStringList &)), this, SLOT connect(ui_->actionAbout, SIGNAL(triggered()), aboutDialog_ , SLOT(exec())); connect(ui_->actionRestore_all_default_settings, SIGNAL(triggered()), ui_->toolBox, SLOT(resetAllPages())); connect(ui_->actionRemove_all_objects, SIGNAL(triggered()), this, SLOT(removeAllObjects())); + connect(ui_->actionSave_settings, SIGNAL(triggered()), this, SLOT(saveSettings())); + connect(ui_->actionLoad_settings, SIGNAL(triggered()), this, SLOT(loadSettings())); connect(ui_->pushButton_play, SIGNAL(clicked()), this, SLOT(startProcessing())); connect(ui_->pushButton_stop, SIGNAL(clicked()), this, SLOT(stopProcessing())); @@ -182,7 +190,7 @@ void MainWindow::closeEvent(QCloseEvent * event) } if(quit) { - Settings::saveSettings(Settings::iniDefaultPath(), this->saveGeometry(), this->saveState()); + Settings::saveSettings(settings_, this->saveGeometry(), this->saveState()); event->accept(); } else @@ -201,6 +209,65 @@ void MainWindow::setSourceImageText(const QString & text) ui_->imageView_source->setTextLabel(text); } +void MainWindow::loadSettings() +{ + QString path = QFileDialog::getOpenFileName(this, tr("Load settings..."), Settings::workingDirectory(), "*.ini"); + if(!path.isEmpty()) + { + if(QFileInfo(path).suffix().compare("ini") != 0) + { + path.append(".ini"); + } + loadSettings(path); + } +} +void MainWindow::saveSettings() +{ + QString path = QFileDialog::getSaveFileName(this, tr("Save settings..."), Settings::workingDirectory(), "*.ini"); + if(!path.isEmpty()) + { + if(QFileInfo(path).suffix().compare("ini") != 0) + { + path.append(".ini"); + } + saveSettings(path); + } +} + +bool MainWindow::loadSettings(const QString & path) +{ + if(!path.isEmpty() && QFileInfo(path).suffix().compare("ini") == 0) + { + QByteArray geometry; + QByteArray state; + Settings::loadSettings(path, &geometry, &state); + this->restoreGeometry(geometry); + this->restoreState(state); + + //update parameters tool box + const ParametersMap & parameters = Settings::getParameters(); + for(ParametersMap::const_iterator iter = parameters.begin(); iter!= parameters.constEnd(); ++iter) + { + ui_->toolBox->updateParameter(iter.key()); + } + + return true; + } + printf("Path \"%s\" not valid (should be *.ini)\n", path.toStdString().c_str()); + return false; +} + +bool MainWindow::saveSettings(const QString & path) +{ + if(!path.isEmpty() && QFileInfo(path).suffix().compare("ini") == 0) + { + Settings::saveSettings(path, this->saveGeometry(), this->saveState()); + return true; + } + printf("Path \"%s\" not valid (should be *.ini)\n", path.toStdString().c_str()); + return false; +} + int MainWindow::loadObjects(const QString & dirPath) { int loadedObjects = 0; diff --git a/src/MainWindow.h b/src/MainWindow.h index c993a478..218ee638 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -33,9 +33,12 @@ class MainWindow : public QMainWindow Q_OBJECT public: - MainWindow(Camera * camera = 0, QWidget * parent = 0); + MainWindow(Camera * camera = 0, const QString & settings = "", QWidget * parent = 0); virtual ~MainWindow(); + bool loadSettings(const QString & path); + bool saveSettings(const QString & path); + int loadObjects(const QString & dirPath); void saveObjects(const QString & dirPath); @@ -51,6 +54,8 @@ public slots: void pauseProcessing(); private slots: + void loadSettings(); + void saveSettings(); void loadObjects(); bool saveObjects(); void addObjectFromScene(); @@ -80,6 +85,7 @@ private: private: Ui_mainWindow * ui_; Camera * camera_; + QString settings_; rtabmap::PdfPlotCurve * likelihoodCurve_; AboutDialog * aboutDialog_; QList objects_; diff --git a/src/ui/mainWindow.ui b/src/ui/mainWindow.ui index 9ba5e5ee..2345c749 100644 --- a/src/ui/mainWindow.ui +++ b/src/ui/mainWindow.ui @@ -6,8 +6,8 @@ 0 0 - 825 - 441 + 826 + 448 @@ -108,7 +108,7 @@ - -1 + 6 0 @@ -202,8 +202,8 @@ 0 0 - 825 - 22 + 826 + 25 @@ -213,6 +213,9 @@ + + + @@ -474,8 +477,8 @@ 0 0 - 348 - 114 + 360 + 120 @@ -533,7 +536,7 @@ 0 0 198 - 314 + 318 @@ -696,6 +699,16 @@ Camera from directory of images... + + + Save settings... + + + + + Load settings... + +