#include #include #include #include #include #include #include #include QString getNamedArgument(QStringList args, QString name, QString defaultName) { int index = args.indexOf(name); return (index != -1) ? args[index + 1] : QString(defaultName); } QString getNamedArgument(QStringList args, QString name) { return getNamedArgument(args, name, ""); } int main(int argc, char *argv[]) { setenv("QT_QPA_PLATFORMTHEME", "", 1); QApplication app(argc, argv); QQmlApplicationEngine engine; FileIO fileIO; // Manage command line arguments from the cpp side QStringList args = app.arguments(); if (args.contains("-h") || args.contains("--help")) { qDebug() << "Usage: " + args.at(0) + " [--default-settings] [--workdir ] [--program ] [-p|--profile ] [--fullscreen] [-h|--help]"; qDebug() << " --default-settings Run cool-retro-term with the default settings"; qDebug() << " --workdir Change working directory to 'dir'"; qDebug() << " -e Command to execute. This option will catch all following arguments, so use it as the last option."; qDebug() << " --fullscreen Run cool-retro-term in fullscreen."; qDebug() << " -p|--profile Run cool-retro-term with the given profile."; qDebug() << " -h|--help Print this help."; qDebug() << " --verbose Print additional informations such as profiles and settings."; return 0; } // Manage default command QStringList cmdList; if (args.contains("-e")) { cmdList << args.mid(args.indexOf("-e") + 1); } QVariant command(cmdList.empty() ? QVariant() : cmdList[0]); QVariant commandArgs(cmdList.size() <= 1 ? QVariant() : QVariant(cmdList.mid(1))); engine.rootContext()->setContextProperty("defaultCmd", command); engine.rootContext()->setContextProperty("defaultCmdArgs", commandArgs); engine.rootContext()->setContextProperty("workdir", getNamedArgument(args, "--workdir", "$HOME")); engine.rootContext()->setContextProperty("fileIO", &fileIO); // Manage import paths for Linux and OSX. QStringList importPathList = engine.importPathList(); importPathList.prepend(QCoreApplication::applicationDirPath() + "/qmltermwidget"); importPathList.prepend(QCoreApplication::applicationDirPath() + "/../PlugIns"); engine.setImportPathList(importPathList); engine.load(QUrl("qrc:/main.qml")); // Quit the application when the engine closes. QObject::connect((QObject*) &engine, SIGNAL(quit()), (QObject*) &app, SLOT(quit())); return app.exec(); }