Example of using the ConfigurationWidget class

This is an example of how to show and modify configuration parameters from GUI

#include <QApplication>
#include <QDialog>
#include <QVBoxLayout>
#include "configuration/configurationparameters.h"
#include "configuration/inifilesupport.h"
#include "configuration/evorobotfilesupport.h"
#include "configuration/parametersreader.h"
#include "configuration/configurationwidget.h"
#include <iostream>
class ParametersDialog : public QDialog
{
public:
ParametersDialog(const char *file, bool caseSensitive) :
QDialog(NULL),
m_confs(caseSensitive),
m_confWidget(NULL)
{
// Creating a layout
QVBoxLayout *layout = new QVBoxLayout(this);
// Creating the configuration widget and adding it to layout
m_confWidget = new ConfigurationWidget(this);
layout->addWidget(m_confWidget);
// Loading parameters. The kind of file is automatically guessed from extension (you can however explicitly set it)
if (!m_confs.loadParameters(file)) {
std::cerr << "Loading parameters from file " << file << " failed" << std::endl;
}
// Adding configuration onbjecto to the configuration widget
m_confWidget->setConfigurationParameters(&m_confs);
}
~ParametersDialog()
{
// Storing results
m_confWidget->store();
// Saving them
m_confs.saveParameters("prova.ini");
}
private:
ConfigurationParameters m_confs;
ConfigurationWidget *m_confWidget;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// We expect the name of the file to read on the command line
if (argc != 3) {
std::cerr << "Usage: " << argv[0] << " <infile> <0|1>" << std::endl;
std::cerr << "where 0 means case insensitive mode, 1 case sensitive mode. File format is guessed from file extension" << std::endl;
return 1;
}
const bool caseSensitive = (argv[2][0] == '1') ? true : false;
ParametersDialog dialog(argv[1], caseSensitive);
dialog.show();
return app.exec();
}