diff options
| author | Silarn <jrim@rimpo.org> | 2019-01-18 01:56:16 -0600 |
|---|---|---|
| committer | Silarn <jrim@rimpo.org> | 2019-01-18 01:56:16 -0600 |
| commit | 077a050e5954cc21ce40c45dd51973d636b3779b (patch) | |
| tree | 9e9ceea5e54acf65f560250e1aa842a60bb34b66 /src/forcedloaddialogwidget.cpp | |
| parent | e35cdd6c89ea27dfb8f3ea1f918192514617a64d (diff) | |
| parent | 0d04ba18737385395d6ebcdfe49fb31bcb539038 (diff) | |
Merge remote-tracking branch 'origin/Develop' into archive_conflicts_2
Diffstat (limited to 'src/forcedloaddialogwidget.cpp')
| -rw-r--r-- | src/forcedloaddialogwidget.cpp | 108 |
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()); + } + } +} |
