From 41329fae5f819eee8c394571125f11f0a0b67cd9 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sat, 23 Jun 2018 12:50:10 +0200 Subject: Add ConfigurationEditor plugin Removed poi-config --- .../ConfigurationEditor/forms/settingsdialog.cpp | 101 +++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 plugins/ConfigurationEditor/forms/settingsdialog.cpp (limited to 'plugins/ConfigurationEditor/forms/settingsdialog.cpp') diff --git a/plugins/ConfigurationEditor/forms/settingsdialog.cpp b/plugins/ConfigurationEditor/forms/settingsdialog.cpp new file mode 100644 index 0000000..ebc054e --- /dev/null +++ b/plugins/ConfigurationEditor/forms/settingsdialog.cpp @@ -0,0 +1,101 @@ +/* + * This file is part of smolbote. It's copyrighted by the contributors recorded + * in the version control history of the file, available from its original + * location: https://neueland.iserlohn-fortress.net/smolbote.hg + * + * SPDX-License-Identifier: GPL-3.0 + */ + +#include "settingsdialog.h" +#include +#include +#include +#include +#include +#include +#include +#include + +SettingsDialog::SettingsDialog(Configuration *config, QWidget *parent) + : QDialog(parent) +{ + resize(800, 600); + Q_CHECK_PTR(config); + + // main menu +// settingsMenu.setTitle(tr("Settings")); + +// auto *saveAction = settingsMenu.addAction(tr("Save")); +// saveAction->setShortcut(QKeySequence::Save); + +// auto *saveAsAction = settingsMenu.addAction(tr("Save As")); +// saveAsAction->setShortcut(QKeySequence::SaveAs); + +// settingsMenu.addAction(tr("Quit"), qApp, &QApplication::quit, QKeySequence::Quit); + +// menuBar()->addMenu(&settingsMenu); + + auto *layout = new QVBoxLayout(this); + layout->addWidget(&treeWidget); + treeWidget.setColumnCount(2); + treeWidget.setHeaderLabels({ tr("setting"), tr("value") }); + treeWidget.setEditTriggers(QTreeWidget::NoEditTriggers); + //connect(&treeWidget, &QTreeWidget::itemDoubleClicked, this, &SettingsDialog::editItem); + + for(const auto &option : config->options()) { + auto *item = new QTreeWidgetItem(&treeWidget); + item->setText(0, QString::fromStdString(option->long_name())); + item->setText(1, QString::fromStdString(config->value(option->long_name().c_str()).value_or(std::string()))); + item->setFlags(item->flags() | Qt::ItemIsEditable); + } + + treeWidget.resizeColumnToContents(0); + + // connect signals +// connect(saveAction, &QAction::triggered, this, [this]() { +// write(configPath); +// statusBar()->showMessage(tr("Configuration saved to: ") + configPath, 3000); +// }); + +// connect(saveAsAction, &QAction::triggered, this, [this]() { +// QString path = QFileDialog::getSaveFileName(this, tr("Save Configuration"), configPath, tr("smolbote config (smolbote.cfg)")); +// if(!path.isEmpty()) { +// write(path); +// statusBar()->showMessage(tr("Configuration saved to: ") + path, 3000); +// } +// }); +} + +SettingsDialog::~SettingsDialog() +{ +// if(unsavedChanges) +// write(configPath); +} + +//void SettingsDialog::editItem(QTreeWidgetItem *item, int column) +//{ +// if(column == 1) { +// treeWidget.editItem(item, column); +// unsavedChanges = true; + +// if(!windowTitle().endsWith('*')) { +// setWindowTitle(windowTitle() + '*'); +// } +// } +//} + +//void SettingsDialog::write(const QString &path) +//{ +// QFile output(path); +// output.open(QIODevice::WriteOnly); + +// for(int i = 0; i < treeWidget.topLevelItemCount(); ++i) { +// auto *item = treeWidget.topLevelItem(i); +// output.write(QString(item->text(0) + " = " + item->text(1) + "\n").toUtf8()); +// } + +// output.close(); + +// unsavedChanges = false; +// setWindowTitle(configPath); +//} -- cgit v1.2.1