diff options
| author | Polesznyák Márk László <116908301+pml68@users.noreply.github.com> | 2024-12-26 00:12:06 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-26 00:12:06 +0100 |
| commit | 0ae3ec6cc9babcab39c76f023606229a151916ab (patch) | |
| tree | e92d0109599622984b2c485cc020951da288cec3 /iced_builder/src/panes/code_view.rs | |
| parent | Merge pull request #3 from pml68/refactor/internal-restructuring (diff) | |
| parent | feat: add `tip` widget helper from `hecrj/icebreaker` (diff) | |
| download | iced-builder-0ae3ec6cc9babcab39c76f023606229a151916ab.tar.gz | |
Merge pull request #4 from pml68/feat/playground
Playground done **for now**
Diffstat (limited to 'iced_builder/src/panes/code_view.rs')
| -rw-r--r-- | iced_builder/src/panes/code_view.rs | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/iced_builder/src/panes/code_view.rs b/iced_builder/src/panes/code_view.rs new file mode 100644 index 0000000..fe7801c --- /dev/null +++ b/iced_builder/src/panes/code_view.rs @@ -0,0 +1,49 @@ +use iced::widget::{button, pane_grid, row, text, text_editor, Space}; +use iced::{Alignment, Length, Theme}; +use super::style; +use crate::icon::copy; +use crate::types::{DesignerPage, Message}; +use crate::widget::tip; + +pub fn view<'a>( + editor_content: &'a text_editor::Content, + theme: Theme, + is_focused: bool, +) -> pane_grid::Content<'a, Message> { + let title = row![ + text("Generated Code"), + Space::with_width(Length::Fill), + tip( + button(copy()).on_press(Message::CopyCode), + "Copy code to clipboard", + tip::Position::FollowCursor + ), + Space::with_width(20), + button("Switch to Designer view") + .on_press(Message::SwitchPage(DesignerPage::DesignerView)) + ] + .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 theme.to_string().contains("Dark") { + 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 + }) +} |
