Warning, file /office/calligra/gemini/main.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /* This file is part of the KDE project
0002  * SPDX-FileCopyrightText: 2012 Arjen Hiemstra <ahiemstra@heimr.nl>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #include <QApplication>
0008 #include <QCommandLineParser>
0009 #include <QFontDatabase>
0010 #include <QFile>
0011 #include <QStringList>
0012 #include <QString>
0013 #include <QProcessEnvironment>
0014 #include <QDir>
0015 #include <QMessageBox>
0016 #include <QSplashScreen>
0017 #include <QDebug>
0018 
0019 #include <KIconLoader>
0020 #include <KLocalizedString>
0021 #include <KAboutData>
0022 
0023 #include "MainWindow.h"
0024 
0025 //#include "sketch/SketchInputContext.h"
0026 
0027 #include <calligraversion.h>
0028 
0029 int main( int argc, char** argv )
0030 {
0031 #if defined HAVE_X11
0032     QApplication::setAttribute(Qt::AA_X11InitThreads);
0033 #endif
0034 
0035     QApplication app(argc, argv);
0036 
0037     KAboutData aboutData(QStringLiteral("calligragemini"),
0038                          i18n("Calligra Gemini"),
0039                          QStringLiteral(CALLIGRA_VERSION_STRING),
0040                          i18n("Calligra Gemini: Writing and Presenting at Home and on the Go"),
0041                          KAboutLicense::GPL,
0042                          i18n("(c) 1999-%1 The Calligra team and KO GmbH.\n", QStringLiteral(CALLIGRA_YEAR)),
0043                          QString(),
0044                          QStringLiteral("https://www.calligra.org"),
0045                          QStringLiteral("submit@bugs.kde.org"));
0046 
0047     app.setAttribute(Qt::AA_DontCreateNativeWidgetSiblings, true);
0048     KAboutData::setApplicationData(aboutData);
0049 
0050     QCommandLineParser parser;
0051     aboutData.setupCommandLine(&parser);
0052 
0053     parser.addPositionalArgument(QStringLiteral("[file(s)]"), i18n("Document to open"));
0054     parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("vkb"), i18n("Use the virtual keyboard")));
0055 
0056     parser.process(app);
0057     aboutData.processCommandLine(&parser);
0058 
0059     QStringList fileNames;
0060     foreach(const QString &fileName, parser.positionalArguments()) {
0061         if (QFile::exists(fileName)) {
0062             fileNames << fileName;
0063         }
0064     }
0065 
0066 #ifdef Q_OS_WIN
0067     QDir appdir(app.applicationDirPath());
0068     appdir.cdUp();
0069 
0070     QString envStringSet;
0071     QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
0072     if (!env.contains("XDG_DATA_DIRS")) {
0073         _putenv_s("XDG_DATA_DIRS", QString(appdir.absolutePath() + "/bin/data").toLocal8Bit());
0074         envStringSet.append("XDG_DATA_DIRS ");
0075     }
0076     _putenv_s("PATH", QString(appdir.absolutePath() + "/bin" + ";"
0077               + appdir.absolutePath() + "/lib" + ";"
0078               + appdir.absolutePath() + "/lib"  +  "/kde4" + ";"
0079               + appdir.absolutePath()).toLocal8Bit());
0080 
0081     if(envStringSet.length() > 0) {
0082         qDebug() << envStringSet << "were set from main, restarting application in new environment!";
0083         // Pass all the arguments along, but don't include the application name...
0084         QStringList allArguments;
0085         for(int i = 0; i < argc; i++) {
0086             allArguments << argv[i];
0087         }
0088         QProcess::startDetached(app.applicationFilePath(), allArguments.mid(1));
0089         exit(0);
0090     }
0091 
0092     app.addLibraryPath(appdir.absolutePath());
0093     app.addLibraryPath(appdir.absolutePath() + "/bin");
0094     app.addLibraryPath(appdir.absolutePath() + "/lib");
0095     app.addLibraryPath(appdir.absolutePath() + "/lib/kde4");
0096 #endif
0097 
0098     KIconLoader::global()->addAppDir("calligra");
0099     KIconLoader::global()->addAppDir("calligragemini");
0100     KIconLoader::global()->addAppDir("calligrawords");
0101     KIconLoader::global()->addAppDir("calligrastage");
0102     KIconLoader::global()->addAppDir("calligrasheets");
0103 
0104     app.processEvents();
0105 
0106     MainWindow window(fileNames);
0107 
0108     if (parser.isSet("vkb")) {
0109 //        app.setInputContext(new SketchInputContext(&app));
0110     }
0111 
0112 #ifdef Q_OS_WIN
0113     window.showMaximized();
0114 #else
0115     window.show();
0116 #endif
0117 
0118     return app.exec();
0119 }