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)
ADD_DEFINITIONS(-DPROJECT_PREFIX="${PROJECT_PREFIX}")
ADD_DEFINITIONS(-DPROJECT_NAME="${PROJECT_NAME}")
#######################
# VERSION

View File

@ -32,12 +32,7 @@ MainWindow::MainWindow(QWidget * parent) :
connect(&cameraTimer_, SIGNAL(timeout()), this, SLOT(update()));
QByteArray geometry;
#ifdef WIN32
//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
Settings::loadSettings(Settings::iniDefaultPath(), &geometry);
this->restoreGeometry(geometry);
ui_->toolBox->setupUi();
@ -78,18 +73,13 @@ MainWindow::~MainWindow()
void MainWindow::closeEvent(QCloseEvent * event)
{
#ifdef WIN32
//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
Settings::saveSettings(Settings::iniDefaultPath(), this->saveGeometry());
QMainWindow::closeEvent(event);
}
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())
{
QFile file(fileName);
@ -123,7 +113,7 @@ void MainWindow::loadObjects()
}
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.endsWith(".obj"))

View File

@ -16,6 +16,7 @@
#include "Object.h"
#include "KeypointItem.h"
#include "qtipl.h"
#include "Settings.h"
#include <opencv2/highgui/highgui.hpp>
@ -383,7 +384,7 @@ void Object::contextMenuEvent(QContextMenuEvent * event)
QString text;
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");
if(!text.isEmpty())

View File

@ -10,17 +10,40 @@
#include "Camera.h"
#include <QtCore/QSettings>
#include <QtCore/QStringList>
#include <QtCore/QDir>
#include <stdio.h>
ParametersMap Settings::defaultParameters_;
ParametersMap Settings::parameters_;
ParametersType Settings::parametersType_;
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)
{
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)
{
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)
{
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)
{
QString type = Settings::getParametersType().value(iter.key());
@ -62,7 +90,7 @@ void Settings::saveSettings(const QString & fileName, const QByteArray & windowG
{
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()

View File

@ -116,10 +116,12 @@ class Settings
public:
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 saveSettings(const QString & fileName = iniDefaultFileName, const QByteArray & windowGeometry = QByteArray());
static void loadSettings(const QString & fileName = QString(), QByteArray * windowGeometry = 0);
static void saveSettings(const QString & fileName = QString(), const QByteArray & windowGeometry = QByteArray());
static const ParametersMap & getDefaultParameters() {return defaultParameters_;}
static const ParametersMap & getParameters() {return parameters_;}