From b6929f946395659f2cb0e55ac8a51b4c76d0012d Mon Sep 17 00:00:00 2001 From: Michael Sippel Date: Fri, 24 Feb 2023 18:44:01 +0100 Subject: [PATCH] node: get_data_port/get_data_view --- nested/src/editors/list/editor.rs | 2 +- nested/src/tree/node.rs | 23 +++++++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/nested/src/editors/list/editor.rs b/nested/src/editors/list/editor.rs index c566e31..f8a0a5f 100644 --- a/nested/src/editors/list/editor.rs +++ b/nested/src/editors/list/editor.rs @@ -15,7 +15,7 @@ use { pub struct ListEditor { pub(super) cursor: SingletonBuffer, - pub(crate) data: VecBuffer, + pub data: VecBuffer, pub(super) addr_port: OuterViewPort>, pub(super) mode_port: OuterViewPort>, diff --git a/nested/src/tree/node.rs b/nested/src/tree/node.rs index 55377d7..3bc3bcc 100644 --- a/nested/src/tree/node.rs +++ b/nested/src/tree/node.rs @@ -165,7 +165,7 @@ impl NestedNode { .map(|c| TerminalAtom::from(c)) .to_index() .map_key( - |x| { + |_x| { Point2::new(0, 0) }, |p| { @@ -220,7 +220,7 @@ impl NestedNode { pub fn get_diag(&self) -> OuterViewPort> { self.diag.clone().unwrap_or(ViewPort::new().into_outer()) } - + pub fn get_view(&self) -> OuterViewPort { self.view.clone().unwrap_or(ViewPort::new().into_outer()) } @@ -229,7 +229,7 @@ impl NestedNode { Context::morph_node(self, ty) } - pub fn get_data_view<'a, V: View + ?Sized + 'static>(&'a self, type_str: impl Iterator) -> Option> + pub fn get_data_port<'a, V: View + ?Sized + 'static>(&'a self, type_str: impl Iterator) -> Option> where V::Msg: Clone { if let Some(ctx) = self.ctx.clone() { if let Some(data) = self.data.clone() { @@ -237,7 +237,7 @@ impl NestedNode { let repr_tree = ReprTree::descend_ladder(&data, type_ladder)?; repr_tree.clone().read().unwrap() - .get_view::().clone() + .get_port::().clone() } else { eprintln!("get_data(): no data port"); None @@ -248,6 +248,21 @@ impl NestedNode { } } + pub fn get_data_view<'a, V: View + ?Sized + 'static>(&'a self, type_str: impl Iterator) -> Option> + where V::Msg: Clone { + self.get_data_port::(type_str)?.get_view() + } +/* + pub fn get_seq_view<'a, T: Clone>(&self, type_str: impl Iterator) -> Option>> { + self.get_data_view::>(type_str) + .unwrap() + .map({ + move |node| { + node.get_data_view::>().get() + } + }) + } +*/ pub fn get_edit(&self) -> Option>> { if let Some(edit) = self.editor.clone() { if let Ok(edit) = edit.downcast::>() {