Merge branch 'develop'

This commit is contained in:
Petr Mrázek 2013-11-12 09:35:53 +01:00
commit ee595fb1da
6 changed files with 30 additions and 22 deletions

View File

@ -122,14 +122,15 @@ void ConsoleWindow::on_btnKillMinecraft_clicked()
ui->btnKillMinecraft->setEnabled(true);
}
void ConsoleWindow::onEnded(BaseInstance *instance)
void ConsoleWindow::onEnded(BaseInstance* instance, int code, QProcess::ExitStatus status)
{
ui->btnKillMinecraft->setEnabled(false);
// TODO: Might need an option to forcefully close, even on an error
if(instance->settings().get("AutoCloseConsole").toBool())
{
// TODO: Check why this doesn't work
if (!proc->exitCode()) this->close();
if (code == 0 && status != QProcess::CrashExit)
{
this->close();
}
}
}

View File

@ -66,7 +66,7 @@ private
slots:
void on_closeButton_clicked();
void on_btnKillMinecraft_clicked();
void onEnded(BaseInstance *instance);
void onEnded(BaseInstance *instance, int code, QProcess::ExitStatus status);
protected:
void closeEvent(QCloseEvent *);

View File

@ -725,7 +725,8 @@ void MainWindow::launchInstance(BaseInstance *instance, LoginResponse response)
connect(proc, SIGNAL(log(QString, MessageLevel::Enum)), console,
SLOT(write(QString, MessageLevel::Enum)));
connect(proc, SIGNAL(ended(BaseInstance *)), this, SLOT(instanceEnded(BaseInstance *)));
connect(proc, SIGNAL(ended(BaseInstance *, int, ExitStatus)), this,
SLOT(instanceEnded(BaseInstance *, int, ExitStatus)));
if (instance->settings().get("ShowConsole").toBool())
{
@ -882,7 +883,7 @@ void MainWindow::on_actionEditInstNotes_triggered()
}
}
void MainWindow::instanceEnded(BaseInstance *instance)
void MainWindow::instanceEnded(BaseInstance *instance, int code, QProcess::ExitStatus status)
{
this->show();
ui->actionLaunchInstance->setEnabled(m_selectedInstance);

View File

@ -16,6 +16,7 @@
#pragma once
#include <QMainWindow>
#include <QProcess>
#include "logic/lists/InstanceList.h"
#include "logic/net/LoginTask.h"
@ -115,7 +116,7 @@ slots:
void on_actionChangeInstLWJGLVersion_triggered();
void instanceEnded(BaseInstance *instance);
void instanceEnded(BaseInstance *instance, int code, QProcess::ExitStatus status);
void on_actionInstanceSettings_triggered();

View File

@ -111,19 +111,24 @@ void MinecraftProcess::on_stdOut()
// exit handler
void MinecraftProcess::finish(int code, ExitStatus status)
{
if (status != NormalExit)
{
// TODO: error handling
}
// TODO: Localization
if (!killed)
{
if (status == NormalExit)
{
//: Message displayed on instance exit
emit log(tr("Minecraft exited with exitcode %1.").arg(status));
emit log(tr("Minecraft exited with exitcode %1.").arg(code));
}
else
{
//: Message displayed on instance crashed
emit log(tr("Minecraft crashed with exitcode %1.").arg(code));
}
}
else
{
//: Message displayed after the instance exits due to kill request
emit log(tr("Minecraft was killed by user."), MessageLevel::Error);
}
m_prepostlaunchprocess.processEnvironment().insert("INST_EXITCODE", QString(code));
@ -138,7 +143,7 @@ void MinecraftProcess::finish(int code, ExitStatus status)
}
}
m_instance->cleanupAfterRun();
emit ended(m_instance);
emit ended(m_instance, code, status);
}
void MinecraftProcess::killMinecraft()

View File

@ -74,7 +74,7 @@ signals:
/**
* @brief emitted when mc has finished and the PostLaunchCommand was run
*/
void ended(BaseInstance *);
void ended(BaseInstance *, int code, ExitStatus status);
/**
* @brief emitted when we want to log something