Files
UltraGrid/gui/QT/main.cpp
Martin Piatka 71426a86da GUI: Replace deprecated QProcess::start()
The QProcess::start() method is replaced with a new one that requires
executable path and arguments passed separately.

Each argument must be now passed individualy using QStringList and
have their spaces escaped automatically and passing argument
list as a single string would no longer work. This is now handled by
splitting the argument string on spaces.

The executable path can no longer contain quotes as spaces are escaped
by QT automatically now.
2021-02-15 15:43:04 +01:00

73 lines
1.9 KiB
C++

#include <QApplication>
#include <QString>
#include <QStringList>
#include <QProcess>
#include <QCoreApplication>
#include <QMessageBox>
#include <QSurfaceFormat>
#include <clocale>
#include <cstring>
#include "ultragrid_window.hpp"
static bool show_help(char *argv[]) {
const char *progname = argv[0];
while (*argv != NULL) {
if (strcmp(*argv, "-h") == 0 || strcmp(*argv, "--help") == 0) {
printf("Usage:\n");
printf("\t%s [-h|--help|--with-uv <uv>|--config <config_path>]\n", progname);
return true;
}
argv++;
}
return false;
}
int main(int argc, char *argv[]){
if (show_help(argv)) {
return 0;
}
QApplication app(argc, argv);
QStringList args = QCoreApplication::arguments();
QString ultragridExecutable = UltragridWindow::findUltragridExecutable();
QProcess process;
//important: If this line is removed parsing float numbers for vu meter fails
std::setlocale(LC_NUMERIC, "C");
process.start(ultragridExecutable, QStringList());
if(process.waitForStarted(1000) == false) {
QMessageBox msgBox;
msgBox.setText(ultragridExecutable + " doesn't seem to be executable.");
msgBox.setInformativeText("Please install uv (UltraGrid binary) to your system "
"path or supply a '--with-uv' parameter.\n\n"
"Please check also if the binary is executable.");
msgBox.setIcon(QMessageBox::Critical);
msgBox.exec();
return 1;
}
process.waitForFinished();
if (process.exitStatus() == QProcess::CrashExit || process.exitCode() != 0) {
QMessageBox msgBox;
msgBox.setText("UltraGrid has crashes when invoked without arguments!");
msgBox.setIcon(QMessageBox::Critical);
msgBox.exec();
return 1;
}
QSurfaceFormat fmt;
fmt.setDepthBufferSize(24);
fmt.setStencilBufferSize(8);
fmt.setVersion(3, 3);
fmt.setProfile(QSurfaceFormat::CoreProfile);
QSurfaceFormat::setDefaultFormat(fmt);
UltragridWindow uw;
uw.show();
return app.exec();
}
/* vi: set noexpandtab: */