/**************************************************************************** ** ** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Linguist of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:COMM$ ** ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** $QT_END_LICENSE$ ** ** ** ** ** ** ** ** ****************************************************************************/ #include "mainwindow.h" #include "globals.h" #include #include #include #include #include #include #ifdef Q_OS_MAC #include #include #endif // Q_OS_MAC QT_USE_NAMESPACE #ifdef Q_OS_MAC class ApplicationEventFilter : public QObject { Q_OBJECT public: ApplicationEventFilter() : m_mainWindow(0) { } void setMainWindow(MainWindow *mw) { m_mainWindow = mw; if (!m_filesToOpen.isEmpty() && m_mainWindow) { m_mainWindow->openFiles(m_filesToOpen); m_filesToOpen.clear(); } } protected: bool eventFilter(QObject *object, QEvent *event) { if (object == qApp && event->type() == QEvent::FileOpen) { QFileOpenEvent *e = static_cast(event); QString file = e->url().toLocalFile(); if (!m_mainWindow) m_filesToOpen << file; else m_mainWindow->openFiles(QStringList() << file); return true; } return QObject::eventFilter(object, event); } private: MainWindow *m_mainWindow; QStringList m_filesToOpen; }; #endif // Q_OS_MAC int main(int argc, char **argv) { Q_INIT_RESOURCE(linguist); QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); QApplication app(argc, argv); QApplication::setOverrideCursor(Qt::WaitCursor); #ifdef Q_OS_MAC ApplicationEventFilter eventFilter; app.installEventFilter(&eventFilter); #endif // Q_OS_MAC QStringList files; QString resourceDir = QLibraryInfo::location(QLibraryInfo::TranslationsPath); QStringList args = app.arguments(); for (int i = 1; i < args.count(); ++i) { QString argument = args.at(i); if (argument == QLatin1String("-resourcedir")) { if (i + 1 < args.count()) { resourceDir = QFile::decodeName(args.at(++i).toLocal8Bit()); } else { // issue a warning } } else if (!files.contains(argument)) { files.append(argument); } } QTranslator translator; QTranslator qtTranslator; QString sysLocale = QLocale::system().name(); if (translator.load(QLatin1String("linguist_") + sysLocale, resourceDir)) { app.installTranslator(&translator); if (qtTranslator.load(QLatin1String("qt_") + sysLocale, resourceDir)) app.installTranslator(&qtTranslator); else app.removeTranslator(&translator); } app.setOrganizationName(QLatin1String("QtProject")); app.setApplicationName(QLatin1String("Linguist")); MainWindow mw; #ifdef Q_OS_MAC eventFilter.setMainWindow(&mw); #endif // Q_OS_MAC mw.show(); QApplication::restoreOverrideCursor(); mw.openFiles(files, true); return app.exec(); } #ifdef Q_OS_MAC #include "main.moc" #endif // Q_OS_MAC