diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 844296e0..204c63ad 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -37,6 +37,7 @@ AdvSceneSwitcher.generalTab.generalBehavior.disableUIHints="Disable UI hints" AdvSceneSwitcher.generalTab.generalBehavior.comboBoxFilterDisable="Disable filtering by typing in drop down menus" AdvSceneSwitcher.generalTab.generalBehavior.warnPluginLoadFailure="Display warning if plugins cannot be loaded" AdvSceneSwitcher.generalTab.generalBehavior.warnPluginLoadFailureMessage="Loading of the following plugin libraries was unsuccessful, which could result in some Advanced Scene Switcher functions not being available:%1Check the OBS logs for details.
This message can be disabled on the General tab." +AdvSceneSwitcher.generalTab.generalBehavior.warnCorruptedInstallMessage="The plugin installation seems to be corrupted and might crash!\nPlease make sure the plugin was installed correctly!" AdvSceneSwitcher.generalTab.generalBehavior.hideLegacyTabs="Hide tabs which can be represented via macros" AdvSceneSwitcher.generalTab.matchBehavior="Match behavior" AdvSceneSwitcher.generalTab.priority="Priority" diff --git a/lib/advanced-scene-switcher.cpp b/lib/advanced-scene-switcher.cpp index 50f42ce0..756e9cac 100644 --- a/lib/advanced-scene-switcher.cpp +++ b/lib/advanced-scene-switcher.cpp @@ -93,10 +93,24 @@ static void DisplayMissingDataDirWarning() DisplayMessage(msg); } +bool CanCreateDefaultAction(); +bool CanCreateDefaultCondition(); + +static void DisplayCorruptedInstallWarning() +{ + if (CanCreateDefaultAction() && CanCreateDefaultCondition()) { + return; + } + + DisplayMessage(obs_module_text( + "AdvSceneSwitcher.generalTab.generalBehavior.warnCorruptedInstallMessage")); +} + void AdvSceneSwitcher::LoadUI() { DisplayMissingDataDirWarning(); DisplayMissingDependencyWarning(); + DisplayCorruptedInstallWarning(); SetupGeneralTab(); SetupTitleTab(); diff --git a/lib/macro/macro-action-factory.cpp b/lib/macro/macro-action-factory.cpp index 309f7024..57fe2ec4 100644 --- a/lib/macro/macro-action-factory.cpp +++ b/lib/macro/macro-action-factory.cpp @@ -54,4 +54,11 @@ std::string MacroActionFactory::GetIdByName(const QString &name) return ""; } +bool CanCreateDefaultAction() +{ + const auto action = MacroActionFactory::Create( + MacroAction::GetDefaultID().data(), nullptr); + return !!action; +} + } // namespace advss diff --git a/lib/macro/macro-action-factory.hpp b/lib/macro/macro-action-factory.hpp index 59970d10..38366867 100644 --- a/lib/macro/macro-action-factory.hpp +++ b/lib/macro/macro-action-factory.hpp @@ -31,4 +31,6 @@ private: static std::map &GetMap(); }; +bool CanCreateDefaultAction(); + } // namespace advss diff --git a/lib/macro/macro-condition-factory.cpp b/lib/macro/macro-condition-factory.cpp index 3dfe1ef6..8442eef3 100644 --- a/lib/macro/macro-condition-factory.cpp +++ b/lib/macro/macro-condition-factory.cpp @@ -63,4 +63,11 @@ bool MacroConditionFactory::UsesDurationModifier(const std::string &id) return false; } +bool CanCreateDefaultCondition() +{ + const auto condition = MacroConditionFactory::Create( + MacroCondition::GetDefaultID().data(), nullptr); + return !!condition; +} + } // namespace advss diff --git a/lib/macro/macro-condition-factory.hpp b/lib/macro/macro-condition-factory.hpp index 4cae86ef..32defbc9 100644 --- a/lib/macro/macro-condition-factory.hpp +++ b/lib/macro/macro-condition-factory.hpp @@ -32,4 +32,6 @@ private: static std::map &GetMap(); }; +bool CanCreateDefaultCondition(); + } // namespace advss