summaryrefslogtreecommitdiff
path: root/src/forcedloaddialogwidget.cpp
diff options
context:
space:
mode:
authorSilarn <jrim@rimpo.org>2019-01-18 01:56:16 -0600
committerSilarn <jrim@rimpo.org>2019-01-18 01:56:16 -0600
commit077a050e5954cc21ce40c45dd51973d636b3779b (patch)
tree9e9ceea5e54acf65f560250e1aa842a60bb34b66 /src/forcedloaddialogwidget.cpp
parente35cdd6c89ea27dfb8f3ea1f918192514617a64d (diff)
parent0d04ba18737385395d6ebcdfe49fb31bcb539038 (diff)
Merge remote-tracking branch 'origin/Develop' into archive_conflicts_2
Diffstat (limited to 'src/forcedloaddialogwidget.cpp')
-rw-r--r--src/forcedloaddialogwidget.cpp108
1 files changed, 108 insertions, 0 deletions
diff --git a/src/forcedloaddialogwidget.cpp b/src/forcedloaddialogwidget.cpp
new file mode 100644
index 00000000..10069c35
--- /dev/null
+++ b/src/forcedloaddialogwidget.cpp
@@ -0,0 +1,108 @@
+#include "forcedloaddialogwidget.h"
+#include "ui_forcedloaddialogwidget.h"
+
+#include <QFileDialog>
+
+#include "executableinfo.h"
+
+using namespace MOBase;
+
+ForcedLoadDialogWidget::ForcedLoadDialogWidget(const IPluginGame *game, QWidget *parent) :
+ QWidget(parent),
+ ui(new Ui::ForcedLoadDialogWidget),
+ m_GamePlugin(game)
+{
+ ui->setupUi(this);
+}
+
+ForcedLoadDialogWidget::~ForcedLoadDialogWidget()
+{
+ delete ui;
+}
+
+bool ForcedLoadDialogWidget::getEnabled()
+{
+ return ui->enabledBox->isChecked();
+}
+
+bool ForcedLoadDialogWidget::getForced()
+{
+ return m_Forced;
+}
+
+QString ForcedLoadDialogWidget::getLibraryPath()
+{
+ return ui->libraryPathEdit->text();
+}
+
+QString ForcedLoadDialogWidget::getProcess()
+{
+ return ui->processEdit->text();
+}
+
+void ForcedLoadDialogWidget::setEnabled(bool enabled)
+{
+ ui->enabledBox->setChecked(enabled);
+}
+
+void ForcedLoadDialogWidget::setForced(bool forced)
+{
+ m_Forced = forced;
+ ui->libraryPathBrowseButton->setEnabled(!forced);
+ ui->libraryPathEdit->setEnabled(!forced);
+ ui->processBrowseButton->setEnabled(!forced);
+ ui->processEdit->setEnabled(!forced);
+}
+
+void ForcedLoadDialogWidget::setLibraryPath(QString &path)
+{
+ ui->libraryPathEdit->setText(path);
+}
+
+void ForcedLoadDialogWidget::setProcess(QString &name)
+{
+ ui->processEdit->setText(name);
+}
+
+void ForcedLoadDialogWidget::on_enabledBox_toggled()
+{
+ // anything to do?
+}
+
+void ForcedLoadDialogWidget::on_libraryPathBrowseButton_clicked()
+{
+ QDir gameDir(m_GamePlugin->gameDirectory());
+ QString startPath = gameDir.absolutePath();
+ QString result = QFileDialog::getOpenFileName(nullptr, "Select a library...", startPath, "Dynamic link library (*.dll)", nullptr, QFileDialog::ReadOnly);
+ if (!result.isEmpty()) {
+ QFileInfo fileInfo(result);
+ QString relativePath = gameDir.relativeFilePath(fileInfo.filePath());
+ QString filePath = fileInfo.filePath();
+ if (!relativePath.startsWith("..")) {
+ filePath = relativePath;
+ }
+
+ if (fileInfo.exists()) {
+ ui->libraryPathEdit->setText(filePath);
+ } else {
+ qCritical("%ls does not exist", filePath.toStdWString().c_str());
+ }
+ }
+}
+
+void ForcedLoadDialogWidget::on_processBrowseButton_clicked()
+{
+ QDir gameDir(m_GamePlugin->gameDirectory());
+ QString startPath = gameDir.absolutePath();
+ QString result = QFileDialog::getOpenFileName(nullptr, "Select a process...", startPath, "Executable (*.exe)", nullptr, QFileDialog::ReadOnly);
+ if (!result.isEmpty()) {
+ QFileInfo fileInfo(result);
+ QString fileName = fileInfo.fileName();
+
+ if (fileInfo.exists()) {
+ ui->processEdit->setText(fileName);
+ } else {
+ qCritical("%ls does not exist", fileInfo.filePath().toStdWString().c_str());
+ }
+ }
+}