TreeView

Struct TreeView 

Source
pub struct TreeView<T: Display + Debug> { /* private fields */ }
Expand description

A low level tree view.

Each view provides a number of low level methods for manipulating its contained items and their structure.

All interactions are performed via relative (i.e. visual) row indices which makes reasoning about behaviour much easier in the context of interactive user manipulation of the tree.

§Examples

let mut tree = TreeView::new();

tree.insert_item("root".to_string(), Placement::LastChild, 0);

tree.insert_item("1".to_string(), Placement::LastChild, 0);
tree.insert_item("2".to_string(), Placement::LastChild, 1);
tree.insert_item("3".to_string(), Placement::LastChild, 2);

Implementations§

Source§

impl<T: Display + Debug + Send + Sync> TreeView<T>

Source

pub fn new() -> Self

Creates a new, empty TreeView.

Source

pub fn disable(&mut self)

Disables this view.

A disabled view cannot be selected.

Source

pub fn enable(&mut self)

Re-enables this view.

Source

pub fn set_enabled(&mut self, enabled: bool)

Enable or disable this view.

Source

pub fn is_enabled(&self) -> bool

Returns true if this view is enabled.

Source

pub fn set_on_submit<F>(&mut self, cb: F)
where F: Fn(&mut Cursive, usize) + Send + Sync + 'static,

Sets a callback to be used when <Enter> is pressed while an item is selected.

§Example
tree.set_on_submit(|siv: &mut Cursive, row: usize| {

});
Source

pub fn on_submit<F>(self, cb: F) -> Self
where F: Fn(&mut Cursive, usize) + Send + Sync + 'static,

Sets a callback to be used when <Enter> is pressed while an item is selected.

Chainable variant.

§Example
tree.on_submit(|siv: &mut Cursive, row: usize| {

});
Source

pub fn set_on_select<F>(&mut self, cb: F)
where F: Fn(&mut Cursive, usize) + Send + Sync + 'static,

Sets a callback to be used when an item is selected.

§Example
tree.set_on_select(|siv: &mut Cursive, row: usize| {

});
Source

pub fn on_select<F>(self, cb: F) -> Self
where F: Fn(&mut Cursive, usize) + Send + Sync + 'static,

Sets a callback to be used when an item is selected.

Chainable variant.

§Example
tree.on_select(|siv: &mut Cursive, row: usize| {

});
Source

pub fn set_on_collapse<F>(&mut self, cb: F)
where F: Fn(&mut Cursive, usize, bool, usize) + Send + Sync + 'static,

Sets a callback to be used when an item has its children collapsed or expanded.

§Example
tree.set_on_collapse(|siv: &mut Cursive, row: usize, is_collapsed: bool, children: usize| {

});
Source

pub fn on_collapse<F>(self, cb: F) -> Self
where F: Fn(&mut Cursive, usize, bool, usize) + Send + Sync + 'static,

Sets a callback to be used when an item has its children collapsed or expanded.

Chainable variant.

§Example
tree.on_collapse(|siv: &mut Cursive, row: usize, is_collapsed: bool, children: usize| {

});
Source

pub fn clear(&mut self)

Removes all items from this view.

Source

pub fn take_items(&mut self) -> Vec<T>

Removes all items from this view, returning them.

Source

pub fn len(&self) -> usize

Returns the number of items in this tree.

Source

pub fn is_empty(&self) -> bool

Returns true if this tree has no items.

Source

pub fn row(&self) -> Option<usize>

Returns the index of the currently selected tree row.

None is returned in case of the tree being empty.

Source

pub fn first_col(&self, row: usize) -> Option<usize>

Returns position on the x axis of the symbol (first character of an item) at the given row.

None is returned in case the specified row does not visually exist.

Source

pub fn item_width(&self, row: usize) -> Option<usize>

Returns total width (including the symbol) of the item at the given row.

None is returned in case the specified row does not visually exist.

