summaryrefslogtreecommitdiff
path: root/iced_builder/src/views/code_view.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--iced_builder/src/views/code_view.rs50
1 files changed, 50 insertions, 0 deletions
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
+ })
+}