Skip to main content

Numeric

Struct Numeric 

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

Numerical Up/Down component, where a number can be changed by stepping up or down with a given stepcount Design:

-128▼▲

Implementations§

Source§

impl Numeric

Source

pub const ARROW_UP: Grapheme = ScrollViewer::ARROW_UP

Source

pub const ARROW_DOWN: Grapheme = ScrollViewer::ARROW_DOWN

Source

pub const ARROW_UP_DISABLED: Grapheme = ScrollViewer::ARROW_UP_DISABLED

Source

pub const ARROW_DOWN_DISABLED: Grapheme = ScrollViewer::ARROW_DOWN_DISABLED

Source

pub const NUMERIC_PLACEHOLDER: Grapheme

Source

pub fn default_key_handler(&mut self, event: &mut WindowEvent)

Source

pub fn default_callback(_: &mut Self)

Source

pub fn set_changed_value_callback<F: Fn(&mut Numeric) + 'static>( &mut self, callback: F, )

Source

pub fn set_key_handler(&mut self, f: NumericKeyHandler)

Source

pub fn set_min_range(&mut self, min_range: i32)

Examples found in repository?
examples/stackpanel.rs (line 68)
52	fn default() -> Self {
53		let label = WindowFactory::create::<Label>();
54		label
55			.borrow_mut()
56			.set_text("Please enter a valid number (x ∈ ℕ):");
57		let button = WindowFactory::create::<Button>();
58		button.borrow_mut().set_text("Press to increment:");
59		button.borrow_mut().set_border(BorderKind::Solid.into());
60		let mut cb: Combobox<u8> = Combobox::default();
61		for v in [1, 2, 4] {
62			cb.add_item(DisplayValue::new(v, format!("Increment by {}", v)));
63		}
64		let cb = Rc::new(RefCell::new(cb));
65		let combobox = cb.clone();
66		let numeric = WindowFactory::create::<Numeric>();
67		numeric.borrow_mut().set_base(Radix::Hexadecimal);
68		numeric.borrow_mut().set_min_range(8);
69		numeric.borrow_mut().set_max_range(64);
70		numeric.borrow_mut().set_focus_color(Some(Color::Cyan));
71		let nc = numeric.clone();
72		combobox
73			.borrow_mut()
74			.set_selection_changed_callback(move |cb| {
75				let mut brw = nc.borrow_mut();
76				brw.set_stepcount(*cb.get_value().unwrap().value())
77			});
78
79		let stackpanel = WindowFactory::create::<Stackpanel>();
80		stackpanel.borrow_mut().set_border(BorderKind::Solid.into());
81		stackpanel.borrow_mut().add_item(label);
82		stackpanel.borrow_mut().add_item(numeric);
83		stackpanel.borrow_mut().add_item(cb);
84
85		Self {
86			uid: WindowUID::new(),
87			stackpanel,
88			running: true,
89		}
90	}
Source

pub fn set_max_range(&mut self, max_range: i32)

Examples found in repository?
examples/stackpanel.rs (line 69)
52	fn default() -> Self {
53		let label = WindowFactory::create::<Label>();
54		label
55			.borrow_mut()
56			.set_text("Please enter a valid number (x ∈ ℕ):");
57		let button = WindowFactory::create::<Button>();
58		button.borrow_mut().set_text("Press to increment:");
59		button.borrow_mut().set_border(BorderKind::Solid.into());
60		let mut cb: Combobox<u8> = Combobox::default();
61		for v in [1, 2, 4] {
62			cb.add_item(DisplayValue::new(v, format!("Increment by {}", v)));
63		}
64		let cb = Rc::new(RefCell::new(cb));
65		let combobox = cb.clone();
66		let numeric = WindowFactory::create::<Numeric>();
67		numeric.borrow_mut().set_base(Radix::Hexadecimal);
68		numeric.borrow_mut().set_min_range(8);
69		numeric.borrow_mut().set_max_range(64);
70		numeric.borrow_mut().set_focus_color(Some(Color::Cyan));
71		let nc = numeric.clone();
72		combobox
73			.borrow_mut()
74			.set_selection_changed_callback(move |cb| {
75				let mut brw = nc.borrow_mut();
76				brw.set_stepcount(*cb.get_value().unwrap().value())
77			});
78
79		let stackpanel = WindowFactory::create::<Stackpanel>();
80		stackpanel.borrow_mut().set_border(BorderKind::Solid.into());
81		stackpanel.borrow_mut().add_item(label);
82		stackpanel.borrow_mut().add_item(numeric);
83		stackpanel.borrow_mut().add_item(cb);
84
85		Self {
86			uid: WindowUID::new(),
87			stackpanel,
88			running: true,
89		}
90	}
Source

