From cb844f573a438ff3a9b2f71fb88e6537edb20f54 Mon Sep 17 00:00:00 2001 From: pml68 Date: Fri, 25 Oct 2024 21:16:54 +0200 Subject: refactor: extract views from `main.rs` file --- iced_builder/src/views/code_view.rs | 50 +++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 iced_builder/src/views/code_view.rs (limited to 'iced_builder/src/views/code_view.rs') diff --git a/iced_builder/src/views/code_view.rs b/iced_builder/src/views/code_view.rs new file mode 100644 index 0000000..4515687 --- /dev/null +++ b/iced_builder/src/views/code_view.rs @@ -0,0 +1,50 @@ +use super::style; +use crate::{types::DesignerPage, Message}; +use iced::{ + highlighter, + widget::{button, container, pane_grid, row, text, text_editor, tooltip, Space}, + Alignment, Font, Length, +}; + +pub fn view<'a>( + editor_content: &'a text_editor::Content, + dark_theme: bool, + is_focused: bool, +) -> pane_grid::Content<'a, Message> { + let title = row![ + text("Generated Code"), + Space::with_width(Length::Fill), + tooltip( + button(container(text('\u{0e801}').font(Font::with_name("editor-icons"))).center_x(30)) + .on_press(Message::CopyCode), + "Copy code to clipboard", + tooltip::Position::FollowCursor + ), + Space::with_width(20), + button("Switch to Designer view").on_press(Message::SwitchPage(DesignerPage::Designer)) + ] + .align_y(Alignment::Center); + let title_bar = pane_grid::TitleBar::new(title) + .padding(10) + .style(style::title_bar); + pane_grid::Content::new( + text_editor(editor_content) + .on_action(Message::EditorAction) + .highlight( + "rs", + if dark_theme { + highlighter::Theme::SolarizedDark + } else { + highlighter::Theme::InspiredGitHub + }, + ) + .height(Length::Fill) + .padding(20), + ) + .title_bar(title_bar) + .style(if is_focused { + style::pane_focused + } else { + style::pane_active + }) +} -- cgit v1.2.3