diff options
| author | pml68 <contact@pml68.me> | 2024-10-28 01:00:07 +0100 |
|---|---|---|
| committer | pml68 <contact@pml68.me> | 2024-10-28 01:00:12 +0100 |
| commit | 726e9023c4629d70410174ddbd1e6d43f7583fe5 (patch) | |
| tree | 569c3d25033f06ca708279565eafba76b0ca52ec /iced_builder/src/main.rs | |
| parent | Merge pull request #3 from pml68/refactor/internal-restructuring (diff) | |
| download | iced-builder-726e9023c4629d70410174ddbd1e6d43f7583fe5.tar.gz | |
feat: implement very basic playground
fix: `is_dirty` was never checked for in the main update fn, allowing
unsaved work to easily be overwritten
Diffstat (limited to '')
| -rw-r--r-- | iced_builder/src/main.rs | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/iced_builder/src/main.rs b/iced_builder/src/main.rs index ed3f264..d022f29 100644 --- a/iced_builder/src/main.rs +++ b/iced_builder/src/main.rs @@ -11,7 +11,7 @@ use iced::{ Alignment, Element, Length, Settings, Task, Theme, }; use iced_builder::{ - types::{element_name::ElementName, project::Project, rendered_element::Action, DesignerPage}, + types::{Action, DesignerPage, ElementName, Project}, views::{code_view, designer_view, element_list}, Message, }; @@ -101,7 +101,7 @@ impl App { fn update(&mut self, message: Message) -> Task<Message> { match message { - Message::ToggleTheme => self.dark_theme = !self.dark_theme, + Message::ToggleDarkMode => self.dark_theme = !self.dark_theme, Message::CopyCode => return clipboard::write(self.editor_content.text()), Message::SwitchPage(page) => self.designer_page = page, Message::EditorAction(action) => { @@ -134,6 +134,8 @@ impl App { if let Ok(Some(ref element)) = result { self.project.element_tree = Some(element.clone()); } + + self.is_dirty = true; } return Task::done(Message::RefreshEditorContent); @@ -156,6 +158,8 @@ impl App { Some(element.get_id()), ); let _ = element.handle_action(self.project.element_tree.as_mut(), action); + + self.is_dirty = true; } return Task::done(Message::RefreshEditorContent); @@ -178,7 +182,7 @@ impl App { } } Message::OpenFile => { - if !self.is_loading { + if !self.is_loading && !self.is_dirty { self.is_loading = true; return Task::perform(Project::from_file(), Message::FileOpened); @@ -247,8 +251,8 @@ impl App { } fn view(&self) -> Element<Message> { - let header = row![button("Toggle Theme") - .on_press(Message::ToggleTheme) + let header = row![button("Toggle Dark Mode") + .on_press(Message::ToggleDarkMode) .padding(5)] .width(200); let pane_grid = PaneGrid::new(&self.pane_state, |id, pane, _is_maximized| { |
