From 558bc68d81bdf1d0a1a510e1b9eae12ae4d5aa0f Mon Sep 17 00:00:00 2001 From: tsuki Date: Thu, 7 Mar 2024 01:02:01 +0800 Subject: [PATCH] sync --- src/components/app.rs | 4 +++- src/components/monitor/sidebar/sidebar.rs | 27 ++++++++++++++++++----- src/widgets/render/interior/layers.rs | 2 ++ 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/components/app.rs b/src/components/app.rs index eeca4c4..4c6319a 100644 --- a/src/components/app.rs +++ b/src/components/app.rs @@ -188,7 +188,9 @@ impl Component for AppModel { sender: ComponentSender, ) -> ComponentParts { - let layers = Rc::new(RefCell::new(Vec::with_capacity(20))); + let layers = Rc::new(RefCell::new(vec![ + Layer::new(true, "Layer1".to_string(), AssoElement::Test), + ])); let control = ControlPanelModel::builder().launch(0).forward( sender.input_sender(), |msg| match msg { diff --git a/src/components/monitor/sidebar/sidebar.rs b/src/components/monitor/sidebar/sidebar.rs index 76314ee..e9b86df 100644 --- a/src/components/monitor/sidebar/sidebar.rs +++ b/src/components/monitor/sidebar/sidebar.rs @@ -25,7 +25,8 @@ use super::{ }; relm4::new_action_group!(LayerActionGroup, "layer"); -relm4::new_stateless_action!(ToTime, LayerActionGroup, "to_time"); +// relm4::new_stateless_action!(ToTime, LayerActionGroup, "to_time"); +relm4::new_stateful_action!(ToTime, LayerActionGroup, "to_time", u32, u32); pub struct SideBarModel { layers: Rc>>, counter: u8, @@ -132,13 +133,17 @@ impl SimpleComponent for SideBarModel { let mut bottom_bar_vec = FactoryVecDeque::new(gtk::Box::default(), sender.input_sender()); - relm4::main_application().set_accelerators_for_action::(&["T"]); + let mut group = relm4::actions::RelmActionGroup::::new(); let action: RelmAction = { - RelmAction::new_stateless(move |_| { - sender.output(SideBarOutputMsg::SwitchToTimeSeries(0)); + RelmAction::new_stateful_with_target_value(&0, |_, state, _value| { + *state ^= 1; + dbg!(state); }) }; + group.add_action(action); + group.register_for_main_application(); + { let mut bottom_bar_vec_guard = bottom_bar_vec.guard(); bottom_bar_vec_guard.push_back(BottomBarModel::new("add-filled".to_string())); @@ -150,7 +155,7 @@ impl SimpleComponent for SideBarModel { meta_list_view.append_column::(); meta_list_view.append_column::(); - let model = SideBarModel { + let mut model = SideBarModel { meta_list_view, layers: init, counter: 0, @@ -163,6 +168,16 @@ impl SimpleComponent for SideBarModel { let columns = model.meta_list_view.get_columns(); let info_c = columns.get("info").unwrap(); let widgets = view_output!(); + { + let mut list = model + .layers + .borrow() + .iter() + .map(|v| LayerItem::new(v.name.clone(), v.visiable, v.get_thumbnail())) + .collect::>(); + model.list_view_wrapper.extend_from_iter(list); + } + ComponentParts { model, widgets } } @@ -222,7 +237,7 @@ impl RelmListItem for LayerItem { fn setup(_item: >k::ListItem) -> (gtk::Box, Widgets) { relm4::menu! { main_menu: { - "Bind To Time" => ToTime + "Bind To Time" => ToTime(_item.position()) } } relm4::view! { diff --git a/src/widgets/render/interior/layers.rs b/src/widgets/render/interior/layers.rs index 86e96cd..bed9ca6 100644 --- a/src/widgets/render/interior/layers.rs +++ b/src/widgets/render/interior/layers.rs @@ -28,6 +28,7 @@ pub type LayerImplSync = Arc>>; pub enum AssoElement { TimeSeries(Arc>), Instant(element::InstantElement), + Test } #[derive(Clone)] @@ -67,6 +68,7 @@ impl Layer { e.render(render); } AssoElement::TimeSeries(ref e) => {} + _ => {} } } }