This commit is contained in:
tsuki 2024-03-07 01:02:01 +08:00
parent 8a60c36240
commit 558bc68d81
3 changed files with 26 additions and 7 deletions

View File

@ -188,7 +188,9 @@ impl Component for AppModel {
sender: ComponentSender<Self>,
) -> ComponentParts<Self> {
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 {

View File

@ -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<RefCell<Vec<Layer>>>,
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::<ToTime>(&["<primary>T"]);
let mut group = relm4::actions::RelmActionGroup::<LayerActionGroup>::new();
let action: RelmAction<ToTime> = {
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::<TagColumn>();
meta_list_view.append_column::<InfoColumn>();
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::<Vec<_>>();
model.list_view_wrapper.extend_from_iter(list);
}
ComponentParts { model, widgets }
}
@ -222,7 +237,7 @@ impl RelmListItem for LayerItem {
fn setup(_item: &gtk::ListItem) -> (gtk::Box, Widgets) {
relm4::menu! {
main_menu: {
"Bind To Time" => ToTime
"Bind To Time" => ToTime(_item.position())
}
}
relm4::view! {

View File

@ -28,6 +28,7 @@ pub type LayerImplSync = Arc<Mutex<Box<dyn LayerImpl + Send + Sync>>>;
pub enum AssoElement {
TimeSeries(Arc<Mutex<element::TimeSeriesElement>>),
Instant(element::InstantElement),
Test
}
#[derive(Clone)]
@ -67,6 +68,7 @@ impl Layer {
e.render(render);
}
AssoElement::TimeSeries(ref e) => {}
_ => {}
}
}
}