From f0cf9e5147c8db70fd94b2fa530d30fb07a0b20f Mon Sep 17 00:00:00 2001 From: Martin Piatka <445597@mail.muni.cz> Date: Mon, 16 Sep 2019 11:26:34 +0200 Subject: [PATCH] GUI: Show error message when UltraGrid exits with non-zero exit code --- gui/QT/window/ultragrid_window.cpp | 18 ++++++++++++++++++ gui/QT/window/ultragrid_window.hpp | 1 + 2 files changed, 19 insertions(+) diff --git a/gui/QT/window/ultragrid_window.cpp b/gui/QT/window/ultragrid_window.cpp index 234010f9d..7c32422e4 100644 --- a/gui/QT/window/ultragrid_window.cpp +++ b/gui/QT/window/ultragrid_window.cpp @@ -248,6 +248,7 @@ void UltragridWindow::connectSignals(){ connect(&process, SIGNAL(readyReadStandardOutput()), this, SLOT(outputAvailable())); connect(&process, SIGNAL(readyReadStandardError()), this, SLOT(outputAvailable())); connect(&process, SIGNAL(stateChanged(QProcess::ProcessState)), this, SLOT(processStateChanged(QProcess::ProcessState))); + connect(&process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(processFinished(int, QProcess::ExitStatus))); connect(ui.arguments, SIGNAL(textChanged(const QString &)), this, SLOT(editArgs(const QString &))); connect(ui.editCheckBox, SIGNAL(toggled(bool)), this, SLOT(setArgs())); @@ -370,6 +371,23 @@ void UltragridWindow::processStateChanged(QProcess::ProcessState s){ } } +void UltragridWindow::processFinished(int code, QProcess::ExitStatus status){ + if(status == QProcess::CrashExit || code != 0){ + QMessageBox msgBox(this); + msgBox.setIcon(QMessageBox::Critical); + msgBox.setWindowTitle("UltraGrid error!"); + msgBox.setText("Ultragrid has exited with an error! If you need help, please send an email " + "to ultragrid-dev@cesnet.cz with log attached."); + QPushButton *showLogBtn = msgBox.addButton(tr("Show log"), QMessageBox::ActionRole); + QPushButton *dissmissBtn = msgBox.addButton(tr("Dismiss"), QMessageBox::RejectRole); + msgBox.exec(); + + if(msgBox.clickedButton() == showLogBtn){ + showLog(); + } + } +} + QString UltragridWindow::findUltragridExecutable() { QStringList args = QCoreApplication::arguments(); int index = args.indexOf("--with-uv"); diff --git a/gui/QT/window/ultragrid_window.hpp b/gui/QT/window/ultragrid_window.hpp index 7172c85aa..531d19370 100644 --- a/gui/QT/window/ultragrid_window.hpp +++ b/gui/QT/window/ultragrid_window.hpp @@ -68,6 +68,7 @@ public slots: private slots: void setStartBtnText(QProcess::ProcessState); void processStateChanged(QProcess::ProcessState); + void processFinished(int, QProcess::ExitStatus); void enablePreview(bool); void schedulePreview();