diff options
| author | Polesznyák Márk László <116908301+pml68@users.noreply.github.com> | 2024-10-26 22:23:44 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-26 22:23:44 +0200 |
| commit | 95fcd7aefa1aaf8f69c719d6d66003311c097e97 (patch) | |
| tree | da813fb6d9bab57d9b114280f761a9635a1a8903 /iced_builder/src/views/designer_view.rs | |
| parent | Merge pull request #2 from pml68/feat/drag-and-drop (diff) | |
| parent | feat: implement `std::error::Error` for custom `Error` enum (diff) | |
| download | iced-builder-95fcd7aefa1aaf8f69c719d6d66003311c097e97.tar.gz | |
Merge pull request #3 from pml68/refactor/internal-restructuring
Internal restructuring done
Diffstat (limited to '')
| -rw-r--r-- | iced_builder/src/views/designer_view.rs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/iced_builder/src/views/designer_view.rs b/iced_builder/src/views/designer_view.rs new file mode 100644 index 0000000..6f31a51 --- /dev/null +++ b/iced_builder/src/views/designer_view.rs @@ -0,0 +1,40 @@ +use super::style; +use crate::{ + types::{rendered_element::RenderedElement, DesignerPage}, + Message, +}; +use iced::{ + widget::{button, container, pane_grid, row, text, themer, Space}, + Alignment, Length, +}; + +pub fn view<'a>( + element_tree: &Option<RenderedElement>, + designer_theme: iced::Theme, + is_focused: bool, +) -> pane_grid::Content<'a, Message> { + let el_tree = match element_tree { + Some(tree) => tree.clone().as_element(), + None => text("Open a project or begin creating one").into(), + }; + let content = container(themer(designer_theme, el_tree)) + .id(iced::widget::container::Id::new("drop_zone")) + .height(Length::Fill) + .width(Length::Fill); + let title = row![ + text("Designer"), + Space::with_width(Length::Fill), + button("Switch to Code view").on_press(Message::SwitchPage(DesignerPage::CodeView)), + ] + .align_y(Alignment::Center); + let title_bar = pane_grid::TitleBar::new(title) + .padding(10) + .style(style::title_bar); + pane_grid::Content::new(content) + .title_bar(title_bar) + .style(if is_focused { + style::pane_focused + } else { + style::pane_active + }) +} |
