mirror of
https://github.com/redstrate/Novus.git
synced 2025-04-25 05:17:44 +00:00
Add a settings dialog to armoury to set Penumbra output directory
This commit is contained in:
parent
6a42c81393
commit
82226defba
4 changed files with 93 additions and 0 deletions
|
@ -10,6 +10,7 @@ target_sources(novus-armoury PRIVATE
|
||||||
include/gearlistwidget.h
|
include/gearlistwidget.h
|
||||||
include/gearview.h
|
include/gearview.h
|
||||||
include/mainwindow.h
|
include/mainwindow.h
|
||||||
|
include/settingswindow.h
|
||||||
include/singlegearview.h
|
include/singlegearview.h
|
||||||
|
|
||||||
src/boneeditor.cpp
|
src/boneeditor.cpp
|
||||||
|
@ -20,6 +21,7 @@ target_sources(novus-armoury PRIVATE
|
||||||
src/gearview.cpp
|
src/gearview.cpp
|
||||||
src/main.cpp
|
src/main.cpp
|
||||||
src/mainwindow.cpp
|
src/mainwindow.cpp
|
||||||
|
src/settingswindow.cpp
|
||||||
src/singlegearview.cpp)
|
src/singlegearview.cpp)
|
||||||
|
|
||||||
target_include_directories(novus-armoury
|
target_include_directories(novus-armoury
|
||||||
|
|
15
armoury/include/settingswindow.h
Normal file
15
armoury/include/settingswindow.h
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
class SettingsWindow : public QWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit SettingsWindow(QWidget *parent = nullptr);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void applySettings();
|
||||||
|
|
||||||
|
QLineEdit *m_outputLineEdit = nullptr;
|
||||||
|
};
|
|
@ -20,6 +20,7 @@
|
||||||
#include "cmpeditor.h"
|
#include "cmpeditor.h"
|
||||||
#include "filecache.h"
|
#include "filecache.h"
|
||||||
#include "gearlistwidget.h"
|
#include "gearlistwidget.h"
|
||||||
|
#include "settingswindow.h"
|
||||||
|
|
||||||
MainWindow::MainWindow(GameData *in_data)
|
MainWindow::MainWindow(GameData *in_data)
|
||||||
: NovusMainWindow()
|
: NovusMainWindow()
|
||||||
|
@ -68,6 +69,12 @@ void MainWindow::setupAdditionalMenus(QMenuBar *menuBar)
|
||||||
auto cmpEditor = new CmpEditor(&data);
|
auto cmpEditor = new CmpEditor(&data);
|
||||||
cmpEditor->show();
|
cmpEditor->show();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
auto settingsMenu = toolsMenu->addAction(QStringLiteral("Settings..."));
|
||||||
|
connect(settingsMenu, &QAction::triggered, [this] {
|
||||||
|
auto settingsWindow = new SettingsWindow();
|
||||||
|
settingsWindow->show();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "moc_mainwindow.cpp"
|
#include "moc_mainwindow.cpp"
|
||||||
|
|
69
armoury/src/settingswindow.cpp
Normal file
69
armoury/src/settingswindow.cpp
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
#include "settingswindow.h"
|
||||||
|
|
||||||
|
#include <KConfig>
|
||||||
|
#include <KConfigGroup>
|
||||||
|
#include <QFileDialog>
|
||||||
|
#include <QFormLayout>
|
||||||
|
#include <QGroupBox>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
SettingsWindow::SettingsWindow(QWidget *parent)
|
||||||
|
: QWidget(parent)
|
||||||
|
{
|
||||||
|
setWindowTitle(QStringLiteral("Settings"));
|
||||||
|
|
||||||
|
auto layout = new QVBoxLayout();
|
||||||
|
setLayout(layout);
|
||||||
|
|
||||||
|
auto penumbraBox = new QGroupBox(QStringLiteral("Penumbra Output"));
|
||||||
|
layout->addWidget(penumbraBox);
|
||||||
|
|
||||||
|
auto penumbraLayout = new QFormLayout();
|
||||||
|
penumbraBox->setLayout(penumbraLayout);
|
||||||
|
|
||||||
|
auto outputBoxLayoutContainer = new QWidget(this);
|
||||||
|
auto outputBoxLayout = new QHBoxLayout(outputBoxLayoutContainer);
|
||||||
|
outputBoxLayout->setContentsMargins(0, 0, 0, 0);
|
||||||
|
|
||||||
|
KConfig config(QStringLiteral("novusrc"));
|
||||||
|
KConfigGroup game = config.group("Armoury");
|
||||||
|
|
||||||
|
m_outputLineEdit = new QLineEdit();
|
||||||
|
m_outputLineEdit->setText(game.readEntry("PenumbraOutputDirectory"));
|
||||||
|
m_outputLineEdit->setClearButtonEnabled(true);
|
||||||
|
outputBoxLayout->addWidget(m_outputLineEdit);
|
||||||
|
|
||||||
|
auto selectHomeUrlButton = new QPushButton(QIcon::fromTheme(QStringLiteral("folder-open")), QString());
|
||||||
|
connect(selectHomeUrlButton, &QPushButton::clicked, this, [this] {
|
||||||
|
QUrl url = QFileDialog::getExistingDirectoryUrl(this, QString());
|
||||||
|
if (!url.isEmpty()) {
|
||||||
|
m_outputLineEdit->setText(url.toDisplayString(QUrl::PreferLocalFile));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
outputBoxLayout->addWidget(selectHomeUrlButton);
|
||||||
|
|
||||||
|
penumbraLayout->addRow(QStringLiteral("Output Directory"), outputBoxLayoutContainer);
|
||||||
|
|
||||||
|
auto bottomButtonLayout = new QHBoxLayout();
|
||||||
|
layout->addLayout(bottomButtonLayout);
|
||||||
|
|
||||||
|
auto cancelButton = new QPushButton(QIcon::fromTheme(QStringLiteral("dialog-close")), QStringLiteral("Cancel"));
|
||||||
|
connect(cancelButton, &QPushButton::clicked, this, &QWidget::close);
|
||||||
|
bottomButtonLayout->addWidget(cancelButton);
|
||||||
|
bottomButtonLayout->addStretch(1);
|
||||||
|
|
||||||
|
auto saveButton = new QPushButton(QIcon::fromTheme(QStringLiteral("dialog-ok")), QStringLiteral("Apply"));
|
||||||
|
connect(saveButton, &QPushButton::clicked, this, [this] {
|
||||||
|
applySettings();
|
||||||
|
close();
|
||||||
|
});
|
||||||
|
bottomButtonLayout->addWidget(saveButton);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SettingsWindow::applySettings()
|
||||||
|
{
|
||||||
|
KConfig config(QStringLiteral("novusrc"));
|
||||||
|
KConfigGroup game = config.group("Armoury");
|
||||||
|
game.writeEntry("PenumbraOutputDirectory", m_outputLineEdit->text());
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue