From 954fb66dd80e3b07e633dc90b71afd1553bb255f Mon Sep 17 00:00:00 2001 From: strange Date: Tue, 26 Jan 2010 21:26:09 -0700 Subject: [PATCH] Implemented a basic configuration system for the Aesalon GUI. Now it is possible to actually set the path to aesalon, making the GUI functional without manual editing of configuration files. --- src/gui/Configuration.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++++++ src/gui/Configuration.h | 34 +++++++++++++++++++++++++++++ src/gui/MainWindow.cpp | 8 +++++++ src/gui/MainWindow.h | 2 ++ 4 files changed, 99 insertions(+) create mode 100644 src/gui/Configuration.cpp create mode 100644 src/gui/Configuration.h diff --git a/src/gui/Configuration.cpp b/src/gui/Configuration.cpp new file mode 100644 index 0000000..03ff21b --- /dev/null +++ b/src/gui/Configuration.cpp @@ -0,0 +1,55 @@ +#include +#include "Configuration.h" +#include "Configuration.moc" + +namespace Aesalon { +namespace GUI { + +Configuration::Configuration(QWidget *parent) : QDialog(parent) { + QSizePolicy expanding; + expanding.setHorizontalPolicy(QSizePolicy::Expanding); + expanding.setVerticalPolicy(QSizePolicy::Expanding); + this->setSizePolicy(expanding); + this->setMinimumSize(600, 100); + this->setWindowTitle(tr("Configuration")); + + QSettings settings; + main_layout = new QVBoxLayout(); + form_layout = new QFormLayout(); + + aesalon_path_layout = new QHBoxLayout(); + aesalon_path = new QLineEdit(); + aesalon_path->setText(settings.value("aesalon-path").toString()); + aesalon_path_layout->addWidget(aesalon_path); + + aesalon_path_file_selector = new QFileDialog(); + aesalon_path_file_selector->setDirectory(getenv("HOME")); + + aesalon_path_select_dialog = new QPushButton(tr(". . .")); + connect(aesalon_path_select_dialog, SIGNAL(clicked(bool)), aesalon_path_file_selector, SLOT(exec())); + + aesalon_path_layout->addWidget(aesalon_path_select_dialog); + + form_layout->addRow("Path to aesalon", aesalon_path_layout); + main_layout->addLayout(form_layout); + + button_box = new QDialogButtonBox(); + button_box->addButton(QDialogButtonBox::Save); + button_box->addButton(QDialogButtonBox::Cancel); + button_box->setCenterButtons(false); + connect(button_box, SIGNAL(accepted()), this, SLOT(accept())); + connect(button_box, SIGNAL(rejected()), this, SLOT(reject())); + + main_layout->addWidget(button_box); + + setLayout(main_layout); +} + +void Configuration::accept() { + QSettings settings; + settings.setValue("aesalon-path", aesalon_path->text()); + QDialog::accept(); +} + +} // namespace GUI +} // namespace Aesalon diff --git a/src/gui/Configuration.h b/src/gui/Configuration.h new file mode 100644 index 0000000..4816a38 --- /dev/null +++ b/src/gui/Configuration.h @@ -0,0 +1,34 @@ +#ifndef AESALON_GUI_CONFIGURATION_H +#define AESALON_GUI_CONFIGURATION_H + +#include +#include +#include +#include +#include +#include +#include + +namespace Aesalon { +namespace GUI { + +class Configuration : public QDialog { Q_OBJECT +private: + QVBoxLayout *main_layout; + QFormLayout *form_layout; + QHBoxLayout *aesalon_path_layout; + QLineEdit *aesalon_path; + QPushButton *aesalon_path_select_dialog; + QFileDialog *aesalon_path_file_selector; + QDialogButtonBox *button_box; +public: + Configuration(QWidget *parent = 0); + virtual ~Configuration() {} +public slots: + void accept(); +}; + +} // namespace GUI +} // namespace Aesalon + +#endif diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 767c00f..e78a38c 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -3,6 +3,7 @@ #include "MainWindow.moc" #include "MainArea.h" +#include "Configuration.h" namespace Aesalon { namespace GUI { @@ -16,8 +17,15 @@ MainWindow::MainWindow(QWidget *parent) { void MainWindow::setup_menus() { aesalon_menu = new QMenu(tr("&Aesalon")); + aesalon_menu->addAction("&Configuration . . .", this, SLOT(open_configuration())); aesalon_menu->addAction("&Quit", this, SLOT(close())); menuBar()->addMenu(aesalon_menu); + +} + +void MainWindow::open_configuration() { + Configuration *config = new Configuration(); + config->exec(); } } // namespace GUI diff --git a/src/gui/MainWindow.h b/src/gui/MainWindow.h index f584737..1401bd6 100644 --- a/src/gui/MainWindow.h +++ b/src/gui/MainWindow.h @@ -17,6 +17,8 @@ private: public: MainWindow(QWidget *parent = 0); virtual ~MainWindow() {} +public slots: + void open_configuration(); }; } // namespace GUI -- 2.11.4.GIT