diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-06-23 12:50:10 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-06-23 12:50:10 +0200 |
commit | 41329fae5f819eee8c394571125f11f0a0b67cd9 (patch) | |
tree | e8e36f9b8458ee809114714e497c4a43a19949ef /config/settingsdialog.cpp | |
parent | Add Configuration::setValue and Configuration::setShortcut (diff) | |
download | smolbote-41329fae5f819eee8c394571125f11f0a0b67cd9.tar.xz |
Add ConfigurationEditor plugin
Removed poi-config
Diffstat (limited to 'config/settingsdialog.cpp')
-rw-r--r-- | config/settingsdialog.cpp | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/config/settingsdialog.cpp b/config/settingsdialog.cpp deleted file mode 100644 index 5ff4328..0000000 --- a/config/settingsdialog.cpp +++ /dev/null @@ -1,98 +0,0 @@ -/* - * 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> - -SettingsDialog::SettingsDialog(Configuration *config, QWidget *parent) - : QMainWindow(parent) -{ - resize(800, 600); - - // 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); - - setCentralWidget(&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); -} |