From 122744454c9befc06b582a8f0feb03bfbb85aa71 Mon Sep 17 00:00:00 2001 From: LostDragonist Date: Wed, 31 Oct 2018 20:00:20 -0500 Subject: Improve changing mod and plugin priorities --- src/profile.cpp | 71 +++++++++++++++++++++++++++------------------------------ 1 file changed, 34 insertions(+), 37 deletions(-) (limited to 'src/profile.cpp') diff --git a/src/profile.cpp b/src/profile.cpp index 7f10bd02..00818d0b 100644 --- a/src/profile.cpp +++ b/src/profile.cpp @@ -184,9 +184,10 @@ void Profile::doWriteModlist() return; } - for (int i = static_cast(m_ModStatus.size()) - 1; i >= 0; --i) { + for (std::map::const_reverse_iterator iter = m_ModIndexByPriority.crbegin(); iter != m_ModIndexByPriority.crend(); iter++ ) { + //qDebug(QString("write mod %1 to priority %2").arg(iter->first).arg(iter->second).toLocal8Bit()); // the priority order was inverted on load so it has to be inverted again - unsigned int index = m_ModIndexByPriority[i]; + unsigned int index = iter->second; if (index != UINT_MAX) { ModInfo::Ptr modInfo = ModInfo::getByIndex(index); std::vector flags = modInfo->getFlags(); @@ -223,9 +224,9 @@ void Profile::createTweakedIniFile() return; } - for (unsigned int i = 0; i < m_ModStatus.size(); ++i) { + for (int i = getPriorityMinimum(); i < getPriorityMinimum() + (int)numRegularMods(); ++i) { unsigned int idx = modIndexByPriority(i); - if ((idx != UINT_MAX) && m_ModStatus[idx].m_Enabled) { + if (m_ModStatus[idx].m_Enabled) { ModInfo::Ptr modInfo = ModInfo::getByIndex(idx); mergeTweaks(modInfo, tweakedIni); } @@ -454,18 +455,14 @@ void Profile::updateIndices() { m_NumRegularMods = 0; m_ModIndexByPriority.clear(); - m_ModIndexByPriority.resize(m_ModStatus.size(), UINT_MAX); for (unsigned int i = 0; i < m_ModStatus.size(); ++i) { int priority = m_ModStatus[i].m_Priority; - if (priority < 0) { + if (priority == INT_MIN) { // don't assign this to mapping at all, it's probably the overwrite mod continue; - } else if (priority >= static_cast(m_ModIndexByPriority.size())) { - qCritical("invalid priority %d for mod", priority); - continue; } else { ++m_NumRegularMods; - m_ModIndexByPriority.at(priority) = i; + m_ModIndexByPriority[priority] = i; } } } @@ -474,11 +471,10 @@ void Profile::updateIndices() std::vector > Profile::getActiveMods() { std::vector > result; - for (std::vector::const_iterator iter = m_ModIndexByPriority.begin(); - iter != m_ModIndexByPriority.end(); ++iter) { - if ((*iter != UINT_MAX) && m_ModStatus[*iter].m_Enabled) { - ModInfo::Ptr modInfo = ModInfo::getByIndex(*iter); - result.push_back(std::make_tuple(modInfo->internalName(), modInfo->absolutePath(), m_ModStatus[*iter].m_Priority)); + for (std::map::const_iterator iter = m_ModIndexByPriority.begin(); iter != m_ModIndexByPriority.end(); iter++ ) { + if ((iter->second != UINT_MAX) && m_ModStatus[iter->second].m_Enabled) { + ModInfo::Ptr modInfo = ModInfo::getByIndex(iter->second); + result.push_back(std::make_tuple(modInfo->internalName(), modInfo->absolutePath(), m_ModStatus[iter->second].m_Priority)); } } @@ -496,13 +492,13 @@ std::vector > Profile::getActiveMods() } -unsigned int Profile::modIndexByPriority(unsigned int priority) const +unsigned int Profile::modIndexByPriority(int priority) const { - if (priority >= m_ModStatus.size()) { + try { + return m_ModIndexByPriority.at(priority); + } catch (std::out_of_range) { throw MyException(tr("invalid priority %1").arg(priority)); } - - return m_ModIndexByPriority[priority]; } @@ -552,30 +548,26 @@ void Profile::setModPriority(unsigned int index, int &newPriority) return; } - int newPriorityTemp = - (std::max)(0, (std::min)(static_cast(m_ModStatus.size()) - 1, - newPriority)); + int oldPriority = m_ModStatus.at(index).m_Priority; + int lastPriority = INT_MIN; - // don't try to place below overwrite - while ((m_ModIndexByPriority.at(newPriorityTemp) >= m_ModStatus.size()) || - m_ModStatus.at(m_ModIndexByPriority.at(newPriorityTemp)).m_Overwrite) { - --newPriorityTemp; + if (newPriority == oldPriority) { + // nothing to do + return; } - int oldPriority = m_ModStatus.at(index).m_Priority; - if (newPriorityTemp > oldPriority) { - // priority is higher than the old, so the gap we left is in lower priorities - for (int i = oldPriority + 1; i <= newPriorityTemp; ++i) { - --m_ModStatus.at(m_ModIndexByPriority.at(i)).m_Priority; + for (std::map::iterator iter = m_ModIndexByPriority.begin(); iter != m_ModIndexByPriority.end(); iter++) { + if (newPriority < oldPriority && iter->first >= newPriority && iter->first < oldPriority) { + m_ModStatus.at(iter->second).m_Priority += 1; } - } else { - for (int i = newPriorityTemp; i < oldPriority; ++i) { - ++m_ModStatus.at(m_ModIndexByPriority.at(i)).m_Priority; + else if (newPriority > oldPriority && iter->first <= newPriority && iter->first > oldPriority) { + m_ModStatus.at(iter->second).m_Priority -= 1; } - ++newPriority; + lastPriority = std::max(lastPriority, iter->first); } - m_ModStatus.at(index).m_Priority = newPriorityTemp; + newPriority = std::min(newPriority, lastPriority); + m_ModStatus.at(index).m_Priority = std::min(newPriority, lastPriority); updateIndices(); m_ModListWriter.write(); @@ -839,4 +831,9 @@ void Profile::storeSetting(const QString §ion, const QString &name, void Profile::removeSetting(const QString §ion, const QString &name) { m_Settings->remove(section + "/" + name); -} \ No newline at end of file +} + +int Profile::getPriorityMinimum() const +{ + return m_ModIndexByPriority.begin()->first; +} -- cgit v1.3.1 From 849d00521a9797620c019991fda47f3ccffaca60 Mon Sep 17 00:00:00 2001 From: LostDragonist Date: Tue, 4 Dec 2018 19:09:22 -0600 Subject: Transition profile settings to settings.ini --- src/profile.cpp | 132 +++++++++++++++++++++++++++++++++++--------------------- src/profile.h | 17 ++++++-- 2 files changed, 95 insertions(+), 54 deletions(-) (limited to 'src/profile.cpp') diff --git a/src/profile.cpp b/src/profile.cpp index 00818d0b..821be4b4 100644 --- a/src/profile.cpp +++ b/src/profile.cpp @@ -73,9 +73,6 @@ Profile::Profile(const QString &name, IPluginGame const *gamePlugin, bool useDef { QString profilesDir = Settings::instance().getProfileDirectory(); QDir profileBase(profilesDir); - - m_Settings = new QSettings(profileBase.absoluteFilePath("settings.ini")); - QString fixedName = name; if (!fixDirectoryName(fixedName)) { throw MyException(tr("invalid profile name %1").arg(name)); @@ -86,6 +83,9 @@ Profile::Profile(const QString &name, IPluginGame const *gamePlugin, bool useDef } QString fullPath = profilesDir + "/" + fixedName; m_Directory = QDir(fullPath); + m_Settings = new QSettings(m_Directory.absoluteFilePath("settings.ini"), + QSettings::IniFormat); + findProfileSettings(); try { // create files. Needs to happen after m_Directory was set! @@ -119,6 +119,7 @@ Profile::Profile(const QDir &directory, IPluginGame const *gamePlugin) m_Settings = new QSettings(directory.absoluteFilePath("settings.ini"), QSettings::IniFormat); + findProfileSettings(); if (!QFile::exists(m_Directory.filePath("modlist.txt"))) { qWarning("missing modlist.txt in %s", qPrintable(directory.path())); @@ -141,6 +142,7 @@ Profile::Profile(const Profile &reference) { m_Settings = new QSettings(m_Directory.absoluteFilePath("settings.ini"), QSettings::IniFormat); + findProfileSettings(); refreshModStatus(); } @@ -151,6 +153,50 @@ Profile::~Profile() m_ModListWriter.writeImmediately(true); } +void Profile::findProfileSettings() +{ + if (setting("LocalSaves") == QVariant()) { + if (m_Directory.exists("saves")) { + storeSetting("LocalSaves", true); + } else { + if (m_Directory.exists("_saves")) { + m_Directory.rename("_saves", "saves"); + } + storeSetting("LocalSaves", false); + } + } + + if (setting("LocalSettings") == QVariant()) { + QString backupFile = getIniFileName() + "_"; + if (m_Directory.exists(backupFile)) { + storeSetting("LocalSettings", false); + m_Directory.rename(backupFile, getIniFileName()); + } else if (m_Directory.exists(getIniFileName())) { + storeSetting("LocalSettings", true); + } else { + storeSetting("LocalSettings", false); + } + } + + if (setting("AutomaticArchiveInvalidation") == QVariant()) { + BSAInvalidation *invalidation = m_GamePlugin->feature(); + DataArchives *dataArchives = m_GamePlugin->feature(); + bool found = false; + if ((invalidation != nullptr) && (dataArchives != nullptr)) { + for (const QString &archive : dataArchives->archives(this)) { + if (invalidation->isInvalidationBSA(archive)) { + storeSetting("AutomaticArchiveInvalidation", true); + found = true; + break; + } + } + } + if (!found) { + storeSetting("AutomaticArchiveInvalidation", false); + } + } +} + bool Profile::exists() const { return m_Directory.exists(); @@ -658,23 +704,11 @@ bool Profile::invalidationActive(bool *supported) const BSAInvalidation *invalidation = m_GamePlugin->feature(); DataArchives *dataArchives = m_GamePlugin->feature(); - if ((invalidation != nullptr) && (dataArchives != nullptr)) { - if (supported != nullptr) { - *supported = true; - } - - for (const QString &archive : dataArchives->archives(this)) { - if (invalidation->isInvalidationBSA(archive)) { - return true; - } - } - return false; - } else { - if (supported != nullptr) { - *supported = false; - } + if (supported != nullptr) { + *supported = ((invalidation != nullptr) && (dataArchives != nullptr)); } - return false; + + return setting("AutomaticArchiveInvalidation", false).toBool(); } @@ -685,6 +719,8 @@ void Profile::deactivateInvalidation() if (invalidation != nullptr) { invalidation->deactivate(this); } + + storeSetting("AutomaticArchiveInvalidation", false); } @@ -695,66 +731,51 @@ void Profile::activateInvalidation() if (invalidation != nullptr) { invalidation->activate(this); } + + storeSetting("AutomaticArchiveInvalidation", true); } bool Profile::localSavesEnabled() const { - return m_Directory.exists("saves"); + return setting("LocalSaves", false).toBool(); } bool Profile::enableLocalSaves(bool enable) { if (enable) { - if (m_Directory.exists("_saves")) { - m_Directory.rename("_saves", "saves"); - } else { + if (!m_Directory.exists("saves")) { m_Directory.mkdir("saves"); } - } else { + } else { QMessageBox::StandardButton res = QMessageBox::question( - QApplication::activeModalWidget(), tr("Delete savegames?"), - tr("Do you want to delete local savegames? (If you select \"No\", the " - "save games will show up again if you re-enable local savegames)"), - QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, - QMessageBox::Cancel); + QApplication::activeModalWidget(), tr("Delete savegames?"), + tr("Do you want to delete local savegames? (If you select \"No\", the " + "save games will show up again if you re-enable local savegames)"), + QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, + QMessageBox::Cancel); if (res == QMessageBox::Yes) { shellDelete(QStringList(m_Directory.absoluteFilePath("saves"))); } else if (res == QMessageBox::No) { - m_Directory.rename("saves", "_saves"); + // No action } else { return false; } } - - // default: assume success + storeSetting("LocalSaves", enable); return true; + } bool Profile::localSettingsEnabled() const { - return m_Directory.exists(getIniFileName()); + return setting("LocalSettings", false).toBool(); } bool Profile::enableLocalSettings(bool enable) { - // TODO: this currently assumes game settings are stored in an ini file. - // This shall become very interesting when a game stores its settings in the - // registry - QString backupFile = getIniFileName() + "_"; - if (enable) { - if (m_Directory.exists(backupFile)) { - - shellRename(backupFile, getIniFileName()); - } else { - IPluginGame *game = qApp->property("managed_game").value(); - game->initializeProfile(m_Directory, IPluginGame::CONFIGURATION); - } - } else { - shellRename(getIniFileName(), backupFile); - } - + storeSetting("LocalSettings", enable); return true; } @@ -817,22 +838,33 @@ void Profile::rename(const QString &newName) } QVariant Profile::setting(const QString §ion, const QString &name, - const QVariant &fallback) + const QVariant &fallback) const { return m_Settings->value(section + "/" + name, fallback); } + void Profile::storeSetting(const QString §ion, const QString &name, const QVariant &value) { m_Settings->setValue(section + "/" + name, value); } +void Profile::storeSetting(const QString &name, const QVariant &value) +{ + storeSetting("", name, value); +} + void Profile::removeSetting(const QString §ion, const QString &name) { m_Settings->remove(section + "/" + name); } +void Profile::removeSetting(const QString &name) +{ + removeSetting("", name); +} + int Profile::getPriorityMinimum() const { return m_ModIndexByPriority.begin()->first; diff --git a/src/profile.h b/src/profile.h index 9ddd5b89..a9d68062 100644 --- a/src/profile.h +++ b/src/profile.h @@ -78,6 +78,13 @@ public: ~Profile(); + /** + * Determines the default settings for the profile based on the current state of the profile's + * files. This function should remain backwards compatible as much as possible. + **/ + + void findProfileSettings(void); + /** * @return true if this profile (still) exists on disc */ @@ -230,7 +237,7 @@ public: * retrieve the number of mods for which this object has status information. * This is usually the same as ModInfo::getNumMods() except between * calls to ModInfo::updateFromDisc() and the Profile::refreshModStatus() - * + * * @return number of mods for which the profile has status information **/ size_t numMods() const { return m_ModStatus.size(); } @@ -287,12 +294,14 @@ public: void dumpModStatus() const; - QVariant setting(const QString §ion, const QString &name, - const QVariant &fallback = QVariant()); + QVariant setting(const QString §ion, const QString &name = QString(), + const QVariant &fallback = QVariant()) const; void storeSetting(const QString §ion, const QString &name, const QVariant &value); - void removeSetting(const QString §ion, const QString &name); + void storeSetting(const QString &name, const QVariant &value); + void removeSetting(const QString §ion, const QString &name = QString()); + void removeSetting(const QString &name); int getPriorityMinimum() const; -- cgit v1.3.1 From 027edcf688131642229cf3c97e5eae2594c328c0 Mon Sep 17 00:00:00 2001 From: LostDragonist Date: Wed, 19 Dec 2018 10:59:53 -0600 Subject: Enable per-profile game INI files by default again --- src/profile.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src/profile.cpp') diff --git a/src/profile.cpp b/src/profile.cpp index 821be4b4..e2274346 100644 --- a/src/profile.cpp +++ b/src/profile.cpp @@ -171,10 +171,8 @@ void Profile::findProfileSettings() if (m_Directory.exists(backupFile)) { storeSetting("LocalSettings", false); m_Directory.rename(backupFile, getIniFileName()); - } else if (m_Directory.exists(getIniFileName())) { - storeSetting("LocalSettings", true); } else { - storeSetting("LocalSettings", false); + storeSetting("LocalSettings", true); } } -- cgit v1.3.1 From 662772c2fc8ec598a64cc4cabe13a86f1e83fb2e Mon Sep 17 00:00:00 2001 From: LostDragonist Date: Wed, 19 Dec 2018 11:19:03 -0600 Subject: Optionally delete and restore profile-specific game INI files when changing the setting --- src/profile.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/profile.cpp') diff --git a/src/profile.cpp b/src/profile.cpp index e2274346..536dfd98 100644 --- a/src/profile.cpp +++ b/src/profile.cpp @@ -773,6 +773,27 @@ bool Profile::localSettingsEnabled() const bool Profile::enableLocalSettings(bool enable) { + if (enable) { + m_GamePlugin->initializeProfile(m_Directory.absolutePath(), IPluginGame::CONFIGURATION); + } else { + QMessageBox::StandardButton res = QMessageBox::question( + QApplication::activeModalWidget(), tr("Delete profile-specific game INI files?"), + tr("Do you want to delete profile-specific game INI files? (If you select \"No\", the " + "save games will be used again if you re-enable profile-specific game INI files.)"), + QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, + QMessageBox::Cancel); + if (res == QMessageBox::Yes) { + QStringList filesToDelete; + for (QString file : m_GamePlugin->iniFiles()) { + filesToDelete << m_Directory.absoluteFilePath(file); + } + shellDelete(filesToDelete, true); + } else if (res == QMessageBox::No) { + // No action + } else { + return false; + } + } storeSetting("LocalSettings", enable); return true; } -- cgit v1.3.1 From 830b63c4e20ffe3fee1ebffc9b88c45305f6737d Mon Sep 17 00:00:00 2001 From: LostDragonist Date: Wed, 19 Dec 2018 11:29:30 -0600 Subject: Re-initialize the profile configuration if INI files are missing --- src/profile.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/profile.cpp') diff --git a/src/profile.cpp b/src/profile.cpp index 536dfd98..f1bec4dd 100644 --- a/src/profile.cpp +++ b/src/profile.cpp @@ -768,7 +768,25 @@ bool Profile::enableLocalSaves(bool enable) bool Profile::localSettingsEnabled() const { - return setting("LocalSettings", false).toBool(); + bool enabled = setting("LocalSettings", false).toBool(); + if (enabled) { + bool reinitConfig = false; + for (QString file : m_GamePlugin->iniFiles()) { + if (!QFile::exists(m_Directory.filePath(file))) { + qWarning("missing %s in %s", qPrintable(file), qPrintable(m_Directory.path())); + reinitConfig = true; + } + } + if (reinitConfig) { + QMessageBox::StandardButton res = QMessageBox::warning( + QApplication::activeModalWidget(), tr("Missing profile-specific game INI files!"), + tr("Some of your profile-specific game INI files were missing. They will now be copied " + "from the vanilla game folder. You might want double-check your settings.") + ); + m_GamePlugin->initializeProfile(m_Directory, IPluginGame::CONFIGURATION); + } + } + return enabled; } bool Profile::enableLocalSettings(bool enable) -- cgit v1.3.1 From 37a6989ba831aa077d63234a8e8b64eb9e8f3eb1 Mon Sep 17 00:00:00 2001 From: LostDragonist Date: Wed, 19 Dec 2018 11:53:29 -0600 Subject: Make language about profile-specific settings and save games consistent --- src/mainwindow.ui | 2 +- src/profile.cpp | 8 ++++---- src/profilesdialog.cpp | 2 +- src/profilesdialog.ui | 6 +++--- src/transfersavesdialog.ui | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) (limited to 'src/profile.cpp') diff --git a/src/mainwindow.ui b/src/mainwindow.ui index 41365768..e42bed27 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -1197,7 +1197,7 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This is a list of all savegames for this game. Hover over a list entry to get detailed information about the save including a list of esps/esms that were used at the time this save was created but aren't active now.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This is a list of all save games for this game. Hover over a list entry to get detailed information about the save including a list of esps/esms that were used at the time this save was created but aren't active now.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">If you click &quot;Fix Mods...&quot; in the context menu, MO will try to activate all mods and esps to fix those missing esps. It will not disable anything!</span></p></body></html> diff --git a/src/profile.cpp b/src/profile.cpp index f1bec4dd..9b93539d 100644 --- a/src/profile.cpp +++ b/src/profile.cpp @@ -748,9 +748,9 @@ bool Profile::enableLocalSaves(bool enable) } } else { QMessageBox::StandardButton res = QMessageBox::question( - QApplication::activeModalWidget(), tr("Delete savegames?"), - tr("Do you want to delete local savegames? (If you select \"No\", the " - "save games will show up again if you re-enable local savegames)"), + QApplication::activeModalWidget(), tr("Delete profile-specific save games?"), + tr("Do you want to delete the profile-specific save games? (If you select \"No\", the " + "save games will show up again if you re-enable profile-specific save games)"), QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, QMessageBox::Cancel); if (res == QMessageBox::Yes) { @@ -796,7 +796,7 @@ bool Profile::enableLocalSettings(bool enable) } else { QMessageBox::StandardButton res = QMessageBox::question( QApplication::activeModalWidget(), tr("Delete profile-specific game INI files?"), - tr("Do you want to delete profile-specific game INI files? (If you select \"No\", the " + tr("Do you want to delete the profile-specific game INI files? (If you select \"No\", the " "save games will be used again if you re-enable profile-specific game INI files.)"), QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, QMessageBox::Cancel); diff --git a/src/profilesdialog.cpp b/src/profilesdialog.cpp index ed54f33c..17844357 100644 --- a/src/profilesdialog.cpp +++ b/src/profilesdialog.cpp @@ -191,7 +191,7 @@ void ProfilesDialog::on_removeProfileButton_clicked() return; } - QMessageBox confirmBox(QMessageBox::Question, tr("Confirm"), tr("Are you sure you want to remove this profile (including local savegames if any)?"), + QMessageBox confirmBox(QMessageBox::Question, tr("Confirm"), tr("Are you sure you want to remove this profile (including profile-specific save games, if any)?"), QMessageBox::Yes | QMessageBox::No, this); if (confirmBox.exec() == QMessageBox::Yes) { diff --git a/src/profilesdialog.ui b/src/profilesdialog.ui index d33e2283..f040faed 100644 --- a/src/profilesdialog.ui +++ b/src/profilesdialog.ui @@ -35,13 +35,13 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p>If checked, savegames are stored locally to this profile and will not appear when starting with a different profile.</p></body></html> + <html><head/><body><p>If checked, save games are stored locally to this profile and will not appear when starting with a different profile.</p></body></html> - If checked, savegames are local to this profile and will not appear when starting with a different profile. + If checked, save games are local to this profile and will not appear when starting with a different profile. - Use profile-specific Savegames + Use profile-specific Save Games diff --git a/src/transfersavesdialog.ui b/src/transfersavesdialog.ui index 1fcad54d..8bc23088 100644 --- a/src/transfersavesdialog.ui +++ b/src/transfersavesdialog.ui @@ -11,7 +11,7 @@ - Transfer Savegames + Transfer Save Games -- cgit v1.3.1 From 5e530becc2724731653e4e94473fe674f13da129 Mon Sep 17 00:00:00 2001 From: LostDragonist Date: Wed, 19 Dec 2018 12:56:11 -0600 Subject: Don't mention save games when dealing with INI files --- src/profile.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/profile.cpp') diff --git a/src/profile.cpp b/src/profile.cpp index 9b93539d..8eb1c49a 100644 --- a/src/profile.cpp +++ b/src/profile.cpp @@ -797,7 +797,7 @@ bool Profile::enableLocalSettings(bool enable) QMessageBox::StandardButton res = QMessageBox::question( QApplication::activeModalWidget(), tr("Delete profile-specific game INI files?"), tr("Do you want to delete the profile-specific game INI files? (If you select \"No\", the " - "save games will be used again if you re-enable profile-specific game INI files.)"), + "INI files will be used again if you re-enable profile-specific game INI files.)"), QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, QMessageBox::Cancel); if (res == QMessageBox::Yes) { -- cgit v1.3.1