start musrview as detached process: simplifies things.

This commit is contained in:
2024-02-13 10:12:50 +01:00
parent deeee783f5
commit 74978025fb
4 changed files with 15 additions and 56 deletions

View File

@ -2555,9 +2555,7 @@ void PTextEdit::musrView()
if (fAdmin->getMusrviewShowOneToOneFlag())
arg << "-1";
QProcess *proc = new QProcess(this);
connect(proc, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(musrViewFinished(int, QProcess::ExitStatus)));
QProcess proc;
// make sure that the system environment variables are properly set
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
#if defined(Q_OS_DARWIN)
@ -2565,34 +2563,15 @@ void PTextEdit::musrView()
#else
env.insert("LD_LIBRARY_PATH", env.value("ROOTSYS") + "/lib:" + env.value("LD_LIBRARY_PATH"));
#endif
proc->setProcessEnvironment(env);
proc->setWorkingDirectory(workDir);
proc->start(cmd, arg);
if (!proc->waitForStarted()) {
// error handling
QString msg(tr("Could not execute the output command: ")+cmd[0]);
QMessageBox::critical( nullptr,
tr("Fatal error"),
msg,
tr("Quit") );
return;
}
}
//----------------------------------------------------------------------------------------------------
/**
* <p>Checks if musrview terminated with error, and if yes pop up a message box.
* @param exitCode
*/
void PTextEdit::musrViewFinished(int exitCode, QProcess::ExitStatus)
{
if (exitCode != 0) {
proc.setProgram(cmd);
proc.setProcessEnvironment(env);
if (!proc.startDetached(cmd, arg, workDir)) {
QString msg = QString("musrview failed. Possible reasons:\n");
msg += QString("* corrupted msr-file.\n");
msg += QString("* cannot read data-file.\n");
msg += QString("* many more things can go wrong.\n");
msg += QString("Please check!");
QMessageBox::critical(nullptr, tr("Fatal Error"), msg, tr("Quit"));
QMessageBox::critical(nullptr, tr("FATAL ERROR"), msg, QMessageBox::Close);
}
}