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();
}