diff options
| author | Tannin <sherb@gmx.net> | 2016-06-30 22:15:50 +0200 |
|---|---|---|
| committer | Tannin <sherb@gmx.net> | 2016-06-30 22:15:50 +0200 |
| commit | 64590a10d7832b6d94dcf4539f7da93d6eb889b9 (patch) | |
| tree | eab9ea4119010f8ee28e0b6f94caefaad33e4bdc /src/mainwindow.cpp | |
| parent | a00cda607cd9115d06c1185f78bcdded28c8b09d (diff) | |
| parent | 4a582e524dd012ed9d5fdb4f9c97aab22c8dac85 (diff) | |
Merge branch 'master' into new_vfs_library
Diffstat (limited to 'src/mainwindow.cpp')
| -rw-r--r-- | src/mainwindow.cpp | 45 |
1 files changed, 38 insertions, 7 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index abf52796..f554f0aa 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -34,6 +34,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include "organizercore.h"
#include "pluginlistsortproxy.h"
#include "previewgenerator.h"
+#include "serverinfo.h"
#include "savegameinfo.h"
#include "spawn.h"
#include "versioninfo.h"
@@ -1011,8 +1012,14 @@ void MainWindow::startExeAction() {
QAction *action = qobject_cast<QAction*>(sender());
if (action != nullptr) {
- m_OrganizerCore.spawnBinary(
+ const Executable &selectedExecutable(
m_OrganizerCore.executablesList()->find(action->text()));
+ m_OrganizerCore.spawnBinary(
+ selectedExecutable.m_BinaryInfo, selectedExecutable.m_Arguments,
+ selectedExecutable.m_WorkingDirectory.length() != 0
+ ? selectedExecutable.m_WorkingDirectory
+ : selectedExecutable.m_BinaryInfo.absolutePath(),
+ selectedExecutable.m_SteamAppID);
} else {
qCritical("not an action?");
}
@@ -1450,18 +1457,31 @@ void MainWindow::storeSettings(QSettings &settings) { void MainWindow::lock()
{
+ if (m_LockDialog != nullptr) {
+ ++m_LockCount;
+ return;
+ }
m_LockDialog = new LockedDialog(qApp->activeWindow());
m_LockDialog->show();
setEnabled(false);
+ m_LockDialog->setEnabled(true); //What's the point otherwise?
+ ++m_LockCount;
}
void MainWindow::unlock()
{
- if (m_LockDialog != nullptr) {
+ //If you come through here with a null lock pointer, it's a bug!
+ if (m_LockDialog == nullptr) {
+ qDebug("Unlocking main window when already unlocked");
+ return;
+ }
+ --m_LockCount;
+ if (m_LockCount == 0) {
m_LockDialog->hide();
m_LockDialog->deleteLater();
+ m_LockDialog = nullptr;
+ setEnabled(true);
}
- setEnabled(true);
}
bool MainWindow::unlockClicked()
@@ -1473,6 +1493,13 @@ bool MainWindow::unlockClicked() }
}
+void MainWindow::setProcessName(QString const &name)
+{
+ if (m_LockDialog != nullptr) {
+ m_LockDialog->setProcessName(name);
+ }
+}
+
void MainWindow::on_btnRefreshData_clicked()
{
m_OrganizerCore.refreshDirectoryStructure();
@@ -1515,13 +1542,17 @@ void MainWindow::installMod(QString fileName) }
}
+void MainWindow::on_startButton_clicked() {
+ const Executable &selectedExecutable(getSelectedExecutable());
-void MainWindow::on_startButton_clicked()
-{
- m_OrganizerCore.spawnBinary(getSelectedExecutable());
+ m_OrganizerCore.spawnBinary(
+ selectedExecutable.m_BinaryInfo, selectedExecutable.m_Arguments,
+ selectedExecutable.m_WorkingDirectory.length() != 0
+ ? selectedExecutable.m_WorkingDirectory
+ : selectedExecutable.m_BinaryInfo.absolutePath(),
+ selectedExecutable.m_SteamAppID);
}
-
static HRESULT CreateShortcut(LPCWSTR targetFileName, LPCWSTR arguments,
LPCSTR linkFileName, LPCWSTR description,
LPCTSTR iconFileName, int iconNumber,
|