pub fn set_value(&mut self, value: i32)

Source

pub fn get_value(&self) -> i32

Source

pub fn set_base(&mut self, base: Radix)

Examples found in repository?
examples/stackpanel.rs (line 67)
52	fn default() -> Self {
53		let label = WindowFactory::create::<Label>();
54		label
55			.borrow_mut()
56			.set_text("Please enter a valid number (x ∈ ℕ):");
57		let button = WindowFactory::create::<Button>();
58		button.borrow_mut().set_text("Press to increment:");
59		button.borrow_mut().set_border(BorderKind::Solid.into());
60		let mut cb: Combobox<u8> = Combobox::default();
61		for v in [1, 2, 4] {
62			cb.add_item(DisplayValue::new(v, format!("Increment by {}", v)));
63		}
64		let cb = Rc::new(RefCell::new(cb));
65		let combobox = cb.clone();
66		let numeric = WindowFactory::create::<Numeric>();
67		numeric.borrow_mut().set_base(Radix::Hexadecimal);
68		numeric.borrow_mut().set_min_range(8);
69		numeric.borrow_mut().set_max_range(64);
70		numeric.borrow_mut().set_focus_color(Some(Color::Cyan));
71		let nc = numeric.clone();
72		combobox
73			.borrow_mut()
74			.set_selection_changed_callback(move |cb| {
75				let mut brw = nc.borrow_mut();
76				brw.set_stepcount(*cb.get_value().unwrap().value())
77			});
78
79		let stackpanel = WindowFactory::create::<Stackpanel>();
80		stackpanel.borrow_mut().set_border(BorderKind::Solid.into());
81		stackpanel.borrow_mut().add_item(label);
82		stackpanel.borrow_mut().add_item(numeric);
83		stackpanel.borrow_mut().add_item(cb);
84
85		Self {
86			uid: WindowUID::new(),
87			stackpanel,
88			running: true,
89		}
90	}
Source

pub fn get_base(&self) -> Radix

Source

pub fn step_up(&mut self)

Source

pub fn step_down(&mut self)

Source

pub fn get_stepcount(&self) -> u8

Source

pub fn set_stepcount(&mut self, stepcount: u8)

Examples found in repository?
examples/stackpanel.rs (line 76)
52	fn default() -> Self {
53		let label = WindowFactory::create::<Label>();
54		label
55			.borrow_mut()
56			.set_text("Please enter a valid number (x ∈ ℕ):");
57		let button = WindowFactory::create::<Button>();
58		button.borrow_mut().set_text("Press to increment:");
59		button.borrow_mut().set_border(BorderKind::Solid.into());
60		let mut cb: Combobox<u8> = Combobox::default();
61		for v in [1, 2, 4] {
62			cb.add_item(DisplayValue::new(v, format!("Increment by {}", v)));
63		}
64		let cb = Rc::new(RefCell::new(cb));
65		let combobox = cb.clone();
66		let numeric = WindowFactory::create::<Numeric>();
67		numeric.borrow_mut().set_base(Radix::Hexadecimal);
68		numeric.borrow_mut().set_min_range(8);
69		numeric.borrow_mut().set_max_range(64);
70		numeric.borrow_mut().set_focus_color(Some(Color::Cyan));
71		let nc = numeric.clone();
72		combobox
73			.borrow_mut()
74			.set_selection_changed_callback(move |cb| {
75				let mut brw = nc.borrow_mut();
76				brw.set_stepcount(*cb.get_value().unwrap().value())
77			});
78
79		let stackpanel = WindowFactory::create::<Stackpanel>();
80		stackpanel.borrow_mut().set_border(BorderKind::Solid.into());
81		stackpanel.borrow_mut().add_item(label);
82		stackpanel.borrow_mut().add_item(numeric);
83		stackpanel.borrow_mut().add_item(cb);
84
85		Self {
86			uid: WindowUID::new(),
87			stackpanel,
88			running: true,
89		}
90	}
Source

pub fn set_focus_color(&mut self, color: Option<Color>)