Source

pub fn set_selected_row(&mut self, row: usize)

Selects the row at the specified index.

Source

pub fn selected_row(self, row: usize) -> Self

Selects the row at the specified index.

Chainable variant.

Source

pub fn borrow_item(&self, row: usize) -> Option<&T>

Returns a immutable reference to the item at the given row.

None is returned in case the specified row does not visually exist.

Source

pub fn borrow_item_mut(&mut self, row: usize) -> Option<&mut T>

Returns a mutable reference to the item at the given row.

None is returned in case the specified row does not visually exist.

Source

pub fn insert_item( &mut self, item: T, placement: Placement, row: usize, ) -> Option<usize>

Inserts a new item at the given row with the specified Placement, returning the visual row of the item occupies after its insertion.

None will be returned in case the item is not visible after insertion due to one of its parents being in a collapsed state.

Source

pub fn insert_container_item( &mut self, item: T, placement: Placement, row: usize, ) -> Option<usize>

Inserts a new container at the given row with the specified Placement, returning the visual row of the container occupies after its insertion.

A container is identical to a normal item except for the fact that it can always be collapsed even if it does not contain any children.

Note: If the container is not visible because one of its parents is collapsed None will be returned since there is no visible row for the container to occupy.

Source

pub fn remove_item(&mut self, row: usize) -> Option<Vec<T>>

Removes the item at the given row along with all of its children.

The returned vector contains the removed items in top to bottom order.

None is returned in case the specified row does not visually exist.

Source

pub fn remove_children(&mut self, row: usize) -> Option<Vec<T>>

Removes all children of the item at the given row.

The returned vector contains the removed children in top to bottom order.

None is returned in case the specified row does not visually exist.

Source

pub fn extract_item(&mut self, row: usize) -> Option<T>

Extracts the item at the given row from the tree.

All of the items children will be moved up one level within the tree.

None is returned in case the specified row does not visually exist.

Source

pub fn collapse_item(&mut self, row: usize)

Collapses the children of the given row.

Source

pub fn expand_item(&mut self, row: usize)

Expands the children of the given row.

Source

pub fn set_collapsed(&mut self, row: usize, collapsed: bool)

Collapses or expands the children of the given row.

Source

pub fn collapsed(self, row: usize, collapsed: bool) -> Self

Collapses or expands the children of the given row.

Chained variant.

Source

pub fn focus_up(&mut self, n: usize)

Select item n rows up from the one currently selected.

Source

pub fn focus_down(&mut self, n: usize)

Select item n rows down from the one currently selected.

Source

pub fn item_parent(&self, row: usize) -> Option<usize>

Returns position of the parent of the item located in row.

None is returned if row is not currenlty visible or if the item has no ancestors.

Trait Implementations§

Source§

impl<T: Display + Debug> Debug for TreeView<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T: Display + Debug + Send + Sync> Default for TreeView<T>

Source§

fn default() -> Self

Creates a new, empty TreeView.

Source§

impl<T: Display + Send + Sync + Debug + 'static> View for TreeView<T>

Source§

fn draw(&self, printer: &Printer<'_, '_>)

Draws the view with the given printer (includes bounds) and focus. Read more
Source§

fn required_size(&mut self, _req: Vec2) -> Vec2

Returns the minimum size the view requires with the given restrictions. Read more
Source§

fn layout(&mut self, size: Vec2)

Called once the size for this view has been decided. Read more
Source§

fn take_focus(&mut self, _: Direction) -> Result<EventResult, CannotFocus>

Attempt to give this view the focus. Read more
Source§

fn on_event(&mut self, event: Event) -> EventResult

Called when an event is received (key press, mouse event, …). Read more
Source§

fn important_area(&self, size: Vec2) -> Rect

What part of the view is important and should be visible? Read more
Source§

fn needs_relayout(&self) -> bool

Should return true if the view content changed since the last call to layout(). Read more
Source§

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>

