diff --git a/src/core/component/context.rs b/src/core/component/context.rs index ae23dbba..011a985e 100644 --- a/src/core/component/context.rs +++ b/src/core/component/context.rs @@ -1,5 +1,5 @@ use crate::base::component::add_base_assets; -use crate::core::theme::all::{theme_by_single_name, THEME}; +use crate::core::theme::all::{theme_by_single_name, THEME_DEFAULT}; use crate::core::theme::ThemeRef; use crate::html::{html, Assets, HeadScript, HeadStyles, JavaScript, Markup, StyleSheet}; use crate::locale::{LanguageIdentifier, LANGID_DEFAULT}; @@ -47,7 +47,7 @@ impl Context { Context { request, langid : &LANGID_DEFAULT, - theme : *THEME, + theme : *THEME_DEFAULT, stylesheet: Assets::::new(), // Stylesheets. headstyles: Assets::::new(), // Styles in head. javascript: Assets::::new(), // JavaScripts. @@ -64,7 +64,7 @@ impl Context { self.langid = langid; } ContextOp::Theme(theme_name) => { - self.theme = theme_by_single_name(theme_name).unwrap_or(*THEME); + self.theme = theme_by_single_name(theme_name).unwrap_or(*THEME_DEFAULT); } // Stylesheets. diff --git a/src/core/theme.rs b/src/core/theme.rs index 2f2275fe..1925071a 100644 --- a/src/core/theme.rs +++ b/src/core/theme.rs @@ -3,6 +3,6 @@ pub use definition::{ThemeRef, ThemeTrait}; mod regions; pub(crate) use regions::ComponentsInRegions; -pub use regions::{add_component_in, Region}; +pub use regions::InRegion; pub(crate) mod all; diff --git a/src/core/theme/all.rs b/src/core/theme/all.rs index 29f7c6f7..51e9a556 100644 --- a/src/core/theme/all.rs +++ b/src/core/theme/all.rs @@ -10,7 +10,7 @@ pub static THEMES: LazyStatic>> = LazyStatic::new(|| RwLock // DEFAULT THEME *********************************************************************************** -pub static THEME: LazyStatic = +pub static THEME_DEFAULT: LazyStatic = LazyStatic::new(|| match theme_by_single_name(&config::SETTINGS.app.theme) { Some(theme) => theme, None => &crate::base::theme::Inception, diff --git a/src/core/theme/regions.rs b/src/core/theme/regions.rs index 4e93a4fe..4c18ec7f 100644 --- a/src/core/theme/regions.rs +++ b/src/core/theme/regions.rs @@ -39,23 +39,33 @@ impl ComponentsInRegions { } } -pub enum Region { +pub enum InRegion { + Content, Named(&'static str), - OfTheme(ThemeRef, &'static str), + OfTheme(&'static str, ThemeRef), } -pub fn add_component_in(region: Region, arc: ArcAnyComponent) { - match region { - Region::Named(name) => { - COMMON_REGIONS.write().unwrap().add_component_in(name, arc); - } - Region::OfTheme(theme, region) => { - let mut regions = THEME_REGIONS.write().unwrap(); - if let Some(r) = regions.get_mut(&theme.type_id()) { - r.add_component_in(region, arc); - } else { - regions.insert(theme.type_id(), ComponentsInRegions::new(region, arc)); +impl InRegion { + pub fn add_component(&self, arc: ArcAnyComponent) -> &Self { + match self { + InRegion::Content => { + COMMON_REGIONS + .write() + .unwrap() + .add_component_in("content", arc); + } + InRegion::Named(name) => { + COMMON_REGIONS.write().unwrap().add_component_in(name, arc); + } + InRegion::OfTheme(region, theme) => { + let mut regions = THEME_REGIONS.write().unwrap(); + if let Some(r) = regions.get_mut(&theme.type_id()) { + r.add_component_in(region, arc); + } else { + regions.insert(theme.type_id(), ComponentsInRegions::new(region, arc)); + } } } + self } }