NOISSUE ifdef the hell out of MCEdit launch on Windows

Setting the work directory was not enough.
This commit is contained in:
Petr Mrázek 2016-11-03 02:41:01 +01:00
parent f4de049b13
commit 6ebf6e7785
2 changed files with 18 additions and 5 deletions

View File

@ -172,12 +172,19 @@ void WorldListPage::on_mcEditBtn_clicked()
auto program = mcedit->getProgramPath(); auto program = mcedit->getProgramPath();
if(program.size()) if(program.size())
{ {
#ifdef Q_OS_WIN32
if(!QProcess::startDetached(program, {fullPath}, mceditPath))
{
mceditError();
}
#else
m_mceditProcess.reset(new LoggedProcess()); m_mceditProcess.reset(new LoggedProcess());
m_mceditProcess->setDetachable(true); m_mceditProcess->setDetachable(true);
connect(m_mceditProcess.get(), &LoggedProcess::stateChanged, this, &WorldListPage::mceditState); connect(m_mceditProcess.get(), &LoggedProcess::stateChanged, this, &WorldListPage::mceditState);
m_mceditProcess->start(program, {fullPath}); m_mceditProcess->start(program, {fullPath});
m_mceditProcess->setWorkingDirectory(mceditPath); m_mceditProcess->setWorkingDirectory(mceditPath);
m_mceditStarting = true; m_mceditStarting = true;
#endif
} }
else else
{ {
@ -189,6 +196,15 @@ void WorldListPage::on_mcEditBtn_clicked()
} }
} }
void WorldListPage::mceditError()
{
QMessageBox::warning(
this->parentWidget(),
tr("MCEdit failed to start!"),
tr("MCEdit failed to start.\nIt may be necessary to reinstall it.")
);
}
void WorldListPage::mceditState(LoggedProcess::State state) void WorldListPage::mceditState(LoggedProcess::State state)
{ {
bool failed = false; bool failed = false;
@ -212,11 +228,7 @@ void WorldListPage::mceditState(LoggedProcess::State state)
} }
if(failed) if(failed)
{ {
QMessageBox::warning( mceditError();
this->parentWidget(),
tr("MCEdit failed to start!"),
tr("MCEdit failed to start.\nIt may be necessary to reinstall it.")
);
} }
} }

View File

@ -70,6 +70,7 @@ private:
QModelIndex getSelectedWorld(); QModelIndex getSelectedWorld();
bool isWorldSafe(QModelIndex index); bool isWorldSafe(QModelIndex index);
bool worldSafetyNagQuestion(); bool worldSafetyNagQuestion();
void mceditError();
private: private:
Ui::WorldListPage *ui; Ui::WorldListPage *ui;