pub struct TreeView<BackendT, ContextT, ErrorT, IdT, DataT> {
pub model: TreeModel<BackendT, ContextT, ErrorT, IdT, DataT>,
pub selected_row: Option<usize>,
pub page: usize,
pub debug: bool,
}Expand description
Tree view.
Nodes can be leaves (no children) or branches (potentially have children) and can have custom
data (DataT) attached to them. Their representation can be stylized with multiple colors and
effects.
Supported events:
- Up/Down keys: move selection
- PgUp/PgDown keys: move selection by 10 (configurable)
- Left/Right keys: collapse/expand branch node
- Enter key: toggle branch collapse/expand
- Mouse click on node: select
- Mouse click to the left of the node: toggle branch collapse/expand
The view’s data and behavior are backed by a TreeBackend. The nodes are stored and managed by a TreeModel. The model can be populated in advance and can also fetch data from the backend on demand, e.g. when a branch node is expanded.
Fields§
§model: TreeModel<BackendT, ContextT, ErrorT, IdT, DataT>Tree model.
selected_row: Option<usize>Selected row.
page: usizePage size for PgUp/PgDown.
debug: boolWhether we want to display debug information.
Implementations§
Source§impl<BackendT, ContextT, ErrorT, IdT, DataT> TreeView<BackendT, ContextT, ErrorT, IdT, DataT>where
BackendT: 'static + TreeBackend<ContextT, ErrorT, IdT, DataT> + Send + Sync,
DataT: 'static + Send + Sync,
impl<BackendT, ContextT, ErrorT, IdT, DataT> TreeView<BackendT, ContextT, ErrorT, IdT, DataT>where
BackendT: 'static + TreeBackend<ContextT, ErrorT, IdT, DataT> + Send + Sync,
DataT: 'static + Send + Sync,
Sourcepub fn selected_node(
&self,
) -> Option<&Node<BackendT, ContextT, ErrorT, IdT, DataT>>
pub fn selected_node( &self, ) -> Option<&Node<BackendT, ContextT, ErrorT, IdT, DataT>>
The selected node.
Sourcepub fn selected_path(&self) -> Option<NodePath>
pub fn selected_path(&self) -> Option<NodePath>
The selected path.
Sourcepub fn selected_node_mut(
&mut self,
) -> Option<&mut Node<BackendT, ContextT, ErrorT, IdT, DataT>>
pub fn selected_node_mut( &mut self, ) -> Option<&mut Node<BackendT, ContextT, ErrorT, IdT, DataT>>
The selected node.
Sourcepub fn is_selected(&self, row: usize) -> bool
pub fn is_selected(&self, row: usize) -> bool
Whether the row is selected.
Sourcepub fn select_top(&mut self)
pub fn select_top(&mut self)
Select top row.
Sourcepub fn select_bottom(&mut self)
pub fn select_bottom(&mut self)
Select bottom row.
Sourcepub fn move_selection(&mut self, delta: isize)
pub fn move_selection(&mut self, delta: isize)
Move selection by delta rows.
Source§impl<BackendT, ContextT, ErrorT, IdT, DataT> TreeView<BackendT, ContextT, ErrorT, IdT, DataT>
impl<BackendT, ContextT, ErrorT, IdT, DataT> TreeView<BackendT, ContextT, ErrorT, IdT, DataT>
Sourcepub fn toggle_branch_state(
node: &mut Node<BackendT, ContextT, ErrorT, IdT, DataT>,
context: ContextT,
) -> EventResultwhere
BackendT: TreeBackend<ContextT, ErrorT, IdT, DataT>,
ContextT: Clone,
ErrorT: 'static + Send + Sync,
pub fn toggle_branch_state(
node: &mut Node<BackendT, ContextT, ErrorT, IdT, DataT>,
context: ContextT,
) -> EventResultwhere
BackendT: TreeBackend<ContextT, ErrorT, IdT, DataT>,
ContextT: Clone,
ErrorT: 'static + Send + Sync,
Toggle branch state.
Sourcepub fn expand_branch(
node: &mut Node<BackendT, ContextT, ErrorT, IdT, DataT>,
context: ContextT,
) -> EventResultwhere
BackendT: TreeBackend<ContextT, ErrorT, IdT, DataT>,
ContextT: Clone,
ErrorT: 'static + Send + Sync,
pub fn expand_branch(
node: &mut Node<BackendT, ContextT, ErrorT, IdT, DataT>,
context: ContextT,
) -> EventResultwhere
BackendT: TreeBackend<ContextT, ErrorT, IdT, DataT>,
ContextT: Clone,
ErrorT: 'static + Send + Sync,
Expand branch.
Trait Implementations§
Source§impl<BackendT, ContextT, ErrorT, IdT, DataT> From<TreeModel<BackendT, ContextT, ErrorT, IdT, DataT>> for TreeView<BackendT, ContextT, ErrorT, IdT, DataT>
impl<BackendT, ContextT, ErrorT, IdT, DataT> From<TreeModel<BackendT, ContextT, ErrorT, IdT, DataT>> for TreeView<BackendT, ContextT, ErrorT, IdT, DataT>
Source§impl<BackendT, ContextT, ErrorT, IdT, DataT> View for TreeView<BackendT, ContextT, ErrorT, IdT, DataT>
impl<BackendT, ContextT, ErrorT, IdT, DataT> View for TreeView<BackendT, ContextT, ErrorT, IdT, DataT>
Source§fn take_focus(&mut self, _source: Direction) -> Result<EventResult, CannotFocus>
fn take_focus(&mut self, _source: Direction) -> Result<EventResult, CannotFocus>
Attempt to give this view the focus. Read more
Source§fn required_size(&mut self, _constraint: XY<usize>) -> XY<usize>
fn required_size(&mut self, _constraint: XY<usize>) -> XY<usize>
Returns the minimum size the view requires with the given restrictions. Read more
Source§fn important_area(&self, view_size: XY<usize>) -> Rect
fn important_area(&self, view_size: XY<usize>) -> Rect
What part of the view is important and should be visible? Read more
Source§fn on_event(&mut self, event: Event) -> EventResult
fn on_event(&mut self, event: Event) -> EventResult
Called when an event is received (key press, mouse event, …). Read more
Source§fn draw(&self, printer: &Printer<'_, '_>)
fn draw(&self, printer: &Printer<'_, '_>)
Draws the view with the given printer (includes bounds) and focus. Read more
Source§fn layout(&mut self, _: XY<usize>)
fn layout(&mut self, _: XY<usize>)
Called once the size for this view has been decided. Read more
Source§fn needs_relayout(&self) -> bool
fn needs_relayout(&self) -> bool
Source§fn call_on_any(
&mut self,
_: &Selector<'_>,
_: &mut dyn FnMut(&mut (dyn View + 'static)),
)
fn call_on_any( &mut self, _: &Selector<'_>, _: &mut dyn FnMut(&mut (dyn View + 'static)), )
Runs a closure on the view identified by the given selector. Read more
Source§fn focus_view(&mut self, _: &Selector<'_>) -> Result<EventResult, ViewNotFound>
fn focus_view(&mut self, _: &Selector<'_>) -> Result<EventResult, ViewNotFound>
Moves the focus to the view identified by the given selector. Read more
Auto Trait Implementations§
impl<BackendT, ContextT, ErrorT, IdT, DataT> Freeze for TreeView<BackendT, ContextT, ErrorT, IdT, DataT>where
ContextT: Freeze,
impl<BackendT, ContextT, ErrorT, IdT, DataT> RefUnwindSafe for TreeView<BackendT, ContextT, ErrorT, IdT, DataT>where
ContextT: RefUnwindSafe,
BackendT: RefUnwindSafe,
ErrorT: RefUnwindSafe,
IdT: RefUnwindSafe,
DataT: RefUnwindSafe,
impl<BackendT, ContextT, ErrorT, IdT, DataT> Send for TreeView<BackendT, ContextT, ErrorT, IdT, DataT>
impl<BackendT, ContextT, ErrorT, IdT, DataT> Sync for TreeView<BackendT, ContextT, ErrorT, IdT, DataT>
impl<BackendT, ContextT, ErrorT, IdT, DataT> Unpin for TreeView<BackendT, ContextT, ErrorT, IdT, DataT>
impl<BackendT, ContextT, ErrorT, IdT, DataT> UnsafeUnpin for TreeView<BackendT, ContextT, ErrorT, IdT, DataT>where
ContextT: UnsafeUnpin,
impl<BackendT, ContextT, ErrorT, IdT, DataT> UnwindSafe for TreeView<BackendT, ContextT, ErrorT, IdT, DataT>where
ContextT: UnwindSafe,
BackendT: UnwindSafe,
ErrorT: UnwindSafe,
IdT: UnwindSafe,
DataT: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Finder for Twhere
T: View,
impl<T> Finder for Twhere
T: View,
Source§fn call_on_all<V, F>(&mut self, sel: &Selector<'_>, callback: F)
fn call_on_all<V, F>(&mut self, sel: &Selector<'_>, callback: F)
Runs a callback on all views identified by
sel. Read moreSource§fn call_on<V, F, R>(&mut self, sel: &Selector<'_>, callback: F) -> Option<R>
fn call_on<V, F, R>(&mut self, sel: &Selector<'_>, callback: F) -> Option<R>
Runs a callback on the view identified by
sel. Read moreSource§fn call_on_name<V, F, R>(&mut self, name: &str, callback: F) -> Option<R>
fn call_on_name<V, F, R>(&mut self, name: &str, callback: F) -> Option<R>
Convenient method to use
call_on with a view::Selector::Name.Source§impl<T> IntoBoxedView for Twhere
T: View,
impl<T> IntoBoxedView for Twhere
T: View,
Source§fn into_boxed_view(self) -> Box<dyn View>
fn into_boxed_view(self) -> Box<dyn View>
Returns a
Box<View>.Source§impl<T> Resizable for Twhere
T: View,
impl<T> Resizable for Twhere
T: View,
Source§fn resized(
self,
width: SizeConstraint,
height: SizeConstraint,
) -> ResizedView<Self>
fn resized( self, width: SizeConstraint, height: SizeConstraint, ) -> ResizedView<Self>
Wraps
self in a ResizedView with the given size constraints.Source§fn fixed_size<S>(self, size: S) -> ResizedView<Self>
fn fixed_size<S>(self, size: S) -> ResizedView<Self>
Wraps
self into a fixed-size ResizedView.Source§fn fixed_width(self, width: usize) -> ResizedView<Self>
fn fixed_width(self, width: usize) -> ResizedView<Self>
Wraps
self into a fixed-width ResizedView.Source§fn fixed_height(self, height: usize) -> ResizedView<Self>
fn fixed_height(self, height: usize) -> ResizedView<Self>
Wraps
self into a fixed-width ResizedView.Source§fn full_screen(self) -> ResizedView<Self>
fn full_screen(self) -> ResizedView<Self>
Wraps
self into a full-screen ResizedView.Source§fn full_width(self) -> ResizedView<Self>
fn full_width(self) -> ResizedView<Self>
Wraps
self into a full-width ResizedView.Source§fn full_height(self) -> ResizedView<Self>
fn full_height(self) -> ResizedView<Self>
Wraps
self into a full-height ResizedView.Source§fn max_size<S>(self, size: S) -> ResizedView<Self>
fn max_size<S>(self, size: S) -> ResizedView<Self>
Wraps
self into a limited-size ResizedView.Source§fn max_width(self, max_width: usize) -> ResizedView<Self>
fn max_width(self, max_width: usize) -> ResizedView<Self>
Wraps
self into a limited-width ResizedView.Source§fn max_height(self, max_height: usize) -> ResizedView<Self>
fn max_height(self, max_height: usize) -> ResizedView<Self>
Wraps
self into a limited-height ResizedView.Source§fn min_size<S>(self, size: S) -> ResizedView<Self>
fn min_size<S>(self, size: S) -> ResizedView<Self>
Wraps
self into a ResizedView at least sized size.Source§fn min_width(self, min_width: usize) -> ResizedView<Self>
fn min_width(self, min_width: usize) -> ResizedView<Self>
Wraps
self in a ResizedView at least min_width wide.Source§fn min_height(self, min_height: usize) -> ResizedView<Self>
fn min_height(self, min_height: usize) -> ResizedView<Self>
Wraps
self in a ResizedView at least min_height tall.Source§impl<T> Scrollable for Twhere
T: View,
impl<T> Scrollable for Twhere
T: View,
Source§fn scrollable(self) -> ScrollView<Self>
fn scrollable(self) -> ScrollView<Self>
Wraps
self in a ScrollView.