From 149c38d54d2a841af929b432b83804fafdc1e588 Mon Sep 17 00:00:00 2001 From: LostDragonist Date: Mon, 15 Apr 2019 04:11:06 -0500 Subject: Add protection against non-existent working directory for executables --- src/editexecutablesdialog.cpp | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'src/editexecutablesdialog.cpp') diff --git a/src/editexecutablesdialog.cpp b/src/editexecutablesdialog.cpp index d1371a76..177661ff 100644 --- a/src/editexecutablesdialog.cpp +++ b/src/editexecutablesdialog.cpp @@ -83,8 +83,33 @@ void EditExecutablesDialog::refreshExecutablesWidget() void EditExecutablesDialog::on_binaryEdit_textChanged(const QString &name) { - QFileInfo fileInfo(name); - ui->addButton->setEnabled(fileInfo.exists() && fileInfo.isFile()); + updateButtonStates(); +} + +void EditExecutablesDialog::on_workingDirEdit_textChanged(const QString &dir) +{ + updateButtonStates(); +} + +void EditExecutablesDialog::updateButtonStates() +{ + bool enabled = true; + + QString filePath(ui->binaryEdit->text()); + QFileInfo fileInfo(filePath); + if (!fileInfo.exists()) + enabled = false; + if (!fileInfo.isFile()) + enabled = false; + + QString dirPath(ui->workingDirEdit->text()); + if (!dirPath.isEmpty()) { + QDir dirInfo(dirPath); + if (!dirInfo.exists()) + enabled = false; + } + + ui->addButton->setEnabled(enabled); } void EditExecutablesDialog::resetInput() @@ -293,7 +318,6 @@ bool EditExecutablesDialog::executableChanged() && fileInfo.isFile(); } } - void EditExecutablesDialog::on_executablesListBox_itemSelectionChanged() { if (ui->executablesListBox->selectedItems().size() == 0) { -- cgit v1.3.1