From 1218af7314c330035cdc03f792b31ffe0a87e210 Mon Sep 17 00:00:00 2001 From: sleptworld Date: Wed, 17 Jan 2024 00:25:28 +0800 Subject: [PATCH] test css --- Cargo.toml | 2 +- src/components/app.rs | 1 + .../render_panel/monitor/monitor.rs | 12 +++++++--- .../monitor/sidebar/bottom_bar.rs | 23 ++++++++++++++---- .../render_panel/monitor/sidebar/sidebar.rs | 24 +++++++++++++++---- src/render/imp.rs | 2 +- 6 files changed, 50 insertions(+), 14 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 5a71bed..6d4c106 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,7 +44,7 @@ tokio = { version = "1.35.1", features = ["time", "fs", "io-std", "macros", "num async-trait = "0.1.77" lazy_static = "1.4.0" once_cell = "1.19.0" -relm4-icons = "0.6.0" +relm4-icons = {version="0.6.0",features=["add-filled","delete-filled","chevron-up-filled","chevron-down-filled"]} # plotters-cairo = "0.5.0" diff --git a/src/components/app.rs b/src/components/app.rs index 0a61bb6..d9b07ee 100644 --- a/src/components/app.rs +++ b/src/components/app.rs @@ -108,6 +108,7 @@ impl SimpleComponent for AppModel { }; let app = relm4::main_application(); + relm4_icons::initialize_icons(); app.set_menubar(Some(&main_menu)); let model = AppModel { diff --git a/src/components/render_panel/monitor/monitor.rs b/src/components/render_panel/monitor/monitor.rs index 933b21c..9d270fa 100644 --- a/src/components/render_panel/monitor/monitor.rs +++ b/src/components/render_panel/monitor/monitor.rs @@ -7,6 +7,7 @@ use std::sync::Arc; use super::sidebar::{sidebar::SideBarModel, Msg, SideBarOutputMsg}; use adw::prelude::*; +use gtk::prelude::StyleContextExt; use gtk::subclass::root; use relm4::{ component::{AsyncComponent, AsyncComponentParts}, @@ -42,9 +43,14 @@ impl AsyncComponent for MonitorModel { set_position: 1000, #[wrap(Some)] #[name="render"] - set_start_child=&Render{ - #[watch] - set_interior_layers: model.layers.clone(), + set_start_child=>k::Box{ + add_css_class: "rb", + set_margin_all: 5, + Render{ + add_css_class: "rb", + #[watch] + set_interior_layers: model.layers.clone(), + } }, #[wrap(Some)] set_end_child=model.sidebar.widget(), diff --git a/src/components/render_panel/monitor/sidebar/bottom_bar.rs b/src/components/render_panel/monitor/sidebar/bottom_bar.rs index a0f1351..0c13ab1 100644 --- a/src/components/render_panel/monitor/sidebar/bottom_bar.rs +++ b/src/components/render_panel/monitor/sidebar/bottom_bar.rs @@ -21,12 +21,21 @@ pub struct BottomBarModel { msg: TestMsg, } +impl BottomBarModel { + pub fn new(icon: String) -> Self { + Self { + icon, + msg: TestMsg::Add, + } + } +} + #[relm4::factory(pub)] impl FactoryComponent for BottomBarModel { type ParentWidget = gtk::Box; type ParentInput = Msg; type Input = (); - type Output = TextMsg; + type Output = TestMsg; type Init = BottomBarModel; type CommandOutput = (); @@ -34,8 +43,7 @@ impl FactoryComponent for BottomBarModel { #[root] gtk::Box{ gtk::Button{ - #[wrap(Some)] - set_icon_name= model.icon.as_str(), + set_icon_name=self.icon.as_str(), } } @@ -46,6 +54,13 @@ impl FactoryComponent for BottomBarModel { } fn update(&mut self, message: Self::Input, sender: FactorySender) { - match message {} } + + fn forward_to_parent(_output: Self::Output) -> Option { + Some(match _output { + _ => Msg::None + }) + + } + } diff --git a/src/components/render_panel/monitor/sidebar/sidebar.rs b/src/components/render_panel/monitor/sidebar/sidebar.rs index e45f31e..47a88e4 100644 --- a/src/components/render_panel/monitor/sidebar/sidebar.rs +++ b/src/components/render_panel/monitor/sidebar/sidebar.rs @@ -25,6 +25,7 @@ pub struct SideBarModel { #[derive(Debug)] pub enum Msg { RefreshList(Vec), + None } #[derive(Debug)] @@ -64,7 +65,7 @@ impl SimpleComponent for SideBarModel { sender.output( SideBarOutputMsg::NewLayer( Layer::grid_render_layer_with_path( - "/users/tsuki/projects/radar-g/test2.npz", + std::path::Path::new("./test2.npz"), "DBZ".to_string(), Npz, BoundaryNorm::default(), @@ -83,10 +84,12 @@ impl SimpleComponent for SideBarModel { #[local] bottom_panel -> gtk::Notebook{ set_margin_top: 10, - set_margin_bottom: 10, + set_margin_bottom: 5, }, #[local_ref] - counter_box -> gtk::Box{} + counter_box -> gtk::Box{ + set_spacing: 5, + } } }, @@ -103,7 +106,16 @@ impl SimpleComponent for SideBarModel { let mut list_view_wrapper: TypedListView = TypedListView::with_sorting(); - let bottom_bar_vec = FactoryVecDeque::new(gtk::Box::default(), sender.input_sender()); + let mut bottom_bar_vec = FactoryVecDeque::new(gtk::Box::default(), sender.input_sender()); + + + { + let mut bottom_bar_vec_guard = bottom_bar_vec.guard(); + bottom_bar_vec_guard.push_back(BottomBarModel::new("add-filled".to_string())); + bottom_bar_vec_guard.push_back(BottomBarModel::new("delete-filled".to_string())); + bottom_bar_vec_guard.push_back(BottomBarModel::new("chevron-up-filled".to_string())); + bottom_bar_vec_guard.push_back(BottomBarModel::new("chevron-down-filled".to_string())); + } let model = SideBarModel { counter: 0, @@ -121,7 +133,7 @@ impl SimpleComponent for SideBarModel { .hexpand(true) .build(); - let counter_box = model.bottom_bar_vec.widgets(); + let counter_box = model.bottom_bar_vec.widget(); layer_page.set_child(Some(my_view)); layer_page.set_margin_horizontal(5); @@ -140,6 +152,8 @@ impl SimpleComponent for SideBarModel { .append(LayerItem::new(layer.name, true)); } } + + _ => {} } } } diff --git a/src/render/imp.rs b/src/render/imp.rs index 05d460b..ddf3aab 100644 --- a/src/render/imp.rs +++ b/src/render/imp.rs @@ -215,7 +215,7 @@ impl Render { renderer.set_screen_target(Some(fbo)); let mut canvas = Canvas::new(renderer).expect("Cannot create canvas"); canvas - .add_font_dir("/Users/tsuki/projects/radar-g/src/assets") + .add_font_dir(std::path::Path::new("./src/assets")) .unwrap(); self.canvas.replace(Some(canvas));