summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main.rs16
-rw-r--r--src/panes/code_view.rs9
-rw-r--r--src/theme.rs38
-rw-r--r--src/types.rs2
-rw-r--r--src/types/project.rs2
5 files changed, 49 insertions, 18 deletions
diff --git a/src/main.rs b/src/main.rs
index 5f25a28..743797c 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -24,8 +24,6 @@ use panes::{code_view, designer_view, element_list};
use tokio::runtime;
use types::{Action, DesignerPane, ElementName, Message, Project};
-//pub(crate) type Result<T> = core::result::Result<T, Error>;
-
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut args = std::env::args();
let _ = args.next();
@@ -146,7 +144,7 @@ impl App {
fn update(&mut self, message: Message) -> Task<Message> {
match message {
- Message::ToggleTheme(event) => {
+ Message::SwitchTheme(event) => {
self.theme.update(event);
}
Message::CopyCode => {
@@ -320,7 +318,7 @@ impl App {
}
fn subscription(&self) -> iced::Subscription<Message> {
- keyboard::on_key_press(|key, modifiers| {
+ let hotkeys = keyboard::on_key_press(|key, modifiers| {
if modifiers.command() {
match key.as_ref() {
keyboard::Key::Character("o") => Some(Message::OpenFile),
@@ -337,14 +335,16 @@ impl App {
} else {
None
}
- })
+ });
+
+ hotkeys
}
fn view(&self) -> Element<'_, Message> {
let header = row![pick_list(
self.config.theme.all.clone(),
- Some(self.theme.target().clone()),
- |theme| { Message::ToggleTheme(theme.into()) }
+ Some(self.theme.target()),
+ |theme| Message::SwitchTheme(theme.into())
)]
.width(200);
let pane_grid =
@@ -383,7 +383,7 @@ impl App {
.width(Length::Fill);
Animation::new(&self.theme, container(content).height(Length::Fill))
- .on_update(Message::ToggleTheme)
+ .on_update(Message::SwitchTheme)
.into()
}
}
diff --git a/src/panes/code_view.rs b/src/panes/code_view.rs
index bb21530..1037b5d 100644
--- a/src/panes/code_view.rs
+++ b/src/panes/code_view.rs
@@ -4,7 +4,7 @@ use iced::{Alignment, Background, Border, Font, Length, Theme};
use iced_custom_highlighter::{Highlight, Highlighter, Scope, Settings};
use super::style;
-use crate::icon::copy;
+use crate::icon;
use crate::types::{DesignerPane, Message};
use crate::widget::tip;
@@ -27,8 +27,11 @@ pub fn view(
text("Generated Code"),
Space::with_width(Length::Fill),
tip(
- button(copy()).on_press(Message::CopyCode),
- "Copy code to clipboard",
+ button(icon::copy())
+ .on_press(Message::CopyCode)
+ .padding([2, 7])
+ .style(button::text),
+ "Copy",
tip::Position::FollowCursor
),
Space::with_width(20),
diff --git a/src/theme.rs b/src/theme.rs
index 7cb51c1..6547c6b 100644
--- a/src/theme.rs
+++ b/src/theme.rs
@@ -67,19 +67,21 @@ fn palette_to_string(palette: &iced::theme::Palette) -> String {
primary: color!(0x{}),
success: color!(0x{}),
danger: color!(0x{}),
+ warning: color!(0x{}),
}}",
color_to_hex(palette.background),
color_to_hex(palette.text),
color_to_hex(palette.primary),
color_to_hex(palette.success),
color_to_hex(palette.danger),
+ color_to_hex(palette.warning),
)
}
fn extended_to_string(extended: &Extended) -> String {
format!(
r"
-Extended{{background:Background{{base:Pair{{color:color!(0x{}),text:color!(0x{}),}},weak:Pair{{color:color!(0x{}),text:color!(0x{}),}},strong:Pair{{color:color!(0x{}),text:color!(0x{}),}},}},primary:Primary{{base:Pair{{color:color!(0x{}),text:color!(0x{}),}},weak:Pair{{color:color!(0x{}),text:color!(0x{}),}},strong:Pair{{color:color!(0x{}),text:color!(0x{}),}},}},secondary:Secondary{{base:Pair{{color:color!(0x{}),text:color!(0x{}),}},weak:Pair{{color:color!(0x{}),text:color!(0x{}),}},strong:Pair{{color:color!(0x{}),text:color!(0x{}),}},}},success:Success{{base:Pair{{color:color!(0x{}),text:color!(0x{}),}},weak:Pair{{color:color!(0x{}),text:color!(0x{}),}},strong:Pair{{color:color!(0x{}),text:color!(0x{}),}},}},danger:Danger{{base:Pair{{color:color!(0x{}),text:color!(0x{}),}},weak:Pair{{color:color!(0x{}),text:color!(0x{}),}},strong:Pair{{color:color!(0x{}),text:color!(0x{}),}},}},is_dark:true,}}",
+Extended{{background:Background{{base:Pair{{color:color!(0x{}),text:color!(0x{}),}},weak:Pair{{color:color!(0x{}),text:color!(0x{}),}},strong:Pair{{color:color!(0x{}),text:color!(0x{}),}},}},primary:Primary{{base:Pair{{color:color!(0x{}),text:color!(0x{}),}},weak:Pair{{color:color!(0x{}),text:color!(0x{}),}},strong:Pair{{color:color!(0x{}),text:color!(0x{}),}},}},secondary:Secondary{{base:Pair{{color:color!(0x{}),text:color!(0x{}),}},weak:Pair{{color:color!(0x{}),text:color!(0x{}),}},strong:Pair{{color:color!(0x{}),text:color!(0x{}),}},}},success:Success{{base:Pair{{color:color!(0x{}),text:color!(0x{}),}},weak:Pair{{color:color!(0x{}),text:color!(0x{}),}},strong:Pair{{color:color!(0x{}),text:color!(0x{}),}},}},danger:Danger{{base:Pair{{color:color!(0x{}),text:color!(0x{}),}},weak:Pair{{color:color!(0x{}),text:color!(0x{}),}},strong:Pair{{color:color!(0x{}),text:color!(0x{}),}},}},warning:Warning{{base:Pair{{color:color!(0x{}),text:color!(0x{}),}},weak:Pair{{color:color!(0x{}),text:color!(0x{}),}},strong:Pair{{color:color!(0x{}),text:color!(0x{}),}},}},is_dark:true,}}",
color_to_hex(extended.background.base.color),
color_to_hex(extended.background.base.text),
color_to_hex(extended.background.weak.color),
@@ -110,6 +112,12 @@ Extended{{background:Background{{base:Pair{{color:color!(0x{}),text:color!(0x{})
color_to_hex(extended.danger.weak.text),
color_to_hex(extended.danger.strong.color),
color_to_hex(extended.danger.strong.text),
+ color_to_hex(extended.warning.base.color),
+ color_to_hex(extended.warning.base.text),
+ color_to_hex(extended.warning.weak.color),
+ color_to_hex(extended.warning.weak.text),
+ color_to_hex(extended.warning.strong.color),
+ color_to_hex(extended.warning.strong.text),
)
}
@@ -216,6 +224,8 @@ pub struct ThemePalette {
success: Color,
#[serde(with = "color_serde")]
danger: Color,
+ #[serde(with = "color_serde")]
+ warning: Color,
}
impl Default for ThemePalette {
@@ -227,6 +237,7 @@ impl Default for ThemePalette {
primary: palette.primary,
success: palette.success,
danger: palette.danger,
+ warning: palette.warning,
}
}
}
@@ -239,6 +250,7 @@ impl From<ThemePalette> for iced::theme::Palette {
primary: palette.primary,
success: palette.success,
danger: palette.danger,
+ warning: palette.warning,
}
}
}
@@ -264,7 +276,6 @@ impl From<Theme> for Extended {
}
}
- // Handle primary
if let Some(primary) = extended_palette.primary {
if let Some(base) = primary.base {
extended.primary.base = base.into();
@@ -277,7 +288,6 @@ impl From<Theme> for Extended {
}
}
- // Handle secondary
if let Some(secondary) = extended_palette.secondary {
if let Some(base) = secondary.base {
extended.secondary.base = base.into();
@@ -290,7 +300,6 @@ impl From<Theme> for Extended {
}
}
- // Handle success
if let Some(success) = extended_palette.success {
if let Some(base) = success.base {
extended.success.base = base.into();
@@ -303,7 +312,6 @@ impl From<Theme> for Extended {
}
}
- // Handle danger
if let Some(danger) = extended_palette.danger {
if let Some(base) = danger.base {
extended.danger.base = base.into();
@@ -315,6 +323,18 @@ impl From<Theme> for Extended {
extended.danger.strong = strong.into();
}
}
+
+ if let Some(warning) = extended_palette.warning {
+ if let Some(base) = warning.base {
+ extended.warning.base = base.into();
+ }
+ if let Some(weak) = warning.weak {
+ extended.warning.weak = weak.into();
+ }
+ if let Some(strong) = warning.strong {
+ extended.warning.strong = strong.into();
+ }
+ }
}
extended
@@ -328,6 +348,7 @@ struct ExtendedThemePalette {
secondary: Option<ThemeSecondary>,
success: Option<ThemeSuccess>,
danger: Option<ThemeDanger>,
+ warning: Option<ThemeWarning>,
}
#[derive(Debug, Default, serde::Deserialize)]
@@ -366,6 +387,13 @@ struct ThemeDanger {
}
#[derive(Debug, Default, serde::Deserialize)]
+struct ThemeWarning {
+ base: Option<ThemePair>,
+ weak: Option<ThemePair>,
+ strong: Option<ThemePair>,
+}
+
+#[derive(Debug, Default, serde::Deserialize)]
struct ThemePair {
#[serde(with = "color_serde")]
color: Color,
diff --git a/src/types.rs b/src/types.rs
index b9fd68f..7a6be71 100644
--- a/src/types.rs
+++ b/src/types.rs
@@ -15,7 +15,7 @@ use crate::Error;
#[derive(Debug, Clone)]
pub enum Message {
- ToggleTheme(Event<Theme>),
+ SwitchTheme(Event<Theme>),
CopyCode,
SwitchPage(DesignerPane),
EditorAction(text_editor::Action),
diff --git a/src/types/project.rs b/src/types/project.rs
index 18247ae..ee0ff6c 100644
--- a/src/types/project.rs
+++ b/src/types/project.rs
@@ -114,7 +114,7 @@ impl Project {
let mut theme_imports = "";
if theme_index(&theme.to_string(), Theme::ALL).is_none() {
if theme_code.contains("Extended") {
- theme_imports = "use iced::{{color,theme::{{Palette,palette::{{Extended,Background,Primary,Secondary,Success,Danger,Pair}}}}}};\n";
+ theme_imports = "use iced::{{color,theme::{{Palette,palette::{{Extended,Background,Primary,Secondary,Success,Danger,Warning,Pair}}}}}};\n";
} else {
theme_imports = "use iced::{{color,theme::Palette}};\n";
}