summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Rimpo <jrim@rimpo.org>2017-11-30 16:37:14 -0600
committerJeremy Rimpo <jrim@rimpo.org>2017-11-30 16:37:14 -0600
commitd7bc542b3d1a96a546d48850e61d3ecdc953c4cc (patch)
tree8a02758752b525a32876a687ae207962b7e5be9a /src
parent977d562976a06b9d98e08197d28dfca7cb3d229e (diff)
Implement mod/plugin highlighting when pair is selected
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt2
-rw-r--r--src/mainwindow.cpp15
-rw-r--r--src/mainwindow.h3
-rw-r--r--src/mainwindow.ui7
-rw-r--r--src/modinfo.cpp5
-rw-r--r--src/modinfo.h14
-rw-r--r--src/modinfooverwrite.cpp8
-rw-r--r--src/modinforegular.cpp10
-rw-r--r--src/modlist.cpp37
-rw-r--r--src/modlist.h3
-rw-r--r--src/organizer_en.ts812
-rw-r--r--src/pluginlist.cpp34
-rw-r--r--src/pluginlist.h3
-rw-r--r--src/pluginlistview.cpp58
-rw-r--r--src/pluginlistview.h24
15 files changed, 629 insertions, 406 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index d5ebf6ae..d603336c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -23,6 +23,7 @@ SET(organizer_SRCS
profile.cpp
pluginlistsortproxy.cpp
pluginlist.cpp
+ pluginlistview.cpp
overwriteinfodialog.cpp
nxmaccessmanager.cpp
nexusinterface.cpp
@@ -109,6 +110,7 @@ SET(organizer_HDRS
profile.h
pluginlistsortproxy.h
pluginlist.h
+ pluginlistview.h
overwriteinfodialog.h
nxmaccessmanager.h
nexusinterface.h
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 0a6e32c3..84860767 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -357,6 +357,9 @@ MainWindow::MainWindow(QSettings &initSettings
connect(this, SIGNAL(styleChanged(QString)), this, SLOT(updateStyle(QString)));
+ connect(ui->espList->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), this, SLOT(esplistSelectionsChanged(QItemSelection)));
+ connect(ui->modList->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), this, SLOT(modlistSelectionsChanged(QItemSelection)));
+
m_UpdateProblemsTimer.setSingleShot(true);
connect(&m_UpdateProblemsTimer, SIGNAL(timeout()), this, SLOT(updateProblemsButton()));
@@ -2121,6 +2124,18 @@ void MainWindow::modlistSelectionChanged(const QModelIndex &current, const QMode
ui->modList->verticalScrollBar()->repaint();
}
+void MainWindow::modlistSelectionsChanged(const QItemSelection &selected)
+{
+ m_OrganizerCore.pluginList()->highlightPlugins(selected, *m_OrganizerCore.directoryStructure());
+ ui->espList->verticalScrollBar()->repaint();
+}
+
+void MainWindow::esplistSelectionsChanged(const QItemSelection &selected)
+{
+ m_OrganizerCore.modList()->highlightMods(selected, *m_OrganizerCore.directoryStructure());
+ ui->modList->verticalScrollBar()->repaint();
+}
+
void MainWindow::modListSortIndicatorChanged(int, Qt::SortOrder)
{
ui->modList->verticalScrollBar()->repaint();
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 06c51203..cec6c407 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -520,6 +520,9 @@ private slots:
void modlistSelectionChanged(const QModelIndex &current, const QModelIndex &previous);
void modListSortIndicatorChanged(int column, Qt::SortOrder order);
+ void modlistSelectionsChanged(const QItemSelection &current);
+ void esplistSelectionsChanged(const QItemSelection &current);
+
private slots: // ui slots
// actions
void on_actionAdd_Profile_triggered();
diff --git a/src/mainwindow.ui b/src/mainwindow.ui
index 743ce012..26b9e375 100644
--- a/src/mainwindow.ui
+++ b/src/mainwindow.ui
@@ -791,7 +791,7 @@ p, li { white-space: pre-wrap; }
</layout>
</item>
<item>
- <widget class="QTreeView" name="espList">
+ <widget class="PluginListView" name="espList">
<property name="minimumSize">
<size>
<width>250</width>
@@ -1412,6 +1412,11 @@ Right now this has very limited functionality</string>
<extends>QTreeView</extends>
<header>modlistview.h</header>
</customwidget>
+ <customwidget>
+ <class>PluginListView</class>
+ <extends>QTreeView</extends>
+ <header>pluginlistview.h</header>
+ </customwidget>
</customwidgets>
<resources>
<include location="resources.qrc"/>
diff --git a/src/modinfo.cpp b/src/modinfo.cpp
index 5d3c1e41..77df6216 100644
--- a/src/modinfo.cpp
+++ b/src/modinfo.cpp
@@ -301,6 +301,11 @@ void ModInfo::setVersion(const VersionInfo &version)
m_Version = version;
}
+void ModInfo::setPluginSelected(const bool &isSelected)
+{
+ m_PluginSelected = isSelected;
+}
+
void ModInfo::addCategory(const QString &categoryName)
{
int id = CategoryFactory::instance().getCategoryID(categoryName);
diff --git a/src/modinfo.h b/src/modinfo.h
index 1485a4b3..c62df549 100644
--- a/src/modinfo.h
+++ b/src/modinfo.h
@@ -67,7 +67,8 @@ public:
FLAG_CONFLICT_OVERWRITE,
FLAG_CONFLICT_OVERWRITTEN,
FLAG_CONFLICT_MIXED,
- FLAG_CONFLICT_REDUNDANT
+ FLAG_CONFLICT_REDUNDANT,
+ FLAG_PLUGIN_SELECTED
};
enum EContent {
@@ -89,7 +90,8 @@ public:
HIGHLIGHT_NONE = 0,
HIGHLIGHT_INVALID = 1,
HIGHLIGHT_CENTER = 2,
- HIGHLIGHT_IMPORTANT = 4
+ HIGHLIGHT_IMPORTANT = 4,
+ HIGHLIGHT_PLUGIN = 8
};
enum EEndorsedState {
@@ -269,6 +271,12 @@ public:
virtual void setVersion(const MOBase::VersionInfo &version);
/**
+ * @brief Controls if mod should be highlighted based on plugin selection
+ * @param isSelected whether or not the plugin has a selected mod
+ **/
+ virtual void setPluginSelected(const bool &isSelected);
+
+ /**
* @brief set the newest version of this mod on the nexus
*
* this can be used to overwrite the version of a mod without actually
@@ -599,6 +607,8 @@ protected:
MOBase::VersionInfo m_Version;
+ bool m_PluginSelected = false;
+
private:
static QMutex s_Mutex;
diff --git a/src/modinfooverwrite.cpp b/src/modinfooverwrite.cpp
index 0104998a..6b8c9bd9 100644
--- a/src/modinfooverwrite.cpp
+++ b/src/modinfooverwrite.cpp
@@ -29,12 +29,18 @@ std::vector<ModInfo::EFlag> ModInfoOverwrite::getFlags() const
{
std::vector<ModInfo::EFlag> result;
result.push_back(FLAG_OVERWRITE);
+ if (m_PluginSelected)
+ result.push_back(FLAG_PLUGIN_SELECTED);
return result;
}
int ModInfoOverwrite::getHighlight() const
{
- return (isValid() ? HIGHLIGHT_IMPORTANT : HIGHLIGHT_INVALID) | HIGHLIGHT_CENTER;
+ int highlight = (isValid() ? HIGHLIGHT_IMPORTANT : HIGHLIGHT_INVALID) | HIGHLIGHT_CENTER;
+ auto flags = getFlags();
+ if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_PLUGIN_SELECTED) != flags.end())
+ highlight |= HIGHLIGHT_PLUGIN;
+ return highlight;
}
QString ModInfoOverwrite::getDescription() const
diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp
index c296d792..9d94002b 100644
--- a/src/modinforegular.cpp
+++ b/src/modinforegular.cpp
@@ -420,6 +420,9 @@ std::vector<ModInfo::EFlag> ModInfoRegular::getFlags() const
if (m_Notes.length() != 0) {
result.push_back(ModInfo::FLAG_NOTES);
}
+ if (m_PluginSelected) {
+ result.push_back(ModInfo::FLAG_PLUGIN_SELECTED);
+ }
return result;
}
@@ -471,7 +474,12 @@ std::vector<ModInfo::EContent> ModInfoRegular::getContents() const
int ModInfoRegular::getHighlight() const
{
- return isValid() ? HIGHLIGHT_NONE: HIGHLIGHT_INVALID;
+ if (!isValid())
+ return HIGHLIGHT_INVALID;
+ auto flags = getFlags();
+ if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_PLUGIN_SELECTED) != flags.end())
+ return HIGHLIGHT_PLUGIN;
+ return HIGHLIGHT_NONE;
}
diff --git a/src/modlist.cpp b/src/modlist.cpp
index ffbdee95..c6341251 100644
--- a/src/modlist.cpp
+++ b/src/modlist.cpp
@@ -338,6 +338,7 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const
int highlight = modInfo->getHighlight();
if (highlight & ModInfo::HIGHLIGHT_IMPORTANT) return QBrush(Qt::darkRed);
else if (highlight & ModInfo::HIGHLIGHT_INVALID) return QBrush(Qt::darkGray);
+ else if (highlight & ModInfo::HIGHLIGHT_PLUGIN) return QBrush(Qt::darkBlue);
} else if (column == COL_VERSION) {
if (!modInfo->getNewestVersion().isValid()) {
return QVariant();
@@ -350,7 +351,9 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const
return QVariant();
} else if ((role == Qt::BackgroundRole)
|| (role == ViewMarkingScrollBar::DEFAULT_ROLE)) {
- if (m_Overwrite.find(modIndex) != m_Overwrite.end()) {
+ if (modInfo->getHighlight() & ModInfo::HIGHLIGHT_PLUGIN) {
+ return QColor(0, 0, 255, 32);
+ } else if (m_Overwrite.find(modIndex) != m_Overwrite.end()) {
return QColor(0, 255, 0, 32);
} else if (m_Overwritten.find(modIndex) != m_Overwritten.end()) {
return QColor(255, 0, 0, 32);
@@ -685,6 +688,38 @@ int ModList::timeElapsedSinceLastChecked() const
return m_LastCheck.elapsed();
}
+void ModList::highlightMods(const QItemSelection &selected, const MOShared::DirectoryEntry &directoryEntry)
+{
+ for (unsigned int i = 0; i < ModInfo::getNumMods(); ++i) {
+ ModInfo::getByIndex(i)->setPluginSelected(false);
+ }
+ for (QModelIndex idx : selected.indexes()) {
+ QString modName = idx.data().toString();
+
+ const MOShared::FileEntry::Ptr fileEntry = directoryEntry.findFile(modName.toStdWString());
+ if (fileEntry.get() != nullptr) {
+ QString fileName;
+ bool archive = false;
+ std::vector<int> origins;
+ {
+ std::vector<int> alternatives = fileEntry->getAlternatives();
+ origins.push_back(fileEntry->getOrigin(archive));
+ origins.insert(origins.end(), alternatives.begin(), alternatives.end());
+ }
+ for (int originId : origins) {
+ MOShared::FilesOrigin &origin = directoryEntry.getOriginByID(originId);
+ for (unsigned int i = 0; i < ModInfo::getNumMods(); ++i) {
+ if (ModInfo::getByIndex(i)->internalName() == QString::fromStdWString(origin.getName())) {
+ ModInfo::getByIndex(i)->setPluginSelected(true);
+ break;
+ }
+ }
+ }
+ }
+ }
+ notifyChange(0, rowCount() - 1);
+}
+
IModList::ModStates ModList::state(unsigned int modIndex) const
{
IModList::ModStates result;
diff --git a/src/modlist.h b/src/modlist.h
index 358fd583..bd715107 100644
--- a/src/modlist.h
+++ b/src/modlist.h
@@ -27,6 +27,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "profile.h"
#include <imodlist.h>
+#include <directoryentry.h>
#include <QFile>
#include <QListWidget>
@@ -113,6 +114,8 @@ public:
int timeElapsedSinceLastChecked() const;
+ void highlightMods(const QItemSelection &selected, const MOShared::DirectoryEntry &directoryEntry);
+
public:
/// \copydoc MOBase::IModList::displayName
diff --git a/src/organizer_en.ts b/src/organizer_en.ts
index f8e6ffaa..cd6277df 100644
--- a/src/organizer_en.ts
+++ b/src/organizer_en.ts
@@ -820,148 +820,148 @@ p, li { white-space: pre-wrap; }
<context>
<name>EditExecutablesDialog</name>
<message>
- <location filename="editexecutablesdialog.ui" line="14"/>
+ <location filename="editexecutablesdialog.ui" line="20"/>
<source>Modify Executables</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="20"/>
+ <location filename="editexecutablesdialog.ui" line="26"/>
<source>List of configured executables</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="23"/>
+ <location filename="editexecutablesdialog.ui" line="29"/>
<source>This is a list of your configured executables. Executables in grey are automatically recognised and can not be modified.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="41"/>
+ <location filename="editexecutablesdialog.ui" line="47"/>
<source>Title</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="48"/>
- <location filename="editexecutablesdialog.ui" line="51"/>
+ <location filename="editexecutablesdialog.ui" line="54"/>
+ <location filename="editexecutablesdialog.ui" line="57"/>
<source>Name of the executable. This is only for display purposes.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="62"/>
+ <location filename="editexecutablesdialog.ui" line="68"/>
<source>Binary</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="69"/>
- <location filename="editexecutablesdialog.ui" line="72"/>
+ <location filename="editexecutablesdialog.ui" line="75"/>
+ <location filename="editexecutablesdialog.ui" line="78"/>
<source>Binary to run</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="79"/>
+ <location filename="editexecutablesdialog.ui" line="85"/>
<source>Browse filesystem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="82"/>
+ <location filename="editexecutablesdialog.ui" line="88"/>
<source>Browse filesystem for the executable to run.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="85"/>
- <location filename="editexecutablesdialog.ui" line="106"/>
+ <location filename="editexecutablesdialog.ui" line="91"/>
+ <location filename="editexecutablesdialog.ui" line="112"/>
<source>...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="96"/>
+ <location filename="editexecutablesdialog.ui" line="102"/>
<source>Start in</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="117"/>
+ <location filename="editexecutablesdialog.ui" line="123"/>
<source>Arguments</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="124"/>
- <location filename="editexecutablesdialog.ui" line="127"/>
+ <location filename="editexecutablesdialog.ui" line="130"/>
+ <location filename="editexecutablesdialog.ui" line="133"/>
<source>Arguments to pass to the application</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="138"/>
+ <location filename="editexecutablesdialog.ui" line="144"/>
<source>Allow the Steam AppID to be used for this executable to be changed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="141"/>
+ <location filename="editexecutablesdialog.ui" line="147"/>
<source>Allow the Steam AppID to be used for this executable to be changed.
Every game/tool distributed through Steam has a unique ID. MO needs to know this ID to start those programs directly, otherwise the program is started by steam and then MO will not work. By default, MO will use the AppID for the game.
Right now the only case I know of where this needs to be overwritten is for the Skyrim Creation Kit which has its own AppID. This overwrite is already preconfigured.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="146"/>
+ <location filename="editexecutablesdialog.ui" line="152"/>
<source>Overwrite Steam AppID</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="156"/>
+ <location filename="editexecutablesdialog.ui" line="162"/>
<source>Steam AppID to use for this executable that differs from the games AppID.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="159"/>
+ <location filename="editexecutablesdialog.ui" line="165"/>
<source>Steam AppID to use for this executable that differs from the games AppID.
Every game/tool distributed through Steam has a unique ID. MO needs to know this ID to start those programs directly, otherwise the program is started by steam and then MO will not work. By default, MO will use the AppID for the game (usually 72850).
Right now the only case I know of where this needs to be overwritten is for the Skyrim Creation Kit which has its own AppID (usually 202480). This overwrite is already preconfigured.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="172"/>
+ <location filename="editexecutablesdialog.ui" line="178"/>
<source>If this is enabled, new files are created in the specified mod instead of the &quot;Overwrite&quot; mod.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="175"/>
+ <location filename="editexecutablesdialog.ui" line="181"/>
<source>Create Files in Mod instead of Overwrite (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="191"/>
+ <location filename="editexecutablesdialog.ui" line="197"/>
<source>Use Application&apos;s Icon for shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="198"/>
+ <location filename="editexecutablesdialog.ui" line="204"/>
<source>(*) This setting is profile-specific</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="207"/>
- <location filename="editexecutablesdialog.ui" line="210"/>
+ <location filename="editexecutablesdialog.ui" line="213"/>
+ <location filename="editexecutablesdialog.ui" line="216"/>
<source>Add an executable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="213"/>
+ <location filename="editexecutablesdialog.ui" line="219"/>
<location filename="editexecutablesdialog.cpp" line="214"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="224"/>
- <location filename="editexecutablesdialog.ui" line="227"/>
+ <location filename="editexecutablesdialog.ui" line="230"/>
+ <location filename="editexecutablesdialog.ui" line="233"/>
<source>Remove the selected executable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="230"/>
+ <location filename="editexecutablesdialog.ui" line="236"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="editexecutablesdialog.ui" line="258"/>
+ <location filename="editexecutablesdialog.ui" line="264"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
@@ -1131,87 +1131,87 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="installationmanager.cpp" line="188"/>
- <location filename="installationmanager.cpp" line="275"/>
+ <location filename="installationmanager.cpp" line="276"/>
<source>Extracting files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="installationmanager.cpp" line="464"/>
+ <location filename="installationmanager.cpp" line="467"/>
<source>failed to create backup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="installationmanager.cpp" line="473"/>
+ <location filename="installationmanager.cpp" line="476"/>
<source>Mod Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="installationmanager.cpp" line="473"/>
+ <location filename="installationmanager.cpp" line="476"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="installationmanager.cpp" line="526"/>
+ <location filename="installationmanager.cpp" line="529"/>
<source>Invalid name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="installationmanager.cpp" line="527"/>
+ <location filename="installationmanager.cpp" line="530"/>
<source>The name you entered is invalid, please enter a different one.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="installationmanager.cpp" line="652"/>
+ <location filename="installationmanager.cpp" line="656"/>
<source>File format &quot;%1&quot; not supported</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="installationmanager.cpp" line="813"/>
+ <location filename="installationmanager.cpp" line="817"/>
<source>None of the available installer plugins were able to handle that archive</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="installationmanager.cpp" line="823"/>
+ <location filename="installationmanager.cpp" line="827"/>
<source>no error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="installationmanager.cpp" line="826"/>
+ <location filename="installationmanager.cpp" line="830"/>
<source>7z.dll not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="installationmanager.cpp" line="829"/>
+ <location filename="installationmanager.cpp" line="833"/>
<source>7z.dll isn&apos;t valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="installationmanager.cpp" line="832"/>
+ <location filename="installationmanager.cpp" line="836"/>
<source>archive not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="installationmanager.cpp" line="835"/>
+ <location filename="installationmanager.cpp" line="839"/>
<source>failed to open archive</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="installationmanager.cpp" line="838"/>
+ <location filename="installationmanager.cpp" line="842"/>
<source>unsupported archive type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="installationmanager.cpp" line="841"/>
+ <location filename="installationmanager.cpp" line="845"/>
<source>internal library error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="installationmanager.cpp" line="844"/>
+ <location filename="installationmanager.cpp" line="848"/>
<source>archive invalid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="installationmanager.cpp" line="848"/>
+ <location filename="installationmanager.cpp" line="852"/>
<source>unknown archive error</source>
<translation type="unfinished"></translation>
</message>
@@ -1461,8 +1461,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="mainwindow.ui" line="931"/>
- <location filename="mainwindow.cpp" line="2906"/>
- <location filename="mainwindow.cpp" line="3661"/>
+ <location filename="mainwindow.cpp" line="2929"/>
+ <location filename="mainwindow.cpp" line="3684"/>
<source>Refresh</source>
<translation type="unfinished"></translation>
</message>
@@ -1641,7 +1641,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="mainwindow.ui" line="1331"/>
- <location filename="mainwindow.cpp" line="3602"/>
+ <location filename="mainwindow.cpp" line="3625"/>
<source>Update</source>
<translation type="unfinished"></translation>
</message>
@@ -1652,7 +1652,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="mainwindow.ui" line="1346"/>
- <location filename="mainwindow.cpp" line="597"/>
+ <location filename="mainwindow.cpp" line="605"/>
<source>No Problems</source>
<translation type="unfinished"></translation>
</message>
@@ -1682,7 +1682,7 @@ Right now this has very limited functionality</source>
</message>
<message>
<location filename="mainwindow.ui" line="1379"/>
- <location filename="mainwindow.cpp" line="3680"/>
+ <location filename="mainwindow.cpp" line="3703"/>
<source>Endorse Mod Organizer</source>
<translation type="unfinished"></translation>
</message>
@@ -1707,579 +1707,579 @@ Right now this has very limited functionality</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="286"/>
+ <location filename="mainwindow.cpp" line="291"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="287"/>
+ <location filename="mainwindow.cpp" line="292"/>
<source>Desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="288"/>
+ <location filename="mainwindow.cpp" line="293"/>
<source>Start Menu</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="585"/>
+ <location filename="mainwindow.cpp" line="593"/>
<source>Problems</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="586"/>
+ <location filename="mainwindow.cpp" line="594"/>
<source>There are potential problems with your setup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="598"/>
+ <location filename="mainwindow.cpp" line="606"/>
<source>Everything seems to be in order</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="659"/>
+ <location filename="mainwindow.cpp" line="667"/>
<source>Help on UI</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="663"/>
+ <location filename="mainwindow.cpp" line="671"/>
<source>Documentation Wiki</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="667"/>
+ <location filename="mainwindow.cpp" line="675"/>
<source>Report Issue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="671"/>
+ <location filename="mainwindow.cpp" line="679"/>
<source>Tutorials</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="710"/>
+ <location filename="mainwindow.cpp" line="718"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="711"/>
+ <location filename="mainwindow.cpp" line="719"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="763"/>
+ <location filename="mainwindow.cpp" line="771"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="764"/>
+ <location filename="mainwindow.cpp" line="772"/>
<source>Please enter a name for the new profile</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="772"/>
+ <location filename="mainwindow.cpp" line="780"/>
<source>failed to create profile: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="816"/>
+ <location filename="mainwindow.cpp" line="824"/>
<source>Show tutorial?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="817"/>
+ <location filename="mainwindow.cpp" line="825"/>
<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="850"/>
+ <location filename="mainwindow.cpp" line="859"/>
<source>Downloads in progress</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="851"/>
+ <location filename="mainwindow.cpp" line="860"/>
<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="953"/>
+ <location filename="mainwindow.cpp" line="963"/>
<source>Plugin &quot;%1&quot; failed: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="955"/>
+ <location filename="mainwindow.cpp" line="965"/>
<source>Plugin &quot;%1&quot; failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="992"/>
+ <location filename="mainwindow.cpp" line="1002"/>
<source>Browse Mod Page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1126"/>
+ <location filename="mainwindow.cpp" line="1136"/>
<source>Also in: &lt;br&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1137"/>
+ <location filename="mainwindow.cpp" line="1147"/>
<source>No conflict</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1249"/>
+ <location filename="mainwindow.cpp" line="1259"/>
<source>&lt;Edit...&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1398"/>
+ <location filename="mainwindow.cpp" line="1408"/>
<source>Activating Network Proxy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1531"/>
+ <location filename="mainwindow.cpp" line="1541"/>
<source>Choose Mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1532"/>
+ <location filename="mainwindow.cpp" line="1542"/>
<source>Mod Archive</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1694"/>
+ <location filename="mainwindow.cpp" line="1704"/>
<source>Start Tutorial?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1695"/>
+ <location filename="mainwindow.cpp" line="1705"/>
<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="1830"/>
+ <location filename="mainwindow.cpp" line="1840"/>
<source>failed to spawn notepad.exe: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1858"/>
+ <location filename="mainwindow.cpp" line="1868"/>
<source>failed to open %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1932"/>
+ <location filename="mainwindow.cpp" line="1942"/>
<source>failed to change origin name: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1955"/>
+ <location filename="mainwindow.cpp" line="1966"/>
<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="1979"/>
+ <location filename="mainwindow.cpp" line="1990"/>
<source>&lt;Contains %1&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2014"/>
+ <location filename="mainwindow.cpp" line="2025"/>
<source>&lt;Checked&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2015"/>
+ <location filename="mainwindow.cpp" line="2026"/>
<source>&lt;Unchecked&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2016"/>
+ <location filename="mainwindow.cpp" line="2027"/>
<source>&lt;Update&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2017"/>
+ <location filename="mainwindow.cpp" line="2028"/>
<source>&lt;Managed by MO&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2018"/>
+ <location filename="mainwindow.cpp" line="2029"/>
<source>&lt;Managed outside MO&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2019"/>
+ <location filename="mainwindow.cpp" line="2030"/>
<source>&lt;No category&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2020"/>
+ <location filename="mainwindow.cpp" line="2031"/>
<source>&lt;Conflicted&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2021"/>
+ <location filename="mainwindow.cpp" line="2032"/>
<source>&lt;Not Endorsed&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2067"/>
+ <location filename="mainwindow.cpp" line="2078"/>
<source>failed to rename mod: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2080"/>
+ <location filename="mainwindow.cpp" line="2091"/>
<source>Overwrite?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2081"/>
+ <location filename="mainwindow.cpp" line="2092"/>
<source>This will replace the existing mod &quot;%1&quot;. Continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2084"/>
+ <location filename="mainwindow.cpp" line="2095"/>
<source>failed to remove mod &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2088"/>
- <location filename="mainwindow.cpp" line="3500"/>
- <location filename="mainwindow.cpp" line="3524"/>
+ <location filename="mainwindow.cpp" line="2099"/>
+ <location filename="mainwindow.cpp" line="3523"/>
+ <location filename="mainwindow.cpp" line="3547"/>
<source>failed to rename &quot;%1&quot; to &quot;%2&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2136"/>
- <location filename="mainwindow.cpp" line="2817"/>
- <location filename="mainwindow.cpp" line="2825"/>
- <location filename="mainwindow.cpp" line="3083"/>
+ <location filename="mainwindow.cpp" line="2159"/>
+ <location filename="mainwindow.cpp" line="2840"/>
+ <location filename="mainwindow.cpp" line="2848"/>
+ <location filename="mainwindow.cpp" line="3106"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2137"/>
+ <location filename="mainwindow.cpp" line="2160"/>
<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="2148"/>
+ <location filename="mainwindow.cpp" line="2171"/>
<source>failed to remove mod: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2183"/>
- <location filename="mainwindow.cpp" line="2186"/>
+ <location filename="mainwindow.cpp" line="2206"/>
+ <location filename="mainwindow.cpp" line="2209"/>
<source>Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2183"/>
+ <location filename="mainwindow.cpp" line="2206"/>
<source>Installation file no longer exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2187"/>
+ <location filename="mainwindow.cpp" line="2210"/>
<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="2204"/>
+ <location filename="mainwindow.cpp" line="2227"/>
<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="2220"/>
- <location filename="mainwindow.cpp" line="2247"/>
+ <location filename="mainwindow.cpp" line="2243"/>
+ <location filename="mainwindow.cpp" line="2270"/>
<source>You need to be logged in with Nexus to endorse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2295"/>
+ <location filename="mainwindow.cpp" line="2318"/>
<source>Failed to display overwrite dialog: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2424"/>
+ <location filename="mainwindow.cpp" line="2447"/>
<source>Nexus ID for this Mod is unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2434"/>
+ <location filename="mainwindow.cpp" line="2457"/>
<source>Web page for this mod is unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2461"/>
- <location filename="mainwindow.cpp" line="2488"/>
- <location filename="mainwindow.cpp" line="2934"/>
+ <location filename="mainwindow.cpp" line="2484"/>
+ <location filename="mainwindow.cpp" line="2511"/>
+ <location filename="mainwindow.cpp" line="2957"/>
<source>Create Mod...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2462"/>
+ <location filename="mainwindow.cpp" line="2485"/>
<source>This will create an empty mod.
Please enter a name:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2471"/>
- <location filename="mainwindow.cpp" line="2498"/>
+ <location filename="mainwindow.cpp" line="2494"/>
+ <location filename="mainwindow.cpp" line="2521"/>
<source>A mod with this name already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2489"/>
+ <location filename="mainwindow.cpp" line="2512"/>
<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="2729"/>
+ <location filename="mainwindow.cpp" line="2752"/>
<source>Not logged in, endorsement information will be wrong</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2737"/>
+ <location filename="mainwindow.cpp" line="2760"/>
<source>Continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2738"/>
+ <location filename="mainwindow.cpp" line="2761"/>
<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="2758"/>
- <location filename="mainwindow.cpp" line="3570"/>
+ <location filename="mainwindow.cpp" line="2781"/>
+ <location filename="mainwindow.cpp" line="3593"/>
<source>Sorry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2759"/>
+ <location filename="mainwindow.cpp" line="2782"/>
<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="2817"/>
+ <location filename="mainwindow.cpp" line="2840"/>
<source>Really enable all visible mods?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2825"/>
+ <location filename="mainwindow.cpp" line="2848"/>
<source>Really disable all visible mods?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2833"/>
+ <location filename="mainwindow.cpp" line="2856"/>
<source>Choose what to export</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2835"/>
+ <location filename="mainwindow.cpp" line="2858"/>
<source>Everything</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2835"/>
+ <location filename="mainwindow.cpp" line="2858"/>
<source>All installed mods are included in the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2836"/>
+ <location filename="mainwindow.cpp" line="2859"/>
<source>Active Mods</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2836"/>
+ <location filename="mainwindow.cpp" line="2859"/>
<source>Only active (checked) mods from your current profile are included</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2837"/>
+ <location filename="mainwindow.cpp" line="2860"/>
<source>Visible</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2837"/>
+ <location filename="mainwindow.cpp" line="2860"/>
<source>All mods visible in the mod list are included</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2880"/>
+ <location filename="mainwindow.cpp" line="2903"/>
<source>export failed: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2897"/>
+ <location filename="mainwindow.cpp" line="2920"/>
<source>Install Mod...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2899"/>
+ <location filename="mainwindow.cpp" line="2922"/>
<source>Create empty mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2901"/>
+ <location filename="mainwindow.cpp" line="2924"/>
<source>Enable all visible</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2902"/>
+ <location filename="mainwindow.cpp" line="2925"/>
<source>Disable all visible</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2904"/>
+ <location filename="mainwindow.cpp" line="2927"/>
<source>Check all for update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2908"/>
+ <location filename="mainwindow.cpp" line="2931"/>
<source>Export to csv...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2927"/>
+ <location filename="mainwindow.cpp" line="2950"/>
<source>All Mods</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2933"/>
+ <location filename="mainwindow.cpp" line="2956"/>
<source>Sync to Mods...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2937"/>
+ <location filename="mainwindow.cpp" line="2960"/>
<source>Restore Backup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2938"/>
+ <location filename="mainwindow.cpp" line="2961"/>
<source>Remove Backup...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2942"/>
+ <location filename="mainwindow.cpp" line="2965"/>
<source>Add/Remove Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2947"/>
+ <location filename="mainwindow.cpp" line="2970"/>
<source>Replace Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2952"/>
+ <location filename="mainwindow.cpp" line="2975"/>
<source>Primary Category</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2958"/>
+ <location filename="mainwindow.cpp" line="2981"/>
<source>Change versioning scheme</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2962"/>
+ <location filename="mainwindow.cpp" line="2985"/>
<source>Un-ignore update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2964"/>
+ <location filename="mainwindow.cpp" line="2987"/>
<source>Ignore update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2969"/>
+ <location filename="mainwindow.cpp" line="2992"/>
<source>Rename Mod...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2970"/>
+ <location filename="mainwindow.cpp" line="2993"/>
<source>Remove Mod...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2971"/>
+ <location filename="mainwindow.cpp" line="2994"/>
<source>Reinstall Mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2975"/>
+ <location filename="mainwindow.cpp" line="2998"/>
<source>Un-Endorse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2978"/>
- <location filename="mainwindow.cpp" line="2982"/>
+ <location filename="mainwindow.cpp" line="3001"/>
+ <location filename="mainwindow.cpp" line="3005"/>
<source>Endorse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2979"/>
+ <location filename="mainwindow.cpp" line="3002"/>
<source>Won&apos;t endorse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2985"/>
+ <location filename="mainwindow.cpp" line="3008"/>
<source>Endorsement state unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2994"/>
+ <location filename="mainwindow.cpp" line="3017"/>
<source>Ignore missing data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="2998"/>
+ <location filename="mainwindow.cpp" line="3021"/>
<source>Visit on Nexus</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3000"/>
+ <location filename="mainwindow.cpp" line="3023"/>
<source>Visit web page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3003"/>
+ <location filename="mainwindow.cpp" line="3026"/>
<source>Open in explorer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3007"/>
+ <location filename="mainwindow.cpp" line="3030"/>
<source>Information...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3014"/>
- <location filename="mainwindow.cpp" line="4077"/>
+ <location filename="mainwindow.cpp" line="3037"/>
+ <location filename="mainwindow.cpp" line="4100"/>
<source>Exception: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3016"/>
- <location filename="mainwindow.cpp" line="4079"/>
+ <location filename="mainwindow.cpp" line="3039"/>
+ <location filename="mainwindow.cpp" line="4102"/>
<source>Unknown exception</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3044"/>
+ <location filename="mainwindow.cpp" line="3067"/>
<source>&lt;All&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3046"/>
+ <location filename="mainwindow.cpp" line="3069"/>
<source>&lt;Multiple&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3080"/>
+ <location filename="mainwindow.cpp" line="3103"/>
<source>%1 more</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="mainwindow.cpp" line="3084"/>
+ <location filename="mainwindow.cpp" line="3107"/>
<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>
@@ -2287,12 +2287,12 @@ This function will guess the versioning scheme under the assumption that the ins
</translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3129"/>
+ <location filename="mainwindow.cpp" line="3152"/>
<source>Enable Mods...</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="mainwindow.cpp" line="3144"/>
+ <location filename="mainwindow.cpp" line="3167"/>
<source>Delete %n save(s)</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -2300,319 +2300,319 @@ This function will guess the versioning scheme under the assumption that the ins
</translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3186"/>
+ <location filename="mainwindow.cpp" line="3209"/>
<source>failed to remove %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3208"/>
+ <location filename="mainwindow.cpp" line="3231"/>
<source>failed to create %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3250"/>
+ <location filename="mainwindow.cpp" line="3273"/>
<source>Can&apos;t change download directory while downloads are in progress!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3372"/>
+ <location filename="mainwindow.cpp" line="3395"/>
<source>failed to write to file %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3378"/>
+ <location filename="mainwindow.cpp" line="3401"/>
<source>%1 written</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3419"/>
+ <location filename="mainwindow.cpp" line="3442"/>
<source>Select binary</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3419"/>
+ <location filename="mainwindow.cpp" line="3442"/>
<source>Binary</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3445"/>
+ <location filename="mainwindow.cpp" line="3468"/>
<source>Enter Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3446"/>
+ <location filename="mainwindow.cpp" line="3469"/>
<source>Please enter a name for the executable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3460"/>
+ <location filename="mainwindow.cpp" line="3483"/>
<source>Not an executable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3460"/>
+ <location filename="mainwindow.cpp" line="3483"/>
<source>This is not a recognized executable.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3485"/>
- <location filename="mainwindow.cpp" line="3510"/>
+ <location filename="mainwindow.cpp" line="3508"/>
+ <location filename="mainwindow.cpp" line="3533"/>
<source>Replace file?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3485"/>
+ <location filename="mainwindow.cpp" line="3508"/>
<source>There already is a hidden version of this file. Replace it?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3488"/>
- <location filename="mainwindow.cpp" line="3513"/>
+ <location filename="mainwindow.cpp" line="3511"/>
+ <location filename="mainwindow.cpp" line="3536"/>
<source>File operation failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3488"/>
- <location filename="mainwindow.cpp" line="3513"/>
+ <location filename="mainwindow.cpp" line="3511"/>
+ <location filename="mainwindow.cpp" line="3536"/>
<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="3510"/>
+ <location filename="mainwindow.cpp" line="3533"/>
<source>There already is a visible version of this file. Replace it?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3543"/>
+ <location filename="mainwindow.cpp" line="3566"/>
<source>file not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3556"/>
+ <location filename="mainwindow.cpp" line="3579"/>
<source>failed to generate preview for %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3570"/>
+ <location filename="mainwindow.cpp" line="3593"/>
<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="3604"/>
+ <location filename="mainwindow.cpp" line="3627"/>
<source>Update available</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3641"/>
+ <location filename="mainwindow.cpp" line="3664"/>
<source>Open/Execute</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3642"/>
+ <location filename="mainwindow.cpp" line="3665"/>
<source>Add as Executable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3646"/>
+ <location filename="mainwindow.cpp" line="3669"/>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3652"/>
+ <location filename="mainwindow.cpp" line="3675"/>
<source>Un-Hide</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3654"/>
+ <location filename="mainwindow.cpp" line="3677"/>
<source>Hide</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3660"/>
+ <location filename="mainwindow.cpp" line="3683"/>
<source>Write To File...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3681"/>
+ <location filename="mainwindow.cpp" line="3704"/>
<source>Do you want to endorse Mod Organizer on %1 now?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3784"/>
+ <location filename="mainwindow.cpp" line="3807"/>
<source>Thank you!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3784"/>
+ <location filename="mainwindow.cpp" line="3807"/>
<source>Thank you for your endorsement!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3819"/>
+ <location filename="mainwindow.cpp" line="3842"/>
<source>Request to Nexus failed: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3834"/>
- <location filename="mainwindow.cpp" line="3885"/>
+ <location filename="mainwindow.cpp" line="3857"/>
+ <location filename="mainwindow.cpp" line="3908"/>
<source>failed to read %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3846"/>
- <location filename="mainwindow.cpp" line="4264"/>
+ <location filename="mainwindow.cpp" line="3869"/>
+ <location filename="mainwindow.cpp" line="4287"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3846"/>
+ <location filename="mainwindow.cpp" line="3869"/>
<source>failed to extract %1 (errorcode %2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3877"/>
+ <location filename="mainwindow.cpp" line="3900"/>
<source>Extract BSA</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3896"/>
+ <location filename="mainwindow.cpp" line="3919"/>
<source>This archive contains invalid hashes. Some files may be broken.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3944"/>
+ <location filename="mainwindow.cpp" line="3967"/>
<source>Are you sure?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3945"/>
+ <location filename="mainwindow.cpp" line="3968"/>
<source>This will restart MO, continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3985"/>
+ <location filename="mainwindow.cpp" line="4008"/>
<source>Edit Categories...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="3986"/>
+ <location filename="mainwindow.cpp" line="4009"/>
<source>Deselect filter</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4037"/>
+ <location filename="mainwindow.cpp" line="4060"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4048"/>
+ <location filename="mainwindow.cpp" line="4071"/>
<source>Enable all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4049"/>
+ <location filename="mainwindow.cpp" line="4072"/>
<source>Disable all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4068"/>
+ <location filename="mainwindow.cpp" line="4091"/>
<source>Unlock load order</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4071"/>
+ <location filename="mainwindow.cpp" line="4094"/>
<source>Lock load order</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4213"/>
+ <location filename="mainwindow.cpp" line="4236"/>
<source>depends on missing &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4217"/>
+ <location filename="mainwindow.cpp" line="4240"/>
<source>incompatible with &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4243"/>
+ <location filename="mainwindow.cpp" line="4266"/>
<source>Please wait while LOOT is running</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4337"/>
+ <location filename="mainwindow.cpp" line="4360"/>
<source>loot failed. Exit code was: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4359"/>
+ <location filename="mainwindow.cpp" line="4382"/>
<source>failed to start loot</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4362"/>
+ <location filename="mainwindow.cpp" line="4385"/>
<source>failed to run loot: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4366"/>
+ <location filename="mainwindow.cpp" line="4389"/>
<source>Errors occured</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4420"/>
+ <location filename="mainwindow.cpp" line="4443"/>
<source>Backup of load order created</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4430"/>
+ <location filename="mainwindow.cpp" line="4453"/>
<source>Choose backup to restore</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4443"/>
+ <location filename="mainwindow.cpp" line="4466"/>
<source>No Backups</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4443"/>
+ <location filename="mainwindow.cpp" line="4466"/>
<source>There are no backups to restore</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4464"/>
- <location filename="mainwindow.cpp" line="4486"/>
+ <location filename="mainwindow.cpp" line="4487"/>
+ <location filename="mainwindow.cpp" line="4509"/>
<source>Restore failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4465"/>
- <location filename="mainwindow.cpp" line="4487"/>
+ <location filename="mainwindow.cpp" line="4488"/>
+ <location filename="mainwindow.cpp" line="4510"/>
<source>Failed to restore the backup. Errorcode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4476"/>
+ <location filename="mainwindow.cpp" line="4499"/>
<source>Backup of modlist created</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4576"/>
+ <location filename="mainwindow.cpp" line="4599"/>
<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="4578"/>
+ <location filename="mainwindow.cpp" line="4601"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4579"/>
+ <location filename="mainwindow.cpp" line="4602"/>
<source>Rename new file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="4580"/>
+ <location filename="mainwindow.cpp" line="4603"/>
<source>Ignore file</source>
<translation type="unfinished"></translation>
</message>
@@ -2675,16 +2675,21 @@ This function will guess the versioning scheme under the assumption that the ins
</message>
<message>
<location filename="modinfo.cpp" line="102"/>
+ <source>MCM Data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="modinfo.cpp" line="103"/>
<source>invalid content type %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modinfo.cpp" line="125"/>
+ <location filename="modinfo.cpp" line="126"/>
<source>invalid mod index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modinfo.cpp" line="154"/>
+ <location filename="modinfo.cpp" line="155"/>
<source>remove: invalid mod index %1</source>
<translation type="unfinished"></translation>
</message>
@@ -3225,7 +3230,7 @@ p, li { white-space: pre-wrap; }
<context>
<name>ModInfoOverwrite</name>
<message>
- <location filename="modinfooverwrite.cpp" line="42"/>
+ <location filename="modinfooverwrite.cpp" line="48"/>
<source>This pseudo mod contains files from the virtual data tree that got modified (i.e. by the construction kit)</source>
<translation type="unfinished"></translation>
</message>
@@ -3239,13 +3244,13 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modinforegular.cpp" line="479"/>
+ <location filename="modinforegular.cpp" line="489"/>
<source>%1 contains no esp/esm/esl and no asset (textures, meshes, interface, ...) directory</source>
<oldsource>%1 contains no esp/esm and no asset (textures, meshes, interface, ...) directory</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modinforegular.cpp" line="483"/>
+ <location filename="modinforegular.cpp" line="493"/>
<source>Categories: &lt;br&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -3254,8 +3259,8 @@ p, li { white-space: pre-wrap; }
<name>ModList</name>
<message>
<location filename="modlist.cpp" line="63"/>
- <source>Game plugins (esp/esm/esl)</source>
- <oldsource>Game plugins (esp/esm)</oldsource>
+ <source>Game Plugins (ESP/ESM/ESL)</source>
+ <oldsource>Game plugins (esp/esm/esl)</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
@@ -3299,174 +3304,179 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="132"/>
+ <location filename="modlist.cpp" line="72"/>
+ <source>MCM Configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="modlist.cpp" line="133"/>
<source>This entry contains files that have been created inside the virtual data tree (i.e. by the construction kit)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="141"/>
+ <location filename="modlist.cpp" line="142"/>
<source>Backup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="142"/>
+ <location filename="modlist.cpp" line="143"/>
<source>No valid game data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="143"/>
+ <location filename="modlist.cpp" line="144"/>
<source>Not endorsed yet</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="145"/>
+ <location filename="modlist.cpp" line="146"/>
<source>Overwrites files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="146"/>
+ <location filename="modlist.cpp" line="147"/>
<source>Overwritten files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="147"/>
+ <location filename="modlist.cpp" line="148"/>
<source>Overwrites &amp; Overwritten</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="148"/>
+ <location filename="modlist.cpp" line="149"/>
<source>Redundant</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="225"/>
+ <location filename="modlist.cpp" line="226"/>
<source>Non-MO</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="255"/>
+ <location filename="modlist.cpp" line="256"/>
<source>invalid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="379"/>
+ <location filename="modlist.cpp" line="383"/>
<source>installed version: &quot;%1&quot;, newest version: &quot;%2&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="381"/>
+ <location filename="modlist.cpp" line="385"/>
<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="389"/>
+ <location filename="modlist.cpp" line="393"/>
<source>Categories: &lt;br&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="418"/>
+ <location filename="modlist.cpp" line="422"/>
<source>Invalid name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="870"/>
+ <location filename="modlist.cpp" line="906"/>
<source>drag&amp;drop failed: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="940"/>
+ <location filename="modlist.cpp" line="976"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="941"/>
+ <location filename="modlist.cpp" line="977"/>
<source>Are you sure you want to remove &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1004"/>
+ <location filename="modlist.cpp" line="1040"/>
<source>Flags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1005"/>
+ <location filename="modlist.cpp" line="1041"/>
<source>Content</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1006"/>
+ <location filename="modlist.cpp" line="1042"/>
<source>Mod Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1007"/>
+ <location filename="modlist.cpp" line="1043"/>
<source>Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1008"/>
+ <location filename="modlist.cpp" line="1044"/>
<source>Priority</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1009"/>
+ <location filename="modlist.cpp" line="1045"/>
<source>Category</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1010"/>
+ <location filename="modlist.cpp" line="1046"/>
<source>Nexus ID</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1011"/>
+ <location filename="modlist.cpp" line="1047"/>
<source>Installation</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1012"/>
- <location filename="modlist.cpp" line="1042"/>
+ <location filename="modlist.cpp" line="1048"/>
+ <location filename="modlist.cpp" line="1078"/>
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1020"/>
+ <location filename="modlist.cpp" line="1056"/>
<source>Name of your mods</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1021"/>
+ <location filename="modlist.cpp" line="1057"/>
<source>Version of the mod (if available)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1022"/>
+ <location filename="modlist.cpp" line="1058"/>
<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="1024"/>
+ <location filename="modlist.cpp" line="1060"/>
<source>Category of the mod.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1025"/>
+ <location filename="modlist.cpp" line="1061"/>
<source>Id of the mod as used on Nexus.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1026"/>
+ <location filename="modlist.cpp" line="1062"/>
<source>Emblemes to highlight things that might require attention.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1027"/>
+ <location filename="modlist.cpp" line="1063"/>
<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;/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;/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;/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;/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;/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;/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;/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;/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;/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;/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;/tr&gt;&lt;/table&gt;</source>
<oldsource>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)&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;/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;/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;/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;/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;/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;/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;/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;/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;/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;/tr&gt;&lt;/table&gt;</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="modlist.cpp" line="1041"/>
+ <location filename="modlist.cpp" line="1077"/>
<source>Time this mod was installed</source>
<translation type="unfinished"></translation>
</message>
@@ -3554,189 +3564,189 @@ p, li { white-space: pre-wrap; }
<context>
<name>OrganizerCore</name>
<message>
- <location filename="organizercore.cpp" line="304"/>
- <location filename="organizercore.cpp" line="331"/>
+ <location filename="organizercore.cpp" line="306"/>
+ <location filename="organizercore.cpp" line="333"/>
<source>Failed to write settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="305"/>
+ <location filename="organizercore.cpp" line="307"/>
<source>An error occured trying to update MO settings to %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="326"/>
+ <location filename="organizercore.cpp" line="328"/>
<source>File is write protected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="328"/>
+ <location filename="organizercore.cpp" line="330"/>
<source>Invalid file format (probably a bug)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="329"/>
+ <location filename="organizercore.cpp" line="331"/>
<source>Unknown error %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="332"/>
+ <location filename="organizercore.cpp" line="334"/>
<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="569"/>
- <location filename="organizercore.cpp" line="580"/>
+ <location filename="organizercore.cpp" line="577"/>
+ <location filename="organizercore.cpp" line="588"/>
<source>Download started</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="583"/>
+ <location filename="organizercore.cpp" line="591"/>
<source>Download failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="819"/>
- <location filename="organizercore.cpp" line="874"/>
+ <location filename="organizercore.cpp" line="827"/>
+ <location filename="organizercore.cpp" line="882"/>
<source>Installation successful</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="827"/>
- <location filename="organizercore.cpp" line="884"/>
+ <location filename="organizercore.cpp" line="835"/>
+ <location filename="organizercore.cpp" line="892"/>
<source>Configure Mod</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="828"/>
- <location filename="organizercore.cpp" line="885"/>
+ <location filename="organizercore.cpp" line="836"/>
+ <location filename="organizercore.cpp" line="893"/>
<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="838"/>
- <location filename="organizercore.cpp" line="895"/>
+ <location filename="organizercore.cpp" line="846"/>
+ <location filename="organizercore.cpp" line="903"/>
<source>mod &quot;%1&quot; not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="841"/>
- <location filename="organizercore.cpp" line="902"/>
+ <location filename="organizercore.cpp" line="849"/>
+ <location filename="organizercore.cpp" line="910"/>
<source>Installation cancelled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="842"/>
- <location filename="organizercore.cpp" line="903"/>
+ <location filename="organizercore.cpp" line="850"/>
+ <location filename="organizercore.cpp" line="911"/>
<source>The mod was not installed completely.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1076"/>
+ <location filename="organizercore.cpp" line="1084"/>
<source>Executable &quot;%1&quot; not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1102"/>
+ <location filename="organizercore.cpp" line="1110"/>
<source>Start Steam?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1103"/>
+ <location filename="organizercore.cpp" line="1111"/>
<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="1126"/>
+ <location filename="organizercore.cpp" line="1134"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1174"/>
+ <location filename="organizercore.cpp" line="1182"/>
<source>No profile set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1366"/>
+ <location filename="organizercore.cpp" line="1401"/>
<source>Failed to refresh list of esps: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1446"/>
+ <location filename="organizercore.cpp" line="1481"/>
<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="1513"/>
+ <location filename="organizercore.cpp" line="1548"/>
<source>Download?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1514"/>
+ <location filename="organizercore.cpp" line="1549"/>
<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="1645"/>
+ <location filename="organizercore.cpp" line="1680"/>
<source>failed to update mod list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1652"/>
- <location filename="organizercore.cpp" line="1669"/>
+ <location filename="organizercore.cpp" line="1687"/>
+ <location filename="organizercore.cpp" line="1704"/>
<source>login successful</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1676"/>
+ <location filename="organizercore.cpp" line="1711"/>
<source>Login failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1677"/>
+ <location filename="organizercore.cpp" line="1712"/>
<source>Login failed, try again?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1686"/>
+ <location filename="organizercore.cpp" line="1721"/>
<source>login failed: %1. Download will not be associated with an account</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1694"/>
+ <location filename="organizercore.cpp" line="1729"/>
<source>login failed: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1704"/>
+ <location filename="organizercore.cpp" line="1739"/>
<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="1740"/>
+ <location filename="organizercore.cpp" line="1775"/>
<source>Too many esps, esms, and esls enabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1743"/>
- <location filename="organizercore.cpp" line="1761"/>
+ <location filename="organizercore.cpp" line="1778"/>
+ <location filename="organizercore.cpp" line="1796"/>
<source>Description missing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1752"/>
+ <location filename="organizercore.cpp" line="1787"/>
<source>The game doesn&apos;t allow more than 255 active plugins (including the official ones) to be loaded. You have to disable some unused plugins or merge some plugins into one. You can find a guide here: &lt;a href=&quot;http://wiki.step-project.com/Guide:Merging_Plugins&quot;&gt;http://wiki.step-project.com/Guide:Merging_Plugins&lt;/a&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1785"/>
+ <location filename="organizercore.cpp" line="1820"/>
<source>failed to save load order: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="1857"/>
+ <location filename="organizercore.cpp" line="1892"/>
<source>The designated write target &quot;%1&quot; is not enabled.</source>
<translation type="unfinished"></translation>
</message>
@@ -3833,110 +3843,110 @@ Continue?</source>
<context>
<name>PluginList</name>
<message>
- <location filename="pluginlist.cpp" line="90"/>
+ <location filename="pluginlist.cpp" line="91"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="91"/>
+ <location filename="pluginlist.cpp" line="92"/>
<source>Priority</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="92"/>
+ <location filename="pluginlist.cpp" line="93"/>
<source>Mod Index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="93"/>
+ <location filename="pluginlist.cpp" line="94"/>
<source>Flags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="94"/>
- <location filename="pluginlist.cpp" line="106"/>
+ <location filename="pluginlist.cpp" line="95"/>
+ <location filename="pluginlist.cpp" line="107"/>
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="102"/>
+ <location filename="pluginlist.cpp" line="103"/>
<source>Name of your mods</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="103"/>
+ <location filename="pluginlist.cpp" line="104"/>
<source>Load priority of your mod. The higher, the more &quot;important&quot; it is and thus overwrites data from plugins with lower priority.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="105"/>
+ <location filename="pluginlist.cpp" line="106"/>
<source>The modindex determines the formids of objects originating from this mods.</source>
<oldsource>The modindex determins the formids of objects originating from this mods.</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="159"/>
+ <location filename="pluginlist.cpp" line="182"/>
<source>failed to update esp info for file %1 (source id: %2), error: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="232"/>
+ <location filename="pluginlist.cpp" line="255"/>
<source>esp not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="239"/>
- <location filename="pluginlist.cpp" line="251"/>
+ <location filename="pluginlist.cpp" line="262"/>
+ <location filename="pluginlist.cpp" line="274"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="239"/>
+ <location filename="pluginlist.cpp" line="262"/>
<source>Really enable all plugins?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="251"/>
+ <location filename="pluginlist.cpp" line="274"/>
<source>Really disable all plugins?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="322"/>
+ <location filename="pluginlist.cpp" line="345"/>
<source>The file containing locked plugin indices is broken</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="783"/>
+ <location filename="pluginlist.cpp" line="813"/>
<source>This plugin can&apos;t be disabled (enforced by the game)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="785"/>
+ <location filename="pluginlist.cpp" line="815"/>
<source>&lt;b&gt;Origin&lt;/b&gt;: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="787"/>
+ <location filename="pluginlist.cpp" line="817"/>
<source>Author</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="790"/>
+ <location filename="pluginlist.cpp" line="820"/>
<source>Description</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="793"/>
+ <location filename="pluginlist.cpp" line="823"/>
<source>Missing Masters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="800"/>
+ <location filename="pluginlist.cpp" line="830"/>
<source>Enabled Masters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="971"/>
+ <location filename="pluginlist.cpp" line="1001"/>
<source>failed to restore load order for %1</source>
<translation type="unfinished"></translation>
</message>
@@ -4289,15 +4299,15 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="categories.cpp" line="250"/>
- <location filename="categories.cpp" line="285"/>
- <location filename="categories.cpp" line="295"/>
- <location filename="categories.cpp" line="305"/>
+ <location filename="categories.cpp" line="271"/>
+ <location filename="categories.cpp" line="306"/>
+ <location filename="categories.cpp" line="316"/>
+ <location filename="categories.cpp" line="326"/>
<source>invalid index %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="categories.cpp" line="316"/>
+ <location filename="categories.cpp" line="337"/>
<source>invalid category id %1</source>
<translation type="unfinished"></translation>
</message>
@@ -4442,66 +4452,72 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="loadmechanism.cpp" line="129"/>
- <location filename="loadmechanism.cpp" line="188"/>
+ <location filename="loadmechanism.cpp" line="196"/>
<source>game doesn&apos;t support a script extender</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="loadmechanism.cpp" line="148"/>
+ <location filename="loadmechanism.cpp" line="149"/>
+ <source>Failed to delete %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="loadmechanism.cpp" line="156"/>
<source>Failed to deactivate script extender loading</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="loadmechanism.cpp" line="168"/>
+ <location filename="loadmechanism.cpp" line="176"/>
<source>Failed to remove %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="loadmechanism.cpp" line="170"/>
- <location filename="loadmechanism.cpp" line="264"/>
+ <location filename="loadmechanism.cpp" line="178"/>
+ <location filename="loadmechanism.cpp" line="283"/>
<source>Failed to rename %1 to %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="loadmechanism.cpp" line="177"/>
+ <location filename="loadmechanism.cpp" line="185"/>
<source>Failed to deactivate proxy-dll loading</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="loadmechanism.cpp" line="220"/>
+ <location filename="loadmechanism.cpp" line="239"/>
<source>Failed to set up script extender loading</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="loadmechanism.cpp" line="245"/>
+ <location filename="loadmechanism.cpp" line="264"/>
<source>Failed to delete old proxy-dll %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="loadmechanism.cpp" line="248"/>
+ <location filename="loadmechanism.cpp" line="233"/>
<location filename="loadmechanism.cpp" line="267"/>
+ <location filename="loadmechanism.cpp" line="286"/>
<source>Failed to copy %1 to %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="loadmechanism.cpp" line="260"/>
+ <location filename="loadmechanism.cpp" line="279"/>
<source>Failed to overwrite %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="loadmechanism.cpp" line="272"/>
+ <location filename="loadmechanism.cpp" line="291"/>
<source>Failed to set up proxy-dll loading</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.cpp" line="93"/>
- <location filename="organizercore.cpp" line="607"/>
+ <location filename="organizercore.cpp" line="615"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.cpp" line="94"/>
- <location filename="organizercore.cpp" line="608"/>
+ <location filename="organizercore.cpp" line="616"/>
<source>Failed to create &quot;%1&quot;. Your user account probably lacks permission.</source>
<translation type="unfinished"></translation>
</message>
@@ -4528,75 +4544,75 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="main.cpp" line="347"/>
+ <location filename="main.cpp" line="351"/>
<source>Could not use configuration settings for game &quot;%1&quot;, path &quot;%2&quot;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="main.cpp" line="351"/>
- <location filename="main.cpp" line="369"/>
+ <location filename="main.cpp" line="355"/>
+ <location filename="main.cpp" line="373"/>
<source>Please select the game to manage</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="main.cpp" line="379"/>
+ <location filename="main.cpp" line="383"/>
<source>No game identified in &quot;%1&quot;. The directory is required to contain the game binary and its launcher.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="main.cpp" line="481"/>
+ <location filename="main.cpp" line="485"/>
<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="524"/>
+ <location filename="main.cpp" line="528"/>
<source>failed to start application: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="main.cpp" line="608"/>
+ <location filename="main.cpp" line="612"/>
<location filename="settings.cpp" line="901"/>
<source>Mod Organizer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="main.cpp" line="609"/>
+ <location filename="main.cpp" line="613"/>
<source>An instance of Mod Organizer is already running</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="main.cpp" line="620"/>
+ <location filename="main.cpp" line="624"/>
<source>Failed to set up instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="829"/>
+ <location filename="mainwindow.cpp" line="837"/>
<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="1213"/>
- <location filename="mainwindow.cpp" line="3332"/>
+ <location filename="mainwindow.cpp" line="1223"/>
+ <location filename="mainwindow.cpp" line="3355"/>
<source>&lt;Manage...&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="mainwindow.cpp" line="1225"/>
+ <location filename="mainwindow.cpp" line="1235"/>
<source>failed to parse profile %1: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="139"/>
+ <location filename="organizercore.cpp" line="141"/>
<source>Failed to start &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="142"/>
+ <location filename="organizercore.cpp" line="144"/>
<source>Waiting</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="organizercore.cpp" line="143"/>
+ <location filename="organizercore.cpp" line="145"/>
<source>Please press OK once you&apos;re logged into steam.</source>
<translation type="unfinished"></translation>
</message>
@@ -4617,12 +4633,12 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="398"/>
+ <location filename="pluginlist.cpp" line="421"/>
<source>failed to access %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="pluginlist.cpp" line="412"/>
+ <location filename="pluginlist.cpp" line="435"/>
<source>failed to set file time %1</source>
<translation type="unfinished"></translation>
</message>
diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp
index 4420bf17..a215b9d3 100644
--- a/src/pluginlist.cpp
+++ b/src/pluginlist.cpp
@@ -21,6 +21,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "settings.h"
#include "scopeguard.h"
#include "modinfo.h"
+#include "viewmarkingscrollbar.h"
#include <utility.h>
#include <iplugingame.h>
#include <espfile.h>
@@ -107,6 +108,28 @@ QString PluginList::getColumnToolTip(int column)
}
}
+void PluginList::highlightPlugins(const QItemSelection &selected, const MOShared::DirectoryEntry &directoryEntry)
+{
+ for (auto &esp : m_ESPs) {
+ esp.m_ModSelected = false;
+ }
+ for (QModelIndex idx : selected.indexes()) {
+ ModInfo::Ptr selectedMod = ModInfo::getByIndex(idx.data(Qt::UserRole + 1).toInt());
+ if (!selectedMod.isNull()) {
+ QDir dir(selectedMod->absolutePath());
+ QStringList plugins = dir.entryList(QStringList() << "*.esp" << "*.esm" << "*.esl");
+ if (plugins.size() > 0) {
+ for (auto plugin : plugins) {
+ std::map<QString, int>::iterator iter = m_ESPsByName.find(plugin.toLower());
+ if (iter != m_ESPsByName.end()) {
+ m_ESPs[iter->second].m_ModSelected = true;
+ }
+ }
+ }
+ }
+ }
+ emit dataChanged(this->index(0, 0), this->index(m_ESPs.size() - 1, this->columnCount() - 1));
+}
void PluginList::refresh(const QString &profileName
, const DirectoryEntry &baseDirectory
@@ -752,9 +775,16 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const
}
} else if (role == Qt::ForegroundRole) {
if ((modelIndex.column() == COL_NAME) &&
- m_ESPs[index].m_ForceEnabled) {
+ m_ESPs[index].m_ForceEnabled) {
return QBrush(Qt::gray);
}
+ } else if (role == Qt::BackgroundRole
+ || (role == ViewMarkingScrollBar::DEFAULT_ROLE)) {
+ if (m_ESPs[index].m_ModSelected) {
+ return QColor(0, 0, 255, 32);
+ } else {
+ return QVariant();
+ }
} else if (role == Qt::FontRole) {
QFont result;
if (m_ESPs[index].m_IsMaster) {
@@ -1134,7 +1164,7 @@ PluginList::ESPInfo::ESPInfo(const QString &name, bool enabled,
const QString &originName, const QString &fullPath,
bool hasIni)
: m_Name(name), m_FullPath(fullPath), m_Enabled(enabled), m_ForceEnabled(enabled),
- m_Priority(0), m_LoadOrder(-1), m_OriginName(originName), m_HasIni(hasIni)
+ m_Priority(0), m_LoadOrder(-1), m_OriginName(originName), m_HasIni(hasIni), m_ModSelected(false)
{
try {
ESP::File file(ToWString(fullPath));
diff --git a/src/pluginlist.h b/src/pluginlist.h
index e98f5c41..19e98989 100644
--- a/src/pluginlist.h
+++ b/src/pluginlist.h
@@ -200,6 +200,8 @@ public:
static QString getColumnName(int column);
static QString getColumnToolTip(int column);
+ void highlightPlugins(const QItemSelection &selected, const MOShared::DirectoryEntry &directoryEntry);
+
void refreshLoadOrder();
void disconnectSlots();
@@ -277,6 +279,7 @@ private:
QString m_OriginName;
bool m_IsMaster;
bool m_IsLight;
+ bool m_ModSelected;
QString m_Author;
QString m_Description;
bool m_HasIni;
diff --git a/src/pluginlistview.cpp b/src/pluginlistview.cpp
new file mode 100644
index 00000000..0fcf8183
--- /dev/null
+++ b/src/pluginlistview.cpp
@@ -0,0 +1,58 @@
+#include "pluginlistview.h"
+#include <QUrl>
+#include <QMimeData>
+#include <QProxyStyle>
+
+
+class PluginListViewStyle : public QProxyStyle {
+public:
+ PluginListViewStyle(QStyle *style, int indentation);
+
+ void drawPrimitive(PrimitiveElement element, const QStyleOption *option,
+ QPainter *painter, const QWidget *widget = 0) const;
+private:
+ int m_Indentation;
+};
+
+PluginListViewStyle::PluginListViewStyle(QStyle *style, int indentation)
+ : QProxyStyle(style), m_Indentation(indentation)
+{
+}
+
+void PluginListViewStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option,
+ QPainter *painter, const QWidget *widget) const
+{
+ if (element == QStyle::PE_IndicatorItemViewItemDrop && !option->rect.isNull()) {
+ QStyleOption opt(*option);
+ opt.rect.setLeft(m_Indentation);
+ if (widget) {
+ opt.rect.setRight(widget->width() - 5); // 5 is an arbitrary value that seems to work ok
+ }
+ QProxyStyle::drawPrimitive(element, &opt, painter, widget);
+ }
+ else {
+ QProxyStyle::drawPrimitive(element, option, painter, widget);
+ }
+}
+
+PluginListView::PluginListView(QWidget *parent)
+ : QTreeView(parent)
+ , m_Scrollbar(new ViewMarkingScrollBar(this->model(), this))
+{
+ setVerticalScrollBar(m_Scrollbar);
+}
+
+void PluginListView::dragEnterEvent(QDragEnterEvent *event)
+{
+ emit dropModeUpdate(event->mimeData()->hasUrls());
+
+ QTreeView::dragEnterEvent(event);
+}
+
+void PluginListView::setModel(QAbstractItemModel *model)
+{
+ QTreeView::setModel(model);
+ setVerticalScrollBar(new ViewMarkingScrollBar(model, this));
+}
+
+#pragma once
diff --git a/src/pluginlistview.h b/src/pluginlistview.h
new file mode 100644
index 00000000..bdd4ee61
--- /dev/null
+++ b/src/pluginlistview.h
@@ -0,0 +1,24 @@
+#ifndef PLUGINLISTVIEW_H
+#define PLUGINLISTVIEW_H
+
+#include <QTreeView>
+#include <QDragEnterEvent>
+#include "viewmarkingscrollbar.h"
+
+class PluginListView : public QTreeView
+{
+ Q_OBJECT
+public:
+ explicit PluginListView(QWidget *parent = 0);
+ virtual void dragEnterEvent(QDragEnterEvent *event);
+ virtual void setModel(QAbstractItemModel *model);
+signals:
+ void dropModeUpdate(bool dropOnRows);
+
+ public slots:
+private:
+
+ ViewMarkingScrollBar *m_Scrollbar;
+};
+
+#endif // PLUGINLISTVIEW_H