From 7f2a16917e347db2ffcdd5a148feda71f6f3a47e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sat, 17 May 2014 18:21:32 +0200 Subject: [PATCH] Add static data path for ... static data. Like translations. Move translations there. --- MultiMC.cpp | 15 ++++++++++++++- MultiMC.h | 6 ++++++ gui/dialogs/SettingsDialog.cpp | 4 ++-- translations/CMakeLists.txt | 2 +- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/MultiMC.cpp b/MultiMC.cpp index a0ff8b66..41c81b7b 100644 --- a/MultiMC.cpp +++ b/MultiMC.cpp @@ -161,6 +161,17 @@ MultiMC::MultiMC(int &argc, char **argv, bool root_override) #endif } + // static data paths... mostly just for translations + #ifdef Q_OS_LINUX + QDir foo(PathCombine(binPath, "..")); + staticDataPath = foo.absolutePath(); + #elif defined(Q_OS_WIN32) + staticDataPath = binPath; + #elif defined(Q_OS_MAC) + QDir foo(PathCombine(rootPath, "Contents/Resources")); + staticDataPath = foo.absolutePath(); + #endif + // init the logger initLogger(); @@ -179,6 +190,7 @@ MultiMC::MultiMC(int &argc, char **argv, bool root_override) } QLOG_INFO() << "Binary path : " << binPath; QLOG_INFO() << "Application root path : " << rootPath; + QLOG_INFO() << "Static data path : " << staticDataPath; // load settings initGlobalSettings(); @@ -287,7 +299,8 @@ void MultiMC::initTranslations() } m_mmc_translator.reset(new QTranslator()); - if (m_mmc_translator->load("mmc_" + locale.bcp47Name(), MMC->root() + "/translations")) + if (m_mmc_translator->load("mmc_" + locale.bcp47Name(), + MMC->staticData() + "/translations")) { QLOG_DEBUG() << "Loading MMC Language File for" << locale.bcp47Name().toLocal8Bit().constData() << "..."; diff --git a/MultiMC.h b/MultiMC.h index cb37b1e6..00eb97f8 100644 --- a/MultiMC.h +++ b/MultiMC.h @@ -147,6 +147,11 @@ public: */ bool openJsonEditor(const QString &filename); + /// this is the static data. it stores things that don't move. + const QString &staticData() + { + return staticDataPath; + } /// this is the root of the 'installation'. Used for automatic updates const QString &root() { @@ -215,6 +220,7 @@ private: UpdateFlags m_updateOnExitFlags = None; QString rootPath; + QString staticDataPath; QString binPath; QString dataPath; QString origcwdPath; diff --git a/gui/dialogs/SettingsDialog.cpp b/gui/dialogs/SettingsDialog.cpp index 7ec48336..2dd19077 100644 --- a/gui/dialogs/SettingsDialog.cpp +++ b/gui/dialogs/SettingsDialog.cpp @@ -407,8 +407,8 @@ void SettingsDialog::loadSettings(SettingsObject *s) // Language ui->languageBox->clear(); ui->languageBox->addItem(tr("English"), QLocale(QLocale::English)); - foreach(const QString & lang, - QDir(MMC->root() + "/translations").entryList(QStringList() << "*.qm", QDir::Files)) + foreach(const QString & lang, QDir(MMC->staticData() + "/translations") + .entryList(QStringList() << "*.qm", QDir::Files)) { QLocale locale(lang.section(QRegExp("[_\.]"), 1)); ui->languageBox->addItem(QLocale::languageToString(locale.language()), locale); diff --git a/translations/CMakeLists.txt b/translations/CMakeLists.txt index d28a997d..c5ae65a6 100644 --- a/translations/CMakeLists.txt +++ b/translations/CMakeLists.txt @@ -10,7 +10,7 @@ add_custom_target(translations_update DEPENDS ${TRANSLATION_MESSAGES}) add_custom_target(translations DEPENDS ${TRANSLATION_QM}) if(APPLE AND UNIX) ## OSX - install(FILES ${TRANSLATION_QM} DESTINATION MultiMC.app/Contents/MacOS/translations) + install(FILES ${TRANSLATION_QM} DESTINATION MultiMC.app/Contents/Resources/translations) else() install(FILES ${TRANSLATION_QM} DESTINATION translations) endif()