Files
UltraGrid/gui/QT/main.cpp
2020-05-06 15:35:26 +02: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 + "\"");
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: */