summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/envfs.cpp28
-rw-r--r--src/organizer_en.ts20
-rw-r--r--src/plugincontainer.cpp10
-rw-r--r--src/stylesheets/Night Eyes.qss26
-rw-r--r--src/stylesheets/Transparent-Style-BOS.qss4
-rw-r--r--src/stylesheets/Transparent-Style-Skyrim.qss4
-rw-r--r--src/stylesheets/dark.qss6
-rw-r--r--src/stylesheets/dracula.qss10
-rw-r--r--src/stylesheets/skyrim.qss4
-rw-r--r--src/stylesheets/vs15 Dark-Green.qss6
-rw-r--r--src/stylesheets/vs15 Dark-Orange.qss6
-rw-r--r--src/stylesheets/vs15 Dark-Purple.qss6
-rw-r--r--src/stylesheets/vs15 Dark-Red.qss6
-rw-r--r--src/stylesheets/vs15 Dark-Yellow.qss6
-rw-r--r--src/stylesheets/vs15 Dark.qss6
-rw-r--r--src/version.rc4
16 files changed, 85 insertions, 67 deletions
diff --git a/src/envfs.cpp b/src/envfs.cpp
index 9317eb70..dfea6598 100644
--- a/src/envfs.cpp
+++ b/src/envfs.cpp
@@ -232,8 +232,8 @@ void forEachEntryImpl(
if (status < 0) {
log::error(
- "NtOpenFile() failed for '{}', {}",
- toString(poa), formatSystemMessage(status));
+ "failed to open directory '{}': {}",
+ toString(poa), formatNtMessage(status));
return;
}
@@ -264,8 +264,9 @@ void forEachEntryImpl(
break;
} else if (status < 0) {
log::error(
- "NtQueryDirectoryFile() failed for '{}', {}",
- toString(poa), formatSystemMessage(status));
+ "failed to read directory '{}': {}",
+ toString(poa), formatNtMessage(status));
+
break;
}
@@ -321,6 +322,23 @@ void forEachEntryImpl(
}
}
+std::wstring makeNtPath(const std::wstring& path)
+{
+ constexpr const wchar_t* nt_prefix = L"\\??\\";
+ constexpr const wchar_t* nt_unc_prefix = L"\\??\\UNC\\";
+ constexpr const wchar_t* share_prefix = L"\\\\";
+
+ if (path.starts_with(nt_prefix)) {
+ // already an nt path
+ return path;
+ } else if (path.starts_with(share_prefix)) {
+ // network shared need \??\UNC\ as a prefix
+ return nt_unc_prefix + path.substr(2);
+ } else {
+ // prepend the \??\ prefix
+ return nt_prefix + path;
+ }
+}
void DirectoryWalker::forEachEntry(
const std::wstring& path, void* cx,
@@ -335,7 +353,7 @@ void DirectoryWalker::forEachEntry(
NtClose = (NtClose_type)::GetProcAddress(m.get(), "NtClose");
}
- const std::wstring ntpath = std::wstring(L"\\??\\") + path;
+ const std::wstring ntpath = makeNtPath(path);
UNICODE_STRING ObjectName = {};
ObjectName.Buffer = const_cast<wchar_t*>(ntpath.c_str());
diff --git a/src/organizer_en.ts b/src/organizer_en.ts
index a113579c..b7c0eb1b 100644
--- a/src/organizer_en.ts
+++ b/src/organizer_en.ts
@@ -5781,48 +5781,48 @@ Continue?</source>
<context>
<name>PluginContainer</name>
<message>
- <location filename="plugincontainer.cpp" line="1006"/>
+ <location filename="plugincontainer.cpp" line="1016"/>
<source>Plugin error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="plugincontainer.cpp" line="1007"/>
+ <location filename="plugincontainer.cpp" line="1017"/>
<source>Mod Organizer failed to load the plugin &apos;%1&apos; last time it was started.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="plugincontainer.cpp" line="1010"/>
+ <location filename="plugincontainer.cpp" line="1020"/>
<source>The plugin can be skipped for this session, blacklisted, or loaded normally, in which case it might fail again. Blacklisted plugins can be re-enabled later in the settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="plugincontainer.cpp" line="1015"/>
+ <location filename="plugincontainer.cpp" line="1025"/>
<source>Skip this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="plugincontainer.cpp" line="1016"/>
+ <location filename="plugincontainer.cpp" line="1026"/>
<source>Blacklist this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="plugincontainer.cpp" line="1017"/>
+ <location filename="plugincontainer.cpp" line="1027"/>
<source>Load this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="plugincontainer.cpp" line="1114"/>
+ <location filename="plugincontainer.cpp" line="1124"/>
<source>Some plugins could not be loaded</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="plugincontainer.cpp" line="1117"/>
- <location filename="plugincontainer.cpp" line="1135"/>
+ <location filename="plugincontainer.cpp" line="1127"/>
+ <location filename="plugincontainer.cpp" line="1145"/>
<source>Description missing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="plugincontainer.cpp" line="1126"/>
+ <location filename="plugincontainer.cpp" line="1136"/>
<source>The following plugins could not be loaded. The reason may be missing dependencies (i.e. python) or an outdated version:</source>
<translation type="unfinished"></translation>
</message>
diff --git a/src/plugincontainer.cpp b/src/plugincontainer.cpp
index c703a36a..93a66ece 100644
--- a/src/plugincontainer.cpp
+++ b/src/plugincontainer.cpp
@@ -952,6 +952,16 @@ void PluginContainer::reloadPlugin(QString const& filepath)
void PluginContainer::unloadPlugins()
{
+ if (m_Organizer) {
+ // this will clear several structures that can hold on to pointers to
+ // plugins, as well as read the plugin blacklist from the ini file, which
+ // is used in loadPlugins() below to skip plugins
+ //
+ // note that the first thing loadPlugins() does is call unloadPlugins(),
+ // so this makes sure the blacklist is always available
+ m_Organizer->settings().plugins().clearPlugins();
+ }
+
bf::for_each(m_Plugins, [](auto& t) { t.second.clear(); });
bf::for_each(m_AccessPlugins, [](auto& t) { t.second.clear(); });
m_Requirements.clear();
diff --git a/src/stylesheets/Night Eyes.qss b/src/stylesheets/Night Eyes.qss
index 135f0c09..78a5d443 100644
--- a/src/stylesheets/Night Eyes.qss
+++ b/src/stylesheets/Night Eyes.qss
@@ -635,53 +635,43 @@ QWidget#downloadTab QAbstractScrollArea
background: #242424;
}
-DownloadListWidget QFrame,
-DownloadListWidgetCompact,
-DownloadListWidgetCompact QLabel
+DownloadListView QFrame
{
/* an entry on the Downloads tab */
background: #141414;
}
-DownloadListWidget QFrame#frame
+DownloadListView QFrame#frame
{
/* outer box of an entry on the Downloads tab */
border: 2px solid #141414;
}
-DownloadListWidget QLabel#installLabel
+DownloadListView QLabel#installLabel
{
color: none;
}
-DownloadListWidget QFrame:clicked
+DownloadListView QFrame:clicked
{
background: #242424;
}
/* compact downloads view */
-DownloadListWidgetCompact,
-DownloadListWidgetCompact QLabel
-{
- /* an entry on the Downloads tab */
- background: #141414;
- padding: 4px;
-}
-
-DownloadListWidget[downloadView=standard]::item {
+DownloadListView[downloadView=standard]::item {
padding: 16px;
}
-DownloadListWidget[downloadView=compact]::item {
+DownloadListView[downloadView=compact]::item {
padding: 4px;
}
-DownloadListWidget::item:hover {
+DownloadListView::item:hover {
padding: 0px;
}
-DownloadListWidget::item:selected {
+DownloadListView::item:selected {
padding: 0px;
}
diff --git a/src/stylesheets/Transparent-Style-BOS.qss b/src/stylesheets/Transparent-Style-BOS.qss
index 0b4ba23d..4812ca37 100644
--- a/src/stylesheets/Transparent-Style-BOS.qss
+++ b/src/stylesheets/Transparent-Style-BOS.qss
@@ -225,10 +225,10 @@ QHeaderView::down-arrow{
background-color:rgba(154,154,0,0.3);
padding: 3px;
}
-/*#DownloadListWidget{
+/*#DownloadListView{
}
*/
- #DownloadListWidget{
+ #DownloadListView{
outline: 1px solid #e8e8e8;
border: 0px solid #9a9a00;
}
diff --git a/src/stylesheets/Transparent-Style-Skyrim.qss b/src/stylesheets/Transparent-Style-Skyrim.qss
index cbc43033..97fb862b 100644
--- a/src/stylesheets/Transparent-Style-Skyrim.qss
+++ b/src/stylesheets/Transparent-Style-Skyrim.qss
@@ -225,10 +225,10 @@ QHeaderView::down-arrow{
background-color:rgba(154,154,0,0.3);
padding: 3px;
}
-/*#DownloadListWidget{
+/*#DownloadListView{
}
*/
- #DownloadListWidget{
+ #DownloadListView{
outline: 1px solid #e8e8e8;
border: 0px solid #9a9a00;
}
diff --git a/src/stylesheets/dark.qss b/src/stylesheets/dark.qss
index 1bf5c819..b7a185e5 100644
--- a/src/stylesheets/dark.qss
+++ b/src/stylesheets/dark.qss
@@ -374,15 +374,15 @@ QTreeView::branch:open:has-children:has-siblings
image: url(:/stylesheet/branch-open.png);
}
-DownloadListWidget QLabel#installLabel {
+DownloadListView QLabel#installLabel {
color: none;
}
-DownloadListWidget[downloadView=standard]::item {
+DownloadListView[downloadView=standard]::item {
padding: 16px;
}
-DownloadListWidget[downloadView=compact]::item {
+DownloadListView[downloadView=compact]::item {
padding: 4px;
}
diff --git a/src/stylesheets/dracula.qss b/src/stylesheets/dracula.qss
index 9beba52d..a3197f67 100644
--- a/src/stylesheets/dracula.qss
+++ b/src/stylesheets/dracula.qss
@@ -406,23 +406,23 @@ SaveGameInfoWidget {
* Downloads
*/
- DownloadListWidget QLabel#installLabel {
+ DownloadListView QLabel#installLabel {
color: none;
}
-DownloadListWidget[downloadView=standard]::item {
+DownloadListView[downloadView=standard]::item {
padding: 16px;
}
-DownloadListWidget[downloadView=compact]::item {
+DownloadListView[downloadView=compact]::item {
padding: 4px;
}
-DownloadListWidget::item:hover {
+DownloadListView::item:hover {
padding: 0px;
}
-DownloadListWidget::item:selected {
+DownloadListView::item:selected {
padding: 0px;
}
diff --git a/src/stylesheets/skyrim.qss b/src/stylesheets/skyrim.qss
index ffd42640..7006e09a 100644
--- a/src/stylesheets/skyrim.qss
+++ b/src/stylesheets/skyrim.qss
@@ -559,11 +559,11 @@ QProgressBar {
QProgressBar::chunk {
background: url(./skyrim/progress-bar-chunk.png) center center repeat-x qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 #95BED9, stop:0.78781 #6EB9CE); }
-DownloadListWidget[downloadView=standard]::item {
+DownloadListView[downloadView=standard]::item {
padding: 15px;
}
-DownloadListWidget[downloadView=compact]::item {
+DownloadListView[downloadView=compact]::item {
padding: 4px;
}
diff --git a/src/stylesheets/vs15 Dark-Green.qss b/src/stylesheets/vs15 Dark-Green.qss
index a4c6a2cc..65cba739 100644
--- a/src/stylesheets/vs15 Dark-Green.qss
+++ b/src/stylesheets/vs15 Dark-Green.qss
@@ -547,7 +547,7 @@ QHeaderView::up-arrow {
image: url(./vs15/sort-asc.png);
margin-bottom: -37px; }
-DownloadListWidget QHeaderView::up-arrow {
+DownloadListView QHeaderView::up-arrow {
margin-bottom: -47px; }
QHeaderView::down-arrow {
@@ -621,11 +621,11 @@ QProgressBar {
QProgressBar::chunk {
background: #06B025; }
-DownloadListWidget[downloadView=standard]::item {
+DownloadListView[downloadView=standard]::item {
padding: 16px;
}
-DownloadListWidget[downloadView=compact]::item {
+DownloadListView[downloadView=compact]::item {
padding: 4px;
}
diff --git a/src/stylesheets/vs15 Dark-Orange.qss b/src/stylesheets/vs15 Dark-Orange.qss
index c909d103..62bd4bb8 100644
--- a/src/stylesheets/vs15 Dark-Orange.qss
+++ b/src/stylesheets/vs15 Dark-Orange.qss
@@ -548,7 +548,7 @@ QHeaderView::up-arrow {
image: url(./vs15/sort-asc.png);
margin-bottom: -37px; }
-DownloadListWidget QHeaderView::up-arrow {
+DownloadListView QHeaderView::up-arrow {
margin-bottom: -47px; }
QHeaderView::down-arrow {
@@ -622,11 +622,11 @@ QProgressBar {
QProgressBar::chunk {
background: #06B025; }
-DownloadListWidget[downloadView=standard]::item {
+DownloadListView[downloadView=standard]::item {
padding: 16px;
}
-DownloadListWidget[downloadView=compact]::item {
+DownloadListView[downloadView=compact]::item {
padding: 4px;
}
diff --git a/src/stylesheets/vs15 Dark-Purple.qss b/src/stylesheets/vs15 Dark-Purple.qss
index 2cff0e06..4e28b1d5 100644
--- a/src/stylesheets/vs15 Dark-Purple.qss
+++ b/src/stylesheets/vs15 Dark-Purple.qss
@@ -548,7 +548,7 @@ QHeaderView::up-arrow {
image: url(./vs15/sort-asc.png);
margin-bottom: -37px; }
-DownloadListWidget QHeaderView::up-arrow {
+DownloadListView QHeaderView::up-arrow {
margin-bottom: -47px; }
QHeaderView::down-arrow {
@@ -622,11 +622,11 @@ QProgressBar {
QProgressBar::chunk {
background: #06B025; }
-DownloadListWidget[downloadView=standard]::item {
+DownloadListView[downloadView=standard]::item {
padding: 16px;
}
-DownloadListWidget[downloadView=compact]::item {
+DownloadListView[downloadView=compact]::item {
padding: 4px;
}
diff --git a/src/stylesheets/vs15 Dark-Red.qss b/src/stylesheets/vs15 Dark-Red.qss
index 2df39fc4..5faaf3a9 100644
--- a/src/stylesheets/vs15 Dark-Red.qss
+++ b/src/stylesheets/vs15 Dark-Red.qss
@@ -548,7 +548,7 @@ QHeaderView::up-arrow {
image: url(./vs15/sort-asc.png);
margin-bottom: -37px; }
-DownloadListWidget QHeaderView::up-arrow {
+DownloadListView QHeaderView::up-arrow {
margin-bottom: -47px; }
QHeaderView::down-arrow {
@@ -622,11 +622,11 @@ QProgressBar {
QProgressBar::chunk {
background: #06B025; }
-DownloadListWidget[downloadView=standard]::item {
+DownloadListView[downloadView=standard]::item {
padding: 16px;
}
-DownloadListWidget[downloadView=compact]::item {
+DownloadListView[downloadView=compact]::item {
padding: 4px;
}
diff --git a/src/stylesheets/vs15 Dark-Yellow.qss b/src/stylesheets/vs15 Dark-Yellow.qss
index 63688511..83610ea6 100644
--- a/src/stylesheets/vs15 Dark-Yellow.qss
+++ b/src/stylesheets/vs15 Dark-Yellow.qss
@@ -547,7 +547,7 @@ QHeaderView::up-arrow {
image: url(./vs15/sort-asc.png);
margin-bottom: -37px; }
-DownloadListWidget QHeaderView::up-arrow {
+DownloadListView QHeaderView::up-arrow {
margin-bottom: -47px; }
QHeaderView::down-arrow {
@@ -621,11 +621,11 @@ QProgressBar {
QProgressBar::chunk {
background: #06B025; }
-DownloadListWidget[downloadView=standard]::item {
+DownloadListView[downloadView=standard]::item {
padding: 16px;
}
-DownloadListWidget[downloadView=compact]::item {
+DownloadListView[downloadView=compact]::item {
padding: 4px;
}
diff --git a/src/stylesheets/vs15 Dark.qss b/src/stylesheets/vs15 Dark.qss
index af29a696..7368f230 100644
--- a/src/stylesheets/vs15 Dark.qss
+++ b/src/stylesheets/vs15 Dark.qss
@@ -547,7 +547,7 @@ QHeaderView::up-arrow {
image: url(./vs15/sort-asc.png);
margin-bottom: -37px; }
-DownloadListWidget QHeaderView::up-arrow {
+DownloadListView QHeaderView::up-arrow {
margin-bottom: -47px; }
QHeaderView::down-arrow {
@@ -621,11 +621,11 @@ QProgressBar {
QProgressBar::chunk {
background: #06B025; }
-DownloadListWidget[downloadView=standard]::item {
+DownloadListView[downloadView=standard]::item {
padding: 16px;
}
-DownloadListWidget[downloadView=compact]::item {
+DownloadListView[downloadView=compact]::item {
padding: 4px;
}
diff --git a/src/version.rc b/src/version.rc
index a8b60111..216a3e2d 100644
--- a/src/version.rc
+++ b/src/version.rc
@@ -4,13 +4,13 @@
// Otherwise, if letters are used in VER_FILEVERSION_STR, uses the full MOBase::VersionInfo parser
// Otherwise, uses the numbers from VER_FILEVERSION and sets the release type as pre-alpha
#define VER_FILEVERSION 2,4,0
-#define VER_FILEVERSION_STR "2.4.0rc3\0"
+#define VER_FILEVERSION_STR "2.4.0\0"
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION
PRODUCTVERSION VER_FILEVERSION
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
-FILEFLAGS VS_FF_PRERELEASE
+FILEFLAGS (0)
FILEOS VOS__WINDOWS32
FILETYPE VFT_APP
FILESUBTYPE (0)