diff --git a/src/musredit_qt5/musredit/PTextEdit.cpp b/src/musredit_qt5/musredit/PTextEdit.cpp index 60f72710..e7732590 100644 --- a/src/musredit_qt5/musredit/PTextEdit.cpp +++ b/src/musredit_qt5/musredit/PTextEdit.cpp @@ -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) @@ -2569,34 +2567,15 @@ void PTextEdit::musrView() env.value("DKS") + "/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; - } -} - -//---------------------------------------------------------------------------------------------------- -/** - *

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); } } diff --git a/src/musredit_qt5/musredit/PTextEdit.h b/src/musredit_qt5/musredit/PTextEdit.h index b864dfda..680ff04b 100644 --- a/src/musredit_qt5/musredit/PTextEdit.h +++ b/src/musredit_qt5/musredit/PTextEdit.h @@ -140,7 +140,6 @@ private slots: void musrFit(); void musrMsr2Data(); void musrView(); - void musrViewFinished(int, QProcess::ExitStatus); void musrT0(); void musrFT(); void musrPrefs(); diff --git a/src/musredit_qt6/musredit/PTextEdit.cpp b/src/musredit_qt6/musredit/PTextEdit.cpp index 3b7540fc..cdd212c8 100644 --- a/src/musredit_qt6/musredit/PTextEdit.cpp +++ b/src/musredit_qt6/musredit/PTextEdit.cpp @@ -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,31 +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, QMessageBox::Close ); - return; - } -} - -//---------------------------------------------------------------------------------------------------- -/** - *

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) { - 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, QMessageBox::Close); + 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, QMessageBox::Close); } } diff --git a/src/musredit_qt6/musredit/PTextEdit.h b/src/musredit_qt6/musredit/PTextEdit.h index 4352e097..6a060146 100644 --- a/src/musredit_qt6/musredit/PTextEdit.h +++ b/src/musredit_qt6/musredit/PTextEdit.h @@ -140,7 +140,6 @@ private slots: void musrFit(); void musrMsr2Data(); void musrView(); - void musrViewFinished(int, QProcess::ExitStatus); void musrT0(); void musrFT(); void musrPrefs();