TextEditor

Struct TextEditor 

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

A text editor view built on top of Editor. See text_editor.

Note: this requires that the document underlying it is a TextDocument for the use of some logic.

Implementations§

Source§

impl TextEditor

Source

pub fn editor_style( self, style: impl Fn(EditorCustomStyle) -> EditorCustomStyle + 'static, ) -> Self

Sets the custom style properties of the TextEditor.

Source

pub fn editor(&self) -> &Editor

Return a reference to the underlying Editor.

Source

pub fn with_editor(self, f: impl FnOnce(&Editor)) -> Self

Allows for creation of a TextEditor with an existing Editor.

Source

pub fn with_editor_mut(self, f: impl FnOnce(&mut Editor)) -> Self

Allows for creation of a TextEditor with an existing mutable Editor.

Source

pub fn editor_id(&self) -> EditorId

Returns the EditorId of the underlying Editor.

Source

pub fn with_doc(self, f: impl FnOnce(&dyn Document)) -> Self

Opens the TextEditor with the provided Document. You should usually not swap this out without good reason.

Source

pub fn doc(&self) -> Rc<dyn Document>

Returns a reference to the underlying Document. This should usually be a TextDocument.

Source

pub fn rope_text(&self) -> RopeTextVal

Source

pub fn use_doc(self, doc: Rc<dyn Document>) -> Self

Use a different document in the text editor

Source

pub fn share_doc(self, other: &TextEditor) -> Self

Use the same document as another text editor view.

let primary = text_editor();
let secondary = text_editor().share_document(&primary);

stack((
    primary,
    secondary,
))

If you wish for it to also share the styling, consider using TextEditor::shared_editor instead.

Source

pub fn shared_editor(&self) -> TextEditor

Create a new TextEditor instance from this instance, sharing the document and styling.

let primary = text_editor();
let secondary = primary.shared_editor();

Also see the Editor example.

Source

pub fn styling(self, styling: impl Styling + 'static) -> Self

Change the Styling used for the editor.

let styling = SimpleStyling::builder()
    .font_size(12)
    .weight(Weight::BOLD);
text_editor().styling(styling);
Source

pub fn styling_rc(self, styling: Rc<dyn Styling>) -> Self

Use an Rc<dyn Styling> to share between different editors.

Source

pub fn read_only(self) -> Self

Set the text editor to read only. Equivalent to setting Editor::read_only Default: false

Source

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

Set the placeholder text that is displayed when the document is empty. Can span multiple lines. This is per-editor, not per-document. Equivalent to calling TextDocument::add_placeholder Default: None

Note: only works for the default backing TextDocument doc

Source

pub fn pre_command( self, f: impl Fn(PreCommand<'_>) -> CommandExecuted + 'static, ) -> Self

When commands are run on the document, this function is called. If it returns CommandExecuted::Yes then further handlers after it, including the default handler, are not executed.

use floem::views::editor::command::{Command, CommandExecuted};
use floem::views::text_editor::text_editor;
use floem_editor_core::command::EditCommand;
text_editor("Hello")
    .pre_command(|ev| {
        if matches!(ev.cmd, Command::Edit(EditCommand::Undo)) {
            // Sorry, no undoing allowed
            CommandExecuted::Yes
        } else {
            CommandExecuted::No
        }
    })
    .pre_command(|_| {
        // This will never be called if command was an undo
        CommandExecuted::Yes
    })
    .pre_command(|_| {
        // This will never be called
        CommandExecuted::No
    });

Note that these are specific to each text editor view.

Note: only works for the default backing TextDocument doc

Source

pub fn update(self, f: impl Fn(OnUpdate<'_>) + 'static) -> Self

Listen for deltas applied to the editor.

Useful for anything that has positions based in the editor that can be updated after typing, such as syntax highlighting.

Note: only works for the default backing TextDocument doc

Trait Implementations§

Source§

impl View for TextEditor

Source§

fn id(&self) -> ViewId

Source§

fn view_style(&self) -> Option<Style>

Source§

fn debug_name(&self) -> Cow<'static, str>

Source§

fn paint(&mut self, cx: &mut PaintCx<'_>)

View-specific implementation. Will be called in PaintCx::paint_view. Usually you’ll call paint_view for every child view. But you might also draw text, adjust the offset, clip or draw text.
Source§

fn view_class(&self) -> Option<StyleClassRef>

Source§

fn update(&mut self, cx: &mut UpdateCx<'_>, state: Box<dyn Any>)

Use this method to react to changes in view-related state. You will usually send state to this hook manually using the View’s Id handle Read more
Source§

fn style_pass(&mut self, cx: &mut StyleCx<'_>)

Use this method to style the view’s children. Read more
Source§

fn layout(&mut self, cx: &mut LayoutCx<'_>) -> NodeId

Use this method to layout the view’s children. Usually you’ll do this by calling LayoutCx::layout_node. Read more
Source§

fn compute_layout(&mut self, cx: &mut ComputeLayoutCx<'_>) -> Option<Rect>

Responsible for computing the layout of the view’s children. Read more
Source§

fn event_before_children( &mut self, cx: &mut EventCx<'_>, event: &Event, ) -> EventPropagation

Source§

fn event_after_children( &mut self, cx: &mut EventCx<'_>, event: &Event, ) -> EventPropagation

Source§

fn scroll_to( &mut self, cx: &mut WindowState, target: ViewId, rect: Option<Rect>, ) -> bool

Scrolls the view and all direct and indirect children to bring the target view to be visible. Returns true if this view contains or is the target.

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<T> ButtonExt for T
where T: IntoView + 'static,

Source§

fn button(self) -> Button

Create a Button from the parent.
Source§

impl<T> ClipExt for T
where T: IntoView + 'static,

Source§

fn clip(self) -> Clip

Wrap the view in a clip view.
Source§

impl<T> ContainerExt for T
where T: IntoView + 'static,

Source§

fn container(self) -> Container

Wrap the view in a container.
Source§

impl<T> Decorators for T
where T: IntoView,

Source§

fn style(self, style: impl Fn(Style) -> Style + 'static) -> Self::Intermediate

Alter the style of the view. Read more
Source§

fn debug_name(self, name: impl Into<String>) -> Self::Intermediate

Add a debug name to the view that will be shown in the inspector. Read more
Source§

fn debug_name_if<S: Into<String>>( self, apply: impl Fn() -> bool + 'static, name: impl Fn() -> S + 'static, ) -> Self::Intermediate

Conditionally add a debug name to the view that will be shown in the inspector. Read more
Source§

fn dragging_style( self, style: impl Fn(Style) -> Style + 'static, ) -> Self::Intermediate

The visual style to apply when the view is being dragged
Source§

fn class<C: StyleClass>(self, _class: C) -> Self::Intermediate

Add a style class to the view
Source§

fn class_if<C: StyleClass>( self, apply: impl Fn() -> bool + 'static, _class: C, ) -> Self::Intermediate

Conditionally add a style class to the view
Source§

fn remove_class<C: StyleClass>(self, _class: C) -> Self::Intermediate

Remove a style class from the view
Source§

fn keyboard_navigable(self) -> Self::Intermediate

👎Deprecated: Set this property using Style::focusable instead
Allows the element to be navigated to with the keyboard. Similar to setting tabindex=“0” in html.
Source§

fn disable_default_event( self, disable: impl Fn() -> (EventListener, bool) + 'static, ) -> Self::Intermediate

Dynamically controls whether the default view behavior for an event should be disabled. When disable is true, children will still see the event, but the view event function will not be called nor the event listeners on the view. Read more
Source§

fn draggable(self) -> Self::Intermediate

👎Deprecated: use Style::draggable directly instead
Mark the view as draggable
Source§

fn disabled( self, disabled_fn: impl Fn() -> bool + 'static, ) -> Self::Intermediate

👎Deprecated: use Style::set_disabled directly instead
Mark the view as disabled Read more
Source§

fn on_event( self, listener: EventListener, action: impl FnMut(&Event) -> EventPropagation + 'static, ) -> Self::Intermediate

Add an event handler for the given EventListener.
Source§

fn on_key_down( self, key: Key, cmp: impl Fn(Modifiers) -> bool + 'static, action: impl Fn(&Event) + 'static, ) -> Self::Intermediate

Add an handler for pressing down a specific key. Read more
Source§

fn on_key_up( self, key: Key, cmp: impl Fn(Modifiers) -> bool + 'static, action: impl Fn(&Event) + 'static, ) -> Self::Intermediate

Add an handler for a specific key being released. Read more
Source§

fn on_event_cont( self, listener: EventListener, action: impl Fn(&Event) + 'static, ) -> Self::Intermediate

Add an event handler for the given EventListener. This event will be handled with the given handler and the event will continue propagating.
Source§

fn on_event_stop( self, listener: EventListener, action: impl Fn(&Event) + 'static, ) -> Self::Intermediate

Add an event handler for the given EventListener. This event will be handled with the given handler and the event will stop propagating.
Source§

fn on_click( self, action: impl FnMut(&Event) -> EventPropagation + 'static, ) -> Self::Intermediate

Add an event handler for EventListener::Click.
Source§

fn on_click_cont(self, action: impl Fn(&Event) + 'static) -> Self::Intermediate

Add an event handler for EventListener::Click. This event will be handled with the given handler and the event will continue propagating.
Source§

fn on_click_stop( self, action: impl FnMut(&Event) + 'static, ) -> Self::Intermediate

Add an event handler for EventListener::Click. This event will be handled with the given handler and the event will stop propagating.
Source§

fn action(self, action: impl FnMut() + 'static) -> Self::Intermediate

Attach action executed on button click or Enter or Space Key.
Source§

fn on_double_click( self, action: impl Fn(&Event) -> EventPropagation + 'static, ) -> Self::Intermediate

Add an event handler for EventListener::DoubleClick
Source§

fn on_double_click_cont( self, action: impl Fn(&Event) + 'static, ) -> Self::Intermediate

Add an event handler for EventListener::DoubleClick. This event will be handled with the given handler and the event will continue propagating.
Source§

fn on_double_click_stop( self, action: impl Fn(&Event) + 'static, ) -> Self::Intermediate

Add an event handler for EventListener::DoubleClick. This event will be handled with the given handler and the event will stop propagating.
Source§

fn on_secondary_click( self, action: impl Fn(&Event) -> EventPropagation + 'static, ) -> Self::Intermediate

Add an event handler for EventListener::SecondaryClick. This is most often the “Right” click.
Source§

fn on_secondary_click_cont( self, action: impl Fn(&Event) + 'static, ) -> Self::Intermediate

Add an event handler for EventListener::SecondaryClick. This is most often the “Right” click. This event will be handled with the given handler and the event will continue propagating.
Source§

fn on_secondary_click_stop( self, action: impl Fn(&Event) + 'static, ) -> Self::Intermediate

Add an event handler for EventListener::SecondaryClick. This is most often the “Right” click. This event will be handled with the given handler and the event will stop propagating.
Source§

fn on_resize(self, action: impl Fn(Rect) + 'static) -> Self::Intermediate

Adds an event handler for resize events for this view. Read more
Source§

fn on_move(self, action: impl Fn(Point) + 'static) -> Self::Intermediate

Adds an event handler for move events for this view. Read more
Source§

fn on_cleanup(self, action: impl Fn() + 'static) -> Self::Intermediate

Adds an event handler for cleanup events for this view. Read more
Source§

fn animation( self, animation: impl Fn(Animation) -> Animation + 'static, ) -> Self::Intermediate

Add an animation to the view. Read more
Source§

fn clear_focus(self, when: impl Fn() + 'static) -> Self::Intermediate

Clear the focus from the window. Read more
Source§

fn request_focus(self, when: impl Fn() + 'static) -> Self::Intermediate

Request that this view gets the focus for the window. Read more
Source§

fn window_scale( self, scale_fn: impl Fn() -> f64 + 'static, ) -> Self::Intermediate

Set the window scale factor. Read more
Source§

fn window_title( self, title_fn: impl Fn() -> String + 'static, ) -> Self::Intermediate

Set the window title. Read more
Source§

fn window_menu(self, menu_fn: impl Fn() -> Menu + 'static) -> Self::Intermediate

Set the system window menu Read more
Source§

fn context_menu(self, menu: impl Fn() -> Menu + 'static) -> Self::Intermediate

Adds a secondary-click context menu to the view, which opens at the mouse position. Read more
Source§

fn popout_menu(self, menu: impl Fn() -> Menu + 'static) -> Self::Intermediate

Adds a primary-click context menu, which opens below the view. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<V> HasViewId for V
where V: View,

Source§

fn view_id(&self) -> ViewId

Returns the ViewId associated with this value.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<VW> IntoView for VW
where VW: View + 'static,

Source§

type V = VW

The final View type this converts to.
Source§

type Intermediate = VW

Intermediate type that has a ViewId before full view construction. Read more
Source§

fn into_intermediate(self) -> <VW as IntoView>::Intermediate

Converts to the intermediate form which has a ViewId. Read more
Source§

fn into_view(self) -> <VW as IntoView>::V

Converts the value into a View.
Source§

fn into_any(self) -> AnyView

Converts the value into a AnyView.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ScrollExt for T
where T: IntoView + 'static,

Source§

fn scroll(self) -> Scroll

Wrap the view in a scroll view.
Source§

impl<T> TooltipExt for T
where T: IntoView + 'static,

Source§

fn tooltip<V>(self, tip: impl Fn() -> V + 'static) -> Tooltip
where V: IntoView + 'static,

Adds a tooltip to the view. Read more
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> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

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

Source§

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