Compare commits

..
10 Commits
Author SHA1 Message Date
Mikaël Capelle 7084021067 Merge pull request #1418 from Holt59/master
Bump version to 2.4.0 and update translation.
2021-02-21 18:01:12 +01:00
Mikaël Capelle 1dd2acf07f Bump version to 2.4.0 and update translation. 2021-02-21 17:56:44 +01:00
isanae 3fad475013 Merge pull request #1416 from isanae/plugin-blacklist
Broken plugins blacklist
2021-02-21 11:50:32 -05:00
isanae 2bd755743c clarified comment 2021-02-20 12:49:08 -05:00
isanae 9eb1dd0ec0 clearPlugins() must be called to load the blacklist or it will be empty when loadPlugins() runs 2021-02-20 05:03:17 -05:00
isanae e473caf14a Merge pull request #1415 from isanae/master
2.4rc3
2021-02-19 18:23:01 -05:00
isanae 1c87f1d8d4 rc3 2021-02-19 18:21:53 -05:00
Mikaël Capelle bb6cde175a Bump version to 2.4.0. 2021-02-19 20:08:47 +01:00
Mikaël Capelle bd93864ed2 Merge pull request #1409 from isanae/portable-loop
Portable instance loop.
2021-02-13 18:25:39 +01:00
isanae 406d6f28c0 force instance selection when the current instance cannot be used
the problem is that an empty instance name means the portable instance, but MO clears the name when it needs instance selection, which can create a loop if the portable instance can't be used
2021-02-13 07:54:05 -05:00
6 changed files with 31 additions and 15 deletions
+7 -2
View File
@@ -80,7 +80,8 @@ int run(int argc, char *argv[])
// stuff that's done only once, even if MO restarts in the loop below
app.firstTimeSetup(multiProcess);
// force the "Select instance" dialog on startup (only for first loop)
// force the "Select instance" dialog on startup, only for first loop or when
// the current instance cannot be used
bool pick = cl.pick();
// MO runs in a loop because it can be restarted in several ways, such as
@@ -105,13 +106,17 @@ int run(int argc, char *argv[])
const auto r = app.setup(multiProcess, pick);
pick = false;
if (r == RestartExitCode) {
if (r == RestartExitCode || r == ReselectExitCode) {
// resets things when MO is "restarted"
app.resetForRestart();
// don't reprocess command line
cl.clear();
if (r == ReselectExitCode) {
pick = true;
}
continue;
} else if (r != 0) {
// something failed, quit
+1 -1
View File
@@ -492,7 +492,7 @@ std::optional<int> MOApplication::setupInstanceLoop(
continue;
} else if (setupResult == SetupInstanceResults::SelectAnother) {
InstanceManager::singleton().clearCurrentInstance();
return RestartExitCode;
return ReselectExitCode;
} else {
return 1;
}
+10 -10
View File
@@ -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>
+10
View File
@@ -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();
+1
View File
@@ -74,6 +74,7 @@ enum class Exit
};
const int RestartExitCode = INT_MAX;
const int ReselectExitCode = INT_MAX - 1;
using ExitFlags = QFlags<Exit>;
Q_DECLARE_OPERATORS_FOR_FLAGS(ExitFlags);
+2 -2
View File
@@ -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.0rc2\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)