summaryrefslogtreecommitdiff
path: root/src/panes/designer_view.rs
diff options
context:
space:
mode:
authorPolesznyák Márk László <116908301+pml68@users.noreply.github.com>2025-04-29 23:35:39 +0200
committerGitHub <noreply@github.com>2025-04-29 23:35:39 +0200
commitca50c308f0058af80e9125ba00a1349877169968 (patch)
tree38fbd5c78c90487e5b641f635d01c4a614ddfd44 /src/panes/designer_view.rs
parentMerge pull request #14 from pml68/dependabot/cargo/windows_exe_info-0.5.1 (diff)
parentstyle: `theme` -> `appearance` (diff)
downloadiced-builder-ca50c308f0058af80e9125ba00a1349877169968.tar.gz
Merge pull request #20 from pml68/feat/custom-theme
Diffstat (limited to '')
-rw-r--r--src/panes/designer_view.rs53
1 files changed, 38 insertions, 15 deletions
diff --git a/src/panes/designer_view.rs b/src/panes/designer_view.rs
index 6340f73..0255b40 100644
--- a/src/panes/designer_view.rs
+++ b/src/panes/designer_view.rs
@@ -1,32 +1,55 @@
-use iced::widget::{Space, button, container, pane_grid, row, text, themer};
-use iced::{Alignment, Element, Length};
+use iced::widget::{
+ button, center, container, pane_grid, responsive, row, text, themer,
+};
+use iced::{Alignment, Length};
+use material_theme::Theme;
use super::style;
+use crate::icon;
use crate::types::{DesignerPane, Message, RenderedElement};
pub fn view<'a>(
- element_tree: Option<&RenderedElement>,
+ element_tree: Option<&'a 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(),
+) -> pane_grid::Content<'a, Message, Theme> {
+ let el_tree: iced::Element<'a, Message> = match element_tree {
+ Some(tree) => responsive(|size| {
+ center(
+ container(tree.clone())
+ .style(|theme| {
+ container::background(theme.palette().background)
+ })
+ .height(size.height * 0.5)
+ .width(size.height * 0.8),
+ )
+ .into()
+ })
+ .into(),
+ None => center("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(DesignerPane::CodeView)),
- ]
- .align_y(Alignment::Center);
- let title_bar = pane_grid::TitleBar::new(title)
+
+ let title_bar = pane_grid::TitleBar::new(text("Designer").center())
+ .controls(pane_grid::Controls::dynamic(
+ row![
+ button("Switch to Code view")
+ .on_press(Message::SwitchPage(DesignerPane::CodeView),)
+ ]
+ .align_y(Alignment::Center),
+ row![
+ button(icon::switch())
+ .on_press(Message::SwitchPage(DesignerPane::CodeView),)
+ ]
+ .align_y(Alignment::Center),
+ ))
.padding(10)
.style(style::title_bar);
+
pane_grid::Content::new(content)
.title_bar(title_bar)
.style(if is_focused {