pub struct PanelSet { /* private fields */ }Expand description
The editor screen’s persistent Panels — the activity rail, the single
drawer, and the editor — plus the PanelOrder that decides visibility and
which one is focused. Routes input and render to the focused / visible
panels; the host (EditorScreen) reaches a specific drawer view through
the typed accessors for view-specific calls.
Implementations§
Source§impl PanelSet
impl PanelSet
pub fn from_panels( drawer: DrawerHost, editor: TextEditorComponent, icons: Icons, key_bindings: KeyBindings, rail_caps: RailCaps, ) -> Self
Sourcepub fn rebuild_rail(
&mut self,
key_bindings: KeyBindings,
icons: Icons,
rail_caps: RailCaps,
)
pub fn rebuild_rail( &mut self, key_bindings: KeyBindings, icons: Icons, rail_caps: RailCaps, )
Rebuild the activity rail with fresh feature visibility — the runtime path for SEM/ASK appearing or disappearing (RAG status change). Keeps the rail cursor on the drawer’s active view so navigation continues from there.
Sourcepub fn set_ask_client(&mut self, client: Option<Arc<RagClient>>)
pub fn set_ask_client(&mut self, client: Option<Arc<RagClient>>)
The single injection point for the live RAG client: hands it to the
resident Ask panel, which derives its composer-enabled state from the
client’s presence (a present client enables submission,
None disables it without evicting the thread). Because the panel is
resident, one call keeps it correct whether or not Ask is on screen.
pub fn focused(&self) -> PanelKind
Sourcepub fn focused_label(&self) -> &'static str
pub fn focused_label(&self) -> &'static str
Status-bar label for the focused panel; the drawer resolves to its active view’s label.
pub fn prev_kind(&self) -> Option<PanelKind>
pub fn next_kind(&self) -> Option<PanelKind>
pub fn is_visible(&self, kind: PanelKind) -> bool
pub fn show(&mut self, kind: PanelKind)
pub fn hide(&mut self, kind: PanelKind)
Sourcepub fn focus(&mut self, kind: PanelKind)
pub fn focus(&mut self, kind: PanelKind)
Move focus to kind. Any transition away from the editor closes its
autocomplete popup so it doesn’t linger while another panel owns input.
pub fn active_drawer_view(&self) -> DrawerView
Sourcepub fn drawer_is_text_input(&self) -> bool
pub fn drawer_is_text_input(&self) -> bool
Whether the drawer’s active view is a text-input context (status-bar ⌨/≣ indicator).
Sourcepub fn adjust_drawer_width(&mut self, delta: i16)
pub fn adjust_drawer_width(&mut self, delta: i16)
Grow/shrink the drawer by delta columns (leader window commands),
clamped to the same bounds the divider drag enforces.
Sourcepub fn switch_drawer_view(&mut self, view: DrawerView)
pub fn switch_drawer_view(&mut self, view: DrawerView)
Switch the drawer’s active view and rail cursor without changing
its visibility — for paths that must not force-reveal a drawer the user
explicitly hid (e.g. leaving the Ask workspace when a note opens).
Sourcepub fn open_drawer_view(&mut self, view: DrawerView)
pub fn open_drawer_view(&mut self, view: DrawerView)
Switch the drawer to view and reveal it. Keeps the rail cursor in
step so keyboard navigation continues from the active item.
Sourcepub fn editor(&self) -> Option<&TextEditorComponent>
pub fn editor(&self) -> Option<&TextEditorComponent>
The note editor, or None while an attachment or the Ask workspace is
shown in its place. Callers reaching for the editor cross a mode
boundary and must handle that case.
pub fn editor_mut(&mut self) -> Option<&mut TextEditorComponent>
Sourcepub fn show_attachment(&mut self, view: AttachmentView)
pub fn show_attachment(&mut self, view: AttachmentView)
Show view in the editor area, replacing any prior attachment/Ask
content and hiding the note editor. Closes the editor’s autocomplete
so it can’t linger under the attachment, and focuses the editor panel.
Sourcepub fn clear_attachment(&mut self)
pub fn clear_attachment(&mut self)
Return the editor area to the note editor, discarding any attachment.
No-op when already showing the editor, and — unlike hide_ask — a
no-op when showing the Ask workspace too: this method’s contract is
specifically about attachments, so it leaves Ask content alone (use
hide_ask for that).
Sourcepub fn is_showing_attachment(&self) -> bool
pub fn is_showing_attachment(&self) -> bool
Whether the editor area is currently showing an attachment.
Sourcepub fn attachment_path(&self) -> Option<&VaultPath>
pub fn attachment_path(&self) -> Option<&VaultPath>
The vault path of the attachment on show, if any — used to open it with the OS default program.
Sourcepub fn show_ask(&mut self)
pub fn show_ask(&mut self)
Select the resident Ask workspace as the editor-area content, hiding
the note editor. Mirrors show_attachment: closes the editor’s
autocomplete and focuses the editor panel. The thread persists by
residency — this only flips the selector.
Sourcepub fn hide_ask(&mut self)
pub fn hide_ask(&mut self)
Return the editor area to the note editor when it’s showing Ask. The
resident thread panel is untouched — its conversation survives. No-op
for any other content (mirrors clear_attachment’s scoping).
Sourcepub fn ask(&self) -> &ThreadPanel
pub fn ask(&self) -> &ThreadPanel
The resident Ask panel (always present; shown only when content is
Ask).
Sourcepub fn ask_mut(&mut self) -> &mut ThreadPanel
pub fn ask_mut(&mut self) -> &mut ThreadPanel
The resident Ask panel, mutably.
Sourcepub fn is_showing_ask(&self) -> bool
pub fn is_showing_ask(&self) -> bool
Whether the editor area is currently showing the Ask workspace.
pub fn query(&self) -> &QueryPanel
pub fn query_mut(&mut self) -> &mut QueryPanel
pub fn semantic_mut(&mut self) -> &mut SemanticPanel
pub fn ask_sources_mut(&mut self) -> &mut SourcesPanel
pub fn links_mut(&mut self) -> &mut LinksPanel
pub fn outline_mut(&mut self) -> &mut OutlinePanel
pub fn drawer_set_config_info(&mut self, info: ConfigInfo)
Sourcepub fn focused_hints(&self) -> Vec<(String, String)>
pub fn focused_hints(&self) -> Vec<(String, String)>
Footer hints for the focused panel.
Sourcepub fn handle_input(&mut self, event: &InputEvent, tx: &AppTx) -> EventState
pub fn handle_input(&mut self, event: &InputEvent, tx: &AppTx) -> EventState
Route an input event to the focused panel.
Sourcepub fn is_note_buffer_cell(&self, column: u16, row: u16) -> bool
pub fn is_note_buffer_cell(&self, column: u16, row: u16) -> bool
Whether a press on this cell points at somewhere in the note buffer.
Three conditions, and only the first is about geometry:
- Inside the editor component itself. Asked of the component, not of
Self::column_rects, because the column is wider than the buffer: it also holds the framerenderdraws around the component (and, to its left, the divider thatSelf::handle_mouseclaims before any panel sees it). A press on either is out of the component’s bounds, so it returnsNotConsumedand the cursor never moves. - The editor area is showing the note. It may instead hold an attachment preview or the Ask workspace, neither of which has a cursor or a link under the pointer — an attachment would launch an external program and Ask would swallow the press.
- The mouse drives the cursor. False under the nvim backend, where a press never moves the cursor at all, so anything reading the cursor afterwards reads wherever the keyboard left it.
Every one of them is the same question asked of a different layer: did this press place the cursor? Anything that answers a press by reading the cursor — following a link, most obviously — has to ask all three, or it acts on a position the press never set. The column alone was the original gate, and each of the others was a defect before it was a condition. Callers that only want the column should not reuse this.
Sourcepub fn handle_mouse(&mut self, event: &InputEvent, tx: &AppTx) -> EventState
pub fn handle_mouse(&mut self, event: &InputEvent, tx: &AppTx) -> EventState
Route a mouse event by hit-testing the panel columns from the last render. Dragging the drawer↔editor divider resizes the drawer. A button-down click focuses the panel under the cursor — the one consistent click-to-focus rule for every panel — and the event is then forwarded to that panel for its internal behavior (cursor placement, list selection, scrolling). Events outside every column (or before the first render) are not consumed.
Auto Trait Implementations§
impl !Freeze for PanelSet
impl !RefUnwindSafe for PanelSet
impl !Sync for PanelSet
impl !UnwindSafe for PanelSet
impl Send for PanelSet
impl Unpin for PanelSet
impl UnsafeUnpin for PanelSet
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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