Fix signal derp from previous commit
Console should now properly close/not close based on minecraft return code/signal.
This commit is contained in:
		| @@ -22,16 +22,14 @@ | ||||
| #include <gui/Platform.h> | ||||
| #include <gui/dialogs/CustomMessageBox.h> | ||||
|  | ||||
| ConsoleWindow::ConsoleWindow(MinecraftProcess *mcproc, QWidget *parent) : | ||||
| 	QDialog(parent), | ||||
| 	ui(new Ui::ConsoleWindow), | ||||
| 	m_mayclose(true), | ||||
| 	proc(mcproc) | ||||
| ConsoleWindow::ConsoleWindow(MinecraftProcess *mcproc, QWidget *parent) | ||||
| 	: QDialog(parent), ui(new Ui::ConsoleWindow), m_mayclose(true), proc(mcproc) | ||||
| { | ||||
| 	MultiMCPlatform::fixWM_CLASS(this); | ||||
| 	ui->setupUi(this); | ||||
| 	this->setWindowFlags(Qt::Window); | ||||
| 	connect(mcproc, SIGNAL(ended(BaseInstance*)), this, SLOT(onEnded(BaseInstance*))); | ||||
| 	connect(mcproc, SIGNAL(ended(BaseInstance *, int, ExitStatus)), this, | ||||
| 			SLOT(onEnded(BaseInstance *, int, QProcess::ExitStatus))); | ||||
| } | ||||
|  | ||||
| ConsoleWindow::~ConsoleWindow() | ||||
| @@ -54,32 +52,32 @@ void ConsoleWindow::writeColor(QString text, const char *color) | ||||
| void ConsoleWindow::write(QString data, MessageLevel::Enum mode) | ||||
| { | ||||
| 	if (data.endsWith('\n')) | ||||
| 		data = data.left(data.length()-1); | ||||
| 		data = data.left(data.length() - 1); | ||||
| 	QStringList paragraphs = data.split('\n'); | ||||
| 	for(QString ¶graph : paragraphs) | ||||
| 	for (QString ¶graph : paragraphs) | ||||
| 	{ | ||||
| 		paragraph = paragraph.trimmed(); | ||||
| 	} | ||||
|  | ||||
| 	QListIterator<QString> iter(paragraphs); | ||||
| 	if (mode == MessageLevel::MultiMC) | ||||
| 		while(iter.hasNext()) | ||||
| 		while (iter.hasNext()) | ||||
| 			writeColor(iter.next(), "blue"); | ||||
| 	else if (mode == MessageLevel::Error) | ||||
| 		while(iter.hasNext()) | ||||
| 		while (iter.hasNext()) | ||||
| 			writeColor(iter.next(), "red"); | ||||
| 	else if (mode == MessageLevel::Warning) | ||||
| 		while(iter.hasNext()) | ||||
| 		while (iter.hasNext()) | ||||
| 			writeColor(iter.next(), "orange"); | ||||
| 	else if (mode == MessageLevel::Fatal) | ||||
| 		while(iter.hasNext()) | ||||
| 		while (iter.hasNext()) | ||||
| 			writeColor(iter.next(), "pink"); | ||||
| 	else if (mode == MessageLevel::Debug) | ||||
| 		while(iter.hasNext()) | ||||
| 		while (iter.hasNext()) | ||||
| 			writeColor(iter.next(), "green"); | ||||
| 	// TODO: implement other MessageLevels | ||||
| 	else | ||||
| 		while(iter.hasNext()) | ||||
| 		while (iter.hasNext()) | ||||
| 			writeColor(iter.next()); | ||||
| } | ||||
|  | ||||
| @@ -102,9 +100,9 @@ void ConsoleWindow::setMayClose(bool mayclose) | ||||
| 		ui->closeButton->setEnabled(false); | ||||
| } | ||||
|  | ||||
| void ConsoleWindow::closeEvent(QCloseEvent * event) | ||||
| void ConsoleWindow::closeEvent(QCloseEvent *event) | ||||
| { | ||||
| 	if(!m_mayclose) | ||||
| 	if (!m_mayclose) | ||||
| 		event->ignore(); | ||||
| 	else | ||||
| 		QDialog::closeEvent(event); | ||||
| @@ -113,20 +111,22 @@ void ConsoleWindow::closeEvent(QCloseEvent * event) | ||||
| void ConsoleWindow::on_btnKillMinecraft_clicked() | ||||
| { | ||||
| 	ui->btnKillMinecraft->setEnabled(false); | ||||
| 	auto response = CustomMessageBox::selectable(this, tr("Kill Minecraft?"), | ||||
| 												 tr("This can cause the instance to get corrupted and should only be used if Minecraft is frozen for some reason"), | ||||
| 												 QMessageBox::Question, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes)->exec(); | ||||
| 	auto response = CustomMessageBox::selectable( | ||||
| 		this, tr("Kill Minecraft?"), | ||||
| 		tr("This can cause the instance to get corrupted and should only be used if Minecraft " | ||||
| 		   "is frozen for some reason"), | ||||
| 		QMessageBox::Question, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes)->exec(); | ||||
| 	if (response == QMessageBox::Yes) | ||||
| 		proc->killMinecraft(); | ||||
| 	else | ||||
| 		ui->btnKillMinecraft->setEnabled(true); | ||||
| } | ||||
|  | ||||
| void ConsoleWindow::onEnded(BaseInstance* instance, int code, QProcess::ExitStatus status) | ||||
| void ConsoleWindow::onEnded(BaseInstance *instance, int code, QProcess::ExitStatus status) | ||||
| { | ||||
| 	ui->btnKillMinecraft->setEnabled(false); | ||||
|  | ||||
| 	if(instance->settings().get("AutoCloseConsole").toBool()) | ||||
| 	if (instance->settings().get("AutoCloseConsole").toBool()) | ||||
| 	{ | ||||
| 		if (code == 0 && status != QProcess::CrashExit) | ||||
| 		{ | ||||
|   | ||||
| @@ -725,8 +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 *, int, ExitStatus)), this, | ||||
| 			SLOT(instanceEnded(BaseInstance *, int, ExitStatus))); | ||||
| 	connect(proc, SIGNAL(ended(BaseInstance*,int,QProcess::ExitStatus)), this, | ||||
| 			SLOT(instanceEnded(BaseInstance*,int,QProcess::ExitStatus))); | ||||
|  | ||||
| 	if (instance->settings().get("ShowConsole").toBool()) | ||||
| 	{ | ||||
|   | ||||
| @@ -74,7 +74,7 @@ signals: | ||||
| 	/** | ||||
| 	 * @brief emitted when mc has finished and the PostLaunchCommand was run | ||||
| 	 */ | ||||
| 	void ended(BaseInstance *, int code, ExitStatus status); | ||||
| 	void ended(BaseInstance *, int code, QProcess::ExitStatus status); | ||||
|  | ||||
| 	/** | ||||
| 	 * @brief emitted when we want to log something | ||||
|   | ||||
		Reference in New Issue
	
	Block a user