void VersionInfoInterface::logBuildInfo() const { log() << "git version: " << gitVersion(); #if defined(MONGO_CONFIG_SSL) && MONGO_CONFIG_SSL_PROVIDER == MONGO_CONFIG_SSL_PROVIDER_OPENSSL log() << openSSLVersion("OpenSSL version: "); #endif log() << "allocator: " << allocator(); std::stringstream ss; ss << "modules: "; auto modules_list = modules(); if (modules_list.size() == 0) { ss << "none"; } else { for (const auto& m : modules_list) { ss << m << " "; } } log() << ss.str(); log() << "build environment:"; for (auto&& envDataEntry : buildInfo()) { if (std::get<3>(envDataEntry)) { auto val = std::get<1>(envDataEntry); if (val.size() == 0) continue; log() << " " << std::get<0>(envDataEntry) << ": " << std::get<1>(envDataEntry); } } }
bool run(const string& dbname, BSONObj& jsobj, string& errmsg, BSONObjBuilder& result, bool fromRepl ){ result << "version" << versionString << "gitVersion" << gitVersion() << "sysInfo" << sysInfo(); result << "bits" << ( sizeof( int* ) == 4 ? 32 : 64 ); result.appendBool( "debug" , debug ); result.appendNumber("maxBsonObjectSize", BSONObjMaxUserSize); return true; }
void doUnlockedStuff(stringstream& ss) { /* this is in the header already ss << "port: " << port << '\n'; */ ss << mongodVersion() << "\n"; ss << "git hash: " << gitVersion() << "\n"; ss << "sys info: " << sysInfo() << "\n"; ss << "\n"; ss << "dbwritelocked: " << dbMutex.info().isLocked() << " (initial)\n"; ss << "uptime: " << time(0)-started << " seconds\n"; if ( replAllDead ) ss << "<b>replication replAllDead=" << replAllDead << "</b>\n"; ss << "\nassertions:\n"; for ( int i = 0; i < 4; i++ ) { if ( lastAssert[i].isSet() ) { ss << "<b>"; if ( i == 3 ) ss << "usererr"; else ss << i; ss << "</b>" << ' ' << lastAssert[i].toString(); } } ss << "\nreplInfo: " << replInfo << '\n'; { boostlock bl(Client::clientsMutex); for( set<Client*>::iterator i = Client::clients.begin(); i != Client::clients.end(); i++ ) { Client *c = *i; CurOp& co = *(c->curop()); ss << "currentOp (unlocked): " << co.infoNoauth() << "\n"; } } }
void printShardingVersionInfo( bool out ) { if ( out ) { cout << "MongoS version " << versionString << " starting: pid=" << ProcessId::getCurrent() << " port=" << cmdLine.port << ( sizeof(int*) == 4 ? " 32" : " 64" ) << "-bit host=" << getHostNameCached() << " (--help for usage)" << endl; DEV cout << "_DEBUG build" << endl; cout << "git version: " << gitVersion() << endl; #ifdef MONGO_SSL cout << "OpenSSL version: " << openSSLVersion() << endl; #endif cout << "build sys info: " << sysInfo() << endl; } else { log() << "MongoS version " << versionString << " starting: pid=" << ProcessId::getCurrent() << " port=" << cmdLine.port << ( sizeof( int* ) == 4 ? " 32" : " 64" ) << "-bit host=" << getHostNameCached() << " (--help for usage)" << endl; DEV log() << "_DEBUG build" << endl; printGitVersion(); #ifdef MONGO_SSL printOpenSSLVersion(); #endif printSysInfo(); printCommandLineOpts(); } }
void printShardingVersionInfo(bool out) { if (out) { cout << mongosCommand << " " << mongodVersion() << " starting (--help for usage)" << endl; cout << "git version: " << gitVersion() << endl; cout << "build sys info: " << sysInfo() << endl; } else { log() << mongosCommand << " " << mongodVersion() << " starting (--help for usage)" << endl; printGitVersion(); printSysInfo(); } }
void appendBuildInfo(BSONObjBuilder& result) { result << "version" << versionString << "gitVersion" << gitVersion() << "sysInfo" << sysInfo() << "loaderFlags" << loaderFlags() << "compilerFlags" << compilerFlags() << "allocator" << allocator() << "versionArray" << versionArray << "javascriptEngine" << compiledJSEngine() /*TODO: add this back once the module system is in place -- maybe once we do something like serverstatus with callbacks*/ // << "interpreterVersion" << globalScriptEngine->getInterpreterVersionString() << "bits" << ( sizeof( int* ) == 4 ? 32 : 64 ); result.appendBool( "debug" , debug ); result.appendNumber("maxBsonObjectSize", BSONObjMaxUserSize); }
bool run(const std::string& dbname, BSONObj& jsobj, int, // options std::string& errmsg, BSONObjBuilder& result, bool fromRepl) { result << "version" << versionString << "gitVersion" << gitVersion() << "sysInfo" << sysInfo() << "versionArray" << versionArray << "interpreterVersion" << globalScriptEngine->getInterpreterVersionString() << "bits" << ( sizeof( int* ) == 4 ? 32 : 64 ); result.appendBool( "debug" , debug ); result.appendNumber("maxBsonObjectSize", BSONObjMaxUserSize); return true; }
// static void Explain::generateServerInfo(BSONObjBuilder* out) { BSONObjBuilder serverBob(out->subobjStart("serverInfo")); out->append("host", getHostNameCached()); out->appendNumber("port", serverGlobalParams.port); out->append("version", versionString); out->append("gitVersion", gitVersion()); ProcessInfo p; BSONObjBuilder bOs; bOs.append("type", p.getOsType()); bOs.append("name", p.getOsName()); bOs.append("version", p.getOsVersion()); serverBob.append(StringData("os"), bOs.obj()); serverBob.doneFast(); }
void printShardingVersionInfo(bool out) { if (out) { std::cout << "MongoS version " << versionString << " starting: pid=" << ProcessId::getCurrent() << " port=" << serverGlobalParams.port << (sizeof(int*) == 4 ? " 32" : " 64") << "-bit host=" << getHostNameCached() << " (--help for usage)" << std::endl; DEV std::cout << "DEBUG build" << std::endl; std::cout << "git version: " << gitVersion() << std::endl; std::cout << openSSLVersion("OpenSSL version: ") << std::endl; } else { log() << "MongoS version " << versionString << " starting: pid=" << ProcessId::getCurrent() << " port=" << serverGlobalParams.port << (sizeof(int*) == 4 ? " 32" : " 64") << "-bit host=" << getHostNameCached() << " (--help for usage)" << std::endl; DEV log() << "DEBUG build" << std::endl; logProcessDetails(); } }
void printShardingVersionInfo( bool out ) { if ( out ) { cout << "MongoS version " << versionString << " starting: pid=" << getpid() << " port=" << cmdLine.port << ( sizeof(int*) == 4 ? " 32" : " 64" ) << "-bit host=" << getHostNameCached() << " (--help for usage)" << endl; DEV cout << "_DEBUG build" << endl; cout << "git version: " << gitVersion() << endl; cout << "build sys info: " << sysInfo() << endl; } else { log() << "MongoS version " << versionString << " starting: pid=" << getpid() << " port=" << cmdLine.port << ( sizeof( int* ) == 4 ? " 32" : " 64" ) << "-bit host=" << getHostNameCached() << " (--help for usage)" << endl; DEV log() << "_DEBUG build" << endl; printGitVersion(); printSysInfo(); printCommandLineOpts(); } }
void VersionInfoInterface::appendBuildInfo(BSONObjBuilder* result) const { *result << "version" << version() << "gitVersion" << gitVersion() #if defined(_WIN32) << "targetMinOS" << targetMinOS() #endif << "modules" << modules() << "allocator" << allocator() << "javascriptEngine" << jsEngine() << "sysInfo" << "deprecated"; BSONArrayBuilder versionArray(result->subarrayStart("versionArray")); versionArray << majorVersion() << minorVersion() << patchVersion() << extraVersion(); versionArray.done(); BSONObjBuilder opensslInfo(result->subobjStart("openssl")); #ifdef MONGO_CONFIG_SSL #if MONGO_CONFIG_SSL_PROVIDER == MONGO_CONFIG_SSL_PROVIDER_OPENSSL opensslInfo << "running" << openSSLVersion() << "compiled" << OPENSSL_VERSION_TEXT; #elif MONGO_CONFIG_SSL_PROVIDER == MONGO_CONFIG_SSL_PROVIDER_WINDOWS opensslInfo << "running" << "Windows SChannel"; #elif MONGO_CONFIG_SSL_PROVIDER == MONGO_CONFIG_SSL_PROVIDER_APPLE opensslInfo << "running" << "Apple Secure Transport"; #else #error "Unknown SSL Provider" #endif // MONGO_CONFIG_SSL_PROVIDER #else opensslInfo << "running" << "disabled" << "compiled" << "disabled"; #endif opensslInfo.done(); BSONObjBuilder buildvarsInfo(result->subobjStart("buildEnvironment")); for (auto&& envDataEntry : buildInfo()) { if (std::get<2>(envDataEntry)) { buildvarsInfo << std::get<0>(envDataEntry) << std::get<1>(envDataEntry); } } buildvarsInfo.done(); *result << "bits" << (int)sizeof(void*) * 8; result->appendBool("debug", kDebugBuild); result->appendNumber("maxBsonObjectSize", BSONObjMaxUserSize); }
void doUnlockedStuff(stringstream& ss) { /* this is in the header already ss << "port: " << port << '\n'; */ ss << mongodVersion() << "\n"; ss << "git hash: " << gitVersion() << "\n"; ss << "sys info: " << sysInfo() << "\n"; ss << "\n"; ss << "dbwritelocked: " << dbMutex.info().isLocked() << " (initial)\n"; ss << "uptime: " << time(0)-started << " seconds\n"; if ( replAllDead ) ss << "<b>replication replAllDead=" << replAllDead << "</b>\n"; ss << "\nassertions:\n"; for ( int i = 0; i < 4; i++ ) { if ( lastAssert[i].isSet() ) { ss << "<b>"; if ( i == 3 ) ss << "usererr"; else ss << i; ss << "</b>" << ' ' << lastAssert[i].toString(); } } ss << "\nreplInfo: " << replInfo << "\n\n"; ss << "Clients:\n"; ss << "<table border=1><tr align='left'><th>Thread</th><th>Current op</th>\n"; { boostlock bl(Client::clientsMutex); for( set<Client*>::iterator i = Client::clients.begin(); i != Client::clients.end(); i++ ) { Client *c = *i; CurOp& co = *(c->curop()); ss << "<tr><td>" << c->desc() << "</td><td"; BSONObj info = co.infoNoauth(); /* if( info.getIntField("inLock") > 0 ) ss << "style='color:red'"; else if( info.getIntField("inLock") < 0 ) ss << "style='color:green'"; */ ss << ">" << info << "</td></tr>\n"; } } ss << "</table>\n"; }
void doUnlockedStuff(stringstream& ss) { /* this is in the header already ss << "port: " << port << '\n'; */ ss << mongodVersion() << "\n"; ss << "git hash: " << gitVersion() << "\n"; ss << "sys info: " << sysInfo() << "\n"; ss << "\n"; ss << "dbwritelocked: " << dbMutex.info().isLocked() << " (initial)\n"; ss << "uptime: " << time(0)-started << " seconds\n"; if ( replAllDead ) ss << "<b>replication replAllDead=" << replAllDead << "</b>\n"; ss << "\nassertions:\n"; for ( int i = 0; i < 4; i++ ) { if ( lastAssert[i].isSet() ) { ss << "<b>"; if ( i == 3 ) ss << "usererr"; else ss << i; ss << "</b>" << ' ' << lastAssert[i].toString(); } } ss << "\nreplInfo: " << replInfo << "\n\n"; ss << "Clients:\n"; ss << "<table border=1>"; ss << "<tr align='left'>" << "<th>Thread</th>" << "<th>OpId</th>" << "<th>Active</th>" << "<th>LockType</th>" << "<th>Waiting</th>" << "<th>SecsRunning</th>" << "<th>Op</th>" << "<th>NameSpace</th>" << "<th>Query</th>" << "<th>client</th>" << "<th>msg</th>" << "<th>progress</th>" << "</tr>\n"; { scoped_lock bl(Client::clientsMutex); for( set<Client*>::iterator i = Client::clients.begin(); i != Client::clients.end(); i++ ) { Client *c = *i; CurOp& co = *(c->curop()); ss << "<tr><td>" << c->desc() << "</td>"; tablecell( ss , co.opNum() ); tablecell( ss , co.active() ); tablecell( ss , co.getLockType() ); tablecell( ss , co.isWaitingForLock() ); if ( co.active() ) tablecell( ss , co.elapsedSeconds() ); else tablecell( ss , "" ); tablecell( ss , co.getOp() ); tablecell( ss , co.getNS() ); if ( co.haveQuery() ) tablecell( ss , co.query() ); else tablecell( ss , "" ); tablecell( ss , co.getRemoteString() ); tablecell( ss , co.getMessage() ); tablecell( ss , co.getProgressMeter().toString() ); ss << "</tr>"; } } ss << "</table>\n"; }
bool run(const string& dbname, BSONObj& jsobj, string& errmsg, BSONObjBuilder& result, bool fromRepl ){ result << "version" << versionString << "gitVersion" << gitVersion() << "sysInfo" << sysInfo(); result << "bits" << ( sizeof( int* ) == 4 ? 32 : 64 ); return true; }
int main( int argc, char** argv ) { QString calligraVersion(CALLIGRA_VERSION_STRING); QString version; #ifdef CALLIGRA_GIT_SHA1_STRING QString gitVersion(CALLIGRA_GIT_SHA1_STRING); version = QString("%1 (git %2)").arg(calligraVersion).arg(gitVersion).toLatin1(); #else version = calligraVersion; #endif KAboutData aboutData("kritagemini", "krita", ki18n("Krita Gemini"), version.toLatin1(), ki18n("Krita Gemini: Painting at Home and on the Go for Artists"), KAboutData::License_GPL, ki18n("(c) 1999-%1 The Krita team and KO GmbH.\n").subs(CALLIGRA_YEAR), KLocalizedString(), "http://www.kritastudio.com", "*****@*****.**"); KCmdLineArgs::init (argc, argv, &aboutData); KCmdLineOptions options; options.add( "+[files]", ki18n( "Images to open" ) ); options.add( "vkb", ki18n( "Use the virtual keyboard" ) ); options.add( "fullscreen", ki18n( "Use full-screen display" ) ); KCmdLineArgs::addCmdLineOptions( options ); KCmdLineArgs* args = KCmdLineArgs::parsedArgs(); QStringList fileNames; if (args->count() > 0) { for (int i = 0; i < args->count(); ++i) { QString fileName = args->arg(i); if (QFile::exists(fileName)) { fileNames << fileName; } } } KApplication app; app.setApplicationName("kritagemini"); KIconLoader::global()->addAppDir("krita"); KIconLoader::global()->addAppDir("kritasketch"); #ifdef Q_OS_WIN QDir appdir(app.applicationDirPath()); appdir.cdUp(); QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); // If there's no kdehome, set it and restart the process. //QMessageBox::information(0, "krita sketch", "KDEHOME: " + env.value("KDEHOME")); if (!env.contains("KDEHOME") ) { _putenv_s("KDEHOME", QDesktopServices::storageLocation(QDesktopServices::DataLocation).toLocal8Bit()); } if (!env.contains("KDESYCOCA")) { _putenv_s("KDESYCOCA", QString(appdir.absolutePath() + "/sycoca").toLocal8Bit()); } if (!env.contains("XDG_DATA_DIRS")) { _putenv_s("XDG_DATA_DIRS", QString(appdir.absolutePath() + "/share").toLocal8Bit()); } if (!env.contains("KDEDIR")) { _putenv_s("KDEDIR", appdir.absolutePath().toLocal8Bit()); } if (!env.contains("KDEDIRS")) { _putenv_s("KDEDIRS", appdir.absolutePath().toLocal8Bit()); } _putenv_s("PATH", QString(appdir.absolutePath() + "/bin" + ";" + appdir.absolutePath() + "/lib" + ";" + appdir.absolutePath() + "/lib" + "/kde4" + ";" + appdir.absolutePath()).toLocal8Bit()); app.addLibraryPath(appdir.absolutePath()); app.addLibraryPath(appdir.absolutePath() + "/bin"); app.addLibraryPath(appdir.absolutePath() + "/lib"); app.addLibraryPath(appdir.absolutePath() + "/lib/kde4"); #endif #if defined Q_OS_WIN KisTabletSupportWin::init(); app.setEventFilter(&KisTabletSupportWin::eventFilter); #elif defined Q_WS_X11 KisTabletSupportX11::init(); app.setEventFilter(&KisTabletSupportX11::eventFilter); #endif if (qgetenv("KDE_FULL_SESSION").isEmpty()) { // There are two themes that work for Krita, oxygen and plastique. Try to set plastique first, then oxygen qobject_cast<QApplication*>(QApplication::instance())->setStyle("Plastique"); qobject_cast<QApplication*>(QApplication::instance())->setStyle("Oxygen"); } bool showFullscreen = false; if (args->isSet("fullscreen")) { showFullscreen = true; } // then create the pixmap from an xpm: we cannot get the // location of our datadir before we've started our components, // so use an xpm. // If fullscreen, hide splash screen QPixmap pm(splash_screen_xpm); QSplashScreen splash(pm); if (!showFullscreen) { splash.show(); splash.showMessage("."); app.processEvents(); } #if defined Q_WS_X11 && QT_VERSION >= 0x040800 QApplication::setAttribute(Qt::AA_X11InitThreads); #endif MainWindow window(fileNames); if (args->isSet("vkb")) { app.setInputContext(new SketchInputContext(&app)); } if (showFullscreen) { window.showFullScreen(); } else { #ifdef Q_OS_WIN window.showMaximized(); #else window.show(); #endif } splash.finish(&window); return app.exec(); }
void printGitVersion() { log() << "git version: " << gitVersion() << endl; }
void run(){ if ( _token.size() == 0 && _name.size() == 0 ){ log(1) << "mms not configured" << endl; return; } if ( _token.size() == 0 ){ log() << "no token for mms - not running" << endl; return; } if ( _name.size() == 0 ){ log() << "no name for mms - not running" << endl; return; } log() << "mms monitor staring... token:" << _token << " name:" << _name << " interval: " << _secsToSleep << endl; unsigned long long lastTime = 0; unsigned long long lastLockTime = 0; while ( ! inShutdown() ){ sleepsecs( _secsToSleep ); stringstream url; url << _baseurl << _token << "?"; url << "monitor_name=" << _name << "&"; url << "version=" << versionString << "&"; url << "git_hash=" << gitVersion() << "&"; { //percent_locked unsigned long long time = curTimeMicros64(); unsigned long long start , lock; dbMutexInfo.timingInfo( start , lock ); if ( lastTime ){ double timeDiff = (double) (time - lastTime); double lockDiff = (double) (lock - lastLockTime); url << "percent_locked=" << (int)ceil( 100 * ( lockDiff / timeDiff ) ) << "&"; } lastTime = time; lastLockTime = lock; } vector< string > dbNames; getDatabaseNames( dbNames ); boost::intmax_t totalSize = 0; for ( vector< string >::iterator i = dbNames.begin(); i != dbNames.end(); ++i ) { boost::intmax_t size = dbSize( i->c_str() ); totalSize += size; } url << "data_size=" << totalSize / ( 1024 * 1024 ) << "&"; /* TODO: message_operations update_operations insert_operations get_more_operations delete_operations kill_cursors_operations */ log(1) << "mms url: " << url.str() << endl; try { HttpClient c; map<string,string> headers; stringstream ss; int rc = c.get( url.str() , headers , ss ); log(1) << "\t response code: " << rc << endl; if ( rc != 200 ){ log() << "mms error response code:" << rc << endl; log(1) << "mms error body:" << ss.str() << endl; } } catch ( std::exception& e ){ log() << "mms get exception: " << e.what() << endl; } } }
int main( int argc, char** argv ) { QString calligraVersion(CALLIGRA_VERSION_STRING); QString version; #ifdef CALLIGRA_GIT_SHA1_STRING QString gitVersion(CALLIGRA_GIT_SHA1_STRING); version = QString("%1 (git %2)").arg(calligraVersion).arg(gitVersion).toLatin1(); #else version = calligraVersion; #endif KAboutData aboutData("kritasketch", "krita", ki18n("Krita Sketch"), "0.1", ki18n("Krita Sketch: Painting on the Go for Artists"), KAboutData::License_GPL, ki18n("(c) 1999-%1 The Krita team.\n").subs(CALLIGRA_YEAR), KLocalizedString(), "http://www.krita.org", "*****@*****.**"); KCmdLineArgs::init (argc, argv, &aboutData); KCmdLineOptions options; options.add( "+[files]", ki18n( "Images to open" ) ); options.add( "vkb", ki18n( "Use the virtual keyboard" ) ); options.add( "windowed", ki18n( "Open sketch in a window, otherwise defaults to full-screen" ) ); KCmdLineArgs::addCmdLineOptions( options ); KCmdLineArgs* args = KCmdLineArgs::parsedArgs(); QStringList fileNames; if (args->count() > 0) { for (int i = 0; i < args->count(); ++i) { QString fileName = args->arg(i); if (QFile::exists(fileName)) { fileNames << fileName; } } } SketchApplication app; app.setApplicationName("kritasketch"); KIconLoader::global()->addAppDir("krita"); QDir appdir(app.applicationDirPath()); appdir.cdUp(); #ifdef Q_OS_WIN QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); // If there's no kdehome, set it and restart the process. //QMessageBox::information(0, i18nc("@title:window", "Krita sketch", "KDEHOME: " + env.value("KDEHOME")); if (!env.contains("KDEHOME") ) { _putenv_s("KDEHOME", QDesktopServices::storageLocation(QDesktopServices::DataLocation).toLocal8Bit()); } if (!env.contains("KDESYCOCA")) { _putenv_s("KDESYCOCA", QString(appdir.absolutePath() + "/sycoca").toLocal8Bit()); } if (!env.contains("XDG_DATA_DIRS")) { _putenv_s("XDG_DATA_DIRS", QString(appdir.absolutePath() + "/share").toLocal8Bit()); } if (!env.contains("KDEDIR")) { _putenv_s("KDEDIR", appdir.absolutePath().toLocal8Bit()); } if (!env.contains("KDEDIRS")) { _putenv_s("KDEDIRS", appdir.absolutePath().toLocal8Bit()); } _putenv_s("PATH", QString(appdir.absolutePath() + "/bin" + ";" + appdir.absolutePath() + "/lib" + ";" + appdir.absolutePath() + "/lib" + "/kde4" + ";" + appdir.absolutePath()).toLocal8Bit()); app.addLibraryPath(appdir.absolutePath()); app.addLibraryPath(appdir.absolutePath() + "/bin"); app.addLibraryPath(appdir.absolutePath() + "/lib"); app.addLibraryPath(appdir.absolutePath() + "/lib/kde4"); #endif #if defined Q_OS_WIN KisTabletSupportWin::init(); app.setEventFilter(&KisTabletSupportWin::eventFilter); #elif defined HAVE_X11 KisTabletSupportX11::init(); app.setEventFilter(&KisTabletSupportX11::eventFilter); #endif #if defined HAVE_X11 QApplication::setAttribute(Qt::AA_X11InitThreads); #endif app.start(); MainWindow window(fileNames); if (args->isSet("vkb")) { app.setInputContext(new SketchInputContext(&app)); } if (args->isSet("windowed")) { window.show(); } else { window.showFullScreen(); } return app.exec(); }
int main( int argc, char** argv ) { QString calligraVersion(CALLIGRA_VERSION_STRING); QString version; #ifdef CALLIGRA_GIT_SHA1_STRING QString gitVersion(CALLIGRA_GIT_SHA1_STRING); version = QString("%1 (git %2)").arg(calligraVersion).arg(gitVersion).toLatin1(); #else version = calligraVersion; #endif KLocalizedString::setApplicationDomain("krita"); KAboutData aboutData(QStringLiteral("kritasketch"), i18n("Krita Sketch"), QStringLiteral("0.1"), i18n("Krita Sketch: Painting on the Go for Artists"), KAboutLicense::GPL, i18n("(c) 1999-%1 The Krita team.\n").arg(CALLIGRA_YEAR), QString(), QStringLiteral("https://www.krita.org"), QStringLiteral("*****@*****.**")); #if defined HAVE_X11 QCoreApplication::setAttribute(Qt::AA_X11InitThreads); #endif QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts, true); QCoreApplication::setAttribute(Qt::AA_DontCreateNativeWidgetSiblings, true); QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps, true); SketchApplication app(argc, argv); KAboutData::setApplicationData( aboutData ); app.setWindowIcon(KisIconUtils::loadIcon("kritasketch")); QCommandLineParser parser; aboutData.setupCommandLine(&parser); parser.addHelpOption(); parser.addVersionOption(); parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("vkb"), i18n("Use the virtual keyboard"))); parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("windowed"), i18n("Open sketch in a window, otherwise defaults to full-screen"))); parser.addPositionalArgument(QStringLiteral("[file(s)]"), i18n("Images to open")); parser.process(app); aboutData.processCommandLine(&parser); QStringList fileNames; Q_FOREACH (const QString &fileName, parser.positionalArguments()) { const QString absoluteFilePath = QDir::current().absoluteFilePath(fileName); if (QFile::exists(absoluteFilePath)) { fileNames << absoluteFilePath; } } // QT5TODO: untested replacement of KIconLoader::global()->addAppDir("krita"); QStringList themeSearchPaths = QIcon::themeSearchPaths(); themeSearchPaths.append(QStandardPaths::locate(QStandardPaths::GenericDataLocation, "krita/pics", QStandardPaths::LocateDirectory)); QIcon::setThemeSearchPaths(themeSearchPaths); // Initialize all Calligra directories etc. KoGlobal::initialize(); // for cursors KoResourcePaths::addResourceType("kis_pics", "data", "krita/pics/"); // for images in the paintop box KoResourcePaths::addResourceType("kis_images", "data", "krita/images/"); KoResourcePaths::addResourceType("icc_profiles", "data", "krita/profiles/"); KisOpenGL::initialize(); QDir appdir(app.applicationDirPath()); appdir.cdUp(); #ifdef Q_OS_WIN QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); // If there's no kdehome, set it and restart the process. //QMessageBox::information(0, i18nc("@title:window", "Krita sketch", "KDEHOME: " + env.value("KDEHOME")); if (!env.contains("KDEHOME") ) { _putenv_s("KDEHOME", QDesktopServices::storageLocation(QDesktopServices::DataLocation).toLocal8Bit()); } if (!env.contains("KDESYCOCA")) { _putenv_s("KDESYCOCA", QString(appdir.absolutePath() + "/sycoca").toLocal8Bit()); } if (!env.contains("XDG_DATA_DIRS")) { _putenv_s("XDG_DATA_DIRS", QString(appdir.absolutePath() + "/share").toLocal8Bit()); } if (!env.contains("KDEDIR")) { _putenv_s("KDEDIR", appdir.absolutePath().toLocal8Bit()); } if (!env.contains("KDEDIRS")) { _putenv_s("KDEDIRS", appdir.absolutePath().toLocal8Bit()); } _putenv_s("PATH", QString(appdir.absolutePath() + "/bin" + ";" + appdir.absolutePath() + "/lib" + ";" + appdir.absolutePath() + "/lib" + "/kde4" + ";" + appdir.absolutePath()).toLocal8Bit()); app.addLibraryPath(appdir.absolutePath()); app.addLibraryPath(appdir.absolutePath() + "/bin"); app.addLibraryPath(appdir.absolutePath() + "/lib"); app.addLibraryPath(appdir.absolutePath() + "/lib/kde4"); #endif #if defined Q_OS_WIN KisTabletSupportWin::init(); #elif defined HAVE_X11 KisTabletSupportX11::init(); // TODO: who owns the filter object? app.installNativeEventFilter(new KisTabletSupportX11()); #endif app.start(); MainWindow window(fileNames); // QT5TODO // if (parser.isSet("vkb")) { // app.setInputContext(new SketchInputContext(&app)); // } if (parser.isSet("windowed")) { window.show(); } else { window.showFullScreen(); } return app.exec(); }