summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainwindow.cpp112
-rw-r--r--src/mainwindow.h4
-rw-r--r--src/modflagicondelegate.cpp33
-rw-r--r--src/modinfo.h28
-rw-r--r--src/modinfoforeign.h2
-rw-r--r--src/modinfooverwrite.h2
-rw-r--r--src/modinforegular.cpp51
-rw-r--r--src/modinforegular.h22
-rw-r--r--src/modlist.cpp1
-rw-r--r--src/nexusinterface.cpp100
-rw-r--r--src/nexusinterface.h46
-rw-r--r--src/organizer_en.ts1251
-rw-r--r--src/resources.qrc1
-rw-r--r--src/resources/tracked.pngbin0 -> 1969 bytes
14 files changed, 1002 insertions, 651 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 58c80b87..3f6da2a6 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -2826,6 +2826,73 @@ void MainWindow::unendorse_clicked()
}
}
+
+void MainWindow::trackMod(ModInfo::Ptr mod, bool doTrack)
+{
+ if (NexusInterface::instance(&m_PluginContainer)->getAccessManager()->validated()) {
+ ModInfo::getByIndex(m_ContextRow)->track(doTrack);
+ } else {
+ QString apiKey;
+ if (m_OrganizerCore.settings().getNexusApiKey(apiKey)) {
+ m_OrganizerCore.doAfterLogin([&]() { this->trackMod(mod, doTrack); });
+ NexusInterface::instance(&m_PluginContainer)->getAccessManager()->apiCheck(apiKey);
+ } else {
+ MessageDialog::showMessage(tr("You need to be logged in with Nexus to track"), this);
+ }
+ }
+}
+
+
+void MainWindow::track_clicked()
+{
+ QItemSelectionModel *selection = ui->modList->selectionModel();
+ if (selection->hasSelection() && selection->selectedRows().count() > 1) {
+ if (NexusInterface::instance(&m_PluginContainer)->getAccessManager()->validated()) {
+ for (auto idx : selection->selectedRows()) {
+ ModInfo::getByIndex(idx.data(Qt::UserRole + 1).toInt())->track(true);
+ }
+ } else {
+ QString apiKey;
+ if (m_OrganizerCore.settings().getNexusApiKey(apiKey)) {
+ for (auto idx : selection->selectedRows()) {
+ auto modInfo = ModInfo::getByIndex(idx.data(Qt::UserRole + 1).toInt());
+ m_OrganizerCore.doAfterLogin([&]() { this->trackMod(modInfo, true); });
+ }
+ NexusInterface::instance(&m_PluginContainer)->getAccessManager()->apiCheck(apiKey);
+ } else {
+ MessageDialog::showMessage(tr("You need to be logged in with Nexus to track"), this);
+ }
+ }
+ } else {
+ trackMod(ModInfo::getByIndex(m_ContextRow), true);
+ }
+}
+
+void MainWindow::untrack_clicked()
+{
+ QItemSelectionModel *selection = ui->modList->selectionModel();
+ if (selection->hasSelection() && selection->selectedRows().count() > 1) {
+ if (NexusInterface::instance(&m_PluginContainer)->getAccessManager()->validated()) {
+ for (auto idx : selection->selectedRows()) {
+ ModInfo::getByIndex(idx.data(Qt::UserRole + 1).toInt())->track(false);
+ }
+ } else {
+ QString apiKey;
+ if (m_OrganizerCore.settings().getNexusApiKey(apiKey)) {
+ for (auto idx : selection->selectedRows()) {
+ auto modInfo = ModInfo::getByIndex(idx.data(Qt::UserRole + 1).toInt());
+ m_OrganizerCore.doAfterLogin([&]() { this->trackMod(modInfo, false); });
+ }
+ NexusInterface::instance(&m_PluginContainer)->getAccessManager()->apiCheck(apiKey);
+ } else {
+ MessageDialog::showMessage(tr("You need to be logged in with Nexus to track"), this);
+ }
+ }
+ } else {
+ trackMod(ModInfo::getByIndex(m_ContextRow), false);
+ }
+}
+
void MainWindow::validationFailed(const QString &error)
{
qDebug("Nexus API validation failed: %s", qUtf8Printable(error));
@@ -4009,6 +4076,7 @@ void MainWindow::checkModsForUpdates()
if (NexusInterface::instance(&m_PluginContainer)->getAccessManager()->validated()) {
ModInfo::checkAllForUpdate(&m_PluginContainer, this);
NexusInterface::instance(&m_PluginContainer)->requestEndorsementInfo(this, QVariant(), QString());
+ NexusInterface::instance(&m_PluginContainer)->requestTrackingInfo(this, QVariant(), QString());
} else {
QString apiKey;
if (m_OrganizerCore.settings().getNexusApiKey(apiKey)) {
@@ -4595,6 +4663,22 @@ void MainWindow::on_modList_customContextMenuRequested(const QPoint &pos)
}
}
+ if (info->getNexusID() > 0) {
+ switch (info->trackedState()) {
+ case ModInfo::TRACKED_FALSE: {
+ menu.addAction(tr("Start tracking"), this, SLOT(track_clicked()));
+ } break;
+ case ModInfo::TRACKED_TRUE: {
+ menu.addAction(tr("Stop tracking"), this, SLOT(untrack_clicked()));
+ } break;
+ default: {
+ QAction *action = new QAction(tr("Tracked state unknown"), &menu);
+ action->setEnabled(false);
+ menu.addAction(action);
+ } break;
+ }
+ }
+
menu.addSeparator();
std::vector<ModInfo::EFlag> flags = info->getFlags();
@@ -5741,6 +5825,34 @@ void MainWindow::nxmEndorsementToggled(QString, int, QVariant, QVariant resultDa
}
}
+void MainWindow::nxmTrackedModsAvailable(QVariant userData, QVariant resultData, int)
+{
+ QMap<QString, QString> gameNames;
+ for (auto game : m_PluginContainer.plugins<IPluginGame>()) {
+ gameNames[game->gameNexusName()] = game->gameShortName();
+ }
+
+ for (unsigned int i = 0; i < ModInfo::getNumMods(); i++) {
+ auto modInfo = ModInfo::getByIndex(i);
+ if (modInfo->getNexusID() <= 0)
+ continue;
+
+ bool found = false;
+ auto resultsList = resultData.toList();
+ for (auto item : resultsList) {
+ auto results = item.toMap();
+ if ((gameNames[results["domain_name"].toString()].compare(modInfo->getGameName(), Qt::CaseInsensitive) == 0) &&
+ (results["mod_id"].toInt() == modInfo->getNexusID())) {
+ found = true;
+ break;
+ }
+ }
+
+ modInfo->setIsTracked(found);
+ modInfo->saveMeta();
+ }
+}
+
void MainWindow::nxmDownloadURLs(QString, int, int, QVariant, QVariant resultData, int)
{
QVariantList serverList = resultData.toList();
diff --git a/src/mainwindow.h b/src/mainwindow.h
index ff23b8fb..152591e8 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -428,6 +428,8 @@ private slots:
void endorse_clicked();
void dontendorse_clicked();
void unendorse_clicked();
+ void track_clicked();
+ void untrack_clicked();
void ignoreMissingData_clicked();
void markConverted_clicked();
void visitOnNexus_clicked();
@@ -517,6 +519,7 @@ private slots:
void nxmUpdatesAvailable(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID);
void nxmModInfoAvailable(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID);
void nxmEndorsementToggled(QString, int, QVariant, QVariant resultData, int);
+ void nxmTrackedModsAvailable(QVariant userData, QVariant resultData, int);
void nxmDownloadURLs(QString, int modID, int fileID, QVariant userData, QVariant resultData, int requestID);
void nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, QNetworkReply::NetworkError error, const QString &errorString);
@@ -539,6 +542,7 @@ private slots:
void resumeDownload(int downloadIndex);
void endorseMod(ModInfo::Ptr mod);
void unendorseMod(ModInfo::Ptr mod);
+ void trackMod(ModInfo::Ptr mod, bool doTrack);
void cancelModListEditor();
void lockESPIndex();
diff --git a/src/modflagicondelegate.cpp b/src/modflagicondelegate.cpp
index 343c6ee3..fbd951eb 100644
--- a/src/modflagicondelegate.cpp
+++ b/src/modflagicondelegate.cpp
@@ -93,26 +93,27 @@ QList<QString> ModFlagIconDelegate::getIcons(const QModelIndex &index) const {
QString ModFlagIconDelegate::getFlagIcon(ModInfo::EFlag flag) const
{
switch (flag) {
- case ModInfo::FLAG_BACKUP: return ":/MO/gui/emblem_backup";
- case ModInfo::FLAG_INVALID: return ":/MO/gui/problem";
- case ModInfo::FLAG_NOTENDORSED: return ":/MO/gui/emblem_notendorsed";
- case ModInfo::FLAG_NOTES: return ":/MO/gui/emblem_notes";
- case ModInfo::FLAG_CONFLICT_MIXED: return ":/MO/gui/emblem_conflict_mixed";
- case ModInfo::FLAG_CONFLICT_OVERWRITE: return ":/MO/gui/emblem_conflict_overwrite";
- case ModInfo::FLAG_CONFLICT_OVERWRITTEN: return ":/MO/gui/emblem_conflict_overwritten";
- case ModInfo::FLAG_CONFLICT_REDUNDANT: return ":MO/gui/emblem_conflict_redundant";
- case ModInfo::FLAG_ARCHIVE_LOOSE_CONFLICT_OVERWRITE: return ":/MO/gui/archive_loose_conflict_overwrite";
- case ModInfo::FLAG_ARCHIVE_LOOSE_CONFLICT_OVERWRITTEN: return ":/MO/gui/archive_loose_conflict_overwritten";
- case ModInfo::FLAG_ARCHIVE_CONFLICT_MIXED: return ":/MO/gui/archive_conflict_mixed";
- case ModInfo::FLAG_ARCHIVE_CONFLICT_OVERWRITE: return ":/MO/gui/archive_conflict_winner";
- case ModInfo::FLAG_ARCHIVE_CONFLICT_OVERWRITTEN: return ":/MO/gui/archive_conflict_loser";
- case ModInfo::FLAG_ALTERNATE_GAME: return ":MO/gui/alternate_game";
+ case ModInfo::FLAG_BACKUP: return QStringLiteral(":/MO/gui/emblem_backup");
+ case ModInfo::FLAG_INVALID: return QStringLiteral(":/MO/gui/problem");
+ case ModInfo::FLAG_NOTENDORSED: return QStringLiteral(":/MO/gui/emblem_notendorsed");
+ case ModInfo::FLAG_NOTES: return QStringLiteral(":/MO/gui/emblem_notes");
+ case ModInfo::FLAG_CONFLICT_MIXED: return QStringLiteral(":/MO/gui/emblem_conflict_mixed");
+ case ModInfo::FLAG_CONFLICT_OVERWRITE: return QStringLiteral(":/MO/gui/emblem_conflict_overwrite");
+ case ModInfo::FLAG_CONFLICT_OVERWRITTEN: return QStringLiteral(":/MO/gui/emblem_conflict_overwritten");
+ case ModInfo::FLAG_CONFLICT_REDUNDANT: return QStringLiteral(":/MO/gui/emblem_conflict_redundant");
+ case ModInfo::FLAG_ARCHIVE_LOOSE_CONFLICT_OVERWRITE: return QStringLiteral(":/MO/gui/archive_loose_conflict_overwrite");
+ case ModInfo::FLAG_ARCHIVE_LOOSE_CONFLICT_OVERWRITTEN: return QStringLiteral(":/MO/gui/archive_loose_conflict_overwritten");
+ case ModInfo::FLAG_ARCHIVE_CONFLICT_MIXED: return QStringLiteral(":/MO/gui/archive_conflict_mixed");
+ case ModInfo::FLAG_ARCHIVE_CONFLICT_OVERWRITE: return QStringLiteral(":/MO/gui/archive_conflict_winner");
+ case ModInfo::FLAG_ARCHIVE_CONFLICT_OVERWRITTEN: return QStringLiteral(":/MO/gui/archive_conflict_loser");
+ case ModInfo::FLAG_ALTERNATE_GAME: return QStringLiteral(":/MO/gui/alternate_game");
case ModInfo::FLAG_FOREIGN: return QString();
case ModInfo::FLAG_SEPARATOR: return QString();
case ModInfo::FLAG_OVERWRITE: return QString();
case ModInfo::FLAG_PLUGIN_SELECTED: return QString();
- default:
- qWarning("ModInfo flag %d has no defined icon", flag);
+ case ModInfo::FLAG_TRACKED: return QStringLiteral(":/MO/gui/tracked");
+ default:
+ qWarning("ModInfo flag %d has no defined icon", flag);
return QString();
}
}
diff --git a/src/modinfo.h b/src/modinfo.h
index 52c29154..365dfe50 100644
--- a/src/modinfo.h
+++ b/src/modinfo.h
@@ -78,7 +78,8 @@ public:
FLAG_ARCHIVE_CONFLICT_OVERWRITTEN,
FLAG_ARCHIVE_CONFLICT_MIXED,
FLAG_PLUGIN_SELECTED,
- FLAG_ALTERNATE_GAME
+ FLAG_ALTERNATE_GAME,
+ FLAG_TRACKED,
};
enum EContent {
@@ -114,6 +115,12 @@ public:
ENDORSED_NEVER
};
+ enum ETrackedState {
+ TRACKED_FALSE,
+ TRACKED_TRUE,
+ TRACKED_UNKNOWN,
+ };
+
enum EModType {
MOD_DEFAULT,
MOD_DLC,
@@ -363,6 +370,13 @@ public:
virtual void setNeverEndorse() = 0;
/**
+ * update the tracked state for the mod. This only changes the
+ * buffered state, it does not sync with Nexus
+ * @param tracked the new tracked state
+ */
+ virtual void setIsTracked(bool tracked) = 0;
+
+ /**
* @brief delete the mod from the disc. This does not update the global ModInfo structure or indices
* @return true if the mod was successfully removed
**/
@@ -376,6 +390,13 @@ public:
virtual void endorse(bool doEndorse) = 0;
/**
+ * @brief track or untrack the mod. This will sync with nexus!
+ * @param doTrack if true, the mod is tracked, if false, it's untracked.
+ * @note if doTrack doesn't differ from the current value, nothing happens.
+ */
+ virtual void track(bool doTrack) = 0;
+
+ /**
* @brief clear all caches held for this mod
*/
virtual void clearCaches() {}
@@ -637,6 +658,11 @@ public:
virtual EEndorsedState endorsedState() const { return ENDORSED_NEVER; }
/**
+ * @return true if the file is being tracked on nexus
+ */
+ virtual ETrackedState trackedState() const { return TRACKED_FALSE; }
+
+ /**
* @brief updates the valid-flag for this mod
*/
void testValid();
diff --git a/src/modinfoforeign.h b/src/modinfoforeign.h
index 1fdf5409..72fbb04f 100644
--- a/src/modinfoforeign.h
+++ b/src/modinfoforeign.h
@@ -29,8 +29,10 @@ public:
virtual void addNexusCategory(int) {}
virtual void setIsEndorsed(bool) {}
virtual void setNeverEndorse() {}
+ virtual void setIsTracked(bool) {}
virtual bool remove() { return false; }
virtual void endorse(bool) {}
+ virtual void track(bool) {}
virtual void parseNexusInfo() {}
virtual bool isEmpty() const { return false; }
virtual QString name() const;
diff --git a/src/modinfooverwrite.h b/src/modinfooverwrite.h
index e32653d5..ff0d8cd4 100644
--- a/src/modinfooverwrite.h
+++ b/src/modinfooverwrite.h
@@ -31,8 +31,10 @@ public:
virtual void addNexusCategory(int) {}
virtual void setIsEndorsed(bool) {}
virtual void setNeverEndorse() {}
+ virtual void setIsTracked(bool) {}
virtual bool remove() { return false; }
virtual void endorse(bool) {}
+ virtual void track(bool) {}
virtual void parseNexusInfo() {}
virtual bool alwaysEnabled() const { return true; }
virtual bool isEmpty() const;
diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp
index 2545b3f8..a271c4e8 100644
--- a/src/modinforegular.cpp
+++ b/src/modinforegular.cpp
@@ -35,6 +35,7 @@ ModInfoRegular::ModInfoRegular(PluginContainer *pluginContainer, const IPluginGa
, m_Validated(false)
, m_MetaInfoChanged(false)
, m_EndorsedState(ENDORSED_UNKNOWN)
+ , m_TrackedState(TRACKED_UNKNOWN)
, m_NexusBridge(pluginContainer)
{
testValid();
@@ -55,6 +56,8 @@ ModInfoRegular::ModInfoRegular(PluginContainer *pluginContainer, const IPluginGa
, this, SLOT(nxmDescriptionAvailable(QString,int,QVariant,QVariant)));
connect(&m_NexusBridge, SIGNAL(endorsementToggled(QString,int,QVariant,QVariant))
, this, SLOT(nxmEndorsementToggled(QString,int,QVariant,QVariant)));
+ connect(&m_NexusBridge, SIGNAL(trackingToggled(QString,int,QVariant,bool))
+ , this, SLOT(nxmTrackingToggled(QString,int,QVariant,bool)));
connect(&m_NexusBridge, SIGNAL(requestFailed(QString,int,int,QVariant,QNetworkReply::NetworkError,QString))
, this, SLOT(nxmRequestFailed(QString,int,int,QVariant,QNetworkReply::NetworkError,QString)));
}
@@ -102,6 +105,7 @@ void ModInfoRegular::readMeta()
m_LastNexusUpdate = QDateTime::fromString(metaFile.value("lastNexusUpdate", "").toString(), Qt::ISODate);
m_NexusLastModified = QDateTime::fromString(metaFile.value("nexusLastModified", QDateTime::currentDateTimeUtc()).toString(), Qt::ISODate);
m_Color = metaFile.value("color",QColor()).value<QColor>();
+ m_TrackedState = metaFile.value("tracked", false).toBool() ? TRACKED_TRUE : TRACKED_FALSE;
if (metaFile.contains("endorsed")) {
if (metaFile.value("endorsed").canConvert<int>()) {
switch (metaFile.value("endorsed").toInt()) {
@@ -114,7 +118,7 @@ void ModInfoRegular::readMeta()
m_EndorsedState = metaFile.value("endorsed", false).toBool() ? ENDORSED_TRUE : ENDORSED_FALSE;
}
}
-
+
QString categoriesString = metaFile.value("category", "").toString();
QStringList categories = categoriesString.split(',', QString::SkipEmptyParts);
@@ -173,6 +177,7 @@ void ModInfoRegular::saveMeta()
if (m_EndorsedState != ENDORSED_UNKNOWN) {
metaFile.setValue("endorsed", m_EndorsedState);
}
+ metaFile.setValue("tracked", m_TrackedState);
metaFile.remove("installedFiles");
metaFile.beginWriteArray("installedFiles");
@@ -259,6 +264,18 @@ void ModInfoRegular::nxmEndorsementToggled(QString, int, QVariant, QVariant resu
}
+void ModInfoRegular::nxmTrackingToggled(QString, int, QVariant, bool tracked)
+{
+ if (tracked)
+ m_TrackedState = TRACKED_TRUE;
+ else
+ m_TrackedState = TRACKED_FALSE;
+ m_MetaInfoChanged = true;
+ saveMeta();
+ emit modDetailsUpdated(true);
+}
+
+
void ModInfoRegular::nxmRequestFailed(QString, int, int, QVariant userData, QNetworkReply::NetworkError error, const QString &errorMessage)
{
QString fullMessage = errorMessage;
@@ -414,6 +431,14 @@ void ModInfoRegular::setEndorsedState(EEndorsedState endorsedState)
}
}
+void ModInfoRegular::setTrackedState(ETrackedState trackedState)
+{
+ if (trackedState != m_TrackedState) {
+ m_TrackedState = trackedState;
+ m_MetaInfoChanged = true;
+ }
+}
+
void ModInfoRegular::setInstallationFile(const QString &fileName)
{
m_InstallationFile = fileName;
@@ -433,13 +458,19 @@ void ModInfoRegular::setIsEndorsed(bool endorsed)
}
}
-
void ModInfoRegular::setNeverEndorse()
{
m_EndorsedState = ENDORSED_NEVER;
m_MetaInfoChanged = true;
}
+void ModInfoRegular::setIsTracked(bool tracked)
+{
+ if (tracked != (m_TrackedState == TRACKED_TRUE)) {
+ m_TrackedState = tracked ? TRACKED_TRUE : TRACKED_FALSE;
+ m_MetaInfoChanged = true;
+ }
+}
void ModInfoRegular::setColor(QColor color)
{
@@ -465,6 +496,13 @@ void ModInfoRegular::endorse(bool doEndorse)
}
}
+void ModInfoRegular::track(bool doTrack)
+{
+ if (doTrack != (m_TrackedState == TRACKED_TRUE)) {
+ m_NexusBridge.requestToggleTracking(m_GameName, getNexusID(), doTrack, QVariant(1));
+ }
+}
+
void ModInfoRegular::markConverted(bool converted)
{
m_Converted = converted;
@@ -518,6 +556,10 @@ std::vector<ModInfo::EFlag> ModInfoRegular::getFlags() const
Settings::instance().endorsementIntegration()) {
result.push_back(ModInfo::FLAG_NOTENDORSED);
}
+ if ((m_NexusID > 0) &&
+ (trackedState() == TRACKED_TRUE)) {
+ result.push_back(ModInfo::FLAG_TRACKED);
+ }
if (!isValid() && !m_Validated) {
result.push_back(ModInfo::FLAG_INVALID);
}
@@ -667,6 +709,11 @@ ModInfoRegular::EEndorsedState ModInfoRegular::endorsedState() const
return m_EndorsedState;
}
+ModInfoRegular::ETrackedState ModInfoRegular::trackedState() const
+{
+ return m_TrackedState;
+}
+
QDateTime ModInfoRegular::getLastNexusUpdate() const
{
return m_LastNexusUpdate;
diff --git a/src/modinforegular.h b/src/modinforegular.h
index aaab778a..f70487a2 100644
--- a/src/modinforegular.h
+++ b/src/modinforegular.h
@@ -178,6 +178,13 @@ public:
virtual void setNeverEndorse();
/**
+ * update the tracked state for the mod. This only changes the
+ * buffered state. It does not sync with Nexus
+ * @param tracked the new tracked state
+ */
+ virtual void setIsTracked(bool tracked);
+
+ /**
* @brief delete the mod from the disc. This does not update the global ModInfo structure or indices
* @return true if the mod was successfully removed
**/
@@ -191,6 +198,13 @@ public:
virtual void endorse(bool doEndorse);
/**
+ * @brief track or untrack the mod. This will sync with nexus!
+ * @param doTrack if true, the mod is tracked, if false, it's untracked.
+ * @note if doTrack doesn't differ from the current value, nothing happens.
+ */
+ virtual void track(bool doTrack);
+
+ /**
* @brief updates the mod to flag it as converted in order to ignore the alternate game warning
*/
virtual void markConverted(bool converted) override;
@@ -334,6 +348,11 @@ public:
virtual EEndorsedState endorsedState() const;
/**
+ * @return true if the file is being tracked on nexus
+ */
+ virtual ETrackedState trackedState() const;
+
+ /**
* @brief get the last time nexus was checked for file updates on this mod
*/
virtual QDateTime getLastNexusUpdate() const;
@@ -391,11 +410,13 @@ public:
private:
void setEndorsedState(EEndorsedState endorsedState);
+ void setTrackedState(ETrackedState trackedState);
private slots:
void nxmDescriptionAvailable(QString, int modID, QVariant userData, QVariant resultData);
void nxmEndorsementToggled(QString, int, QVariant userData, QVariant resultData);
+ void nxmTrackingToggled(QString, int, QVariant userData, bool tracked);
void nxmRequestFailed(QString, int modID, int fileID, QVariant userData, QNetworkReply::NetworkError error, const QString &errorMessage);
protected:
@@ -436,6 +457,7 @@ private:
MOBase::VersionInfo m_IgnoredVersion;
EEndorsedState m_EndorsedState;
+ ETrackedState m_TrackedState;
NexusBridge m_NexusBridge;
diff --git a/src/modlist.cpp b/src/modlist.cpp
index 8e8ab2d2..3ca53949 100644
--- a/src/modlist.cpp
+++ b/src/modlist.cpp
@@ -169,6 +169,7 @@ QString ModList::getFlagText(ModInfo::EFlag flag, ModInfo::Ptr modInfo) const
case ModInfo::FLAG_ARCHIVE_CONFLICT_MIXED: return tr("Archive files overwrites & overwritten");
case ModInfo::FLAG_ALTERNATE_GAME: return tr("<br>This mod is for a different game, "
"make sure it's compatible or it could cause crashes.");
+ case ModInfo::FLAG_TRACKED: return tr("Mod is being tracked on the website");
default: return "";
}
}
diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp
index 23dd7dbe..b1f50fd8 100644
--- a/src/nexusinterface.cpp
+++ b/src/nexusinterface.cpp
@@ -29,6 +29,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include <QApplication>
#include <QNetworkCookieJar>
#include <QJsonDocument>
+#include <QRegularExpression>
#include <regex>
@@ -68,6 +69,11 @@ void NexusBridge::requestToggleEndorsement(QString gameName, int modID, QString
m_RequestIDs.insert(m_Interface->requestToggleEndorsement(gameName, modID, modVersion, endorse, this, userData, m_SubModule));
}
+void NexusBridge::requestToggleTracking(QString gameName, int modID, bool track, QVariant userData)
+{
+ m_RequestIDs.insert(m_Interface->requestToggleTracking(gameName, modID, track, this, userData, m_SubModule));
+}
+
void NexusBridge::nxmDescriptionAvailable(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID)
{
std::set<int>::iterator iter = m_RequestIDs.find(requestID);
@@ -142,6 +148,24 @@ void NexusBridge::nxmEndorsementToggled(QString gameName, int modID, QVariant us
}
}
+void NexusBridge::nxmTrackedModsAvailable(QVariant userData, QVariant resultData, int requestID)
+{
+ std::set<int>::iterator iter = m_RequestIDs.find(requestID);
+ if (iter != m_RequestIDs.end()) {
+ m_RequestIDs.erase(iter);
+ emit trackedModsAvailable(userData, resultData);
+ }
+}
+
+void NexusBridge::nxmTrackingToggled(QString gameName, int modID, QVariant userData, bool tracked, int requestID)
+{
+ std::set<int>::iterator iter = m_RequestIDs.find(requestID);
+ if (iter != m_RequestIDs.end()) {
+ m_RequestIDs.erase(iter);
+ emit trackingToggled(gameName, modID, userData, tracked);
+ }
+}
+
void NexusBridge::nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, QNetworkReply::NetworkError error, const QString &errorMessage)
{
std::set<int>::iterator iter = m_RequestIDs.find(requestID);
@@ -472,7 +496,6 @@ int NexusInterface::requestEndorsementInfo(QObject *receiver, QVariant userData,
return requestInfo.m_ID;
}
-
int NexusInterface::requestToggleEndorsement(QString gameName, int modID, QString modVersion, bool endorse, QObject *receiver, QVariant userData,
const QString &subModule, MOBase::IPluginGame const *game)
{
@@ -495,6 +518,43 @@ int NexusInterface::requestToggleEndorsement(QString gameName, int modID, QStrin
return -1;
}
+int NexusInterface::requestTrackingInfo(QObject *receiver, QVariant userData, const QString &subModule)
+{
+ NXMRequestInfo requestInfo(NXMRequestInfo::TYPE_TRACKEDMODS, userData, subModule);
+ m_RequestQueue.enqueue(requestInfo);
+
+ connect(this, SIGNAL(nxmTrackedModsAvailable(QVariant, QVariant, int)),
+ receiver, SLOT(nxmTrackedModsAvailable(QVariant, QVariant, int)), Qt::UniqueConnection);
+
+ connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)),
+ receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)), Qt::UniqueConnection);
+
+ nextRequest();
+ return requestInfo.m_ID;
+}
+
+int NexusInterface::requestToggleTracking(QString gameName, int modID, bool track, QObject *receiver, QVariant userData,
+ const QString &subModule, MOBase::IPluginGame const *game)
+{
+ if (std::max(m_RemainingDailyRequests, m_RemainingHourlyRequests) >= 200) {
+ NXMRequestInfo requestInfo(modID, NXMRequestInfo::TYPE_TOGGLETRACKING, userData, subModule, game);
+ requestInfo.m_Track = track;
+ m_RequestQueue.enqueue(requestInfo);
+
+ connect(this, SIGNAL(nxmTrackingToggled(QString, int, QVariant, bool, int)),
+ receiver, SLOT(nxmTrackingToggled(QString, int, QVariant, bool, int)), Qt::UniqueConnection);
+
+ connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)),
+ receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)), Qt::UniqueConnection);
+
+ nextRequest();
+ return requestInfo.m_ID;
+ }
+ qCritical() << QString("You have fewer than 200 requests remaining (%1). Only downloads and login validation are being allowed.")
+ .arg(std::max(m_RemainingDailyRequests, m_RemainingHourlyRequests));
+ return -1;
+}
+
IPluginGame* NexusInterface::getGame(QString gameName) const
{
auto gamePlugins = m_PluginContainer->plugins<IPluginGame>();
@@ -555,6 +615,7 @@ void NexusInterface::nextRequest()
QJsonObject postObject;
QJsonDocument postData(postObject);
+ bool requestIsDelete = false;
QString url;
if (!info.m_Reroute) {
@@ -603,6 +664,15 @@ void NexusInterface::nextRequest()
postObject.insert("Version", info.m_ModVersion);
postData.setObject(postObject);
} break;
+ case NXMRequestInfo::TYPE_TOGGLETRACKING: {
+ url = QStringLiteral("%1/user/tracked_mods?domain_name=%2").arg(info.m_URL).arg(info.m_GameName);
+ postObject.insert("mod_id", info.m_ModID);
+ postData.setObject(postObject);
+ requestIsDelete = !info.m_Track;
+ } break;
+ case NXMRequestInfo::TYPE_TRACKEDMODS: {
+ url = QStringLiteral("%1/user/tracked_mods").arg(info.m_URL);
+ } break;
}
} else {
url = info.m_URL;
@@ -617,10 +687,18 @@ void NexusInterface::nextRequest()
request.setRawHeader("Application-Name", "MO2");
request.setRawHeader("Application-Version", QApplication::applicationVersion().toUtf8());
- if (postData.object().isEmpty())
- info.m_Reply = m_AccessManager->get(request);
- else
+ if (postData.object().isEmpty()) {
+ if (!requestIsDelete) {
+ info.m_Reply = m_AccessManager->get(request);
+ } else {
+ info.m_Reply = m_AccessManager->deleteResource(request);
+ }
+ } else if (!requestIsDelete) {
info.m_Reply = m_AccessManager->post(request, postData.toJson());
+ } else {
+ // Qt doesn't support DELETE with a payload as that's technically against the HTTP standard...
+ info.m_Reply = m_AccessManager->sendCustomRequest(request, "DELETE", postData.toJson());
+ }
connect(info.m_Reply, SIGNAL(finished()), this, SLOT(requestFinished()));
connect(info.m_Reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(requestError(QNetworkReply::NetworkError)));
@@ -701,6 +779,20 @@ void NexusInterface::requestFinished(std::list<NXMRequestInfo>::iterator iter)
case NXMRequestInfo::TYPE_TOGGLEENDORSEMENT: {
emit nxmEndorsementToggled(iter->m_GameName, iter->m_ModID, iter->m_UserData, result, iter->m_ID);
} break;
+ case NXMRequestInfo::TYPE_TOGGLETRACKING: {
+ auto results = result.toMap();
+ auto message = results["message"].toString();
+ if (message.contains(QRegularExpression("User [0-9]+ is already Tracking Mod: [0-9]+")) ||
+ message.contains(QRegularExpression("User [0-9]+ is now Tracking Mod: [0-9]+"))) {
+ emit nxmTrackingToggled(iter->m_GameName, iter->m_ModID, iter->m_UserData, true, iter->m_ID);
+ } else if (message.contains(QRegularExpression("User [0-9]+ is no longer tracking [0-9]+")) ||
+ message.contains(QRegularExpression("Users is not tracking mod. Unable to untrack."))) {
+ emit nxmTrackingToggled(iter->m_GameName, iter->m_ModID, iter->m_UserData, false, iter->m_ID);
+ }
+ } break;
+ case NXMRequestInfo::TYPE_TRACKEDMODS: {
+ emit nxmTrackedModsAvailable(iter->m_UserData, result, iter->m_ID);
+ } break;
}
m_RemainingDailyRequests = reply->rawHeader("x-rl-daily-remaining").toInt();
diff --git a/src/nexusinterface.h b/src/nexusinterface.h
index c1f9da41..a0f94562 100644
--- a/src/nexusinterface.h
+++ b/src/nexusinterface.h
@@ -98,6 +98,13 @@ public:
*/
virtual void requestToggleEndorsement(QString gameName, int modID, QString modVersion, bool endorse, QVariant userData);
+ /**
+ * @brief requestToggleTracking
+ * @param modID id of the mod caller is interested in
+ * @param userData user data to be returned with the result
+ */
+ virtual void requestToggleTracking(QString gameName, int modID, bool track, QVariant userData);
+
public slots:
void nxmDescriptionAvailable(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID);
@@ -106,6 +113,8 @@ public slots:
void nxmDownloadURLsAvailable(QString gameName, int modID, int fileID, QVariant userData, QVariant resultData, int requestID);
void nxmEndorsementsAvailable(QVariant userData, QVariant resultData, int requestID);
void nxmEndorsementToggled(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID);
+ void nxmTrackedModsAvailable(QVariant userData, QVariant resultData, int requestID);
+ void nxmTrackingToggled(QString gameName, int modID, QVariant userData, bool tracked, int requestID);
void nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, QNetworkReply::NetworkError error, const QString &errorMessage);
private:
@@ -330,6 +339,36 @@ public:
int requestToggleEndorsement(QString gameName, int modID, QString modVersion, bool endorse, QObject *receiver, QVariant userData, const QString &subModule,
MOBase::IPluginGame const *game);
+ int requestTrackingInfo(QObject *receiver, QVariant userData, const QString &subModule);
+
+ /**
+ * @param gameName the game short name to support multiple game sources
+ * @brief toggle tracking state of the mod
+ * @param modID id of the mod
+ * @param track true if the mod should be tracked, false for not tracked
+ * @param receiver the object to receive the result asynchronously via a signal (nxmFilesAvailable)
+ * @param userData user data to be returned with the result
+ * @param game the game with which the mods are associated
+ * @return int an id to identify the request
+ */
+ int requestToggleTracking(QString gameName, int modID, bool track, QObject *receiver, QVariant userData, const QString &subModule)
+ {
+ return requestToggleTracking(gameName, modID, track, receiver, userData, subModule, getGame(gameName));
+ }
+
+ /**
+ * @param gameName the game short name to support multiple game sources
+ * @brief toggle tracking state of the mod
+ * @param modID id of the mod
+ * @param track true if the mod should be tracked, false for not tracked
+ * @param receiver the object to receive the result asynchronously via a signal (nxmFilesAvailable)
+ * @param userData user data to be returned with the result
+ * @param game the game with which the mods are associated
+ * @return int an id to identify the request
+ */
+ int requestToggleTracking(QString gameName, int modID, bool track, QObject *receiver, QVariant userData, const QString &subModule,
+ MOBase::IPluginGame const *game);
+
/**
* @param directory the directory to store cache files
**/
@@ -402,6 +441,8 @@ signals:
void nxmDownloadURLsAvailable(QString gameName, int modID, int fileID, QVariant userData, QVariant resultData, int requestID);
void nxmEndorsementsAvailable(QVariant userData, QVariant resultData, int requestID);
void nxmEndorsementToggled(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID);
+ void nxmTrackedModsAvailable(QVariant userData, QVariant resultData, int requestID);
+ void nxmTrackingToggled(QString gameName, int modID, QVariant userData, bool tracked, int requestID);
void nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, QNetworkReply::NetworkError error, const QString &errorString);
void requestsChanged(int queueCount, std::tuple<int,int,int,int> requestsRemaining);
@@ -436,7 +477,9 @@ private:
TYPE_ENDORSEMENTS,
TYPE_TOGGLEENDORSEMENT,
TYPE_GETUPDATES,
- TYPE_CHECKUPDATES
+ TYPE_CHECKUPDATES,
+ TYPE_TOGGLETRACKING,
+ TYPE_TRACKEDMODS,
} m_Type;
UpdatePeriod m_UpdatePeriod;
QVariant m_UserData;
@@ -448,6 +491,7 @@ private:
bool m_Reroute;
int m_ID;
int m_Endorse;
+ int m_Track;
NXMRequestInfo(int modID, Type type, QVariant userData, const QString &subModule, MOBase::IPluginGame const *game);
NXMRequestInfo(int modID, QString modVersion, Type type, QVariant userData, const QString &subModule, MOBase::IPluginGame const *game);
diff --git a/src/organizer_en.ts b/src/organizer_en.ts
index 7f8d3a9b..c8e7c286 100644
--- a/src/organizer_en.ts
+++ b/src/organizer_en.ts
@@ -829,58 +829,58 @@ File %3: %4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1537"/>
+ <location filename="downloadmanager.cpp" line="1536"/>
<source>Information updated</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1539"/>
- <location filename="downloadmanager.cpp" line="1554"/>
+ <location filename="downloadmanager.cpp" line="1538"/>
+ <location filename="downloadmanager.cpp" line="1553"/>
<source>No matching file found on Nexus! Maybe this file is no longer available or it was renamed?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1541"/>
+ <location filename="downloadmanager.cpp" line="1540"/>
<source>No file on Nexus matches the selected file by name. Please manually choose the correct one.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1669"/>
+ <location filename="downloadmanager.cpp" line="1668"/>
<source>No download server available. Please try again later.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1712"/>
+ <location filename="downloadmanager.cpp" line="1711"/>
<source>Failed to request file info from nexus: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1739"/>
+ <location filename="downloadmanager.cpp" line="1738"/>
<source>Warning: Content type is: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1744"/>
+ <location filename="downloadmanager.cpp" line="1743"/>
<source>Download header content length: %1 downloaded file size: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1746"/>
+ <location filename="downloadmanager.cpp" line="1745"/>
<source>Download failed: %1 (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1768"/>
+ <location filename="downloadmanager.cpp" line="1767"/>
<source>We were unable to download the file due to errors after four retries. There may be an issue with the Nexus servers.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1851"/>
+ <location filename="downloadmanager.cpp" line="1850"/>
<source>failed to re-open %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="downloadmanager.cpp" line="1892"/>
+ <location filename="downloadmanager.cpp" line="1891"/>
<source>Unable to write download to drive (return %1).
Check the drive&apos;s available storage.
@@ -1497,7 +1497,7 @@ This is likely due to a corrupted or incompatible download or unrecognized archi
<name>MainWindow</name>
<message>
<location filename="mainwindow.ui" line="46"/>
- <location filename="mainwindow.ui" line="656"/>
+ <location filename="mainwindow.ui" line="565"/>
<source>Categories</source>
<translation type="unfinished"></translation>
</message>
@@ -1563,20 +1563,20 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="mainwindow.ui" line="273"/>
- <location filename="mainwindow.ui" line="922"/>
+ <location filename="mainwindow.ui" line="831"/>
<source>Restore Backup...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="287"/>
- <location filename="mainwindow.ui" line="942"/>
- <location filename="mainwindow.cpp" line="4567"/>
+ <location filename="mainwindow.ui" line="851"/>
+ <location filename="mainwindow.cpp" line="4574"/>
<source>Create Backup</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="301"/>
- <location filename="mainwindow.ui" line="956"/>
+ <location filename="mainwindow.ui" line="865"/>
<source>Active:</source>
<translation type="unfinished"></translation>
</message>
@@ -1586,60 +1586,60 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="432"/>
+ <location filename="mainwindow.ui" line="341"/>
<source>List of available mods.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="435"/>
+ <location filename="mainwindow.ui" line="344"/>
<source>This is a list of installed mods. Use the checkboxes to activate/deactivate mods and drag &amp; drop mods to change their &quot;installation&quot; orders.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="523"/>
- <location filename="mainwindow.ui" line="675"/>
- <location filename="mainwindow.ui" line="1094"/>
- <location filename="mainwindow.ui" line="1435"/>
+ <location filename="mainwindow.ui" line="432"/>
+ <location filename="mainwindow.ui" line="584"/>
+ <location filename="mainwindow.ui" line="966"/>
+ <location filename="mainwindow.ui" line="1302"/>
<source>Filter</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="553"/>
+ <location filename="mainwindow.ui" line="462"/>
<source>Nexus API Queued and Remaining Requests</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="556"/>
+ <location filename="mainwindow.ui" line="465"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This tracks the number of queued Nexus API requests on the left (&lt;span style=&quot; font-weight:600;&quot;&gt;Q&lt;/span&gt;) and the remaining daily (&lt;span style=&quot; font-weight:600;&quot;&gt;D&lt;/span&gt;) and hourly (&lt;span style=&quot; font-weight:600;&quot;&gt;H&lt;/span&gt;) requests on the right. The Nexus API limits you to a pool of requests per day and requests per hour. It is dynamically updated every time a request is completed. If you run out of requests, you will be unable to queue downloads, check updates, parse mod info, or even log in. Both pools must be consumed before this happens.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="571"/>
+ <location filename="mainwindow.ui" line="480"/>
<source>API: Q: 0 | D: 0 | H: 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="611"/>
+ <location filename="mainwindow.ui" line="520"/>
<source>Clear all Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="651"/>
+ <location filename="mainwindow.ui" line="560"/>
<source>No groups</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="661"/>
+ <location filename="mainwindow.ui" line="570"/>
<source>Nexus IDs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="710"/>
+ <location filename="mainwindow.ui" line="619"/>
<source>Pick a program to run.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="713"/>
+ <location filename="mainwindow.ui" line="622"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
@@ -1649,12 +1649,12 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="761"/>
+ <location filename="mainwindow.ui" line="670"/>
<source>Run program</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="764"/>
+ <location filename="mainwindow.ui" line="673"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
@@ -1663,17 +1663,17 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="774"/>
+ <location filename="mainwindow.ui" line="683"/>
<source>Run</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="815"/>
+ <location filename="mainwindow.ui" line="724"/>
<source>Create a shortcut in your start menu or on the desktop to the specified program</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="818"/>
+ <location filename="mainwindow.ui" line="727"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
@@ -1682,32 +1682,32 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="825"/>
+ <location filename="mainwindow.ui" line="734"/>
<source>Shortcut</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="875"/>
+ <location filename="mainwindow.ui" line="784"/>
<source>Plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="898"/>
+ <location filename="mainwindow.ui" line="807"/>
<source>Sort</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="969"/>
+ <location filename="mainwindow.ui" line="878"/>
<source>This provides statistics about the plugin list. The total number of active plugins is normally displayed. Other statistics may be accessed with the tooltip of this counter.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1033"/>
+ <location filename="mainwindow.ui" line="905"/>
<source>List of available esp/esm files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1036"/>
+ <location filename="mainwindow.ui" line="908"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
@@ -1716,27 +1716,27 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1107"/>
+ <location filename="mainwindow.ui" line="979"/>
<source>Archives</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1127"/>
+ <location filename="mainwindow.ui" line="999"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;BSAs / BA2s are bundles of game assets (textures, scripts, etc.). By default, the engine loads these bundles in a separate step from loose files. &lt;p&gt;Their load order is specified by the priority of the corresponding plugin (right pane, plugins tab).&lt;/p&gt;&lt;p&gt;If there is a matching plugin, the game will load them no matter what.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1130"/>
+ <location filename="mainwindow.ui" line="1002"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Currently detected archives. (&lt;a href=&quot;#&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;What is an archive?&lt;/span&gt;&lt;/a&gt;)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1145"/>
+ <location filename="mainwindow.ui" line="1017"/>
<source>List of available BS Archives. Archives not checked here are not managed by MO and ignore installation order.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1148"/>
+ <location filename="mainwindow.ui" line="1020"/>
<source>BSA files are archives (comparable to .zip files) that contain data assets (meshes, textures, ...) to be used by the game. As such they &quot;compete&quot; with loose files in your data directory over which is loaded.
By default, BSAs that share their base name with an enabled ESP (i.e. plugin.esp and plugin.bsa) are automatically loaded and will have precedence over all loose files, the installation order you set up to the left is then ignored!
@@ -1744,72 +1744,72 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1182"/>
+ <location filename="mainwindow.ui" line="1049"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1200"/>
+ <location filename="mainwindow.ui" line="1067"/>
<source>refresh data-directory overview</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1203"/>
+ <location filename="mainwindow.ui" line="1070"/>
<source>Refresh the overview. This may take a moment.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1206"/>
- <location filename="mainwindow.ui" line="1349"/>
- <location filename="mainwindow.cpp" line="4440"/>
- <location filename="mainwindow.cpp" line="5366"/>
+ <location filename="mainwindow.ui" line="1073"/>
+ <location filename="mainwindow.ui" line="1216"/>
+ <location filename="mainwindow.cpp" line="4447"/>
+ <location filename="mainwindow.cpp" line="5373"/>
<source>Refresh</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1222"/>
+ <location filename="mainwindow.ui" line="1089"/>
<source>This is an overview of your data directory as visible to the game (and tools). </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1235"/>
+ <location filename="mainwindow.ui" line="1102"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1240"/>
+ <location filename="mainwindow.ui" line="1107"/>
<source>Mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1252"/>
- <location filename="mainwindow.ui" line="1255"/>
+ <location filename="mainwindow.ui" line="1119"/>
+ <location filename="mainwindow.ui" line="1122"/>
<source>Filters the above list so that only conflicts are displayed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1258"/>
+ <location filename="mainwindow.ui" line="1125"/>
<source>Show only conflicts</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1265"/>
- <location filename="mainwindow.ui" line="1271"/>
+ <location filename="mainwindow.ui" line="1132"/>
+ <location filename="mainwindow.ui" line="1138"/>
<source>Filters the above list so that files from archives are not shown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1274"/>
+ <location filename="mainwindow.ui" line="1141"/>
<source>Show files from Archives</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1284"/>
+ <location filename="mainwindow.ui" line="1151"/>
<source>Saves</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1308"/>
+ <location filename="mainwindow.ui" line="1175"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
@@ -1820,197 +1820,197 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1328"/>
+ <location filename="mainwindow.ui" line="1195"/>
<source>Downloads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1346"/>
+ <location filename="mainwindow.ui" line="1213"/>
<source>Refresh downloads view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1377"/>
+ <location filename="mainwindow.ui" line="1244"/>
<source>This is a list of mods you downloaded from Nexus. Double click one to install it. You can also drag an archive into here.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1415"/>
+ <location filename="mainwindow.ui" line="1282"/>
<source>Show Hidden</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1480"/>
+ <location filename="mainwindow.ui" line="1347"/>
<source>Tool Bar</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1523"/>
+ <location filename="mainwindow.ui" line="1390"/>
<source>Install Mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1526"/>
+ <location filename="mainwindow.ui" line="1393"/>
<source>Install &amp;Mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1529"/>
+ <location filename="mainwindow.ui" line="1396"/>
<source>Install a new mod from an archive</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1532"/>
+ <location filename="mainwindow.ui" line="1399"/>
<source>Ctrl+M</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1541"/>
+ <location filename="mainwindow.ui" line="1408"/>
<source>Profiles</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1544"/>
+ <location filename="mainwindow.ui" line="1411"/>
<source>&amp;Profiles</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1547"/>
+ <location filename="mainwindow.ui" line="1414"/>
<source>Configure Profiles</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1550"/>
+ <location filename="mainwindow.ui" line="1417"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1559"/>
+ <location filename="mainwindow.ui" line="1426"/>
<source>Executables</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1562"/>
+ <location filename="mainwindow.ui" line="1429"/>
<source>&amp;Executables</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1565"/>
+ <location filename="mainwindow.ui" line="1432"/>
<source>Configure the executables that can be started through Mod Organizer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1568"/>
+ <location filename="mainwindow.ui" line="1435"/>
<source>Ctrl+E</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1577"/>
- <location filename="mainwindow.ui" line="1583"/>
+ <location filename="mainwindow.ui" line="1444"/>
+ <location filename="mainwindow.ui" line="1450"/>
<source>Tools</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1580"/>
+ <location filename="mainwindow.ui" line="1447"/>
<source>&amp;Tools</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1586"/>
+ <location filename="mainwindow.ui" line="1453"/>
<source>Ctrl+I</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1595"/>
+ <location filename="mainwindow.ui" line="1462"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1598"/>
+ <location filename="mainwindow.ui" line="1465"/>
<source>&amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1601"/>
+ <location filename="mainwindow.ui" line="1468"/>
<source>Configure settings and workarounds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1604"/>
+ <location filename="mainwindow.ui" line="1471"/>
<source>Ctrl+S</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1613"/>
+ <location filename="mainwindow.ui" line="1480"/>
<source>Nexus</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1616"/>
+ <location filename="mainwindow.ui" line="1483"/>
<source>Search nexus network for more mods</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1619"/>
+ <location filename="mainwindow.ui" line="1486"/>
<source>Ctrl+N</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1631"/>
- <location filename="mainwindow.cpp" line="5315"/>
+ <location filename="mainwindow.ui" line="1498"/>
+ <location filename="mainwindow.cpp" line="5322"/>
<source>Update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1634"/>
+ <location filename="mainwindow.ui" line="1501"/>
<source>Mod Organizer is up-to-date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1646"/>
- <location filename="mainwindow.cpp" line="688"/>
+ <location filename="mainwindow.ui" line="1513"/>
+ <location filename="mainwindow.cpp" line="689"/>
<source>No Notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1649"/>
+ <location filename="mainwindow.ui" line="1516"/>
<source>This button will be highlighted if MO discovered potential problems in your setup and provide tips on how to fix them.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1658"/>
- <location filename="mainwindow.ui" line="1661"/>
+ <location filename="mainwindow.ui" line="1525"/>
+ <location filename="mainwindow.ui" line="1528"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1664"/>
+ <location filename="mainwindow.ui" line="1531"/>
<source>Ctrl+H</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1673"/>
+ <location filename="mainwindow.ui" line="1540"/>
<source>Endorse MO</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1676"/>
- <location filename="mainwindow.cpp" line="5389"/>
+ <location filename="mainwindow.ui" line="1543"/>
+ <location filename="mainwindow.cpp" line="5396"/>
<source>Endorse Mod Organizer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1681"/>
+ <location filename="mainwindow.ui" line="1548"/>
<source>Copy Log to Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1690"/>
+ <location filename="mainwindow.ui" line="1557"/>
<source>Change Game</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.ui" line="1693"/>
+ <location filename="mainwindow.ui" line="1560"/>
<source>Open the Instance selection dialog to manage a different Game</source>
<translation type="unfinished"></translation>
</message>
@@ -2035,860 +2035,860 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="508"/>
+ <location filename="mainwindow.cpp" line="509"/>
<source>Crash on exit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="509"/>
+ <location filename="mainwindow.cpp" line="510"/>
<source>MO crashed while exiting. Some settings may not be saved.
Error: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="676"/>
+ <location filename="mainwindow.cpp" line="677"/>
<source>Notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="677"/>
+ <location filename="mainwindow.cpp" line="678"/>
<source>There are notifications to read</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="689"/>
+ <location filename="mainwindow.cpp" line="690"/>
<source>There are no notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="751"/>
- <location filename="mainwindow.cpp" line="4577"/>
- <location filename="mainwindow.cpp" line="4581"/>
+ <location filename="mainwindow.cpp" line="752"/>
+ <location filename="mainwindow.cpp" line="4584"/>
+ <location filename="mainwindow.cpp" line="4588"/>
<source>Endorse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="755"/>
+ <location filename="mainwindow.cpp" line="756"/>
<source>Won&apos;t Endorse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="770"/>
+ <location filename="mainwindow.cpp" line="771"/>
<source>Help on UI</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="774"/>
+ <location filename="mainwindow.cpp" line="775"/>
<source>Documentation</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="778"/>
+ <location filename="mainwindow.cpp" line="779"/>
<source>Chat on Discord</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="782"/>
+ <location filename="mainwindow.cpp" line="783"/>
<source>Report Issue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="786"/>
+ <location filename="mainwindow.cpp" line="787"/>
<source>Tutorials</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="825"/>
+ <location filename="mainwindow.cpp" line="826"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="826"/>
+ <location filename="mainwindow.cpp" line="827"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="885"/>
+ <location filename="mainwindow.cpp" line="886"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="886"/>
+ <location filename="mainwindow.cpp" line="887"/>
<source>Please enter a name for the new profile</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="894"/>
+ <location filename="mainwindow.cpp" line="895"/>
<source>failed to create profile: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="938"/>
+ <location filename="mainwindow.cpp" line="939"/>
<source>Show tutorial?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="939"/>
+ <location filename="mainwindow.cpp" line="940"/>
<source>You are starting Mod Organizer for the first time. Do you want to show a tutorial of its basic features? If you choose no you can always start the tutorial from the &quot;Help&quot;-menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="975"/>
+ <location filename="mainwindow.cpp" line="976"/>
<source>Downloads in progress</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="976"/>
+ <location filename="mainwindow.cpp" line="977"/>
<source>There are still downloads in progress, do you really want to quit?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1093"/>
+ <location filename="mainwindow.cpp" line="1094"/>
<source>Plugin &quot;%1&quot; failed: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1095"/>
+ <location filename="mainwindow.cpp" line="1096"/>
<source>Plugin &quot;%1&quot; failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1173"/>
+ <location filename="mainwindow.cpp" line="1180"/>
<source>Browse Mod Page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1380"/>
+ <location filename="mainwindow.cpp" line="1387"/>
<source>Also in: &lt;br&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1391"/>
+ <location filename="mainwindow.cpp" line="1398"/>
<source>No conflict</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1476"/>
+ <location filename="mainwindow.cpp" line="1483"/>
<source>&lt;Edit...&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1754"/>
+ <location filename="mainwindow.cpp" line="1761"/>
<source>This bsa is enabled in the ini file so it may be required!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1816"/>
+ <location filename="mainwindow.cpp" line="1823"/>
<source>Activating Network Proxy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1891"/>
+ <location filename="mainwindow.cpp" line="1899"/>
<source>Notice: Your current MO version (%1) is lower than the previously used one (%2). The GUI may not downgrade gracefully, so you may experience oddities. However, there should be no serious issues.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1993"/>
+ <location filename="mainwindow.cpp" line="2001"/>
<source>Choose Mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1994"/>
+ <location filename="mainwindow.cpp" line="2002"/>
<source>Mod Archive</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2181"/>
+ <location filename="mainwindow.cpp" line="2189"/>
<source>Start Tutorial?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2182"/>
+ <location filename="mainwindow.cpp" line="2190"/>
<source>You&apos;re about to start a tutorial. For technical reasons it&apos;s not possible to end the tutorial early. Continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2355"/>
+ <location filename="mainwindow.cpp" line="2368"/>
<source>failed to spawn notepad.exe: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2395"/>
+ <location filename="mainwindow.cpp" line="2408"/>
<source>failed to change origin name: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2419"/>
+ <location filename="mainwindow.cpp" line="2432"/>
<source>failed to move &quot;%1&quot; from mod &quot;%2&quot; to &quot;%3&quot;: %4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2443"/>
+ <location filename="mainwindow.cpp" line="2456"/>
<source>&lt;Contains %1&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2478"/>
+ <location filename="mainwindow.cpp" line="2491"/>
<source>&lt;Checked&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2479"/>
+ <location filename="mainwindow.cpp" line="2492"/>
<source>&lt;Unchecked&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2480"/>
+ <location filename="mainwindow.cpp" line="2493"/>
<source>&lt;Update&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2481"/>
+ <location filename="mainwindow.cpp" line="2494"/>
<source>&lt;Mod Backup&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2482"/>
+ <location filename="mainwindow.cpp" line="2495"/>
<source>&lt;Managed by MO&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2483"/>
+ <location filename="mainwindow.cpp" line="2496"/>
<source>&lt;Managed outside MO&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2484"/>
+ <location filename="mainwindow.cpp" line="2497"/>
<source>&lt;No category&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2485"/>
+ <location filename="mainwindow.cpp" line="2498"/>
<source>&lt;Conflicted&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2486"/>
+ <location filename="mainwindow.cpp" line="2499"/>
<source>&lt;Not Endorsed&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2532"/>
+ <location filename="mainwindow.cpp" line="2545"/>
<source>failed to rename mod: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2545"/>
+ <location filename="mainwindow.cpp" line="2558"/>
<source>Overwrite?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2546"/>
+ <location filename="mainwindow.cpp" line="2559"/>
<source>This will replace the existing mod &quot;%1&quot;. Continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2549"/>
+ <location filename="mainwindow.cpp" line="2562"/>
<source>failed to remove mod &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2553"/>
- <location filename="mainwindow.cpp" line="5141"/>
- <location filename="mainwindow.cpp" line="5165"/>
+ <location filename="mainwindow.cpp" line="2566"/>
+ <location filename="mainwindow.cpp" line="5148"/>
+ <location filename="mainwindow.cpp" line="5172"/>
<source>failed to rename &quot;%1&quot; to &quot;%2&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2630"/>
- <location filename="mainwindow.cpp" line="4143"/>
- <location filename="mainwindow.cpp" line="4151"/>
- <location filename="mainwindow.cpp" line="4690"/>
+ <location filename="mainwindow.cpp" line="2639"/>
+ <location filename="mainwindow.cpp" line="4150"/>
+ <location filename="mainwindow.cpp" line="4158"/>
+ <location filename="mainwindow.cpp" line="4697"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2631"/>
+ <location filename="mainwindow.cpp" line="2640"/>
<source>Remove the following mods?&lt;br&gt;&lt;ul&gt;%1&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2646"/>
+ <location filename="mainwindow.cpp" line="2655"/>
<source>failed to remove mod: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2678"/>
- <location filename="mainwindow.cpp" line="2681"/>
- <location filename="mainwindow.cpp" line="2691"/>
+ <location filename="mainwindow.cpp" line="2687"/>
+ <location filename="mainwindow.cpp" line="2690"/>
+ <location filename="mainwindow.cpp" line="2700"/>
<source>Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2678"/>
+ <location filename="mainwindow.cpp" line="2687"/>
<source>Installation file no longer exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2682"/>
+ <location filename="mainwindow.cpp" line="2691"/>
<source>Mods installed with old versions of MO can&apos;t be reinstalled in this way.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2692"/>
+ <location filename="mainwindow.cpp" line="2701"/>
<source>Failed to create backup.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2709"/>
+ <location filename="mainwindow.cpp" line="2718"/>
<source>You need to be logged in with Nexus to resume a download</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2725"/>
- <location filename="mainwindow.cpp" line="2751"/>
- <location filename="mainwindow.cpp" line="2785"/>
- <location filename="mainwindow.cpp" line="2810"/>
+ <location filename="mainwindow.cpp" line="2734"/>
+ <location filename="mainwindow.cpp" line="2760"/>
+ <location filename="mainwindow.cpp" line="2794"/>
+ <location filename="mainwindow.cpp" line="2819"/>
<source>You need to be logged in with Nexus to endorse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2736"/>
- <location filename="mainwindow.cpp" line="2744"/>
+ <location filename="mainwindow.cpp" line="2745"/>
+ <location filename="mainwindow.cpp" line="2753"/>
<source>Endorsing multiple mods will take a while. Please wait...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2796"/>
- <location filename="mainwindow.cpp" line="2803"/>
+ <location filename="mainwindow.cpp" line="2805"/>
+ <location filename="mainwindow.cpp" line="2812"/>
<source>Unendorsing multiple mods will take a while. Please wait...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2871"/>
+ <location filename="mainwindow.cpp" line="2880"/>
<source>Failed to display overwrite dialog: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3058"/>
+ <location filename="mainwindow.cpp" line="3067"/>
<source>Opening Nexus Links</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3059"/>
+ <location filename="mainwindow.cpp" line="3068"/>
<source>You are trying to open %1 links to Nexus Mods. Are you sure you want to do this?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3088"/>
+ <location filename="mainwindow.cpp" line="3097"/>
<source>Nexus ID for this Mod is unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3100"/>
+ <location filename="mainwindow.cpp" line="3109"/>
<source>Opening Web Pages</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3101"/>
+ <location filename="mainwindow.cpp" line="3110"/>
<source>You are trying to open %1 Web Pages. Are you sure you want to do this?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3130"/>
+ <location filename="mainwindow.cpp" line="3139"/>
<source>Web page for this mod is unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3317"/>
+ <location filename="mainwindow.cpp" line="3326"/>
<source>&lt;table cellspacing=&quot;5&quot;&gt;&lt;tr&gt;&lt;th&gt;Type&lt;/th&gt;&lt;th&gt;All&lt;/th&gt;&lt;th&gt;Visible&lt;/th&gt;&lt;tr&gt;&lt;td&gt;Enabled mods:&amp;emsp;&lt;/td&gt;&lt;td align=right&gt;%1 / %2&lt;/td&gt;&lt;td align=right&gt;%3 / %4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Unmanaged/DLCs:&amp;emsp;&lt;/td&gt;&lt;td align=right&gt;%5&lt;/td&gt;&lt;td align=right&gt;%6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mod backups:&amp;emsp;&lt;/td&gt;&lt;td align=right&gt;%7&lt;/td&gt;&lt;td align=right&gt;%8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Separators:&amp;emsp;&lt;/td&gt;&lt;td align=right&gt;%9&lt;/td&gt;&lt;td align=right&gt;%10&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3372"/>
+ <location filename="mainwindow.cpp" line="3381"/>
<source>&lt;table cellspacing=&quot;6&quot;&gt;&lt;tr&gt;&lt;th&gt;Type&lt;/th&gt;&lt;th&gt;Active &lt;/th&gt;&lt;th&gt;Total&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;All plugins:&lt;/td&gt;&lt;td align=right&gt;%1 &lt;/td&gt;&lt;td align=right&gt;%2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ESMs:&lt;/td&gt;&lt;td align=right&gt;%3 &lt;/td&gt;&lt;td align=right&gt;%4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ESPs:&lt;/td&gt;&lt;td align=right&gt;%7 &lt;/td&gt;&lt;td align=right&gt;%8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ESMs+ESPs:&lt;/td&gt;&lt;td align=right&gt;%9 &lt;/td&gt;&lt;td align=right&gt;%10&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ESLs:&lt;/td&gt;&lt;td align=right&gt;%5 &lt;/td&gt;&lt;td align=right&gt;%6&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3404"/>
- <location filename="mainwindow.cpp" line="3542"/>
- <location filename="mainwindow.cpp" line="4502"/>
+ <location filename="mainwindow.cpp" line="3413"/>
+ <location filename="mainwindow.cpp" line="3551"/>
+ <location filename="mainwindow.cpp" line="4509"/>
<source>Create Mod...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3405"/>
+ <location filename="mainwindow.cpp" line="3414"/>
<source>This will create an empty mod.
Please enter a name:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3414"/>
- <location filename="mainwindow.cpp" line="3552"/>
+ <location filename="mainwindow.cpp" line="3423"/>
+ <location filename="mainwindow.cpp" line="3561"/>
<source>A mod with this name already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3442"/>
+ <location filename="mainwindow.cpp" line="3451"/>
<source>Create Separator...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3443"/>
+ <location filename="mainwindow.cpp" line="3452"/>
<source>This will create a new separator.
Please enter a name:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3450"/>
+ <location filename="mainwindow.cpp" line="3459"/>
<source>A separator with this name already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3543"/>
+ <location filename="mainwindow.cpp" line="3552"/>
<source>This will move all files from overwrite into a new, regular mod.
Please enter a name:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3624"/>
+ <location filename="mainwindow.cpp" line="3633"/>
<source>Move successful.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3645"/>
- <location filename="mainwindow.cpp" line="5945"/>
+ <location filename="mainwindow.cpp" line="3654"/>
+ <location filename="mainwindow.cpp" line="5962"/>
<source>Are you sure?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3646"/>
+ <location filename="mainwindow.cpp" line="3655"/>
<source>About to recursively delete:
</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4023"/>
+ <location filename="mainwindow.cpp" line="4032"/>
<source>Continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4024"/>
+ <location filename="mainwindow.cpp" line="4033"/>
<source>The versioning scheme decides which version is considered newer than another.
This function will guess the versioning scheme under the assumption that the installed version is outdated.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4044"/>
- <location filename="mainwindow.cpp" line="5283"/>
+ <location filename="mainwindow.cpp" line="4053"/>
+ <location filename="mainwindow.cpp" line="5290"/>
<source>Sorry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4045"/>
+ <location filename="mainwindow.cpp" line="4054"/>
<source>I don&apos;t know a versioning scheme where %1 is newer than %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4143"/>
+ <location filename="mainwindow.cpp" line="4150"/>
<source>Really enable all visible mods?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4151"/>
+ <location filename="mainwindow.cpp" line="4158"/>
<source>Really disable all visible mods?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4231"/>
+ <location filename="mainwindow.cpp" line="4238"/>
<source>Export to csv</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4234"/>
+ <location filename="mainwindow.cpp" line="4241"/>
<source>CSV (Comma Separated Values) is a format that can be imported in programs like Excel to create a spreadsheet.
You can also use online editors and converters instead.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4237"/>
+ <location filename="mainwindow.cpp" line="4244"/>
<source>Select what mods you want export:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4238"/>
+ <location filename="mainwindow.cpp" line="4245"/>
<source>All installed mods</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4239"/>
+ <location filename="mainwindow.cpp" line="4246"/>
<source>Only active (checked) mods from your current profile</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4240"/>
+ <location filename="mainwindow.cpp" line="4247"/>
<source>All currently visible mods in the mod list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4261"/>
+ <location filename="mainwindow.cpp" line="4268"/>
<source>Choose what Columns to export:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4264"/>
+ <location filename="mainwindow.cpp" line="4271"/>
<source>Mod_Priority</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4266"/>
+ <location filename="mainwindow.cpp" line="4273"/>
<source>Mod_Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4268"/>
+ <location filename="mainwindow.cpp" line="4275"/>
<source>Notes_column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4269"/>
+ <location filename="mainwindow.cpp" line="4276"/>
<source>Mod_Status</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4270"/>
+ <location filename="mainwindow.cpp" line="4277"/>
<source>Primary_Category</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4271"/>
+ <location filename="mainwindow.cpp" line="4278"/>
<source>Nexus_ID</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4272"/>
+ <location filename="mainwindow.cpp" line="4279"/>
<source>Mod_Nexus_URL</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4273"/>
+ <location filename="mainwindow.cpp" line="4280"/>
<source>Mod_Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4274"/>
+ <location filename="mainwindow.cpp" line="4281"/>
<source>Install_Date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4275"/>
+ <location filename="mainwindow.cpp" line="4282"/>
<source>Download_File_Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4382"/>
+ <location filename="mainwindow.cpp" line="4389"/>
<source>export failed: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4401"/>
+ <location filename="mainwindow.cpp" line="4408"/>
<source>Open Game folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4403"/>
+ <location filename="mainwindow.cpp" line="4410"/>
<source>Open MyGames folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4405"/>
+ <location filename="mainwindow.cpp" line="4412"/>
<source>Open INIs folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4409"/>
+ <location filename="mainwindow.cpp" line="4416"/>
<source>Open Instance folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4411"/>
+ <location filename="mainwindow.cpp" line="4418"/>
<source>Open Mods folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4413"/>
+ <location filename="mainwindow.cpp" line="4420"/>
<source>Open Profile folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4415"/>
+ <location filename="mainwindow.cpp" line="4422"/>
<source>Open Downloads folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4419"/>
+ <location filename="mainwindow.cpp" line="4426"/>
<source>Open MO2 Install folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4421"/>
+ <location filename="mainwindow.cpp" line="4428"/>
<source>Open MO2 Plugins folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4423"/>
+ <location filename="mainwindow.cpp" line="4430"/>
<source>Open MO2 Logs folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4431"/>
+ <location filename="mainwindow.cpp" line="4438"/>
<source>Install Mod...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4432"/>
+ <location filename="mainwindow.cpp" line="4439"/>
<source>Create empty mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4433"/>
+ <location filename="mainwindow.cpp" line="4440"/>
<source>Create Separator</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4437"/>
+ <location filename="mainwindow.cpp" line="4444"/>
<source>Enable all visible</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4438"/>
+ <location filename="mainwindow.cpp" line="4445"/>
<source>Disable all visible</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4439"/>
+ <location filename="mainwindow.cpp" line="4446"/>
<source>Check for updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4441"/>
+ <location filename="mainwindow.cpp" line="4448"/>
<source>Export to csv...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4450"/>
- <location filename="mainwindow.cpp" line="4466"/>
+ <location filename="mainwindow.cpp" line="4457"/>
+ <location filename="mainwindow.cpp" line="4473"/>
<source>Send to</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4451"/>
- <location filename="mainwindow.cpp" line="4467"/>
+ <location filename="mainwindow.cpp" line="4458"/>
+ <location filename="mainwindow.cpp" line="4474"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4452"/>
- <location filename="mainwindow.cpp" line="4468"/>
+ <location filename="mainwindow.cpp" line="4459"/>
+ <location filename="mainwindow.cpp" line="4475"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4453"/>
- <location filename="mainwindow.cpp" line="4469"/>
+ <location filename="mainwindow.cpp" line="4460"/>
+ <location filename="mainwindow.cpp" line="4476"/>
<source>Priority...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4454"/>
+ <location filename="mainwindow.cpp" line="4461"/>
<source>Separator...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4493"/>
+ <location filename="mainwindow.cpp" line="4500"/>
<source>All Mods</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4501"/>
+ <location filename="mainwindow.cpp" line="4508"/>
<source>Sync to Mods...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4503"/>
+ <location filename="mainwindow.cpp" line="4510"/>
<source>Move content to Mod...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4504"/>
+ <location filename="mainwindow.cpp" line="4511"/>
<source>Clear Overwrite...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4506"/>
- <location filename="mainwindow.cpp" line="4608"/>
+ <location filename="mainwindow.cpp" line="4513"/>
+ <location filename="mainwindow.cpp" line="4615"/>
<source>Open in Explorer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4508"/>
+ <location filename="mainwindow.cpp" line="4515"/>
<source>Restore Backup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4509"/>
+ <location filename="mainwindow.cpp" line="4516"/>
<source>Remove Backup...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4512"/>
- <location filename="mainwindow.cpp" line="4531"/>
+ <location filename="mainwindow.cpp" line="4519"/>
+ <location filename="mainwindow.cpp" line="4538"/>
<source>Change Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4516"/>
- <location filename="mainwindow.cpp" line="4536"/>
+ <location filename="mainwindow.cpp" line="4523"/>
+ <location filename="mainwindow.cpp" line="4543"/>
<source>Primary Category</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4520"/>
+ <location filename="mainwindow.cpp" line="4527"/>
<source>Rename Separator...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4521"/>
+ <location filename="mainwindow.cpp" line="4528"/>
<source>Remove Separator...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4524"/>
+ <location filename="mainwindow.cpp" line="4531"/>
<source>Select Color...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4526"/>
+ <location filename="mainwindow.cpp" line="4533"/>
<source>Reset Color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4543"/>
+ <location filename="mainwindow.cpp" line="4550"/>
<source>Change versioning scheme</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4547"/>
+ <location filename="mainwindow.cpp" line="4554"/>
<source>Force-check updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4549"/>
+ <location filename="mainwindow.cpp" line="4556"/>
<source>Un-ignore update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4552"/>
+ <location filename="mainwindow.cpp" line="4559"/>
<source>Ignore update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4557"/>
- <location filename="mainwindow.cpp" line="6058"/>
+ <location filename="mainwindow.cpp" line="4564"/>
+ <location filename="mainwindow.cpp" line="6075"/>
<source>Enable selected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4558"/>
- <location filename="mainwindow.cpp" line="6059"/>
+ <location filename="mainwindow.cpp" line="4565"/>
+ <location filename="mainwindow.cpp" line="6076"/>
<source>Disable selected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4564"/>
+ <location filename="mainwindow.cpp" line="4571"/>
<source>Rename Mod...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4565"/>
+ <location filename="mainwindow.cpp" line="4572"/>
<source>Reinstall Mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4566"/>
+ <location filename="mainwindow.cpp" line="4573"/>
<source>Remove Mod...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4574"/>
+ <location filename="mainwindow.cpp" line="4581"/>
<source>Un-Endorse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4578"/>
+ <location filename="mainwindow.cpp" line="4585"/>
<source>Won&apos;t endorse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4584"/>
+ <location filename="mainwindow.cpp" line="4591"/>
<source>Endorsement state unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4595"/>
+ <location filename="mainwindow.cpp" line="4602"/>
<source>Ignore missing data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4599"/>
+ <location filename="mainwindow.cpp" line="4606"/>
<source>Mark as converted/working</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4603"/>
+ <location filename="mainwindow.cpp" line="4610"/>
<source>Visit on Nexus</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4605"/>
+ <location filename="mainwindow.cpp" line="4612"/>
<source>Visit web page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4612"/>
+ <location filename="mainwindow.cpp" line="4619"/>
<source>Information...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4619"/>
- <location filename="mainwindow.cpp" line="6111"/>
+ <location filename="mainwindow.cpp" line="4626"/>
+ <location filename="mainwindow.cpp" line="6128"/>
<source>Exception: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4621"/>
- <location filename="mainwindow.cpp" line="6113"/>
+ <location filename="mainwindow.cpp" line="4628"/>
+ <location filename="mainwindow.cpp" line="6130"/>
<source>Unknown exception</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4650"/>
+ <location filename="mainwindow.cpp" line="4657"/>
<source>&lt;All&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4652"/>
+ <location filename="mainwindow.cpp" line="4659"/>
<source>&lt;Multiple&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4687"/>
+ <location filename="mainwindow.cpp" line="4694"/>
<source>%1 more</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="mainwindow.cpp" line="4691"/>
+ <location filename="mainwindow.cpp" line="4698"/>
<source>Are you sure you want to remove the following %n save(s)?&lt;br&gt;&lt;ul&gt;%1&lt;/ul&gt;&lt;br&gt;Removed saves will be sent to the Recycle Bin.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -2896,12 +2896,12 @@ You can also use online editors and converters instead.</source>
</translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4736"/>
+ <location filename="mainwindow.cpp" line="4743"/>
<source>Enable Mods...</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="mainwindow.cpp" line="4751"/>
+ <location filename="mainwindow.cpp" line="4758"/>
<source>Delete %n save(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -2909,22 +2909,22 @@ You can also use online editors and converters instead.</source>
</translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4793"/>
+ <location filename="mainwindow.cpp" line="4800"/>
<source>failed to remove %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4815"/>
+ <location filename="mainwindow.cpp" line="4822"/>
<source>failed to create %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4845"/>
+ <location filename="mainwindow.cpp" line="4852"/>
<source>Restarting MO</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4846"/>
+ <location filename="mainwindow.cpp" line="4853"/>
<source>Changing the managed game directory requires restarting MO.
Any pending downloads will be paused.
@@ -2932,373 +2932,373 @@ Click OK to restart MO now.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4866"/>
+ <location filename="mainwindow.cpp" line="4873"/>
<source>Can&apos;t change download directory while downloads are in progress!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5012"/>
+ <location filename="mainwindow.cpp" line="5019"/>
<source>failed to write to file %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5018"/>
+ <location filename="mainwindow.cpp" line="5025"/>
<source>%1 written</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5060"/>
+ <location filename="mainwindow.cpp" line="5067"/>
<source>Select binary</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5060"/>
+ <location filename="mainwindow.cpp" line="5067"/>
<source>Binary</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5086"/>
+ <location filename="mainwindow.cpp" line="5093"/>
<source>Enter Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5087"/>
+ <location filename="mainwindow.cpp" line="5094"/>
<source>Please enter a name for the executable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5101"/>
+ <location filename="mainwindow.cpp" line="5108"/>
<source>Not an executable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5101"/>
+ <location filename="mainwindow.cpp" line="5108"/>
<source>This is not a recognized executable.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5126"/>
- <location filename="mainwindow.cpp" line="5151"/>
+ <location filename="mainwindow.cpp" line="5133"/>
+ <location filename="mainwindow.cpp" line="5158"/>
<source>Replace file?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5126"/>
+ <location filename="mainwindow.cpp" line="5133"/>
<source>There already is a hidden version of this file. Replace it?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5129"/>
- <location filename="mainwindow.cpp" line="5154"/>
+ <location filename="mainwindow.cpp" line="5136"/>
+ <location filename="mainwindow.cpp" line="5161"/>
<source>File operation failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5129"/>
- <location filename="mainwindow.cpp" line="5154"/>
+ <location filename="mainwindow.cpp" line="5136"/>
+ <location filename="mainwindow.cpp" line="5161"/>
<source>Failed to remove &quot;%1&quot;. Maybe you lack the required file permissions?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5151"/>
+ <location filename="mainwindow.cpp" line="5158"/>
<source>There already is a visible version of this file. Replace it?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5195"/>
- <location filename="mainwindow.cpp" line="6725"/>
+ <location filename="mainwindow.cpp" line="5202"/>
+ <location filename="mainwindow.cpp" line="6742"/>
<source>Set Priority</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5195"/>
+ <location filename="mainwindow.cpp" line="5202"/>
<source>Set the priority of the selected plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5250"/>
+ <location filename="mainwindow.cpp" line="5257"/>
<source>file not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5263"/>
+ <location filename="mainwindow.cpp" line="5270"/>
<source>failed to generate preview for %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5283"/>
+ <location filename="mainwindow.cpp" line="5290"/>
<source>Sorry, can&apos;t preview anything. This function currently does not support extracting from bsas.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5317"/>
+ <location filename="mainwindow.cpp" line="5324"/>
<source>Update available</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5346"/>
+ <location filename="mainwindow.cpp" line="5353"/>
<source>Open/Execute</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5347"/>
+ <location filename="mainwindow.cpp" line="5354"/>
<source>Add as Executable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5351"/>
+ <location filename="mainwindow.cpp" line="5358"/>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5357"/>
+ <location filename="mainwindow.cpp" line="5364"/>
<source>Un-Hide</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5359"/>
+ <location filename="mainwindow.cpp" line="5366"/>
<source>Hide</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5365"/>
+ <location filename="mainwindow.cpp" line="5372"/>
<source>Write To File...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5390"/>
+ <location filename="mainwindow.cpp" line="5397"/>
<source>Do you want to endorse Mod Organizer on %1 now?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5404"/>
+ <location filename="mainwindow.cpp" line="5411"/>
<source>Abstain from Endorsing Mod Organizer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5405"/>
+ <location filename="mainwindow.cpp" line="5412"/>
<source>Are you sure you want to abstain from endorsing Mod Organizer 2?
You will have to visit the mod page on the %1 Nexus site to change your mind.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5485"/>
- <location filename="mainwindow.cpp" line="5486"/>
+ <location filename="mainwindow.cpp" line="5492"/>
+ <location filename="mainwindow.cpp" line="5493"/>
<source>Thank you for endorsing MO2! :)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5488"/>
- <location filename="mainwindow.cpp" line="5489"/>
+ <location filename="mainwindow.cpp" line="5495"/>
+ <location filename="mainwindow.cpp" line="5496"/>
<source>Please reconsider endorsing MO2 on Nexus!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5716"/>
+ <location filename="mainwindow.cpp" line="5731"/>
<source>Thank you!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5716"/>
+ <location filename="mainwindow.cpp" line="5731"/>
<source>Thank you for your endorsement!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5718"/>
+ <location filename="mainwindow.cpp" line="5734"/>
<source>Okay.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5718"/>
+ <location filename="mainwindow.cpp" line="5734"/>
<source>This mod will not be endorsed and will no longer ask you to endorse.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5759"/>
+ <location filename="mainwindow.cpp" line="5776"/>
<source>Mod ID %1 no longer seems to be available on Nexus.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5761"/>
+ <location filename="mainwindow.cpp" line="5778"/>
<source>Request to Nexus failed: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5797"/>
- <location filename="mainwindow.cpp" line="5859"/>
+ <location filename="mainwindow.cpp" line="5814"/>
+ <location filename="mainwindow.cpp" line="5876"/>
<source>failed to read %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5809"/>
- <location filename="mainwindow.cpp" line="6301"/>
+ <location filename="mainwindow.cpp" line="5826"/>
+ <location filename="mainwindow.cpp" line="6318"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5809"/>
+ <location filename="mainwindow.cpp" line="5826"/>
<source>failed to extract %1 (errorcode %2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5841"/>
+ <location filename="mainwindow.cpp" line="5858"/>
<source>Extract BSA</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5870"/>
+ <location filename="mainwindow.cpp" line="5887"/>
<source>This archive contains invalid hashes. Some files may be broken.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5916"/>
+ <location filename="mainwindow.cpp" line="5933"/>
<source>Extract...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5946"/>
+ <location filename="mainwindow.cpp" line="5963"/>
<source>This will restart MO, continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5993"/>
+ <location filename="mainwindow.cpp" line="6010"/>
<source>Edit Categories...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="5994"/>
+ <location filename="mainwindow.cpp" line="6011"/>
<source>Deselect filter</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6047"/>
+ <location filename="mainwindow.cpp" line="6064"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6063"/>
+ <location filename="mainwindow.cpp" line="6080"/>
<source>Enable all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6064"/>
+ <location filename="mainwindow.cpp" line="6081"/>
<source>Disable all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6085"/>
+ <location filename="mainwindow.cpp" line="6102"/>
<source>Unlock load order</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6088"/>
+ <location filename="mainwindow.cpp" line="6105"/>
<source>Lock load order</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6098"/>
+ <location filename="mainwindow.cpp" line="6115"/>
<source>Open Origin in Explorer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6103"/>
+ <location filename="mainwindow.cpp" line="6120"/>
<source>Open Origin Info...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6247"/>
+ <location filename="mainwindow.cpp" line="6264"/>
<source>depends on missing &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6251"/>
+ <location filename="mainwindow.cpp" line="6268"/>
<source>incompatible with &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6277"/>
+ <location filename="mainwindow.cpp" line="6294"/>
<source>Please wait while LOOT is running</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6374"/>
+ <location filename="mainwindow.cpp" line="6391"/>
<source>loot failed. Exit code was: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6396"/>
+ <location filename="mainwindow.cpp" line="6413"/>
<source>failed to start loot</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6399"/>
+ <location filename="mainwindow.cpp" line="6416"/>
<source>failed to run loot: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6403"/>
+ <location filename="mainwindow.cpp" line="6420"/>
<source>Errors occured</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6450"/>
+ <location filename="mainwindow.cpp" line="6467"/>
<source>Backup of load order created</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6460"/>
+ <location filename="mainwindow.cpp" line="6477"/>
<source>Choose backup to restore</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6473"/>
+ <location filename="mainwindow.cpp" line="6490"/>
<source>No Backups</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6473"/>
+ <location filename="mainwindow.cpp" line="6490"/>
<source>There are no backups to restore</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6494"/>
- <location filename="mainwindow.cpp" line="6516"/>
+ <location filename="mainwindow.cpp" line="6511"/>
+ <location filename="mainwindow.cpp" line="6533"/>
<source>Restore failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6495"/>
- <location filename="mainwindow.cpp" line="6517"/>
+ <location filename="mainwindow.cpp" line="6512"/>
+ <location filename="mainwindow.cpp" line="6534"/>
<source>Failed to restore the backup. Errorcode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6506"/>
+ <location filename="mainwindow.cpp" line="6523"/>
<source>Backup of modlist created</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6612"/>
+ <location filename="mainwindow.cpp" line="6629"/>
<source>A file with the same name has already been downloaded. What would you like to do?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6614"/>
+ <location filename="mainwindow.cpp" line="6631"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6615"/>
+ <location filename="mainwindow.cpp" line="6632"/>
<source>Rename new file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6616"/>
+ <location filename="mainwindow.cpp" line="6633"/>
<source>Ignore file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="6725"/>
+ <location filename="mainwindow.cpp" line="6742"/>
<source>Set the priority of the selected mods</source>
<translation type="unfinished"></translation>
</message>
@@ -4043,18 +4043,18 @@ p, li { white-space: pre-wrap; }
<context>
<name>ModInfoRegular</name>
<message>
- <location filename="modinforegular.cpp" line="192"/>
<location filename="modinforegular.cpp" line="195"/>
+ <location filename="modinforegular.cpp" line="198"/>
<source>failed to write %1/meta.ini: error %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modinforegular.cpp" line="609"/>
+ <location filename="modinforegular.cpp" line="612"/>
<source>%1 contains no esp/esm/esl and no asset (textures, meshes, interface, ...) directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modinforegular.cpp" line="613"/>
+ <location filename="modinforegular.cpp" line="616"/>
<source>Categories: &lt;br&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -4205,178 +4205,183 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="263"/>
+ <location filename="modlist.cpp" line="172"/>
+ <source>Mod is being tracked on the website</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="modlist.cpp" line="264"/>
<source>Non-MO</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="295"/>
+ <location filename="modlist.cpp" line="296"/>
<source>invalid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="455"/>
+ <location filename="modlist.cpp" line="456"/>
<source>installed version: &quot;%1&quot;, newest version: &quot;%2&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="457"/>
+ <location filename="modlist.cpp" line="458"/>
<source>The newest version on Nexus seems to be older than the one you have installed. This could either mean the version you have has been withdrawn (i.e. due to a bug) or the author uses a non-standard versioning scheme and that newest version is actually newer. Either way you may want to &quot;upgrade&quot;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="462"/>
+ <location filename="modlist.cpp" line="463"/>
<source>This file has been marked as &quot;Old&quot;. There is most likely an updated version of this file available.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="464"/>
+ <location filename="modlist.cpp" line="465"/>
<source>This file has been marked as &quot;Deleted&quot;! You may want to check for an update or remove the nexus ID from this mod!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="471"/>
+ <location filename="modlist.cpp" line="472"/>
<source>%1 minute(s) and %2 second(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="472"/>
+ <location filename="modlist.cpp" line="473"/>
<source>This mod will be available to check in %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="480"/>
+ <location filename="modlist.cpp" line="481"/>
<source>Categories: &lt;br&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="511"/>
+ <location filename="modlist.cpp" line="512"/>
<source>Invalid name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="516"/>
+ <location filename="modlist.cpp" line="517"/>
<source>Name is already in use by another mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1076"/>
+ <location filename="modlist.cpp" line="1077"/>
<source>drag&amp;drop failed: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1155"/>
+ <location filename="modlist.cpp" line="1156"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1156"/>
+ <location filename="modlist.cpp" line="1157"/>
<source>Are you sure you want to remove &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1223"/>
+ <location filename="modlist.cpp" line="1224"/>
<source>Flags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1224"/>
+ <location filename="modlist.cpp" line="1225"/>
<source>Content</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1225"/>
+ <location filename="modlist.cpp" line="1226"/>
<source>Mod Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1226"/>
+ <location filename="modlist.cpp" line="1227"/>
<source>Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1227"/>
+ <location filename="modlist.cpp" line="1228"/>
<source>Priority</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1228"/>
+ <location filename="modlist.cpp" line="1229"/>
<source>Category</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1229"/>
+ <location filename="modlist.cpp" line="1230"/>
<source>Source Game</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1230"/>
+ <location filename="modlist.cpp" line="1231"/>
<source>Nexus ID</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1231"/>
+ <location filename="modlist.cpp" line="1232"/>
<source>Installation</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1232"/>
+ <location filename="modlist.cpp" line="1233"/>
<source>Notes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1233"/>
- <location filename="modlist.cpp" line="1269"/>
+ <location filename="modlist.cpp" line="1234"/>
+ <location filename="modlist.cpp" line="1270"/>
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1241"/>
+ <location filename="modlist.cpp" line="1242"/>
<source>Name of your mods</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1242"/>
+ <location filename="modlist.cpp" line="1243"/>
<source>Version of the mod (if available)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1243"/>
+ <location filename="modlist.cpp" line="1244"/>
<source>Installation priority of your mod. The higher, the more &quot;important&quot; it is and thus overwrites files from mods with lower priority.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1245"/>
+ <location filename="modlist.cpp" line="1246"/>
<source>Category of the mod.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1246"/>
+ <location filename="modlist.cpp" line="1247"/>
<source>The source game which was the origin of this mod.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1247"/>
+ <location filename="modlist.cpp" line="1248"/>
<source>Id of the mod as used on Nexus.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1248"/>
+ <location filename="modlist.cpp" line="1249"/>
<source>Emblemes to highlight things that might require attention.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1249"/>
+ <location filename="modlist.cpp" line="1250"/>
<source>Depicts the content of the mod:&lt;br&gt;&lt;table cellspacing=7&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/plugin&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Game plugins (esp/esm/esl)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/interface&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Interface&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/mesh&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Meshes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/bsa&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;BSA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/texture&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Textures&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/sound&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Sounds&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/music&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Music&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/string&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Strings&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/script&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Scripts (Papyrus)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/skse&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Script Extender plugins&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/skyproc&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;SkyProc Patcher&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/menu&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;Mod Configuration Menu&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/inifile&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;INI files&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;:/MO/gui/content/modgroup&quot; width=32/&gt;&lt;/td&gt;&lt;td&gt;ModGroup files&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1267"/>
+ <location filename="modlist.cpp" line="1268"/>
<source>Time this mod was installed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1268"/>
+ <location filename="modlist.cpp" line="1269"/>
<source>User notes about the mod</source>
<translation type="unfinished"></translation>
</message>
@@ -4418,37 +4423,37 @@ p, li { white-space: pre-wrap; }
<context>
<name>NXMAccessManager</name>
<message>
- <location filename="nxmaccessmanager.cpp" line="132"/>
+ <location filename="nxmaccessmanager.cpp" line="127"/>
<source>Validating Nexus Connection</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="nxmaccessmanager.cpp" line="150"/>
+ <location filename="nxmaccessmanager.cpp" line="145"/>
<source>Verifying Nexus login</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="nxmaccessmanager.cpp" line="229"/>
+ <location filename="nxmaccessmanager.cpp" line="223"/>
<source>There was a timeout during the request</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="nxmaccessmanager.cpp" line="248"/>
+ <location filename="nxmaccessmanager.cpp" line="244"/>
<source>Unknown error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="nxmaccessmanager.cpp" line="285"/>
+ <location filename="nxmaccessmanager.cpp" line="281"/>
<source>Validation failed, please reauthenticate in the Settings -&gt; Nexus tab: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="nxmaccessmanager.cpp" line="290"/>
+ <location filename="nxmaccessmanager.cpp" line="286"/>
<source>Could not parse response. Invalid JSON.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="nxmaccessmanager.cpp" line="296"/>
+ <location filename="nxmaccessmanager.cpp" line="292"/>
<source>Unknown error.</source>
<translation type="unfinished"></translation>
</message>
@@ -4464,17 +4469,17 @@ p, li { white-space: pre-wrap; }
<context>
<name>NexusInterface</name>
<message>
- <location filename="nexusinterface.cpp" line="228"/>
+ <location filename="nexusinterface.cpp" line="222"/>
<source>Failed to guess mod id for &quot;%1&quot;, please pick the correct one</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="nexusinterface.cpp" line="674"/>
+ <location filename="nexusinterface.cpp" line="668"/>
<source>empty response</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="nexusinterface.cpp" line="724"/>
+ <location filename="nexusinterface.cpp" line="718"/>
<source>invalid response</source>
<translation type="unfinished"></translation>
</message>
@@ -4482,234 +4487,234 @@ p, li { white-space: pre-wrap; }
<context>
<name>OrganizerCore</name>
<message>
- <location filename="organizercore.cpp" line="409"/>
- <location filename="organizercore.cpp" line="436"/>
+ <location filename="organizercore.cpp" line="408"/>
+ <location filename="organizercore.cpp" line="435"/>
<source>Failed to write settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="410"/>
+ <location filename="organizercore.cpp" line="409"/>
<source>An error occured trying to update MO settings to %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="431"/>
+ <location filename="organizercore.cpp" line="430"/>
<source>File is write protected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="433"/>
+ <location filename="organizercore.cpp" line="432"/>
<source>Invalid file format (probably a bug)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="434"/>
+ <location filename="organizercore.cpp" line="433"/>
<source>Unknown error %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="437"/>
+ <location filename="organizercore.cpp" line="436"/>
<source>An error occured trying to write back MO settings to %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="685"/>
- <location filename="organizercore.cpp" line="696"/>
+ <location filename="organizercore.cpp" line="684"/>
+ <location filename="organizercore.cpp" line="695"/>
<source>Download started</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="699"/>
+ <location filename="organizercore.cpp" line="698"/>
<source>Download failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="977"/>
- <location filename="organizercore.cpp" line="1014"/>
- <location filename="organizercore.cpp" line="1025"/>
- <location filename="organizercore.cpp" line="1083"/>
+ <location filename="organizercore.cpp" line="981"/>
+ <location filename="organizercore.cpp" line="1018"/>
+ <location filename="organizercore.cpp" line="1029"/>
+ <location filename="organizercore.cpp" line="1087"/>
<source>Installation cancelled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="978"/>
- <location filename="organizercore.cpp" line="1026"/>
+ <location filename="organizercore.cpp" line="982"/>
+ <location filename="organizercore.cpp" line="1030"/>
<source>Another installation is currently in progress.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="990"/>
- <location filename="organizercore.cpp" line="1055"/>
+ <location filename="organizercore.cpp" line="994"/>
+ <location filename="organizercore.cpp" line="1059"/>
<source>Installation successful</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="998"/>
- <location filename="organizercore.cpp" line="1065"/>
+ <location filename="organizercore.cpp" line="1002"/>
+ <location filename="organizercore.cpp" line="1069"/>
<source>Configure Mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="999"/>
- <location filename="organizercore.cpp" line="1066"/>
+ <location filename="organizercore.cpp" line="1003"/>
+ <location filename="organizercore.cpp" line="1070"/>
<source>This mod contains ini tweaks. Do you want to configure them now?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1011"/>
- <location filename="organizercore.cpp" line="1076"/>
+ <location filename="organizercore.cpp" line="1015"/>
+ <location filename="organizercore.cpp" line="1080"/>
<source>mod not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1015"/>
- <location filename="organizercore.cpp" line="1084"/>
+ <location filename="organizercore.cpp" line="1019"/>
+ <location filename="organizercore.cpp" line="1088"/>
<source>The mod was not installed completely.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1302"/>
+ <location filename="organizercore.cpp" line="1306"/>
<source>Executable not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1337"/>
+ <location filename="organizercore.cpp" line="1341"/>
<source>Start Steam?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1338"/>
+ <location filename="organizercore.cpp" line="1342"/>
<source>Steam is required to be running already to correctly start the game. Should MO try to start steam now?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1361"/>
+ <location filename="organizercore.cpp" line="1365"/>
<source>Steam: Access Denied</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1362"/>
+ <location filename="organizercore.cpp" line="1366"/>
<source>MO was denied access to the Steam process. This normally indicates that Steam is being run as administrator while MO is not. This can cause issues launching the game. It is recommended to not run Steam as administrator unless absolutely neccessary.
Restart MO as administrator?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1409"/>
+ <location filename="organizercore.cpp" line="1413"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1417"/>
+ <location filename="organizercore.cpp" line="1421"/>
<source>Windows Event Log Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1418"/>
+ <location filename="organizercore.cpp" line="1422"/>
<source>The Windows Event Log service is disabled and/or not running. This prevents USVFS from running properly. Your mods may not be working in the executable that you are launching. Note that you may have to restart MO and/or your PC after the service is fixed.
Continue launching %1?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1430"/>
+ <location filename="organizercore.cpp" line="1434"/>
<source>Blacklisted Executable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1431"/>
+ <location filename="organizercore.cpp" line="1435"/>
<source>The executable you are attempted to launch is blacklisted in the virtual file system. This will likely prevent the executable, and any executables that are launched by this one, from seeing any mods. This could extend to INI files, save games and any other virtualized files.
Continue launching %1?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1526"/>
+ <location filename="organizercore.cpp" line="1530"/>
<source>No profile set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1822"/>
+ <location filename="organizercore.cpp" line="1826"/>
<source>Failed to refresh list of esps: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1931"/>
+ <location filename="organizercore.cpp" line="1935"/>
<source>Multiple esps/esls activated, please check that they don&apos;t conflict.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="2019"/>
+ <location filename="organizercore.cpp" line="2023"/>
<source>Download?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="2020"/>
+ <location filename="organizercore.cpp" line="2024"/>
<source>A download has been started but no installed page plugin recognizes it.
If you download anyway no information (i.e. version) will be associated with the download.
Continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="2155"/>
- <location filename="organizercore.cpp" line="2204"/>
+ <location filename="organizercore.cpp" line="2159"/>
+ <location filename="organizercore.cpp" line="2208"/>
<source>failed to update mod list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="2211"/>
- <location filename="organizercore.cpp" line="2228"/>
+ <location filename="organizercore.cpp" line="2215"/>
+ <location filename="organizercore.cpp" line="2232"/>
<source>login successful</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="2235"/>
+ <location filename="organizercore.cpp" line="2239"/>
<source>Login failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="2236"/>
+ <location filename="organizercore.cpp" line="2240"/>
<source>Login failed, try again?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="2245"/>
+ <location filename="organizercore.cpp" line="2249"/>
<source>login failed: %1. Download will not be associated with an account</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="2253"/>
+ <location filename="organizercore.cpp" line="2257"/>
<source>login failed: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="2263"/>
+ <location filename="organizercore.cpp" line="2267"/>
<source>login failed: %1. You need to log-in with Nexus to update MO.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="2316"/>
+ <location filename="organizercore.cpp" line="2320"/>
<source>MO1 &quot;Script Extender&quot; load mechanism has left hook.dll in your game folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="2319"/>
- <location filename="organizercore.cpp" line="2335"/>
+ <location filename="organizercore.cpp" line="2323"/>
+ <location filename="organizercore.cpp" line="2339"/>
<source>Description missing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="2328"/>
+ <location filename="organizercore.cpp" line="2332"/>
<source>&lt;a href=&quot;%1&quot;&gt;hook.dll&lt;/a&gt; has been found in your game folder (right click to copy the full path). This is most likely a leftover of setting the ModOrganizer 1 load mechanism to &quot;Script Extender&quot;, in which case you must remove this file either by changing the load mechanism in ModOrganizer 1 or manually removing the file, otherwise the game is likely to crash and burn.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="2362"/>
+ <location filename="organizercore.cpp" line="2366"/>
<source>failed to save load order: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="2434"/>
+ <location filename="organizercore.cpp" line="2438"/>
<source>The designated write target &quot;%1&quot; is not enabled.</source>
<translation type="unfinished"></translation>
</message>
@@ -5367,7 +5372,7 @@ p, li { white-space: pre-wrap; }
<location filename="../../uibase/src/report.cpp" line="34"/>
<location filename="../../uibase/src/report.cpp" line="37"/>
<location filename="main.cpp" line="98"/>
- <location filename="organizercore.cpp" line="723"/>
+ <location filename="organizercore.cpp" line="722"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
@@ -5689,7 +5694,7 @@ If the folder was still in use, restart MO and try again.</source>
</message>
<message>
<location filename="main.cpp" line="99"/>
- <location filename="organizercore.cpp" line="724"/>
+ <location filename="organizercore.cpp" line="723"/>
<source>Failed to create &quot;%1&quot;. Your user account probably lacks permission.</source>
<translation type="unfinished"></translation>
</message>
@@ -5711,59 +5716,59 @@ If the folder was still in use, restart MO and try again.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="main.cpp" line="396"/>
+ <location filename="main.cpp" line="395"/>
<source>Canceled finding game in &quot;%1&quot;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="main.cpp" line="401"/>
+ <location filename="main.cpp" line="400"/>
<source>No game identified in &quot;%1&quot;. The directory is required to contain the game binary.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="main.cpp" line="554"/>
+ <location filename="main.cpp" line="553"/>
<source>Please select the game edition you have (MO can&apos;t start the game correctly if this is set incorrectly!)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="main.cpp" line="591"/>
+ <location filename="main.cpp" line="590"/>
<source>failed to start shortcut: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="main.cpp" line="613"/>
+ <location filename="main.cpp" line="612"/>
<source>failed to start application: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="main.cpp" line="702"/>
- <location filename="settings.cpp" line="1195"/>
+ <location filename="main.cpp" line="701"/>
+ <location filename="settings.cpp" line="1191"/>
<source>Mod Organizer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="main.cpp" line="703"/>
+ <location filename="main.cpp" line="702"/>
<source>An instance of Mod Organizer is already running</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="main.cpp" line="718"/>
+ <location filename="main.cpp" line="717"/>
<source>Failed to set up instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="951"/>
+ <location filename="mainwindow.cpp" line="952"/>
<source>Please use &quot;Help&quot; from the toolbar to get usage instructions to all elements</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1440"/>
- <location filename="mainwindow.cpp" line="4967"/>
+ <location filename="mainwindow.cpp" line="1447"/>
+ <location filename="mainwindow.cpp" line="4974"/>
<source>&lt;Manage...&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1452"/>
+ <location filename="mainwindow.cpp" line="1459"/>
<source>failed to parse profile %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -5814,12 +5819,12 @@ If the folder was still in use, restart MO and try again.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settings.cpp" line="1202"/>
+ <location filename="settings.cpp" line="1198"/>
<source>Script Extender</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settings.cpp" line="1209"/>
+ <location filename="settings.cpp" line="1205"/>
<source>Proxy DLL</source>
<translation type="unfinished"></translation>
</message>
@@ -5966,58 +5971,58 @@ You will be asked if you want to allow helper.exe to make changes to the system.
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="selfupdater.cpp" line="173"/>
+ <location filename="selfupdater.cpp" line="178"/>
<source>New update available (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="selfupdater.cpp" line="174"/>
+ <location filename="selfupdater.cpp" line="179"/>
<source>Do you want to install update? All your mods and setup will be left untouched.
Select Show Details option to see the full change-log.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="selfupdater.cpp" line="178"/>
+ <location filename="selfupdater.cpp" line="183"/>
<source>Install</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="selfupdater.cpp" line="195"/>
+ <location filename="selfupdater.cpp" line="200"/>
<source>Download failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="selfupdater.cpp" line="196"/>
+ <location filename="selfupdater.cpp" line="201"/>
<source>Failed to find correct download, please try again later.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="selfupdater.cpp" line="211"/>
+ <location filename="selfupdater.cpp" line="216"/>
<source>Update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="selfupdater.cpp" line="212"/>
+ <location filename="selfupdater.cpp" line="217"/>
<source>Download in progress</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="selfupdater.cpp" line="303"/>
+ <location filename="selfupdater.cpp" line="308"/>
<source>Download failed: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="selfupdater.cpp" line="314"/>
+ <location filename="selfupdater.cpp" line="319"/>
<source>Failed to install update: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="selfupdater.cpp" line="339"/>
+ <location filename="selfupdater.cpp" line="344"/>
<source>Failed to start %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="selfupdater.cpp" line="348"/>
+ <location filename="selfupdater.cpp" line="353"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
@@ -6035,35 +6040,35 @@ Select Show Details option to see the full change-log.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settings.cpp" line="557"/>
- <location filename="settings.cpp" line="576"/>
+ <location filename="settings.cpp" line="552"/>
+ <location filename="settings.cpp" line="571"/>
<source>attempt to store setting for unknown plugin &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settings.cpp" line="736"/>
- <location filename="settings.cpp" line="972"/>
+ <location filename="settings.cpp" line="731"/>
+ <location filename="settings.cpp" line="967"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settings.cpp" line="737"/>
+ <location filename="settings.cpp" line="732"/>
<source>Failed to retrieve a Nexus API key! Please try again. A browser window should open asking you to authorize.</source>
<oldsource>Failed to retrieve a Nexus API key! Please try again.A browser window should open asking you to authorize.</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settings.cpp" line="973"/>
+ <location filename="settings.cpp" line="968"/>
<source>Failed to create &quot;%1&quot;, you may not have the necessary permission. path remains unchanged.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settings.cpp" line="1248"/>
+ <location filename="settings.cpp" line="1242"/>
<source>Restart Mod Organizer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settings.cpp" line="1249"/>
+ <location filename="settings.cpp" line="1243"/>
<source>In order to reset the window geometries, MO must be restarted.
Restart it now?</source>
<translation type="unfinished"></translation>
@@ -6391,92 +6396,103 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="588"/>
+ <location filename="settingsdialog.ui" line="584"/>
+ <location filename="settingsdialog.ui" line="587"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;By default, a counter is displayed under the mod list. This informs the user of their remaining API requests. The Nexus API becomes unusable once these API requests run out. Checking this option will hide that counter.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="settingsdialog.ui" line="590"/>
+ <source>Hide API Request Counter</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="settingsdialog.ui" line="601"/>
<source>Associate with &quot;Download with manager&quot; links</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="617"/>
+ <location filename="settingsdialog.ui" line="630"/>
<source>Known Servers (updated on download)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="638"/>
+ <location filename="settingsdialog.ui" line="651"/>
<source>Preferred Servers (Drag &amp; Drop)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="673"/>
+ <location filename="settingsdialog.ui" line="686"/>
<source>Steam</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="679"/>
+ <location filename="settingsdialog.ui" line="692"/>
<source>Username</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="689"/>
+ <location filename="settingsdialog.ui" line="702"/>
<source>Password</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="719"/>
+ <location filename="settingsdialog.ui" line="732"/>
<source>If you save your steam user ID and password here, they will be used when logging into steam. Note, however, your password will be stored unencrypted, so make sure your computer is secure.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="746"/>
+ <location filename="settingsdialog.ui" line="759"/>
<source>Plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="771"/>
+ <location filename="settingsdialog.ui" line="784"/>
<source>Author:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="785"/>
+ <location filename="settingsdialog.ui" line="798"/>
<source>Version:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="799"/>
+ <location filename="settingsdialog.ui" line="812"/>
<source>Description:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="837"/>
+ <location filename="settingsdialog.ui" line="850"/>
<source>Key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="842"/>
+ <location filename="settingsdialog.ui" line="855"/>
<source>Value</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="854"/>
+ <location filename="settingsdialog.ui" line="867"/>
<source>Blacklisted Plugins (use &lt;del&gt; to remove):</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="865"/>
+ <location filename="settingsdialog.ui" line="878"/>
<source>Workarounds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="873"/>
+ <location filename="settingsdialog.ui" line="886"/>
<source>Steam App ID</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="893"/>
+ <location filename="settingsdialog.ui" line="906"/>
<source>The Steam AppID for your game</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="896"/>
+ <location filename="settingsdialog.ui" line="909"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
@@ -6492,17 +6508,17 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="927"/>
+ <location filename="settingsdialog.ui" line="940"/>
<source>Load Mechanism</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="947"/>
+ <location filename="settingsdialog.ui" line="960"/>
<source>Select loading mechanism. See help for details.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="950"/>
+ <location filename="settingsdialog.ui" line="963"/>
<source>Mod Organizer needs a dll to be injected into the game so all mods are visible to it.
There are several means to do this:
*Mod Organizer* (default) In this mode the Mod Organizer itself injects the dll. The disadvantage is that you always have to start the game through MO or a link created by it.
@@ -6513,47 +6529,28 @@ If you use the Steam version of Oblivion the default will NOT work. In this case
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="967"/>
- <source>NMM Version</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="settingsdialog.ui" line="987"/>
- <source>The Version of Nexus Mod Manager to impersonate.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="settingsdialog.ui" line="990"/>
- <source>Mod Organizer uses an API provided by the Nexus to provide features like checking for updates and downloading files. Unfortunately this API has not been made available officially to third party tools like MO so we have to impersonate the Nexus Mod Manager to be allowed in.
-On top of this Nexus has used the client identification to lock out outdated versions of NMM to force users to update. This means that MO also needs to impersonate the new version of NMM even if MO doesn&apos;t need an update. Therefore you can configure the version to identify as here.
-Please note that MO does identify itself as MO to the webserver, it&apos;s not lying about what it is. It is merely adding a &quot;compatible&quot; NMM version to the user agent.
-
-tl;dr-version: If Nexus-features don&apos;t work, insert the current version number of NMM here and try again.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="settingsdialog.ui" line="1017"/>
+ <location filename="settingsdialog.ui" line="983"/>
<source>Enforces that inactive ESPs and ESMs are never loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1020"/>
+ <location filename="settingsdialog.ui" line="986"/>
<source>It seems that the Games occasionally load ESP or ESM files even if they haven&apos;t been activated as plugins.
I don&apos;t yet know what the circumstances are, but user reports imply it is in some cases unwanted. If this is checked, ESPs and ESMs not checked in the List are invisible to the game and can not be loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1024"/>
+ <location filename="settingsdialog.ui" line="990"/>
<source>Hide inactive ESPs/ESMs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1031"/>
+ <location filename="settingsdialog.ui" line="997"/>
<source>Disable this to no longer display mods installed outside MO in the mod list (left pane). Assets from those mods will then be treated as having lowest mod priority together with the original game content.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1034"/>
+ <location filename="settingsdialog.ui" line="1000"/>
<source>By default Mod Organizer will display esp+bsa bundles installed with foreign tools as mods (left pane). This allows you to control their priority in relation to other mods. This is particularly useful if you also use Steam Workshop to install mods.
However, if you installed loose file mods outside MO which conflict with BSAs also installed outside MO those conflicts can&apos;t be resolved correctly.
@@ -6561,66 +6558,66 @@ If you disable this feature, MO will only display official DLCs this way. Please
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1040"/>
+ <location filename="settingsdialog.ui" line="1006"/>
<source>Display mods installed outside MO</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1050"/>
+ <location filename="settingsdialog.ui" line="1016"/>
<source>If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1053"/>
+ <location filename="settingsdialog.ui" line="1019"/>
<source>If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on)
Uncheck this if you want to use Mod Organizer with total conversions (like Nehrim) but be aware that the game will crash if required files are not enabled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1057"/>
+ <location filename="settingsdialog.ui" line="1023"/>
<source>Force-enable game files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1067"/>
- <location filename="settingsdialog.ui" line="1070"/>
+ <location filename="settingsdialog.ui" line="1033"/>
+ <location filename="settingsdialog.ui" line="1036"/>
<source>Disable this to prevent the GUI from being locked when running an executable. This may result in abnormal behavior.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1073"/>
+ <location filename="settingsdialog.ui" line="1039"/>
<source>Lock GUI when running executable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1083"/>
+ <location filename="settingsdialog.ui" line="1049"/>
<source>Enable parsing of Archives. This is an Experimental Feature. Has negative effects on performance and known incorrectness.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1086"/>
+ <location filename="settingsdialog.ui" line="1052"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;By default, MO will parse archive files (BSA, BA2) to calculate conflicts between the contents of the archive files and other loose files. This process has a noticeable cost in performance.&lt;/p&gt;&lt;p&gt;This feature should not be confused with the archive management feature offered by MO1. MO2 will only show conflicts with archives and will NOT load them into the game or program.&lt;/p&gt;&lt;p&gt;If you disable this feature, MO will only display conflicts between loose files.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1089"/>
+ <location filename="settingsdialog.ui" line="1055"/>
<source>Enable parsing of Archives (Experimental Feature)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1101"/>
- <location filename="settingsdialog.ui" line="1105"/>
+ <location filename="settingsdialog.ui" line="1067"/>
+ <location filename="settingsdialog.ui" line="1071"/>
<source>For Skyrim, this can be used instead of Archive Invalidation. It should make AI redundant for all Profiles.
For the other games this is not a sufficient replacement for AI!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1109"/>
+ <location filename="settingsdialog.ui" line="1075"/>
<source>Back-date BSAs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1120"/>
+ <location filename="settingsdialog.ui" line="1086"/>
<source>Add executables to the blacklist to prevent them from
accessing the virtual file system. This is useful to prevent
unintended programs from being hooked. Hooking unintended
@@ -6629,48 +6626,48 @@ programs you are intentionally running.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1127"/>
+ <location filename="settingsdialog.ui" line="1093"/>
<source>Add executables to the blacklist to prevent them from accessing the virtual file system. This is useful to prevent unintended programs from being hooked. Hooking unintended programs may affect the execution of these programs or the programs you are intentionally running.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1130"/>
+ <location filename="settingsdialog.ui" line="1096"/>
<source>Configure Executables Blacklist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1140"/>
- <location filename="settingsdialog.ui" line="1143"/>
+ <location filename="settingsdialog.ui" line="1106"/>
+ <location filename="settingsdialog.ui" line="1109"/>
<source>Resets the window geometries for all windows. This can be useful if a window becomes too small or too large, if a column becomes too thin or too wide, and in similar situations.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1146"/>
+ <location filename="settingsdialog.ui" line="1112"/>
<source>Reset Window Geometries</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1169"/>
+ <location filename="settingsdialog.ui" line="1135"/>
<source>These are workarounds for problems with Mod Organizer. Please make sure you read the help text before changing anything here.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1180"/>
+ <location filename="settingsdialog.ui" line="1146"/>
<source>Diagnostics</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1188"/>
+ <location filename="settingsdialog.ui" line="1154"/>
<source>Max Dumps To Keep</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1208"/>
+ <location filename="settingsdialog.ui" line="1174"/>
<source>Maximum number of crash dumps to keep on disk. Use 0 for unlimited.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1211"/>
+ <location filename="settingsdialog.ui" line="1177"/>
<source>
Maximum number of crash dumps to keep on disk. Use 0 for unlimited.
Set &quot;Crash Dumps&quot; above to None to disable crash dump collection.
@@ -6678,12 +6675,12 @@ programs you are intentionally running.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1223"/>
+ <location filename="settingsdialog.ui" line="1189"/>
<source>Hint: right click link and copy link location</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1226"/>
+ <location filename="settingsdialog.ui" line="1192"/>
<source>
Logs and crash dumps are stored under your current instance in the &lt;a href=&quot;LOGS_FULL_PATH&quot;&gt;LOGS_DIR&lt;/a&gt;
and &lt;a href=&quot;DUMPS_FULL_PATH&quot;&gt;DUMPS_DIR&lt;/a&gt; folders.
@@ -6693,17 +6690,17 @@ programs you are intentionally running.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1243"/>
+ <location filename="settingsdialog.ui" line="1209"/>
<source>Crash Dumps</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1250"/>
+ <location filename="settingsdialog.ui" line="1216"/>
<source>Decides which type of crash dumps are collected when injected processes crash.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1253"/>
+ <location filename="settingsdialog.ui" line="1219"/>
<source>
Decides which type of crash dumps are collected when injected processes crash.
&quot;None&quot; Disables the generation of crash dumps by MO.
@@ -6714,37 +6711,37 @@ programs you are intentionally running.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1263"/>
+ <location filename="settingsdialog.ui" line="1229"/>
<source>None</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1268"/>
+ <location filename="settingsdialog.ui" line="1234"/>
<source>Mini (recommended)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1273"/>
+ <location filename="settingsdialog.ui" line="1239"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1278"/>
+ <location filename="settingsdialog.ui" line="1244"/>
<source>Full</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1306"/>
+ <location filename="settingsdialog.ui" line="1272"/>
<source>Log Level</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1313"/>
+ <location filename="settingsdialog.ui" line="1279"/>
<source>Decides the amount of data printed to &quot;ModOrganizer.log&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1316"/>
+ <location filename="settingsdialog.ui" line="1282"/>
<source>
Decides the amount of data printed to &quot;ModOrganizer.log&quot;.
&quot;Debug&quot; produces very useful information for finding problems. There is usually no noteworthy performance impact but the file may become rather large. If this is a problem you may prefer the &quot;Info&quot; level for regluar use. On the &quot;Error&quot; level the log file usually remains empty.
@@ -6752,22 +6749,22 @@ programs you are intentionally running.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1323"/>
+ <location filename="settingsdialog.ui" line="1289"/>
<source>Debug</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1328"/>
+ <location filename="settingsdialog.ui" line="1294"/>
<source>Info (recommended)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1333"/>
+ <location filename="settingsdialog.ui" line="1299"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.ui" line="1338"/>
+ <location filename="settingsdialog.ui" line="1304"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
@@ -6782,12 +6779,12 @@ programs you are intentionally running.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="160"/>
+ <location filename="settingsdialog.cpp" line="147"/>
<source>Executables Blacklist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="161"/>
+ <location filename="settingsdialog.cpp" line="148"/>
<source>Enter one executable per line to be blacklisted from the virtual file system.
Mods and other virtualized files will not be visible to these executables and
any executables launched by them.
@@ -6798,47 +6795,47 @@ Example:
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="194"/>
+ <location filename="settingsdialog.cpp" line="181"/>
<source>Select base directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="205"/>
+ <location filename="settingsdialog.cpp" line="192"/>
<source>Select download directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="216"/>
+ <location filename="settingsdialog.cpp" line="203"/>
<source>Select mod directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="227"/>
+ <location filename="settingsdialog.cpp" line="214"/>
<source>Select cache directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="238"/>
+ <location filename="settingsdialog.cpp" line="225"/>
<source>Select profiles directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="249"/>
+ <location filename="settingsdialog.cpp" line="236"/>
<source>Select overwrite directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="259"/>
+ <location filename="settingsdialog.cpp" line="246"/>
<source>Select game executable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="338"/>
+ <location filename="settingsdialog.cpp" line="325"/>
<source>Confirm?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="settingsdialog.cpp" line="339"/>
+ <location filename="settingsdialog.cpp" line="326"/>
<source>This will make all dialogs show up again where you checked the &quot;Remember selection&quot;-box. Continue?</source>
<translation type="unfinished"></translation>
</message>
diff --git a/src/resources.qrc b/src/resources.qrc
index 5ed1780e..8645b27e 100644
--- a/src/resources.qrc
+++ b/src/resources.qrc
@@ -82,6 +82,7 @@
<file alias="archive_conflict_winner">resources/archive-conflict-winner.png</file>
<file alias="alternate_game_alt">resources/game-warning.png</file>
<file alias="alternate_game">resources/game-warning-16.png</file>
+ <file alias="tracked">resources/tracked.png</file>
</qresource>
<qresource prefix="/MO/gui/content">
<file alias="plugin">resources/contents/jigsaw-piece.png</file>
diff --git a/src/resources/tracked.png b/src/resources/tracked.png
new file mode 100644
index 00000000..11b1e8c8
--- /dev/null
+++ b/src/resources/tracked.png
Binary files differ