Skip to main content

FilePicker

Struct FilePicker 

Source
pub struct FilePicker { /* private fields */ }
Expand description

Browse from a root and pick a path. Returns the path, joined to the root as given (a root of . gives paths relative to it).

Implementations§

Source§

impl FilePicker

Source

pub fn new(prompt: impl Into<String>, root: impl Into<PathBuf>) -> FilePicker

Source

pub fn mode(self, mode: FileMode) -> Self

What may be picked (default: files).

Source

pub fn extensions<I: IntoIterator<Item = S>, S: AsRef<str>>( self, extensions: I, ) -> Self

List only files with one of these extensions (without the dot, any case); directories are still listed, to open.

Source

pub fn show_hidden(self, on: bool) -> Self

Show hidden files (names starting with .) to begin with; Ctrl+T toggles them.

Source

pub fn jail(self, on: bool) -> Self

Keep to the root: nothing outside it is listed, opened or read, and symbolic links out of it are left out. A root that cannot be resolved lists nothing.

Source

pub fn default(self, path: impl Into<PathBuf>) -> Self

The path returned without a terminal when the policy asks for defaults.

Source

pub fn height(self, rows: usize) -> Self

Show at most rows entries at once (default 10).

Source

pub fn preview(self, layout: PreviewLayout) -> Self

Source

pub fn query(self, query: impl Into<String>) -> Self

Start with this filter text.

Source

pub fn rebind(self, action: &str, keys: impl IntoIterator<Item = Key>) -> Self

Make keys do action on this picker only; no keys unbinds it. The actions are the picker’s own (open, up, hidden, in context file) and its list’s (see select_keymap). A name both have means the picker’s: up is going to the parent directory, not the cursor. Write select.up for the list’s (and file.up, if you like, for the picker’s).

Source

pub fn theme(self, theme: Theme) -> Self

Source

pub fn actions(self, actions: Actions) -> Self

Actions offered on every entry (#491).

Source

pub fn menu_key(self, key: Key) -> Self

The key that opens the action menu (default Ctrl+K).

Source

pub fn with_mouse(self, on: bool) -> Self

Report the mouse: a click focuses, a second click opens or picks, and the border beside the preview drags.

Source

pub fn action(&self) -> Option<&str>

The id of the action that picked the entry, if one did.

Source

pub fn directory(&self) -> PathBuf

The directory shown.

Source

pub fn labels(&self) -> Vec<String>

The labels listed, in order (.. first when it is there).

Source

pub fn reopen(&mut self)

Show the list again after the picker finished or was cancelled, in the directory it was in: for a container that opens one picker more than once (a Form’s file field).

Trait Implementations§

Source§

impl Component for FilePicker

Source§

type Output = PathBuf

Source§

fn handle(&mut self, event: &Event, context: &Context<'_>) -> Flow<PathBuf>

Handle one event. Ctrl+C never arrives here: the event loop ends the component with Outcome::Interrupted.
Source§

fn keymap(&self) -> Keymap

The bindings this component has right now, for a help overlay, a shortcut list or status-bar hints to read (see keymap). A container’s include its focused child’s, before its own. The default declares none.
Source§

fn render(&self, context: &Context<'_>) -> View

Render the current state.
Source§

fn mouse(&self) -> bool

Whether the component wants mouse events (#476): clicks, drags and the wheel. Off by default, since reporting the mouse takes text selection away from the terminal; a component turns it on when its caller opts in, and run then enables mouse reporting for the session.
Source§

fn tick(&self) -> Option<Duration>

How often the component wants Event::Tick, for a spinner or a countdown. None (the default): never.
Source§

fn default_value(&self) -> Option<PathBuf>

The value to return when the terminal is not interactive and the policy asks for defaults. None: there is none.
Source§

fn prompt( &mut self, _: &mut dyn LineIo, ) -> Result<Option<PathBuf>, NotInteractive>

Ask for the value line by line, for when the terminal is not interactive and the policy asks for a prompt. The default says the component has no line-based form. Read more
Source§

fn start(&mut self, context: &Context<'_>) -> Flow<Self::Output>

Called once, before the component is first painted, with the terminal’s size: for work that needs it, such as rendering content at the width. Returning Done or Cancel finishes the component without waiting for an event. The default does nothing.
Source§

fn focusable(&self) -> bool

Whether the component takes focus in a container: Tab stops on it and keys go to it. The default: yes. A label, or a component that has finished, says no.
Source§

fn focus_step(&mut self, forward: bool) -> bool

Move focus to the next (forward) or previous focus stop inside this component, for Tab and Shift+Tab. false when there is none after the current one, so the container moves on to its next child. The default, for a component that is one stop: false.
Source§

fn focus_enter(&mut self, forward: bool) -> bool

Take focus from outside: at the first stop inside when forward, at the last otherwise. false when nothing in it can take focus. The default: whether the component is focusable.

Auto Trait Implementations§

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> 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<C> ComponentExt for C
where C: Component,

Source§

fn map<'a, M>( self, done: impl FnMut(Self::Output) -> Flow<M> + 'a, ) -> Map<'a, Self, M>
where Self: 'a,

Turn this component’s answer into M’s flow: Flow::Done(m) to finish the whole composition with m, Flow::Continue to carry on (the component stays, showing its answer, and focus moves past it). Cancelling cancels the composition unless on_cancel says otherwise.
Source§

fn with_overlays<'a>(self) -> Overlays<'a, Self::Output>
where Self: 'a, Self::Output: 'a,

Wrap this component in Overlays: a command palette, help and a shortcut sheet read from its keymap, and room for a status bar and breadcrumbs.
Source§

fn boxed<'a>(self) -> Child<'a, Self::Output>
where Self: 'a,

Box this component as a Child.
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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.