pub struct FileOpenState {Show 14 fields
pub current_dir: PathBuf,
pub entries: Vec<FileOpenEntry>,
pub loading: bool,
pub error: Option<String>,
pub sort_mode: SortMode,
pub sort_ascending: bool,
pub selected_index: Option<usize>,
pub scroll_offset: usize,
pub active_section: FileOpenSection,
pub filter: String,
pub shortcuts: Vec<NavigationShortcut>,
pub selected_shortcut: usize,
pub show_hidden: bool,
pub detect_encoding: bool,
/* private fields */
}Expand description
State for the file open dialog
Fields§
§current_dir: PathBufCurrent directory being browsed
entries: Vec<FileOpenEntry>Directory entries with metadata
loading: boolWhether directory is currently loading
error: Option<String>Error message if directory load failed
sort_mode: SortModeCurrent sort mode
sort_ascending: boolSort direction (true = ascending)
selected_index: Option<usize>Selected index in the current section (None = no selection)
scroll_offset: usizeScroll offset for file list
active_section: FileOpenSectionWhich section is currently active
filter: StringFilter text (from prompt input)
shortcuts: Vec<NavigationShortcut>Navigation shortcuts
selected_shortcut: usizeSelected shortcut index (when in Navigation section)
Whether to show hidden files
detect_encoding: boolWhether to auto-detect encoding when opening files (true by default) When false, user will be prompted to select encoding after file selection
Implementations§
Source§impl FileOpenState
impl FileOpenState
Sourcepub fn new(
dir: PathBuf,
show_hidden: bool,
filesystem: Arc<dyn FileSystem + Send + Sync>,
) -> Self
pub fn new( dir: PathBuf, show_hidden: bool, filesystem: Arc<dyn FileSystem + Send + Sync>, ) -> Self
Create a new file open state for the given directory. Only builds basic shortcuts synchronously; async shortcuts (documents, downloads, Windows drives) should be loaded separately via the async bridge.
Sourcepub fn build_shortcuts_async(
filesystem: &dyn FileSystem,
) -> Vec<NavigationShortcut>
pub fn build_shortcuts_async( filesystem: &dyn FileSystem, ) -> Vec<NavigationShortcut>
Build additional shortcuts that require filesystem existence checks. This is called asynchronously to avoid blocking the UI. On Windows, this includes drive letter detection which can hang on unreachable network drives. See issue #903.
Sourcepub fn merge_async_shortcuts(
&mut self,
async_shortcuts: Vec<NavigationShortcut>,
)
pub fn merge_async_shortcuts( &mut self, async_shortcuts: Vec<NavigationShortcut>, )
Merge asynchronously-loaded shortcuts into the shortcuts list. Called when async shortcut loading completes.
Sourcepub fn update_shortcuts(&mut self)
pub fn update_shortcuts(&mut self)
Update shortcuts when directory changes (sync part only). Async shortcuts should be loaded separately via load_file_open_shortcuts_async.
Sourcepub fn set_entries(&mut self, entries: Vec<DirEntry>)
pub fn set_entries(&mut self, entries: Vec<DirEntry>)
Set entries from filesystem and apply initial sort
Sourcepub fn apply_filter(&mut self, filter: &str)
pub fn apply_filter(&mut self, filter: &str)
Apply filter text to entries When filter is active, entries are sorted by fuzzy match score (best matches first). Non-matching entries are de-emphasized visually but stay at the bottom.
Sourcepub fn sort_entries(&mut self)
pub fn sort_entries(&mut self)
Sort entries according to current sort mode
Sourcepub fn set_sort_mode(&mut self, mode: SortMode)
pub fn set_sort_mode(&mut self, mode: SortMode)
Set sort mode and re-sort
Toggle hidden files visibility
Sourcepub fn toggle_detect_encoding(&mut self)
pub fn toggle_detect_encoding(&mut self)
Toggle encoding detection mode
Sourcepub fn select_prev(&mut self)
pub fn select_prev(&mut self)
Move selection up
Sourcepub fn select_next(&mut self)
pub fn select_next(&mut self)
Move selection down
Sourcepub fn select_first(&mut self)
pub fn select_first(&mut self)
Jump to first entry
Sourcepub fn select_last(&mut self)
pub fn select_last(&mut self)
Jump to last entry
Sourcepub fn update_scroll_for_visible_rows(&mut self, visible_rows: usize)
pub fn update_scroll_for_visible_rows(&mut self, visible_rows: usize)
Update scroll offset based on visible rows
Sourcepub fn switch_section(&mut self)
pub fn switch_section(&mut self)
Switch between navigation and files sections
Sourcepub fn selected_entry(&self) -> Option<&FileOpenEntry>
pub fn selected_entry(&self) -> Option<&FileOpenEntry>
Get the currently selected entry (file or directory)
Sourcepub fn selected_shortcut_entry(&self) -> Option<&NavigationShortcut>
pub fn selected_shortcut_entry(&self) -> Option<&NavigationShortcut>
Get the currently selected shortcut
Sourcepub fn get_selected_path(&self) -> Option<PathBuf>
pub fn get_selected_path(&self) -> Option<PathBuf>
Get the path to open/navigate to based on current selection
Sourcepub fn selected_is_dir(&self) -> bool
pub fn selected_is_dir(&self) -> bool
Check if selected item is a directory
Sourcepub fn matching_count(&self) -> usize
pub fn matching_count(&self) -> usize
Count matching entries
Sourcepub fn visible_entries(&self, max_rows: usize) -> &[FileOpenEntry]
pub fn visible_entries(&self, max_rows: usize) -> &[FileOpenEntry]
Get visible entries (for rendering)
Trait Implementations§
Source§impl Clone for FileOpenState
impl Clone for FileOpenState
Source§fn clone(&self) -> FileOpenState
fn clone(&self) -> FileOpenState
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for FileOpenState
impl !RefUnwindSafe for FileOpenState
impl Send for FileOpenState
impl Sync for FileOpenState
impl Unpin for FileOpenState
impl UnsafeUnpin for FileOpenState
impl !UnwindSafe for FileOpenState
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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