diff options
Diffstat (limited to '')
| -rw-r--r-- | src/types.rs | 4 | ||||
| -rw-r--r-- | src/types/project.rs | 16 |
2 files changed, 11 insertions, 9 deletions
diff --git a/src/types.rs b/src/types.rs index d998d61..0014090 100644 --- a/src/types.rs +++ b/src/types.rs @@ -6,6 +6,7 @@ use std::path::PathBuf; pub use element_name::ElementName; use iced::advanced::widget::Id; +use iced::theme::Mode; use iced::widget::{pane_grid, text_editor}; use iced::window; use iced_anim::Event; @@ -25,7 +26,8 @@ pub enum Message { ConfigWrite(Result<(), Error>), SaveConfigChanges(ConfigChangeType), SwitchTheme(Event<Theme>), - SystemThemeChanged(Theme), + SystemThemeChanged(Mode), + UseSystemTheme(bool), CopyCode, SwitchPane(DesignerPane), EditorAction(text_editor::Action), diff --git a/src/types/project.rs b/src/types/project.rs index ceb4f84..aac9bca 100644 --- a/src/types/project.rs +++ b/src/types/project.rs @@ -1,7 +1,7 @@ use std::path::{Path, PathBuf}; extern crate fxhash; -use iced::Theme; +use iced::theme::{Base, Mode, Theme}; use rust_format::{Formatter, PostProcess, PrettyPlease}; use serde::{Deserialize, Serialize}; @@ -31,11 +31,11 @@ impl Project { } } - pub fn get_theme(&self) -> Theme { - match &self.theme { - Some(theme) => iced_theme_from_str(theme), - None => iced::Theme::default(), - } + pub fn get_theme(&self, mode: Mode) -> Theme { + self.theme + .as_ref() + .and_then(|theme| iced_theme_from_str(theme)) + .unwrap_or_else(|| Theme::default(mode)) } pub async fn from_path(path: PathBuf) -> Result<(PathBuf, Self), Error> { @@ -90,14 +90,14 @@ impl Project { Ok(path) } - pub fn app_code(&mut self) -> Result<String, Error> { + pub fn app_code(&mut self, theme_mode: Mode) -> Result<String, Error> { use iced::debug; let codegen = debug::time("Code Generation"); let result = match self.element_tree { Some(ref element_tree) => { let (imports, view) = element_tree.codegen(); - let theme = self.get_theme(); + let theme = self.get_theme(theme_mode); let app_code = format!( r#"// Automatically generated by iced Builder |
