summaryrefslogtreecommitdiff
path: root/iced_builder/src/panes/designer_view.rs
diff options
context:
space:
mode:
authorPolesznyák Márk László <116908301+pml68@users.noreply.github.com>2024-12-26 00:12:06 +0100
committerGitHub <noreply@github.com>2024-12-26 00:12:06 +0100
commit0ae3ec6cc9babcab39c76f023606229a151916ab (patch)
treee92d0109599622984b2c485cc020951da288cec3 /iced_builder/src/panes/designer_view.rs
parentMerge pull request #3 from pml68/refactor/internal-restructuring (diff)
parentfeat: add `tip` widget helper from `hecrj/icebreaker` (diff)
downloadiced-builder-0ae3ec6cc9babcab39c76f023606229a151916ab.tar.gz
Merge pull request #4 from pml68/feat/playground
Playground done **for now**
Diffstat (limited to 'iced_builder/src/panes/designer_view.rs')
-rw-r--r--iced_builder/src/panes/designer_view.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/iced_builder/src/panes/designer_view.rs b/iced_builder/src/panes/designer_view.rs
new file mode 100644
index 0000000..76456db
--- /dev/null
+++ b/iced_builder/src/panes/designer_view.rs
@@ -0,0 +1,37 @@
+use iced::widget::{button, container, pane_grid, row, text, themer, Space};
+use iced::{Alignment, Element, Length};
+
+use super::style;
+use crate::types::{DesignerPage, Message, RenderedElement};
+
+pub fn view<'a>(
+ element_tree: &Option<RenderedElement>,
+ designer_theme: iced::Theme,
+ is_focused: bool,
+) -> pane_grid::Content<'a, Message> {
+ let el_tree: Element<'a, Message> = match element_tree {
+ Some(tree) => tree.clone().into(),
+ 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
+ })
+}