Examples found in repository?
examples/stackpanel.rs (line 70)
52	fn default() -> Self {
53		let label = WindowFactory::create::<Label>();
54		label
55			.borrow_mut()
56			.set_text("Please enter a valid number (x ∈ ℕ):");
57		let button = WindowFactory::create::<Button>();
58		button.borrow_mut().set_text("Press to increment:");
59		button.borrow_mut().set_border(BorderKind::Solid.into());
60		let mut cb: Combobox<u8> = Combobox::default();
61		for v in [1, 2, 4] {
62			cb.add_item(DisplayValue::new(v, format!("Increment by {}", v)));
63		}
64		let cb = Rc::new(RefCell::new(cb));
65		let combobox = cb.clone();
66		let numeric = WindowFactory::create::<Numeric>();
67		numeric.borrow_mut().set_base(Radix::Hexadecimal);
68		numeric.borrow_mut().set_min_range(8);
69		numeric.borrow_mut().set_max_range(64);
70		numeric.borrow_mut().set_focus_color(Some(Color::Cyan));
71		let nc = numeric.clone();
72		combobox
73			.borrow_mut()
74			.set_selection_changed_callback(move |cb| {
75				let mut brw = nc.borrow_mut();
76				brw.set_stepcount(*cb.get_value().unwrap().value())
77			});
78
79		let stackpanel = WindowFactory::create::<Stackpanel>();
80		stackpanel.borrow_mut().set_border(BorderKind::Solid.into());
81		stackpanel.borrow_mut().add_item(label);
82		stackpanel.borrow_mut().add_item(numeric);
83		stackpanel.borrow_mut().add_item(cb);
84
85		Self {
86			uid: WindowUID::new(),
87			stackpanel,
88			running: true,
89		}
90	}

Trait Implementations§

Source§

impl Default for Numeric

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl HasWindowUID for Numeric

Source§

fn uid(&self) -> WindowUID

Must be static and unique for each object implementing Window. Generate once per instance using WindowUID::new.
Source§

impl Widget for Numeric

Source§

fn set_width(&mut self, _: Size)

Unsupported

Source§

fn set_height(&mut self, _: Size)

Unsupported

Source§

fn set_width_constraint(&mut self, _: SizeConstraint)

Unsupported

Source§

fn set_height_constraint(&mut self, _: SizeConstraint)

Unsupported

Source§

fn set_visibility(&mut self, visibility: bool)

Source§

fn set_margin(&mut self, margin: Thickness)

Source§

fn set_border(&mut self, border: BorderStyle)

Source§

fn set_alignment( &mut self, horizontal: HorizontalAlignment, vertical: VerticalAlignment, )

Source§

fn set_enabled_state(&mut self, is_enabled: bool)

Changing the IsEnabled state usually changes the highlight color
Source§

impl WidgetColors for Numeric

Source§

fn set_disabled_color(&mut self, color: Option<Color>)

Source§

fn set_base_fg_color(&mut self, color: Option<Color>)

Source§

fn set_base_bg_color(&mut self, color: Option<Color>)

Source§

impl Window for Numeric

Source§

fn render(&self, canvas: &mut Canvas)

Allows self to draw into its own Canvas The canvas size depends on other properties set and the terminal size itself It is guarenteed that the size of the Canvas is atleast 1x1
Source§

fn handle_event(&mut self, event: &mut WindowEvent)

The events are forwarded from crossterm with the only exception of Resize which will have the same dimensions as the resulting canvas If a event’s handled attributed is set to true it will stop bubbling otherwise it will keep bubbling until another Window marks it as handled Except for: Read more
Source§

fn is_enabled(&self) -> bool

Is self enabled? Indicated whether or not to handle input and if its focusable When false, Window is still eligible to receive events
Source§

fn children(&mut self, builder: SubWindowBuilder) -> SubWindows

Returns all children windows (and layouting Rects) Note: When changing the children make sure to also adjust the focus
Source§

fn focus(&self) -> Option<WindowRef>

Which child of the window has focus Is there is None, then ´self´ has focus
Source§

impl WindowLayout for Numeric

Source§

fn desired_size(&self, available_size: TPoint) -> TPoint

Parents call this to get the desired size of the child This must not exceed available_size on any axis When the result’s product is equal to 0, this window wont be drawn
Source§

fn border(&self) -> BorderStyle

Source§

fn alignment(&self) -> (HorizontalAlignment, VerticalAlignment)

Aligns self within its parent Window
Source§

fn is_visible(&self) -> bool

Source§

fn margin(&self) -> Thickness

Source§

fn desired_size_pre_hook(&mut self, available_size: TPoint)

This is similar to desired_size but will not return anything and can mutably change self This is executed before WindowLayout::desired_size Only implement if actually necessary

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> AsAny for T
where T: Any,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Source§

fn type_name(&self) -> &'static str

Gets the type name of self
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> Downcast for T
where T: AsAny + ?Sized,

Source§

fn is<T>(&self) -> bool
where T: AsAny,

Returns true if the boxed type is the same as T. Read more
Source§

fn downcast_ref<T>(&self) -> Option<&T>
where T: AsAny,

Forward to the method defined on the type Any.
Source§

fn downcast_mut<T>(&mut self) -> Option<&mut T>
where T: AsAny,

Forward to the method defined on the type Any.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

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

Source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
Source§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
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 = 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> WindowHelper for T
where T: Window,