pub struct TextBox<T> {
pub handles_tab_notifications: bool,
/* private fields */
}Expand description
A widget that allows user text input.
Editing values
If the text you are editing represents a value of some other type, such
as a number, you should use a ValueTextBox and an appropriate
Formatter. You can create a ValueTextBox by passing the appropriate
Formatter to TextBox::with_formatter.
Fields§
§handles_tab_notifications: boolif true (the default), this textbox will attempt to change focus on tab.
You can override this in a controller if you want to customize tab behaviour.
Implementations§
§impl<T> TextBox<T>where
T: EditableText + TextStorage,
impl<T> TextBox<T>where T: EditableText + TextStorage,
pub fn new() -> TextBox<T>
pub fn new() -> TextBox<T>
Create a new TextBox widget.
Examples
use druid::widget::TextBox;
use druid::{ WidgetExt, Data, Lens };
#[derive(Clone, Data, Lens)]
struct AppState {
name: String,
}
let _ = TextBox::new()
.with_placeholder("placeholder text")
.lens(AppState::name);pub fn multiline() -> TextBox<T>
pub fn multiline() -> TextBox<T>
Create a new multi-line TextBox.
Examples
let multiline = TextBox::multiline()
.lens(AppState::name);pub fn with_line_wrapping(self, wrap_lines: bool) -> TextBox<T>
pub fn with_line_wrapping(self, wrap_lines: bool) -> TextBox<T>
If true (and this is a multiline text box) lines will be wrapped
at the maximum layout width.
If false, lines will not be wrapped, and horizontal scrolling will
be enabled.
Examples
//will scroll horizontally
let scroll_text_box = TextBox::new()
.with_line_wrapping(false)
.lens(AppState::name);
//will wrap only for a single line
let wrap_text_box = TextBox::new()
.with_line_wrapping(true)
.lens(AppState::name);
//will scroll as well as having multiple lines
let scroll_multi_line_text_box = TextBox::multiline()
.with_line_wrapping(false)
.lens(AppState::name);
//will wrap for each line
let wrap_multi_line_text_box = TextBox::multiline()
.with_line_wrapping(true) // this is default and can be removed for the same result
.lens(AppState::name);
§impl<T> TextBox<T>
impl<T> TextBox<T>
pub fn with_text_size(self, size: impl Into<KeyOrValue<f64>>) -> TextBox<T>
pub fn with_text_size(self, size: impl Into<KeyOrValue<f64>>) -> TextBox<T>
Builder-style method for setting the text size.
The argument can be either an f64 or a Key<f64>.
Examples
let text_box = TextBox::new()
.with_text_size(14.)
.lens(AppState::name);use druid::Key;
const FONT_SIZE : Key<f64> = Key::new("font-size");
let text_box = TextBox::new()
.with_text_size(FONT_SIZE)
.lens(AppState::name);pub fn with_text_alignment(self, alignment: TextAlignment) -> TextBox<T>
pub fn with_text_alignment(self, alignment: TextAlignment) -> TextBox<T>
Builder-style method to set the TextAlignment.
This is only relevant when the TextBox is not multiline,
in which case it determines how the text is positioned inside the
TextBox when it does not fill the available space.
Note:
This does not behave exactly like TextAlignment does when used
with label; in particular this does not account for reading direction.
This means that TextAlignment::Start (the default) always means
left aligned, and TextAlignment::End always means right aligned.
This should be considered a bug, but it will not be fixed until proper BiDi support is implemented.
Examples
use druid::TextAlignment;
let text_box = TextBox::new()
.with_text_alignment(TextAlignment::Center)
.lens(AppState::name);pub fn with_font(self, font: impl Into<KeyOrValue<FontDescriptor>>) -> TextBox<T>
pub fn with_font(self, font: impl Into<KeyOrValue<FontDescriptor>>) -> TextBox<T>
Builder-style method for setting the font.
The argument can be a FontDescriptor or a Key<FontDescriptor>
that refers to a font defined in the Env.
Examples
use druid::{ FontDescriptor, FontFamily, Key };
const FONT : Key<FontDescriptor> = Key::new("font");
let text_box = TextBox::new()
.with_font(FontDescriptor::new(FontFamily::MONOSPACE))
.lens(AppState::name);
let text_box = TextBox::new()
.with_font(FONT)
.lens(AppState::name);pub fn with_text_color(self, color: impl Into<KeyOrValue<Color>>) -> TextBox<T>
pub fn with_text_color(self, color: impl Into<KeyOrValue<Color>>) -> TextBox<T>
Builder-style method for setting the text color.
The argument can be either a Color or a Key<Color>.
Examples
use druid::{ Color, Key };
const COLOR : Key<Color> = Key::new("color");
let text_box = TextBox::new()
.with_text_color(Color::RED)
.lens(AppState::name);
let text_box = TextBox::new()
.with_text_color(COLOR)
.lens(AppState::name);pub fn set_text_size(&mut self, size: impl Into<KeyOrValue<f64>>)
pub fn set_text_size(&mut self, size: impl Into<KeyOrValue<f64>>)
Set the text size.
The argument can be either an f64 or a Key<f64>.
pub fn set_font(&mut self, font: impl Into<KeyOrValue<FontDescriptor>>)
pub fn set_font(&mut self, font: impl Into<KeyOrValue<FontDescriptor>>)
Set the font.
The argument can be a FontDescriptor or a Key<FontDescriptor>
that refers to a font defined in the Env.
pub fn set_text_alignment(&mut self, alignment: TextAlignment)
pub fn set_text_alignment(&mut self, alignment: TextAlignment)
Set the TextAlignment for this `TextBox``.
This is only relevant when the TextBox is not multiline,
in which case it determines how the text is positioned inside the
TextBox when it does not fill the available space.
Note:
This does not behave exactly like TextAlignment does when used
with label; in particular this does not account for reading direction.
This means that TextAlignment::Start (the default) always means
left aligned, and TextAlignment::End always means right aligned.
This should be considered a bug, but it will not be fixed until proper BiDi support is implemented.
pub fn set_text_color(&mut self, color: impl Into<KeyOrValue<Color>>)
pub fn set_text_color(&mut self, color: impl Into<KeyOrValue<Color>>)
Set the text color.
The argument can be either a Color or a Key<Color>.
If you change this property, you are responsible for calling
request_layout to ensure the label is updated.
pub fn text_position(&self) -> Point
pub fn text_position(&self) -> Point
The point, relative to the origin, where this text box draws its
TextLayout.
This is exposed in case the user wants to do additional drawing based on properties of the text.
This is not valid until layout has been called.
§impl<T> TextBox<T>where
T: Data,
impl<T> TextBox<T>where T: Data,
pub fn with_placeholder(self, placeholder: impl Into<LabelText<T>>) -> TextBox<T>
pub fn with_placeholder(self, placeholder: impl Into<LabelText<T>>) -> TextBox<T>
Builder-style method to set the TextBox’s placeholder text.
pub fn set_placeholder(&mut self, placeholder: impl Into<LabelText<T>>)
pub fn set_placeholder(&mut self, placeholder: impl Into<LabelText<T>>)
Set the TextBox’s placeholder text.
§impl<T> TextBox<T>
impl<T> TextBox<T>
pub fn text(&self) -> &TextComponent<T>
pub fn text(&self) -> &TextComponent<T>
An immutable reference to the inner TextComponent.
Using this correctly is difficult; please see the TextComponent
docs for more information.
pub fn text_mut(&mut self) -> &mut TextComponent<T>
pub fn text_mut(&mut self) -> &mut TextComponent<T>
A mutable reference to the inner TextComponent.
Using this correctly is difficult; please see the TextComponent
docs for more information.
§impl TextBox<String>
impl TextBox<String>
pub fn with_formatter<T>(
self,
formatter: impl Formatter<T> + 'static
) -> ValueTextBox<T>where
T: Data,
pub fn with_formatter<T>( self, formatter: impl Formatter<T> + 'static ) -> ValueTextBox<T>where T: Data,
Turn this TextBox into a ValueTextBox, using the Formatter to
manage the value.
For simple value formatting, you can use the ParseFormatter.
Trait Implementations§
§impl<T> Default for TextBox<T>where
T: TextStorage + EditableText,
impl<T> Default for TextBox<T>where T: TextStorage + EditableText,
§impl<T> Widget<T> for TextBox<T>where
T: TextStorage + EditableText,
impl<T> Widget<T> for TextBox<T>where T: TextStorage + EditableText,
§fn event(
&mut self,
ctx: &mut EventCtx<'_, '_>,
event: &Event,
data: &mut T,
env: &Env
)
fn event( &mut self, ctx: &mut EventCtx<'_, '_>, event: &Event, data: &mut T, env: &Env )
§fn lifecycle(
&mut self,
ctx: &mut LifeCycleCtx<'_, '_>,
event: &LifeCycle,
data: &T,
env: &Env
)
fn lifecycle( &mut self, ctx: &mut LifeCycleCtx<'_, '_>, event: &LifeCycle, data: &T, env: &Env )
§fn layout(
&mut self,
ctx: &mut LayoutCtx<'_, '_>,
bc: &BoxConstraints,
data: &T,
env: &Env
) -> Size
fn layout( &mut self, ctx: &mut LayoutCtx<'_, '_>, bc: &BoxConstraints, data: &T, env: &Env ) -> Size
§fn paint(&mut self, ctx: &mut PaintCtx<'_, '_, '_>, data: &T, env: &Env)
fn paint(&mut self, ctx: &mut PaintCtx<'_, '_, '_>, data: &T, env: &Env)
§fn compute_max_intrinsic(
&mut self,
axis: Axis,
ctx: &mut LayoutCtx<'_, '_>,
bc: &BoxConstraints,
data: &T,
env: &Env
) -> f64
fn compute_max_intrinsic( &mut self, axis: Axis, ctx: &mut LayoutCtx<'_, '_>, bc: &BoxConstraints, data: &T, env: &Env ) -> f64
Auto Trait Implementations§
impl<T> !RefUnwindSafe for TextBox<T>
impl<T> !Send for TextBox<T>
impl<T> !Sync for TextBox<T>
impl<T> Unpin for TextBox<T>where T: Unpin,
impl<T> !UnwindSafe for TextBox<T>
Blanket Implementations§
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> RoundFrom<T> for T
impl<T> RoundFrom<T> for T
§fn round_from(x: T) -> T
fn round_from(x: T) -> T
§impl<T, U> RoundInto<U> for Twhere
U: RoundFrom<T>,
impl<T, U> RoundInto<U> for Twhere U: RoundFrom<T>,
§fn round_into(self) -> U
fn round_into(self) -> U
§impl<T, W> TestWidgetExt<T> for Wwhere
T: Data,
W: Widget<T> + 'static,
impl<T, W> TestWidgetExt<T> for Wwhere T: Data, W: Widget<T> + 'static,
§impl<T, W> WidgetExt<T> for Wwhere
T: Data,
W: Widget<T> + 'static,
impl<T, W> WidgetExt<T> for Wwhere T: Data, W: Widget<T> + 'static,
§fn align_left(self) -> Align<T>
fn align_left(self) -> Align<T>
Align widget, configured to align left.§fn align_right(self) -> Align<T>
fn align_right(self) -> Align<T>
Align widget, configured to align right.§fn align_vertical(self, align: UnitPoint) -> Align<T>
fn align_vertical(self, align: UnitPoint) -> Align<T>
Align widget, configured to align vertically.§fn align_horizontal(self, align: UnitPoint) -> Align<T>
fn align_horizontal(self, align: UnitPoint) -> Align<T>
Align widget, configured to align horizontally.§fn fix_width(self, width: impl Into<KeyOrValue<f64>>) -> SizedBox<T>
fn fix_width(self, width: impl Into<KeyOrValue<f64>>) -> SizedBox<T>
SizedBox with an explicit width.§fn fix_height(self, height: impl Into<KeyOrValue<f64>>) -> SizedBox<T>
fn fix_height(self, height: impl Into<KeyOrValue<f64>>) -> SizedBox<T>
SizedBox with an explicit height.§fn fix_size(
self,
width: impl Into<KeyOrValue<f64>>,
height: impl Into<KeyOrValue<f64>>
) -> SizedBox<T>
fn fix_size( self, width: impl Into<KeyOrValue<f64>>, height: impl Into<KeyOrValue<f64>> ) -> SizedBox<T>
SizedBox with an explicit width and height§fn expand_width(self) -> SizedBox<T>
fn expand_width(self) -> SizedBox<T>
§fn expand_height(self) -> SizedBox<T>
fn expand_height(self) -> SizedBox<T>
§fn background(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>
fn background(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>
§fn foreground(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>
fn foreground(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>
§fn border(
self,
color: impl Into<KeyOrValue<Color>>,
width: impl Into<KeyOrValue<f64>>
) -> Container<T>
fn border( self, color: impl Into<KeyOrValue<Color>>, width: impl Into<KeyOrValue<f64>> ) -> Container<T>
§fn controller<C>(self, controller: C) -> ControllerHost<Self, C>where
C: Controller<T, Self>,
fn controller<C>(self, controller: C) -> ControllerHost<Self, C>where C: Controller<T, Self>,
Controller.§fn on_added(
self,
f: impl Fn(&mut Self, &mut LifeCycleCtx<'_, '_>, &T, &Env) + 'static
) -> ControllerHost<Self, Added<T, Self>>
fn on_added( self, f: impl Fn(&mut Self, &mut LifeCycleCtx<'_, '_>, &T, &Env) + 'static ) -> ControllerHost<Self, Added<T, Self>>
§fn on_click(
self,
f: impl Fn(&mut EventCtx<'_, '_>, &mut T, &Env) + 'static
) -> ControllerHost<Self, Click<T>>
fn on_click( self, f: impl Fn(&mut EventCtx<'_, '_>, &mut T, &Env) + 'static ) -> ControllerHost<Self, Click<T>>
§fn debug_paint_layout(self) -> EnvScope<T, Self>
fn debug_paint_layout(self) -> EnvScope<T, Self>
layout Rects of this widget and its children.§fn debug_widget_id(self) -> EnvScope<T, Self>
fn debug_widget_id(self) -> EnvScope<T, Self>
WidgetIds for this widget and its children, when hot. Read more§fn debug_invalidation(self) -> DebugInvalidation<T, Self>
fn debug_invalidation(self) -> DebugInvalidation<T, Self>
§fn debug_widget(self) -> EnvScope<T, Self>
fn debug_widget(self) -> EnvScope<T, Self>
DEBUG_WIDGET env variable for this widget (and its descendants). Read more§fn with_id(self, id: WidgetId) -> IdentityWrapper<Self>
fn with_id(self, id: WidgetId) -> IdentityWrapper<Self>
§fn disabled_if(
self,
disabled_if: impl Fn(&T, &Env) -> bool + 'static
) -> DisabledIf<T, Self>
fn disabled_if( self, disabled_if: impl Fn(&T, &Env) -> bool + 'static ) -> DisabledIf<T, Self>
DisabledIf widget. Read more