mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-02-18 04:45:39 +00:00
Added support for applying per-variant transition profiles from included theme configuration files.
This commit is contained in:
parent
597375c68c
commit
941fa013b6
|
@ -1502,6 +1502,8 @@ void ThemeData::parseIncludes(const pugi::xml_node& root)
|
||||||
if (!theme)
|
if (!theme)
|
||||||
throw error << ": Missing <theme> tag";
|
throw error << ": Missing <theme> tag";
|
||||||
|
|
||||||
|
if (!mLegacyTheme)
|
||||||
|
parseTransitions(theme);
|
||||||
parseVariables(theme);
|
parseVariables(theme);
|
||||||
if (!mLegacyTheme)
|
if (!mLegacyTheme)
|
||||||
parseColorSchemes(theme);
|
parseColorSchemes(theme);
|
||||||
|
@ -1578,21 +1580,7 @@ void ThemeData::parseVariants(const pugi::xml_node& root)
|
||||||
mOverrideVariant};
|
mOverrideVariant};
|
||||||
|
|
||||||
if (variant == viewKey || viewKey == "all") {
|
if (variant == viewKey || viewKey == "all") {
|
||||||
const pugi::xml_node& transitions {node.child("transitions")};
|
parseTransitions(node);
|
||||||
if (transitions != nullptr) {
|
|
||||||
const std::string& transitionsValue {transitions.text().as_string()};
|
|
||||||
if (std::find_if(mCurrentThemeSet->second.capabilities.transitions.cbegin(),
|
|
||||||
mCurrentThemeSet->second.capabilities.transitions.cend(),
|
|
||||||
[&transitionsValue](const ThemeTransitions transitions) {
|
|
||||||
return transitions.name == transitionsValue;
|
|
||||||
}) ==
|
|
||||||
mCurrentThemeSet->second.capabilities.transitions.cend()) {
|
|
||||||
throw error << ": <transitions> value \"" << transitionsValue
|
|
||||||
<< "\" is not matching any defined transitions";
|
|
||||||
}
|
|
||||||
mVariantDefinedTransitions = transitionsValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
parseVariables(node);
|
parseVariables(node);
|
||||||
parseColorSchemes(node);
|
parseColorSchemes(node);
|
||||||
parseIncludes(node);
|
parseIncludes(node);
|
||||||
|
@ -1686,6 +1674,27 @@ void ThemeData::parseAspectRatios(const pugi::xml_node& root)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ThemeData::parseTransitions(const pugi::xml_node& root)
|
||||||
|
{
|
||||||
|
ThemeException error;
|
||||||
|
error << "ThemeData::parseTransitions(): ";
|
||||||
|
error.setFiles(mPaths);
|
||||||
|
|
||||||
|
const pugi::xml_node& transitions {root.child("transitions")};
|
||||||
|
if (transitions != nullptr) {
|
||||||
|
const std::string& transitionsValue {transitions.text().as_string()};
|
||||||
|
if (std::find_if(mCurrentThemeSet->second.capabilities.transitions.cbegin(),
|
||||||
|
mCurrentThemeSet->second.capabilities.transitions.cend(),
|
||||||
|
[&transitionsValue](const ThemeTransitions transitions) {
|
||||||
|
return transitions.name == transitionsValue;
|
||||||
|
}) == mCurrentThemeSet->second.capabilities.transitions.cend()) {
|
||||||
|
throw error << ": <transitions> value \"" << transitionsValue
|
||||||
|
<< "\" is not matching any defined transitions";
|
||||||
|
}
|
||||||
|
mVariantDefinedTransitions = transitionsValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ThemeData::parseVariables(const pugi::xml_node& root)
|
void ThemeData::parseVariables(const pugi::xml_node& root)
|
||||||
{
|
{
|
||||||
ThemeException error;
|
ThemeException error;
|
||||||
|
|
|
@ -297,6 +297,7 @@ private:
|
||||||
void parseVariants(const pugi::xml_node& root);
|
void parseVariants(const pugi::xml_node& root);
|
||||||
void parseColorSchemes(const pugi::xml_node& root);
|
void parseColorSchemes(const pugi::xml_node& root);
|
||||||
void parseAspectRatios(const pugi::xml_node& root);
|
void parseAspectRatios(const pugi::xml_node& root);
|
||||||
|
void parseTransitions(const pugi::xml_node& root);
|
||||||
void parseVariables(const pugi::xml_node& root);
|
void parseVariables(const pugi::xml_node& root);
|
||||||
void parseViews(const pugi::xml_node& root);
|
void parseViews(const pugi::xml_node& root);
|
||||||
void parseView(const pugi::xml_node& root, ThemeView& view);
|
void parseView(const pugi::xml_node& root, ThemeView& view);
|
||||||
|
|
Loading…
Reference in a new issue