int main(int argc, char* argv[]) { QT_REQUIRE_VERSION(argc, argv, "5.6.0"); #ifndef Q_OS_WIN qInstallMessageHandler(&msgHandler); #endif #if defined(Q_OS_LINUX) || defined(__GLIBC__) || defined(__FreeBSD__) signal(SIGSEGV, qupzilla_signal_handler); #endif // Hack to fix QT_STYLE_OVERRIDE with QProxyStyle const QByteArray style = qgetenv("QT_STYLE_OVERRIDE"); if (!style.isEmpty()) { char** args = (char**) malloc(sizeof(char*) * (argc + 1)); for (int i = 0; i < argc; ++i) args[i] = argv[i]; QString stylecmd = QL1S("-style=") + style; args[argc++] = qstrdup(stylecmd.toUtf8().constData()); argv = args; } QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); MainApplication app(argc, argv); if (app.isClosing()) return 0; app.setStyle(new ProxyStyle); return app.exec(); }
int main( int argc, char **argv ) { QT_REQUIRE_VERSION(argc, argv, "4.1.0"); QApplication::setColorSpec( QApplication::CustomColor ); QApplication a( argc, argv ); // OpenGL is required for the MPEG2 window if ( !QGLFormat::hasOpenGL() ) { qWarning( "This system has no OpenGL support. Exiting." ); return -1; } // Application main widget TTCutMainWindow* mainWnd = new TTCutMainWindow(); QPlastiqueStyle* style = new QPlastiqueStyle(); a.setStyle(style); // Caption text in applications title bar mainWnd->setWindowTitle( TTCut::versionString ); mainWnd->show(); // set initial size of applications main window mainWnd->resize( 800, 600 ); a.connect( &a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()) ); // Execute application and start event loop return a.exec(); }
int main(int argc, char* argv[]) { QT_REQUIRE_VERSION(argc, argv, "4.7.0"); #ifdef Q_WS_X11 QApplication::setGraphicsSystem("raster"); // Better overall performance on X11 signal(SIGSEGV, qupzilla_signal_handler); signal(SIGPIPE, qupzilla_signal_handler); #endif MainApplication app(argc, argv); if (app.isClosing()) { // Not showing any output, otherwise XFCE shows "Failed to execute default browser. I/O error" error // if (argc == 1) { // std::cout << "QupZilla already running - activating existing window" << std::endl; // } return 0; } app.setStyle(new ProxyStyle); return app.exec(); }
int main(int argc, char* argv[]) { QT_REQUIRE_VERSION(argc, argv, "4.7.0"); #ifndef Q_OS_WIN #if (QT_VERSION < 0x050000) qInstallMsgHandler(&msgHandler); #else qInstallMessageHandler(&msgHandler); #endif #endif #if defined(QZ_WS_X11) && QT_VERSION < 0x050000 QApplication::setGraphicsSystem("raster"); // Better overall performance on X11 #endif #if defined(Q_OS_LINUX) || defined(__GLIBC__) || defined(__FreeBSD__) signal(SIGSEGV, qupzilla_signal_handler); signal(SIGPIPE, qupzilla_signal_handler); #endif MainApplication app(argc, argv); if (app.isClosing()) { // Not showing any output, otherwise XFCE shows "Failed to execute default browser. I/O error" error // if (argc == 1) { // std::cout << "QupZilla already running - activating existing window" << std::endl; // } return 0; } app.setProxyStyle(new ProxyStyle); return app.exec(); }
int main( int argc, char** argv ) { // check qt version QT_REQUIRE_VERSION( argc, argv, "4.7.0" ); // create application QApplication a( argc, argv ); a.setApplicationName( PACKAGE_NAME ); a.setOrganizationName( PACKAGE_NAME ); a.setOrganizationDomain( PACKAGE_DOMAIN ); QObject::connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) ); // init pSettings pSettings::setIniInformations( PACKAGE_NAME, PACKAGE_VERSION_STR ); // parse command line arguments CommandLineManager clm; clm.parse(); /*Properties p; p.writeToFile( "properties.xml" );*/ const QStringList arguments = clm.arguments().keys(); if ( arguments.contains( "-v" ) || arguments.contains( "--version" ) ) { clm.showVersion(); } if ( arguments.contains( "-h" ) || arguments.contains( "--help" ) ) { clm.showHelp(); } if ( arguments.contains( "-v" ) || arguments.contains( "--version" ) || arguments.contains( "-h" ) || arguments.contains( "--help" ) ) { return 0; } // init monkey studio core MonkeyCore::init(); // handle command line arguments clm.process(); // execute application const int result = a.exec(); // some cleanup MonkeyCore::pluginsManager()->clearPlugins(); delete MonkeyCore::settings(); // exit code return result; }
int main(int anzahlArgumente, char *Argumente[]) { QT_REQUIRE_VERSION(anzahlArgumente, Argumente, "4.2.0") QApplication Programm(anzahlArgumente,Argumente); QTranslator QtSystem; QTranslator Meine; // Ein Gruss an die Doku von Qt 4.2 QtSystem.load("qt_" + QLocale::system().name(),QLibraryInfo::location(QLibraryInfo::TranslationsPath)); Meine.load("qsslkonfig_"+QLocale::system().name().left(QLocale::system().name().indexOf("_")),QLibraryInfo::location(QLibraryInfo::TranslationsPath)); //Meine.load("qsslkonfig_en","bin"); Programm.installTranslator(&QtSystem); Programm.installTranslator(&Meine); QFrankZertkonfDlgHaupt Hauptdialog; Hauptdialog.show(); return Programm.exec(); }
int main(int argc, char** argv) { QT_REQUIRE_VERSION(argc, argv, "5.5.1"); hrApplication app(argc, argv); checkPlugins(); hrFilesystem fs; fs.mount(QStringList() << "data/h3sprite.lod" << "data/h3bitmap.lod" << "data/heroes3.snd" ); hrWindow w; w.show(); w.AdventureScreen(); return app.exec(); }
extern "C" _declspec(dllexport) int main(int argc, char **argv) { #else int main(int argc, char **argv) { #endif int res = 0; QT_REQUIRE_VERSION(argc, argv, "4.4.0"); #if defined(Q_OS_WIN) SetDllDirectory(L""); #else #ifndef Q_OS_MAC setenv("AVAHI_COMPAT_NOWARN", "1", 1); #endif #endif // Initialize application object. MumbleApplication a(argc, argv); a.setApplicationName(QLatin1String("Mumble")); a.setOrganizationName(QLatin1String("Mumble")); a.setOrganizationDomain(QLatin1String("mumble.sourceforge.net")); a.setQuitOnLastWindowClosed(false); #if QT_VERSION >= 0x050100 a.setAttribute(Qt::AA_UseHighDpiPixmaps); #endif #if QT_VERSION >= 0x050000 && defined(Q_OS_WIN) a.installNativeEventFilter(&a); #endif #ifdef USE_SBCELT { QDir d(a.applicationVersionRootPath()); QString helper = d.absoluteFilePath(QString::fromLatin1("sbcelt-helper")); setenv("SBCELT_HELPER_BINARY", helper.toUtf8().constData(), 1); } #endif Global::g_global_struct = new Global(); qsrand(QDateTime::currentDateTime().toTime_t()); #if defined(Q_OS_WIN) || defined(Q_OS_MAC) os_init(); #endif bool bAllowMultiple = false; bool suppressIdentity = false; bool bRpcMode = false; QString rpcCommand; QUrl url; if (a.arguments().count() > 1) { QStringList args = a.arguments(); for (int i = 1; i < args.count(); ++i) { if (args.at(i) == QLatin1String("-h") || args.at(i) == QLatin1String("--help") #if defined(Q_OS_WIN) || args.at(i) == QLatin1String("/?") #endif ) { QString helpMessage = MainWindow::tr( "Usage: mumble [options] [<url>]\n" "\n" "<url> specifies a URL to connect to after startup instead of showing\n" "the connection window, and has the following form:\n" "mumble://[<username>[:<password>]@]<host>[:<port>][/<channel>[/<subchannel>...]][?version=<x.y.z>]\n" "\n" "The version query parameter has to be set in order to invoke the\n" "correct client version. It currently defaults to 1.2.0.\n" "\n" "Valid options are:\n" " -h, --help Show this help text and exit.\n" " -m, --multiple\n" " Allow multiple instances of the client to be started.\n" " -n, --noidentity\n" " Suppress loading of identity files (i.e., certificates.)\n" "\n" ); QString rpcHelpBanner = MainWindow::tr( "Remote controlling Mumble:\n" "\n" ); QString rpcHelpMessage = MainWindow::tr( "Usage: mumble rpc <action> [options]\n" "\n" "It is possible to remote control a running instance of Mumble by using\n" "the 'mumble rpc' command.\n" "\n" "Valid actions are:\n" " mute\n" " Mute self\n" " unmute\n" " Unmute self\n" " deaf\n" " Deafen self\n" " undeaf\n" " Undeafen self\n" "\n" ); QString helpOutput = helpMessage + rpcHelpBanner + rpcHelpMessage; if (bRpcMode) { helpOutput = rpcHelpMessage; } #if defined(Q_OS_WIN) QMessageBox::information(NULL, MainWindow::tr("Invocation"), helpOutput); #else printf("%s", qPrintable(helpOutput)); #endif return 1; } else if (args.at(i) == QLatin1String("-m") || args.at(i) == QLatin1String("--multiple")) { bAllowMultiple = true; } else if (args.at(i) == QLatin1String("-n") || args.at(i) == QLatin1String("--noidentity")) { suppressIdentity = true; g.s.bSuppressIdentity = true; } else if (args.at(i) == QLatin1String("rpc")) { bRpcMode = true; if (args.count() - 1 > i) { rpcCommand = QString(args.at(i + 1)); } else { QString rpcError = MainWindow::tr("Error: No RPC command specified"); #if defined(Q_OS_WIN) QMessageBox::information(NULL, MainWindow::tr("RPC"), rpcError); #else printf("%s\n", qPrintable(rpcError)); #endif return 1; } } else { if (!bRpcMode) { QUrl u = QUrl::fromEncoded(args.at(i).toUtf8()); if (u.isValid() && (u.scheme() == QLatin1String("mumble"))) { url = u; } else { QFile f(args.at(i)); if (f.exists()) { url = QUrl::fromLocalFile(f.fileName()); } } } } } } #ifdef USE_DBUS #ifdef Q_OS_WIN // By default, windbus expects the path to dbus-daemon to be in PATH, and the path // should contain bin\\, and the path to the config is hardcoded as ..\etc { size_t reqSize; _wgetenv_s(&reqSize, NULL, 0, L"PATH"); if (reqSize > 0) { STACKVAR(wchar_t, buff, reqSize+1); _wgetenv_s(&reqSize, buff, reqSize, L"PATH"); QString path = QString::fromLatin1("%1;%2").arg(QDir::toNativeSeparators(MumbleApplication::instance()->applicationVersionRootPath())).arg(QString::fromWCharArray(buff)); STACKVAR(wchar_t, buffout, path.length() + 1); path.toWCharArray(buffout); _wputenv_s(L"PATH", buffout); } }
int main(int anzahlArgumente, char *Argumente[]) { QT_REQUIRE_VERSION(anzahlArgumente, Argumente, "4.2.2") QApplication Programm(anzahlArgumente,Argumente); #ifdef QT_SIDE_BY_SIDE_ASSEMBLY /* Alle Side-By-Side PlugIns müssen den Schema Hersteller.Qt.PlugIn-XXXX entsprechen!!! Wobei XXXX einem Plugin-Namen entspricht. z.B. HansMutermann.Qt.PlugIn-mysql All side-by-side plugIns must fit to the pattern vendor.Qt.PlugIn-XXXX!! XXXX is the name of the PlugIN. Example: HansMustermann.Qt.PlugIn-mysql */ QString Manifestname=QCoreApplication::instance()->arguments().at(0)+".manifest"; QFile Manifest(Manifestname); if(Manifest.open(QIODevice::ReadOnly)) { QTextStream Inhalt(&Manifest); QString Hersteller; QString Plattform; int PlattformStart; int PlattformEnde; int HerstellerStart; int HerstellerEnde; QString Zeile; while(!Inhalt.atEnd()) { //Wie ist der Platfom/Hersteller meiner Qt Lib?? Zeile=Inhalt.readLine(); //Jedes Qt Programm benötigt QtCore. Darauf kann man sicher testen. if(Zeile.contains("QtCore")) { PlattformStart=Zeile.indexOf("processorArchitecture"); PlattformStart=Zeile.indexOf(QRegExp("[x,X,i]"),PlattformStart+21);//wo fängt der Platformtext an 21=Länge processorArchitecture PlattformEnde=Zeile.indexOf(QRegExp("[\",\']"),PlattformStart+1); Plattform=Zeile.mid(PlattformStart,PlattformEnde-PlattformStart); HerstellerStart=Zeile.indexOf("name"); HerstellerStart=Zeile.indexOf(QRegExp("[\",\']"),HerstellerStart+4)+1; HerstellerEnde=Zeile.indexOf(QRegExp("[\",\']"),HerstellerStart+1); Hersteller=Zeile.mid(HerstellerStart,HerstellerEnde-HerstellerStart).split('.').first(); break; } } Manifest.close(); //Welche Verzeichnise haben wir?? //Die Plug-INs als Side-by-Side Assekmblys gehen nicht, da Qt immer in unterverzeichnissen suchen will!! QDir WindowsSXS(QProcess::systemEnvironment().filter("SystemRoot").first().split('=').last()+"\\winsxs"); QStringList VerzeichnisseMitPlugINs=WindowsSXS.entryList(QStringList(Plattform+"_"+Hersteller+".Qt.PlugIn-*"),QDir::Dirs|QDir::CaseSensitive); /*for(int Verzeichnis=0;Verzeichnis<VerzeichnisseMitPlugINs.size();Verzeichnis++) { QCoreApplication::addLibraryPath(WindowsSXS.path().replace('/','\\')+"\\"+VerzeichnisseMitPlugINs.at(Verzeichnis)); }*/ QString GemeinsamesVerzeichnis=QProcess::systemEnvironment().filter("CommonProgramFiles").first().split('=').last()+"\\"+Hersteller+"\\Qt\\"+qVersion(); /* Also diese Lösung bis es in Qt geht: Die Plug-Is befinden sich unter %CommonProgramFiles%\Entwicklername\Qt\Version\plugins */ QCoreApplication::setLibraryPaths(QStringList(GemeinsamesVerzeichnis+"\\plugins")); //Übersetzungen für Qt QTranslator QtUebersetzung; QtUebersetzung.load("qt_"+QLocale::system().name().left(QLocale::system().name().indexOf("_")),GemeinsamesVerzeichnis+"\\Uebersetzungen"); QCoreApplication::instance()->installTranslator(&QtUebersetzung); } #else QTranslator QtSystem; // Ein Gruss an die Doku von Qt 4.2 QtSystem.load("qt_" + QLocale::system().name(),QLibraryInfo::location(QLibraryInfo::TranslationsPath)); Programm.installTranslator(&QtSystem); #endif QTranslator Meine; Meine.load(":/Uebersetzungen/Uebersetzung"); Programm.installTranslator(&Meine); QFrank::QtSBSADlgHaupt Hauptdialog; Hauptdialog.show(); return Programm.exec(); }
//--------------------------------------------------------------------------------------------------------------------- int main(int argc, char *argv[]) { Q_INIT_RESOURCE(cursor); Q_INIT_RESOURCE(icon); Q_INIT_RESOURCE(schema); Q_INIT_RESOURCE(theme); QT_REQUIRE_VERSION(argc, argv, "5.2.1"); VApplication app(argc, argv); #ifdef QT_DEBUG // Because our "noisy" message handler uses the GUI subsystem for message // boxes, we can't install it until after the QApplication is constructed. But it // is good to be the very next thing to run, to start catching warnings ASAP. { qInstallMessageHandler(noisyFailureMsgHandler); } #endif app.setApplicationDisplayName(VER_PRODUCTNAME_STR); app.setApplicationName(VER_INTERNALNAME_STR); app.setOrganizationName(VER_COMPANYNAME_STR); app.setOrganizationDomain(VER_COMPANYDOMAIN_STR); // Setting the Application version app.setApplicationVersion(APP_VERSION); QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName()); QString defaultLocale = QLocale::system().name(); // e.g. "de_DE" defaultLocale.truncate(defaultLocale.lastIndexOf('_')); // e.g. "de" QString checkedLocale = settings.value("configuration/locale", defaultLocale).toString(); QTranslator qtTranslator; qtTranslator.load("qt_" + checkedLocale, QLibraryInfo::location(QLibraryInfo::TranslationsPath)); app.installTranslator(&qtTranslator); QTranslator appTranslator; appTranslator.load("valentina_" + checkedLocale, qApp->translationsPath()); app.installTranslator(&appTranslator); static const char * GENERIC_ICON_TO_CHECK = "document-open"; if (QIcon::hasThemeIcon(GENERIC_ICON_TO_CHECK) == false) { //If there is no default working icon theme then we should //use an icon theme that we provide via a .qrc file //This case happens under Windows and Mac OS X //This does not happen under GNOME or KDE QIcon::setThemeName("win.icon.theme"); } MainWindow w; w.setWindowState(w.windowState() ^ Qt::WindowMaximized); app.setWindowIcon(QIcon(":/icon/64x64/icon64x64.png")); TableWindow table; QObject::connect(&w, &MainWindow::ModelChosen, &table, &TableWindow::ModelChosen); QObject::connect(&table, &TableWindow::closed, &w, &MainWindow::tableClosed); QCommandLineParser parser; parser.setApplicationDescription(QCoreApplication::translate("main", "Pattern making program.")); parser.addHelpOption(); parser.addVersionOption(); parser.addPositionalArgument("filename", QCoreApplication::translate("main", "Pattern file.")); parser.process(app); const QStringList args = parser.positionalArguments(); if (args.size() > 0) { w.LoadPattern(args.at(0)); } w.show(); return app.exec(); }
//------------------------------------------------------------------------------ // Name: main // Desc: entry point //------------------------------------------------------------------------------ int main(int argc, char *argv[]) { QT_REQUIRE_VERSION(argc, argv, "4.6.0"); QApplication app(argc, argv); QApplication::setWindowIcon(QIcon(":/debugger/images/edb48-logo.png")); qsrand(std::time(0)); // setup organization info so settings go in right place QApplication::setOrganizationName("codef00.com"); QApplication::setOrganizationDomain("codef00.com"); QApplication::setApplicationName("edb"); load_translations(); // look for some plugins.. load_plugins(edb::v1::config().plugin_path); QStringList args = app.arguments(); edb::pid_t attach_pid = 0; QList<QByteArray> run_args; QString run_app; // call the init function for each plugin, this is done after // ALL plugins are loaded in case there are inter-plugin dependencies for(QObject *plugin: edb::v1::plugin_list()) { if(auto p = qobject_cast<IPlugin *>(plugin)) { const IPlugin::ArgumentStatus r = p->parse_argments(args); switch(r) { case IPlugin::ARG_ERROR: usage(); break; case IPlugin::ARG_EXIT: std::exit(0); break; default: break; } } } if(args.size() > 1) { if(args.size() == 3 && args[1] == "--attach") { attach_pid = args[2].toUInt(); } else if(args.size() >= 3 && args[1] == "--run") { run_app = args[2]; for(int i = 3; i < args.size(); ++i) { run_args.push_back(argv[i]); } } else if(args.size() == 2 && args[1] == "--version") { std::cout << "edb version: " << edb::version << std::endl; return 0; } else if(args.size() == 2 && args[1] == "--dump-version") { std::cout << edb::version << std::endl; return 0; } else { usage(); } } return start_debugger(attach_pid, run_app, run_args); }
int main(int argc, char **argv) { int res = 0; QT_REQUIRE_VERSION(argc, argv, "4.4.0"); #if defined(Q_OS_WIN) SetDllDirectory(L""); #else #ifndef Q_OS_MAC setenv("AVAHI_COMPAT_NOWARN", "1", 1); #endif #endif // Initialize application object. QAppMumble a(argc, argv); a.setApplicationName(QLatin1String("Mumble")); a.setOrganizationName(QLatin1String("Mumble")); a.setOrganizationDomain(QLatin1String("mumble.sourceforge.net")); a.setQuitOnLastWindowClosed(false); Global::g_global_struct = new Global(); qsrand(QDateTime::currentDateTime().toTime_t()); #if defined(Q_OS_WIN) || defined(Q_OS_MAC) os_init(); #endif bool bAllowMultiple = false; QUrl url; if (a.arguments().count() > 1) { QStringList args = a.arguments(); for (int i = 1; i < args.count(); ++i) { if (args.at(i) == QLatin1String("-m")) { bAllowMultiple = true; } else if (args.at(i) == QLatin1String("-n")) { g.s.bSuppressIdentity = true; } else { QUrl u = QUrl::fromEncoded(args.at(i).toUtf8()); if (u.isValid() && (u.scheme() == QLatin1String("mumble"))) { url = u; } else { QFile f(args.at(i)); if (f.exists()) { url = QUrl::fromLocalFile(f.fileName()); } } } } } #ifdef USE_DBUS #ifdef Q_OS_WIN // By default, windbus expects the path to dbus-daemon to be in PATH, and the path // should contain bin\\, and the path to the config is hardcoded as ..\etc { size_t reqSize; _wgetenv_s(&reqSize, NULL, 0, L"PATH"); if (reqSize > 0) { STACKVAR(wchar_t, buff, reqSize+1); _wgetenv_s(&reqSize, buff, reqSize, L"PATH"); QString path = QString::fromLatin1("%1;%2").arg(QDir::toNativeSeparators(a.applicationDirPath())).arg(QString::fromWCharArray(buff)); STACKVAR(wchar_t, buffout, path.length() + 1); path.toWCharArray(buffout); _wputenv_s(L"PATH", buffout); } }
/** * Main. Creates Application window. */ int main(int argc, char** argv) { QT_REQUIRE_VERSION(argc, argv, "5.2.1"); RS_DEBUG->setLevel(RS_Debug::D_WARNING); QApplication app(argc, argv); QCoreApplication::setOrganizationName("LibreCAD"); QCoreApplication::setApplicationName("LibreCAD"); QCoreApplication::setApplicationVersion(XSTR(LC_VERSION)); QSettings settings; bool first_load = settings.value("Startup/FirstLoad", 1).toBool(); const QString lpDebugSwitch0("-d"),lpDebugSwitch1("--debug") ; const QString help0("-h"), help1("--help"); bool allowOptions=true; QList<int> argClean; for (int i=0; i<argc; i++) { QString argstr(argv[i]); if(allowOptions&&QString::compare("--", argstr)==0) { allowOptions=false; continue; } if (allowOptions && (help0.compare(argstr, Qt::CaseInsensitive)==0 || help1.compare(argstr, Qt::CaseInsensitive)==0 )) { qDebug()<<"librecad::usage: <options> <dxf file>"; qDebug()<<"-h, --help\tdisplay this message"; qDebug()<<""; qDebug()<<" --help\tdisplay this message"; qDebug()<<"-d, --debug <level>"; RS_DEBUG->print( RS_Debug::D_NOTHING, "possible debug levels:"); RS_DEBUG->print( RS_Debug::D_NOTHING, " %d Nothing", RS_Debug::D_NOTHING); RS_DEBUG->print( RS_Debug::D_NOTHING, " %d Critical", RS_Debug::D_CRITICAL); RS_DEBUG->print( RS_Debug::D_NOTHING, " %d Error", RS_Debug::D_ERROR); RS_DEBUG->print( RS_Debug::D_NOTHING, " %d Warning", RS_Debug::D_WARNING); RS_DEBUG->print( RS_Debug::D_NOTHING, " %d Notice", RS_Debug::D_NOTICE); RS_DEBUG->print( RS_Debug::D_NOTHING, " %d Informational", RS_Debug::D_INFORMATIONAL); RS_DEBUG->print( RS_Debug::D_NOTHING, " %d Debugging", RS_Debug::D_DEBUGGING); exit(0); } if ( allowOptions&& (argstr.startsWith(lpDebugSwitch0, Qt::CaseInsensitive) || argstr.startsWith(lpDebugSwitch1, Qt::CaseInsensitive) )) { argClean<<i; // to control the level of debugging output use --debug with level 0-6, e.g. --debug3 // for a list of debug levels use --debug? // if no level follows, the debugging level is set argstr.remove(QRegExp("^"+lpDebugSwitch0)); argstr.remove(QRegExp("^"+lpDebugSwitch1)); char level; if(argstr.size()==0) { if(i+1<argc) { if(QRegExp("\\d*").exactMatch(argv[i+1])) { ++i; qDebug()<<"reading "<<argv[i]<<" as debugging level"; level=argv[i][0]; argClean<<i; } else level='3'; } else level='3'; //default to D_WARNING } else level=argstr.toStdString()[0]; switch(level) { case '?' : RS_DEBUG->print( RS_Debug::D_NOTHING, "possible debug levels:"); RS_DEBUG->print( RS_Debug::D_NOTHING, " %d Nothing", RS_Debug::D_NOTHING); RS_DEBUG->print( RS_Debug::D_NOTHING, " %d Critical", RS_Debug::D_CRITICAL); RS_DEBUG->print( RS_Debug::D_NOTHING, " %d Error", RS_Debug::D_ERROR); RS_DEBUG->print( RS_Debug::D_NOTHING, " %d Warning", RS_Debug::D_WARNING); RS_DEBUG->print( RS_Debug::D_NOTHING, " %d Notice", RS_Debug::D_NOTICE); RS_DEBUG->print( RS_Debug::D_NOTHING, " %d Informational", RS_Debug::D_INFORMATIONAL); RS_DEBUG->print( RS_Debug::D_NOTHING, " %d Debugging", RS_Debug::D_DEBUGGING); return 0; case '0' + RS_Debug::D_NOTHING : RS_DEBUG->setLevel( RS_Debug::D_NOTHING); ++i; break; case '0' + RS_Debug::D_CRITICAL : RS_DEBUG->setLevel( RS_Debug::D_CRITICAL); ++i; break; case '0' + RS_Debug::D_ERROR : RS_DEBUG->setLevel( RS_Debug::D_ERROR); ++i; break; case '0' + RS_Debug::D_WARNING : RS_DEBUG->setLevel( RS_Debug::D_WARNING); ++i; break; case '0' + RS_Debug::D_NOTICE : RS_DEBUG->setLevel( RS_Debug::D_NOTICE); ++i; break; case '0' + RS_Debug::D_INFORMATIONAL : RS_DEBUG->setLevel( RS_Debug::D_INFORMATIONAL); ++i; break; case '0' + RS_Debug::D_DEBUGGING : RS_DEBUG->setLevel( RS_Debug::D_DEBUGGING); ++i; break; default : RS_DEBUG->setLevel(RS_Debug::D_DEBUGGING); break; } } } RS_DEBUG->print("param 0: %s", argv[0]); QFileInfo prgInfo( QFile::decodeName(argv[0]) ); QString prgDir(prgInfo.absolutePath()); RS_SETTINGS->init(app.organizationName(), app.applicationName()); RS_SYSTEM->init(app.applicationName(), app.applicationVersion(), XSTR(QC_APPDIR), prgDir); // parse command line arguments that might not need a launched program: QStringList fileList = handleArgs(argc, argv, argClean); QString unit = settings.value("Defaults/Unit", "Invalid").toString(); // show initial config dialog: if (first_load) { RS_DEBUG->print("main: show initial config dialog.."); QG_DlgInitial di(nullptr); QPixmap pxm(":/main/intro_librecad.png"); di.setPixmap(pxm); if (di.exec()) { RS_SETTINGS->beginGroup("/Defaults"); unit = RS_SETTINGS->readEntry("/Unit", "None"); RS_SETTINGS->endGroup(); } RS_DEBUG->print("main: show initial config dialog: OK"); } auto splash = new QSplashScreen; bool show_splash = settings.value("Startup/ShowSplash", 1).toBool(); if (show_splash) { QPixmap pixmap(":/main/splash_librecad.png"); splash->setPixmap(pixmap); splash->setAttribute(Qt::WA_DeleteOnClose); splash->show(); splash->showMessage(QObject::tr("Loading.."), Qt::AlignRight|Qt::AlignBottom, Qt::black); app.processEvents(); RS_DEBUG->print("main: splashscreen: OK"); } RS_DEBUG->print("main: init fontlist.."); RS_FONTLIST->init(); RS_DEBUG->print("main: init fontlist: OK"); RS_DEBUG->print("main: init patternlist.."); RS_PATTERNLIST->init(); RS_DEBUG->print("main: init patternlist: OK"); RS_DEBUG->print("main: loading translation.."); settings.beginGroup("Appearance"); QString lang = settings.value("Language", "en").toString(); QString langCmd = settings.value("LanguageCmd", "en").toString(); settings.endGroup(); RS_SYSTEM->loadTranslation(lang, langCmd); RS_DEBUG->print("main: loading translation: OK"); RS_DEBUG->print("main: creating main window.."); QC_ApplicationWindow appWin; RS_DEBUG->print("main: setting caption"); appWin.setWindowTitle(app.applicationName()); RS_DEBUG->print("main: show main window"); settings.beginGroup("Geometry"); int windowWidth = settings.value("WindowWidth", 1024).toInt(); int windowHeight = settings.value("WindowHeight", 1024).toInt(); int windowX = settings.value("WindowX", 32).toInt(); int windowY = settings.value("WindowY", 32).toInt(); settings.endGroup(); if (!first_load) appWin.resize(windowWidth, windowHeight); appWin.move(windowX, windowY); bool maximize = settings.value("Startup/Maximize", 0).toBool(); if (maximize || first_load) appWin.showMaximized(); else appWin.show(); RS_DEBUG->print("main: set focus"); appWin.setFocus(); RS_DEBUG->print("main: creating main window: OK"); if (show_splash) { RS_DEBUG->print("main: updating splash"); splash->raise(); splash->showMessage(QObject::tr("Loading..."), Qt::AlignRight|Qt::AlignBottom, Qt::black); RS_DEBUG->print("main: processing events"); qApp->processEvents(); RS_DEBUG->print("main: updating splash: OK"); } // Set LC_NUMERIC so that entering numeric values uses . as the decimal seperator setlocale(LC_NUMERIC, "C"); RS_DEBUG->print("main: loading files.."); bool files_loaded = false; for (QStringList::Iterator it = fileList.begin(); it != fileList.end(); ++it ) { if (show_splash) { splash->showMessage(QObject::tr("Loading File %1..") .arg(QDir::toNativeSeparators(*it)), Qt::AlignRight|Qt::AlignBottom, Qt::black); qApp->processEvents(); } appWin.slotFileOpen(*it, RS2::FormatUnknown); files_loaded = true; } RS_DEBUG->print("main: loading files: OK"); if (!files_loaded) { appWin.slotFileNewNew(); } if (show_splash) splash->finish(&appWin); else delete splash; if (first_load) settings.setValue("Startup/FirstLoad", 0); RS_DEBUG->print("main: entering Qt event loop"); int return_code = app.exec(); RS_DEBUG->print("main: exited Qt event loop"); return return_code; }
// Application entry point int main( int argc, char *argv[] ) { QT_REQUIRE_VERSION( argc, argv, "4.7.0" ); #ifndef QT_DEBUG qInstallMsgHandler( MessageHandler ); #endif MainApplication app( argc, argv ); XercesExt::XercesInit init; try { // We prevent Qt from constantly creating and deleting threads. // Using a negative number forces the threads to stay around; // that way, we always have a steady number of threads ready to do work. QThreadPool::globalInstance()->setExpiryTimeout( -1 ); // Specify the plugin folders // (language codecs and image loaders) app.addLibraryPath( "codecs" ); app.addLibraryPath( "iconengines" ); app.addLibraryPath( "imageformats" ); // Set application information for // easier use of QSettings classes QCoreApplication::setOrganizationName( "sigil-ebook" ); QCoreApplication::setOrganizationDomain("sigil-ebook.com"); QCoreApplication::setApplicationName( "sigil" ); QCoreApplication::setApplicationVersion(SIGIL_VERSION); // Setup the translator and load the translation for the selected language QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8")); QTranslator translator; SettingsStore settings; const QString qm_name = QString("sigil_%1").arg(settings.uiLanguage()); // Run though all locations and stop once we find and are able to load // an appropriate translation. foreach (QString path, UILanguage::GetPossibleTranslationPaths()) { if (QDir(path).exists()) { if (translator.load(qm_name, path)) { break; } } } app.installTranslator(&translator); // We set the window icon explicitly on Linux. // On Windows this is handled by the RC file, // and on Mac by the ICNS file. #ifdef Q_WS_X11 app.setWindowIcon( GetApplicationIcon() ); #endif // On Unix systems, we make sure that the temp folder we // create is accessible by all users. On Windows, there's // a temp folder per user. #ifndef Q_WS_WIN CreateTempFolderWithCorrectPermissions(); #endif // Needs to be created on the heap so that // the reply has time to return. UpdateChecker *checker = new UpdateChecker( &app ); checker->CheckForUpdate(); // Install an event filter for the application // so we can catch OS X's file open events AppEventFilter *filter = new AppEventFilter( &app ); app.installEventFilter( filter ); const QStringList &arguments = QCoreApplication::arguments(); if (arguments.contains("-t")) { std::cout << TempFolder::GetPathToSigilScratchpad().toStdString() << std::endl; return 1; //} else if (arguments.count() == 3) { // Used for an undocumented, unsupported *-to-epub // console conversion. USE AT YOUR OWN PERIL! return QuickConvert( arguments ); } else { // Normal startup MainWindow *widget = GetMainWindow( arguments ); widget->show(); return app.exec(); } } catch ( ExceptionBase &exception ) { Utility::DisplayExceptionErrorDialog( Utility::GetExceptionInfo( exception ) ); return 1; } }