File indexing completed on 2024-12-08 08:10:08

0001 /***************************************************************************
0002  *   Copyright (C) 2003-2005 by David Saxton                               *
0003  *   david@bluehaze.org                                                    *
0004  *                                                                         *
0005  *   This program is free software; you can redistribute it and/or modify  *
0006  *   it under the terms of the GNU General Public License as published by  *
0007  *   the Free Software Foundation; either version 2 of the License, or     *
0008  *   (at your option) any later version.                                   *
0009  ***************************************************************************/
0010 
0011 #include "diagnosticstyle.h"
0012 #include "ktechlab.h"
0013 
0014 //#include <dcopclient.h>
0015 #include <ktechlab_version.h>
0016 
0017 #include <KAboutData>
0018 #include <KLocalizedString>
0019 
0020 #include <QApplication>
0021 #include <QCommandLineParser>
0022 #include <QDir>
0023 #include <QStandardPaths>
0024 
0025 int main(int argc, char **argv)
0026 {
0027     // enable high dpi support
0028     QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps, true);
0029     QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling, true);
0030 
0031     QApplication app(argc, argv);
0032     KLocalizedString::setApplicationDomain("ktechlab");
0033 
0034     KAboutData about(
0035         "ktechlab", i18n("KTechLab"), KTECHLAB_VERSION_STRING, i18n("An IDE for microcontrollers and electronics"), KAboutLicense::GPL_V2, i18n("(C) 2003-2017, The KTechLab developers"), "", "https://userbase.kde.org/KTechlab", "ktechlab-devel@kde.org");
0036     about.addAuthor(i18n("Alan Grimes"), i18n("Developer, Simulation"), "");
0037     about.addAuthor(i18n("Zoltan Padrah"), i18n("Developer"), "zoltan_padrah@users.sourceforge.net");
0038     about.addAuthor(i18n("Julian Bäume"), i18n("Developer, KDE4 Port, GUI"), "julian@svg4all.de");
0039     about.addAuthor(i18n("Juan De Vincenzo"), i18n("KDE4 Port"), "");
0040     about.addCredit(i18n("Lawrence Shafer"), i18n("Website, wiki and forum"), "");
0041     about.addCredit(i18n("Jason Lucas"), i18n("Keeping up the project during lack of developers"), "");
0042     about.addCredit(i18n("David Saxton"), i18n("Former developer, project founder, former maintainer"), "david@bluehaze.org");
0043     about.addCredit(i18n("Daniel Clarke"), i18n("Former developer"), "daniel.jc@gmail.com");
0044     about.addCredit(i18n("Couriousous"), i18n("JK flip-flop, asynchronous preset/reset in the D flip-flop"), "");
0045     about.addCredit(i18n("John Myers"), i18n("Rotary Switch"), "");
0046     about.addCredit(i18n("Ali Akcaagac"), i18n("Glib friendliness"), "");
0047     about.addCredit(i18n("David Leggett"), i18n("Former website hosting and feedback during early development"), "");
0048     KAboutData::setApplicationData(about);
0049     QApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("ktechlab")));
0050 
0051     QCommandLineParser parser;
0052     about.setupCommandLine(&parser);
0053     // 2019.10.03 - note: to add options to set icon and caption of the
0054     //              application's window? currently this is not implemented
0055     //              but it had references in the .destop file
0056     parser.addPositionalArgument(QStringLiteral("url"), i18n("Document to open."), QStringLiteral("[url]"));
0057 
0058     parser.process(app);
0059     about.processCommandLine(&parser);
0060 
0061     // Add our custom icons to the search path
0062     const QStringList iconDirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "ktechlab/icons", QStandardPaths::LocateDirectory);
0063     const QStringList picsDirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "ktechlab/pics", QStandardPaths::LocateDirectory);
0064     QIcon::setThemeSearchPaths(QIcon::themeSearchPaths() << iconDirs);
0065     QIcon::setFallbackSearchPaths(QIcon::fallbackSearchPaths() << iconDirs << picsDirs);
0066 
0067     if (true) { // TODO add a command line option for debugging the program's visual look
0068         // app.setStyle(new DiagnosticStyle());
0069     }
0070 
0071     // register ourselves as a dcop client
0072     // app.dcopClient()->registerAs(app.name(), false);
0073 
0074     KTechlab *ktechlab = new KTechlab();
0075 
0076     // 2019.10.03 - note: possibly add support for multiple URLs to be opened from
0077     //              command line?
0078     if (parser.positionalArguments().count() > 0) {
0079         const QUrl url = QUrl::fromUserInput(parser.positionalArguments().at(0), QDir::currentPath(), QUrl::AssumeLocalFile);
0080         ktechlab->load(url);
0081     }
0082 
0083     ktechlab->show();
0084     return app.exec();
0085 }