Moves the focus to the view identified by the given selector. Read more
Source§

fn type_name(&self) -> &'static str

Returns the type of this view. Read more

Auto Trait Implementations§

§

impl<T> Freeze for TreeView<T>

§

impl<T> !RefUnwindSafe for TreeView<T>

§

impl<T> Send for TreeView<T>
where T: Send,

§

impl<T> Sync for TreeView<T>
where T: Sync,

§

impl<T> Unpin for TreeView<T>
where T: Unpin,

§

impl<T> !UnwindSafe for TreeView<T>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AnyView for T
where T: View,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Downcast self to a Any.

Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Downcast self to a mutable Any.

Source§

fn as_boxed_any(self: Box<T>) -> Box<dyn Any>

Returns a boxed any from a boxed self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Finder for T
where T: View,

Source§

fn call_on_all<V, F>(&mut self, sel: &Selector<'_>, callback: F)
where V: View, F: FnMut(&mut V),

Runs a callback on all views identified by sel. Read more
Source§

fn call_on<V, F, R>(&mut self, sel: &Selector<'_>, callback: F) -> Option<R>
where V: View, F: FnOnce(&mut V) -> R,

Runs a callback on the view identified by sel. Read more
Source§

fn call_on_name<V, F, R>(&mut self, name: &str, callback: F) -> Option<R>
where V: View, F: FnOnce(&mut V) -> R,

Convenient method to use call_on with a view::Selector::Name.
Source§

fn find_name<V>(&mut self, name: &str) -> Option<ViewRef<V>>
where V: View,

Convenient method to find a view wrapped in an NamedView.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoBoxedView for T
where T: View,

Source§

fn into_boxed_view(self) -> Box<dyn View>

Returns a Box<View>.
Source§

impl<T> Nameable for T
where T: View,

Source§

fn with_name<S>(self, name: S) -> NamedView<Self>
where S: Into<String>,

Wraps this view into an NamedView with the given id. Read more
Source§

impl<T> Resizable for T
where T: View,

Source§

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>
where S: Into<XY<usize>>,

Wraps self into a fixed-size ResizedView.
Source§

fn fixed_width(self, width: usize) -> ResizedView<Self>

Wraps self into a fixed-width ResizedView.
Source§

fn fixed_height(self, height: usize) -> ResizedView<Self>

Wraps self into a fixed-width ResizedView.
Source§

fn full_screen(self) -> ResizedView<Self>

Wraps self into a full-screen ResizedView.
Source§

fn full_width(self) -> ResizedView<Self>

Wraps self into a full-width ResizedView.
Source§

fn full_height(self) -> ResizedView<Self>

Wraps self into a full-height ResizedView.
Source§

fn max_size<S>(self, size: S) -> ResizedView<Self>
where S: Into<XY<usize>>,

Wraps self into a limited-size ResizedView.
Source§

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>

Wraps self into a limited-height ResizedView.
Source§

fn min_size<S>(self, size: S) -> ResizedView<Self>
where S: Into<XY<usize>>,

Wraps self into a ResizedView at least sized size.
Source§

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>

Wraps self in a ResizedView at least min_height tall.
Source§

impl<T> Scrollable for T
where T: View,

Source§

fn scrollable(self) -> ScrollView<Self>

Wraps self in a ScrollView.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> With for T

Source§

fn wrap_with<U, F>(self, f: F) -> U
where F: FnOnce(Self) -> U,

Calls the given closure and return the result. Read more
Source§

fn with<F>(self, f: F) -> Self
where F: FnOnce(&mut Self),

Calls the given closure on self.
Source§

fn try_with<E, F>(self, f: F) -> Result<Self, E>
where F: FnOnce(&mut Self) -> Result<(), E>,

Calls the given closure on self.
Source§

fn with_if<F>(self, condition: bool, f: F) -> Self
where F: FnOnce(&mut Self),

Calls the given closure if condition == true.