Windows : now saving config file to user's documents.

git-svn-id: http://find-object.googlecode.com/svn/trunk/find_object@18 620bd6b2-0a58-f614-fd9a-1bd335dccda9
This commit is contained in:
matlabbe 2011-11-10 14:00:20 +00:00
parent 8cd2d70954
commit f2f1ab037a
5 changed files with 45 additions and 23 deletions

View File

@ -4,6 +4,7 @@ PROJECT( FindObject )
SET(PROJECT_PREFIX find_object) SET(PROJECT_PREFIX find_object)
ADD_DEFINITIONS(-DPROJECT_PREFIX="${PROJECT_PREFIX}") ADD_DEFINITIONS(-DPROJECT_PREFIX="${PROJECT_PREFIX}")
ADD_DEFINITIONS(-DPROJECT_NAME="${PROJECT_NAME}")
####################### #######################
# VERSION # VERSION

View File

@ -32,12 +32,7 @@ MainWindow::MainWindow(QWidget * parent) :
connect(&cameraTimer_, SIGNAL(timeout()), this, SLOT(update())); connect(&cameraTimer_, SIGNAL(timeout()), this, SLOT(update()));
QByteArray geometry; QByteArray geometry;
#ifdef WIN32 Settings::loadSettings(Settings::iniDefaultPath(), &geometry);
//TODO Maybe use the Documents and Settings
Settings::loadSettings(Settings::iniDefaultFileName, &geometry);
#else
Settings::loadSettings(QString("%1/.%2/%3").arg(QDir::homePath()).arg(PROJECT_PREFIX).arg(Settings::iniDefaultFileName), &geometry);
#endif
this->restoreGeometry(geometry); this->restoreGeometry(geometry);
ui_->toolBox->setupUi(); ui_->toolBox->setupUi();
@ -78,18 +73,13 @@ MainWindow::~MainWindow()
void MainWindow::closeEvent(QCloseEvent * event) void MainWindow::closeEvent(QCloseEvent * event)
{ {
#ifdef WIN32 Settings::saveSettings(Settings::iniDefaultPath(), this->saveGeometry());
//TODO Maybe use the Documents and Settings
Settings::saveSettings(Settings::iniDefaultFileName, this->saveGeometry());
#else
Settings::saveSettings(QString("%1/.%2/%3").arg(QDir::homePath()).arg(PROJECT_PREFIX).arg(Settings::iniDefaultFileName), this->saveGeometry());
#endif
QMainWindow::closeEvent(event); QMainWindow::closeEvent(event);
} }
void MainWindow::loadObjects() void MainWindow::loadObjects()
{ {
QString fileName = QFileDialog::getOpenFileName(this, tr("Load objects..."), QDir::homePath(), "*.obj"); QString fileName = QFileDialog::getOpenFileName(this, tr("Load objects..."), Settings::workingDirectory(), "*.obj");
if(!fileName.isEmpty()) if(!fileName.isEmpty())
{ {
QFile file(fileName); QFile file(fileName);
@ -123,7 +113,7 @@ void MainWindow::loadObjects()
} }
void MainWindow::saveObjects() void MainWindow::saveObjects()
{ {
QString fileName = QFileDialog::getSaveFileName(this, tr("Save objects..."), (QDir::homePath() + "/") +Settings::currentDetectorType()+Settings::currentDescriptorType()+QString("%1.obj").arg(objects_.size()), "*.obj"); QString fileName = QFileDialog::getSaveFileName(this, tr("Save objects..."), (Settings::workingDirectory() + "/") +Settings::currentDetectorType()+Settings::currentDescriptorType()+QString("%1.obj").arg(objects_.size()), "*.obj");
if(!fileName.isEmpty()) if(!fileName.isEmpty())
{ {
if(!fileName.endsWith(".obj")) if(!fileName.endsWith(".obj"))

View File

@ -16,6 +16,7 @@
#include "Object.h" #include "Object.h"
#include "KeypointItem.h" #include "KeypointItem.h"
#include "qtipl.h" #include "qtipl.h"
#include "Settings.h"
#include <opencv2/highgui/highgui.hpp> #include <opencv2/highgui/highgui.hpp>
@ -383,7 +384,7 @@ void Object::contextMenuEvent(QContextMenuEvent * event)
QString text; QString text;
if(_savedFileName.isEmpty()) if(_savedFileName.isEmpty())
{ {
_savedFileName=QDir::homePath()+"/figure.png"; _savedFileName=Settings::workingDirectory()+"/figure.png";
} }
text = QFileDialog::getSaveFileName(this, tr("Save figure to ..."), _savedFileName, "*.png *.xpm *.jpg *.pdf"); text = QFileDialog::getSaveFileName(this, tr("Save figure to ..."), _savedFileName, "*.png *.xpm *.jpg *.pdf");
if(!text.isEmpty()) if(!text.isEmpty())

View File

@ -10,17 +10,40 @@
#include "Camera.h" #include "Camera.h"
#include <QtCore/QSettings> #include <QtCore/QSettings>
#include <QtCore/QStringList> #include <QtCore/QStringList>
#include <QtCore/QDir>
#include <stdio.h> #include <stdio.h>
ParametersMap Settings::defaultParameters_; ParametersMap Settings::defaultParameters_;
ParametersMap Settings::parameters_; ParametersMap Settings::parameters_;
ParametersType Settings::parametersType_; ParametersType Settings::parametersType_;
Settings Settings::dummyInit_; Settings Settings::dummyInit_;
const char * Settings::iniDefaultFileName = "config.ini";
QString Settings::workingDirectory()
{
#ifdef WIN32
return QString("%1/Documents/%2").arg(QDir::homePath()).arg(PROJECT_NAME);
#else
return QString("%1").arg(QDir::homePath());
#endif
}
QString Settings::iniDefaultPath()
{
#ifdef WIN32
return QString("%1/Documents/%2/%3").arg(QDir::homePath()).arg(PROJECT_NAME).arg(Settings::iniDefaultFileName());
#else
return QString("%1/.%2/%3").arg(QDir::homePath()).arg(PROJECT_PREFIX).arg(Settings::iniDefaultFileName());
#endif
}
void Settings::loadSettings(const QString & fileName, QByteArray * windowGeometry) void Settings::loadSettings(const QString & fileName, QByteArray * windowGeometry)
{ {
QSettings ini(fileName, QSettings::IniFormat); QString path = fileName;
if(fileName.isEmpty())
{
path = iniDefaultPath();
}
QSettings ini(path, QSettings::IniFormat);
for(ParametersMap::const_iterator iter = defaultParameters_.begin(); iter!=defaultParameters_.end(); ++iter) for(ParametersMap::const_iterator iter = defaultParameters_.begin(); iter!=defaultParameters_.end(); ++iter)
{ {
const QString & key = iter.key(); const QString & key = iter.key();
@ -40,12 +63,17 @@ void Settings::loadSettings(const QString & fileName, QByteArray * windowGeometr
} }
} }
printf("Settings loaded from %s\n", fileName.toStdString().c_str()); printf("Settings loaded from %s\n", path.toStdString().c_str());
} }
void Settings::saveSettings(const QString & fileName, const QByteArray & windowGeometry) void Settings::saveSettings(const QString & fileName, const QByteArray & windowGeometry)
{ {
QSettings ini(fileName, QSettings::IniFormat); QString path = fileName;
if(fileName.isEmpty())
{
path = iniDefaultPath();
}
QSettings ini(path, QSettings::IniFormat);
for(ParametersMap::const_iterator iter = parameters_.begin(); iter!=parameters_.end(); ++iter) for(ParametersMap::const_iterator iter = parameters_.begin(); iter!=parameters_.end(); ++iter)
{ {
QString type = Settings::getParametersType().value(iter.key()); QString type = Settings::getParametersType().value(iter.key());
@ -62,7 +90,7 @@ void Settings::saveSettings(const QString & fileName, const QByteArray & windowG
{ {
ini.setValue("windowGeometry", windowGeometry); ini.setValue("windowGeometry", windowGeometry);
} }
printf("Settings saved to %s\n", fileName.toStdString().c_str()); printf("Settings saved to %s\n", path.toStdString().c_str());
} }
cv::FeatureDetector * Settings::createFeaturesDetector() cv::FeatureDetector * Settings::createFeaturesDetector()

View File

@ -116,10 +116,12 @@ class Settings
public: public:
virtual ~Settings(){} virtual ~Settings(){}
static const char * iniDefaultFileName; // "config.ini" static QString workingDirectory();
static QString iniDefaultPath();
static QString iniDefaultFileName() {return "config.ini";}
static void loadSettings(const QString & fileName = iniDefaultFileName, QByteArray * windowGeometry = 0); static void loadSettings(const QString & fileName = QString(), QByteArray * windowGeometry = 0);
static void saveSettings(const QString & fileName = iniDefaultFileName, const QByteArray & windowGeometry = QByteArray()); static void saveSettings(const QString & fileName = QString(), const QByteArray & windowGeometry = QByteArray());
static const ParametersMap & getDefaultParameters() {return defaultParameters_;} static const ParametersMap & getDefaultParameters() {return defaultParameters_;}
static const ParametersMap & getParameters() {return parameters_;} static const ParametersMap & getParameters() {return parameters_;}