pub struct Tree { /* private fields */ }Expand description
The interactive-tree state.
Carries the root Node plus the focus path (a sequence of
indices from the root to the currently-focused node).
Implementations§
Source§impl Tree
impl Tree
Sourcepub fn cycle_focused(&mut self) -> CycleOutcome
pub fn cycle_focused(&mut self) -> CycleOutcome
Cycle the focused node’s SelectionState per AUX-003,
subject to the AUX-004 refusal rules.
On a directory with zero sub-directories, ProjectsParent
is unreachable per AUX-004 rule 1. The cycle continues
to the state that would come after it (None) so the
user can always escape Project; the return value
CycleOutcome::RefusedEmptyGlob tells the driver to
fire the perceptible refusal channel the rule mandates.
Cycling INTO ProjectsParent clears every descendant’s
selection state to None per AUX-004 rule 2. Without
the clear, the commit pass could emit a projects: list
that mixes the glob with a literal entry the glob already
shadows. The clearing is one-way: cycling back out of
ProjectsParent does NOT restore prior descendant states.
Sourcepub fn focus_next(&mut self)
pub fn focus_next(&mut self)
Move focus to the next visible node (down arrow).
“Next” walks the visible-nodes list in depth-first order; at the tail it wraps to the head, which makes long lists navigable without explicit “back to top” UI.
Sourcepub fn focus_prev(&mut self)
pub fn focus_prev(&mut self)
Move focus to the previous visible node (up arrow). Wraps
at the head per the symmetric rule of Self::focus_next.
Sourcepub fn try_expand_focused(&mut self) -> ExpandOutcome
pub fn try_expand_focused(&mut self) -> ExpandOutcome
Try to expand the focused node, reporting why the expansion did or did not take effect. The TUI driver uses the outcome to decide whether to ring the bell, set a refusal status message, or trigger a disk read.
Sourcepub fn collapse_focused(&mut self)
pub fn collapse_focused(&mut self)
Collapse the focused node. No-op when not currently expanded. The node’s state and the states of its descendants are preserved across collapse / expand cycles.
Sourcepub fn focused_needs_children_loaded(&self) -> bool
pub fn focused_needs_children_loaded(&self) -> bool
Whether the focused node’s children need to be loaded
before the next Self::cycle_focused call can evaluate
the AUX-004 rule 1 empty-glob refusal.
Sourcepub fn populate_focused_children(&mut self, children: Vec<Node>)
pub fn populate_focused_children(&mut self, children: Vec<Node>)
Replace the focused node’s children with the supplied list
and mark its children_loaded flag. Called by the TUI
driver after a read_dir populates the directory contents
the model needs.
Sourcepub fn visible_nodes(&self) -> Vec<VisibleNode<'_>>
pub fn visible_nodes(&self) -> Vec<VisibleNode<'_>>
Iterate every currently-visible node in depth-first order
(root, then expanded children recursively). Each entry
carries the node’s depth (root = 0), a focus marker, and a
lock flag indicating whether the node is currently
subject to the AUX-004 rule 2 sub-tree lockout.
Sourcepub fn project_root_set(&self) -> BTreeSet<PathBuf>
pub fn project_root_set(&self) -> BTreeSet<PathBuf>
Compute the AUX-005 step 1 project-root set: every
directory currently in SelectionState::Project, plus
every direct subdirectory of every directory currently in
SelectionState::ProjectsParent.
The result is ordered (BTreeSet) so the
AUX-005 step 3 summary and the workspace.yml
emission are byte-stable across runs.
Sourcepub fn focused_visible_index(&self) -> usize
pub fn focused_visible_index(&self) -> usize
Index of the focused node in the visible list (the result
of Self::visible_nodes). The TUI driver uses this to
reason about navigation positions across the synthetic
commit-button row that lives outside the model.
Sourcepub fn focus_at_visible_index(&mut self, target: usize)
pub fn focus_at_visible_index(&mut self, target: usize)
Move focus to the node at position target in the visible
list. Panics when target is out of range; the TUI driver
always clamps to [0, visible_nodes().len()) before
calling.
Sourcepub fn root_mut(&mut self) -> &mut Node
pub fn root_mut(&mut self) -> &mut Node
Mutable borrow of the root node. The TUI driver uses this
to walk the tree and re-read directory children when the
visibility filter (H toggle) changes.
Sourcepub fn set_focus_path(&mut self, path: Vec<usize>)
pub fn set_focus_path(&mut self, path: Vec<usize>)
Replace the focus path with path, defaulting to root
([]) when path does not identify a visible node
(out-of-range child index, or any ancestor along the path
is collapsed). Used by the TUI driver after a reload that
may have shifted or removed the previously-focused node.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Tree
impl RefUnwindSafe for Tree
impl Send for Tree
impl Sync for Tree
impl Unpin for Tree
impl UnsafeUnpin for Tree
impl UnwindSafe for Tree
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more