diff --git a/src/main.cpp b/src/main.cpp index 66bfe52d1a..f358d7e012 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -108,18 +108,8 @@ QSharedMemory* guiMutexLock() return shm; } -QTranslator translator, qtTranslator; - -void configureApp(bool gui) +void configureTranslation(QTranslator& translator, QTranslator& qtTranslator) { - if (gui) { -#if defined(Q_OS_WIN) && QT_VERSION >= QT_VERSION_CHECK(6, 5, 0) - QApplication::setStyle("Fusion"); // Supports dark scheme on Win 10/11 -#else - QApplication::setStyle(new StyleOverride); -#endif - } - bool foundTranslation; // Configure translations for (const QString& path : PathInfo::translationsPaths()) { @@ -148,24 +138,42 @@ void configureApp(bool gui) .arg(QLocale::languageToString( QLocale::system().language())); } + qApp->installTranslator(&translator); + qApp->installTranslator(&qtTranslator); +} + +void configureApp(bool gui, QTranslator& translator, QTranslator& qtTranslator) +{ + if (gui) { +#if defined(Q_OS_WIN) && QT_VERSION >= QT_VERSION_CHECK(6, 5, 0) + QApplication::setStyle("Fusion"); // Supports dark scheme on Win 10/11 +#else + QApplication::setStyle(new StyleOverride); +#endif + } auto app = QCoreApplication::instance(); - app->installTranslator(&translator); - app->installTranslator(&qtTranslator); app->setAttribute(Qt::AA_DontCreateNativeWidgetSiblings, true); + configureTranslation(translator, qtTranslator); } // TODO find a way so we don't have to do this /// Recreate the application as a QApplication -void reinitializeAsQApplication(int& argc, char* argv[]) +void reinitializeAsQApplication(int& argc, + char* argv[], + QTranslator& translator, + QTranslator& qtTranslator) { delete QCoreApplication::instance(); new QApplication(argc, argv); - configureApp(true); + configureApp(true, translator, qtTranslator); } int main(int argc, char* argv[]) { + + QTranslator translator, qtTranslator; + // Required for saving button list QList qRegisterMetaType>(); @@ -176,6 +184,7 @@ int main(int argc, char* argv[]) // no arguments, just launch Flameshot if (argc == 1) { QApplication app(argc, argv); + configureTranslation(translator, qtTranslator); #ifdef USE_KDSINGLEAPPLICATION #ifdef Q_OS_UNIX @@ -189,7 +198,7 @@ int main(int argc, char* argv[]) } #endif - configureApp(true); + configureApp(true, translator, qtTranslator); auto c = Flameshot::instance(); FlameshotDaemon::start(); @@ -210,7 +219,8 @@ int main(int argc, char* argv[]) * CLI parsing | * ------------*/ new QCoreApplication(argc, argv); - configureApp(false); + configureApp(false, translator, qtTranslator); + CommandLineParser parser; // Add description parser.setDescription( @@ -412,12 +422,13 @@ int main(int argc, char* argv[]) Flameshot::setOrigin(Flameshot::CLI); if (parser.isSet(helpOption) || parser.isSet(versionOption)) { } else if (parser.isSet(launcherArgument)) { // LAUNCHER - reinitializeAsQApplication(argc, argv); + reinitializeAsQApplication(argc, argv, translator, qtTranslator); Flameshot* flameshot = Flameshot::instance(); flameshot->launcher(); qApp->exec(); } else if (parser.isSet(guiArgument)) { // GUI - reinitializeAsQApplication(argc, argv); + reinitializeAsQApplication(argc, argv, translator, qtTranslator); + // Prevent multiple instances of 'flameshot gui' from running if not // configured to do so. if (!ConfigHandler().allowMultipleGuiInstances()) { @@ -480,7 +491,7 @@ int main(int argc, char* argv[]) } return requestCaptureAndWait(req); } else if (parser.isSet(fullArgument)) { // FULL - reinitializeAsQApplication(argc, argv); + reinitializeAsQApplication(argc, argv, translator, qtTranslator); // Option values QString path = parser.value(pathOption); @@ -515,7 +526,7 @@ int main(int argc, char* argv[]) } return requestCaptureAndWait(req); } else if (parser.isSet(screenArgument)) { // SCREEN - reinitializeAsQApplication(argc, argv); + reinitializeAsQApplication(argc, argv, translator, qtTranslator); QString numberStr = parser.value(screenNumberOption); // Option values @@ -587,7 +598,7 @@ int main(int argc, char* argv[]) } if (!someFlagSet) { // Open gui when no options are given - reinitializeAsQApplication(argc, argv); + reinitializeAsQApplication(argc, argv, translator, qtTranslator); QObject::connect( qApp, &QApplication::lastWindowClosed, qApp, &QApplication::quit); Flameshot::instance()->config();