File indexing completed on 2024-04-14 04:45:18

0001 /*
0002     SPDX-FileCopyrightText: 1998-2009 Sebastian Trueg <trueg@k3b.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "k3bapplication.h"
0008 
0009 #include <KAboutData>
0010 #include <KLocalizedString>
0011 #include <QCommandLineParser>
0012 #include <QIcon>
0013 #if defined(__clang__) && defined(LLVM_MAJOR) && (LLVM_MAJOR > 5)
0014 #include <sanitizer/common_interface_defs.h>
0015 #endif
0016 
0017 int main( int argc, char* argv[] )
0018 {
0019     K3b::Application app( argc, argv );
0020 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
0021     QGuiApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
0022 #endif
0023     
0024     KAboutData aboutData( "k3b",
0025                           i18n("K3b"),
0026                           LIBK3B_VERSION, i18n("<p>K3b is a full-featured CD/DVD/Blu-ray burning and ripping application.<br/>"
0027                                                "It supports a variety of project types as well as copying of optical media, "
0028                                                "burning of different types of images, and ripping Audio CDs, Video CDs, and "
0029                                                "Video DVDs.<br/>"
0030                                                "Its convenient user interface is targeted at all audiences, trying "
0031                                                "to be as simple as possible for novice users while also providing all features "
0032                                                "an advanced user might need."),
0033                           KAboutLicense::GPL,
0034                           i18n("Copyright © 1998–2018 K3b authors"),
0035                           QString(),
0036                           i18n("https://www.k3b.org" ) );
0037 
0038     aboutData.setOrganizationDomain("kde");
0039     aboutData.setDesktopFileName(QStringLiteral("org.kde.k3b.desktop"));
0040     aboutData.addAuthor(i18n("Leslie Zhai"), i18n("Maintainer"), "zhaixiang@loongson.cn");
0041     aboutData.addAuthor(i18n("Michał Małek"),i18n("Maintainer and current lead Developer"), "michalm@jabster.pl");
0042     aboutData.addAuthor(i18n("Sebastian Trüg"),i18n("Main developer"), "trueg@k3b.org");
0043     aboutData.addAuthor(i18n("Christian Kvasny"),i18n("Video CD Project and Video CD ripping"), "chris@k3b.org");
0044     aboutData.addAuthor(i18n("Montel Laurent"), i18n("Initial port to KDE Platform 4"), "montel@kde.org");
0045     aboutData.addAuthor( i18n("Ralf Habacker"), i18n( "Windows port" ), "ralf.habacker@freenet.de" );
0046 
0047     aboutData.addCredit(i18n("Klaus-Dieter Krannich"), i18n("Advanced Cdrdao integration"), "kd@k3b.org" );
0048     aboutData.addCredit(i18n("Thomas Froescher"),
0049                         i18n("Video DVD ripping and video encoding in pre-1.0 versions."),
0050                         "tfroescher@k3b.org");
0051     aboutData.addCredit(i18n("Alexis Younes aka Ayo"),
0052                         i18n("For his bombastic artwork."),
0053                         "73lab@free.fr" );
0054     aboutData.addCredit(i18n("Christoph Thielecke"),
0055                         i18n("For extensive testing and the first German translation."),
0056                         "crissi99@gmx.de");
0057     aboutData.addCredit(i18n("Andy Polyakov"),
0058                         i18n("For the great dvd+rw-tools and the nice cooperation."),
0059                         "appro@fy.chalmers.se" );
0060     aboutData.addCredit(i18n("Roberto De Leo"),
0061                         i18n("For the very cool eMovix package and his accommodating work."),
0062                         "peggish@users.sf.net" );
0063     aboutData.addCredit(i18n("John Steele Scott"),
0064                         i18n("For the flac decoding plugin."),
0065                         "toojays@toojays.net" );
0066     aboutData.addCredit(i18n("György Szombathelyi"),
0067                         i18n("For the very useful isofslib."),
0068                         "gyurco@users.sourceforge.net" );
0069     aboutData.addCredit(i18n("Erik de Castro Lopo"),
0070                         i18n("For libsamplerate which is used for generic resampling in the audio decoder framework."),
0071                         "erikd@mega-nerd.com" );
0072     aboutData.addCredit(i18n("Jakob Petsovits"),
0073                         i18n("For the very cool conditional audio ripping pattern."),
0074                         "jpetso@gmx.at" );
0075     aboutData.addCredit(i18n("Heiner Eichmann"),
0076                         i18n("For his work on the BSD port and some great patches."),
0077                         "h.eichmann@gmx.de" );
0078     aboutData.addCredit(i18n("Adriaan de Groot"),
0079                         i18n("For his work on the FreeBSD port."),
0080                         "" );
0081     aboutData.addCredit(i18n("Thiago Macieira"),
0082                         i18n("For his help with the many invalid k3b entries on bugs.kde.org."),
0083                         "thiago@kde.org" );
0084     aboutData.addCredit(i18n("Marcel Dierkes"),
0085                         i18n("For the great K3b icon eyecandy."),
0086                         "marcel.dierkes@gmx.de" );
0087     aboutData.addCredit(i18n("Christoph Burger-Scheidlin"),
0088                         i18n("For his neverending help cleaning out the K3b bug database."),
0089                         "andersin@freenet.de" );
0090     aboutData.addCredit( i18n("Robert Wadley"),
0091                          i18n( "Rob created a great theme and came up with the idea for transparent themes." ),
0092                          "rob@robntina.fastmail.us" );
0093     aboutData.addCredit( i18n("Dmitry Novikov"),
0094                          i18n( "For the amazing K3b 1.0 theme." ),
0095                          "quant@trktvs.ru" );
0096     aboutData.addCredit( i18n("Jeremy C. Andrus"),
0097                          i18n( "First Windows port of libk3bdevice." ),
0098                          "jeremy@jeremya.com" );
0099 
0100     KAboutData::setApplicationData( aboutData );
0101 
0102     QApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("k3b"), app.windowIcon()));
0103 
0104     QCommandLineParser* parser = new QCommandLineParser;
0105     parser->addPositionalArgument( "urls", i18n("file(s) to open"), "[urls...]" );
0106     parser->addOption( QCommandLineOption( "data", i18n("Create a new data CD project and add all given files") ) );
0107     parser->addOption( QCommandLineOption( "audiocd", i18n("Create a new audio CD project and add all given files") ) );
0108     parser->addOption( QCommandLineOption( "videocd", i18n("Create a new video CD project and add all given files") ) );
0109     parser->addOption( QCommandLineOption( "mixedcd", i18n("Create a new mixed mode CD project and add all given files") ) );
0110     parser->addOption( QCommandLineOption( "emovix", i18n("Create a new eMovix CD project and add all given files") ) );
0111     parser->addOption( QCommandLineOption( "videodvd", i18n("Create a new Video DVD project and add all given files") ) );
0112     parser->addOption( QCommandLineOption( "burn", i18n("Open the project burn dialog for the current project") ) );
0113     parser->addOption( QCommandLineOption( "copy", i18n("Open the copy dialog, optionally specify the source device"), "device" ) );
0114     parser->addOption( QCommandLineOption( "image", i18n("Write an image to a CD or DVD"), "url" ) );
0115     parser->addOption( QCommandLineOption( "format", i18n("Format a rewritable medium"), "device" ) );
0116     parser->addOption( QCommandLineOption( "cddarip", i18n("Extract Audio tracks digitally (+encoding)"), "device" ) );
0117     parser->addOption( QCommandLineOption( "videodvdrip", i18n("Rip Video DVD Titles (+transcoding)"), "device" ) );
0118     parser->addOption( QCommandLineOption( "videocdrip", i18n("Rip Video CD Tracks"), "device" ) );
0119     parser->addOption( QCommandLineOption( "lang", i18n("Set the GUI language"), "language" ) );
0120     parser->addOption( QCommandLineOption( "nosplash", i18n("Disable the splash screen") ) );
0121     parser->addOption( QCommandLineOption( "device", i18n("Set the device to be used for new projects. (This option has no effect: "
0122                                                          "its main purpose is to enable handling of empty media from the KDE Media Manager.)" ), "device" ) );
0123     aboutData.setupCommandLine( parser );
0124 
0125     parser->process( app );
0126 
0127     aboutData.processCommandLine( parser );
0128 
0129     if( parser->isSet("lang") ) {
0130         QLocale::setDefault( QLocale( parser->value("lang") ) );
0131     }
0132 
0133     app.init( parser );
0134 
0135 #if defined(__clang__) && defined(LLVM_MAJOR) && (LLVM_MAJOR > 5)
0136     if (argc > 2)
0137         __sanitizer_print_memory_profile(atoi(argv[1]), atoi(argv[2]));
0138 #endif
0139 
0140     return app.exec();
0141 }