aboutsummaryrefslogtreecommitdiff
path: root/plugins/ConfigurationEditor/forms
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/ConfigurationEditor/forms')
-rw-r--r--plugins/ConfigurationEditor/forms/settingsdialog.cpp101
-rw-r--r--plugins/ConfigurationEditor/forms/settingsdialog.h35
2 files changed, 136 insertions, 0 deletions
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 <QApplication>
+#include <QFile>
+#include <QMenuBar>
+#include <QStatusBar>
+#include <QToolButton>
+#include <QVBoxLayout>
+#include <QFileDialog>
+#include <configuration.h>
+
+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<std::string>(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);
+//}
diff --git a/plugins/ConfigurationEditor/forms/settingsdialog.h b/plugins/ConfigurationEditor/forms/settingsdialog.h
new file mode 100644
index 0000000..ed9e02d
--- /dev/null
+++ b/plugins/ConfigurationEditor/forms/settingsdialog.h
@@ -0,0 +1,35 @@
+/*
+ * 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
+ */
+
+#ifndef SMOLBOTE_SETTINGSDIALOG_H
+#define SMOLBOTE_SETTINGSDIALOG_H
+
+#include <QDialog>
+#include <QTreeWidget>
+
+class Configuration;
+class SettingsDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit SettingsDialog(Configuration *config, QWidget *parent = nullptr);
+ ~SettingsDialog() override;
+
+ QString configPath;
+
+public slots:
+// void editItem(QTreeWidgetItem *item, int column);
+// void write(const QString &path);
+
+private:
+ QTreeWidget treeWidget;
+ bool unsavedChanges = false;
+};
+
+#endif // SMOLBOTE_SETTINGSDIALOG_H