pub struct Output { /* private fields */ }
Expand description
Creates an output widget
Implementations§
Source§impl Output
impl Output
Sourcepub fn new<'a, T: Into<Option<&'a str>>>(
x: i32,
y: i32,
width: i32,
height: i32,
title: T,
) -> Output
pub fn new<'a, T: Into<Option<&'a str>>>( x: i32, y: i32, width: i32, height: i32, title: T, ) -> Output
Creates a new widget, takes an x, y coordinates, as well as a width and height, plus a title
§Arguments
x
- The x coordinate in the screeny
- The y coordinate in the screenwidth
- The width of the widgetheigth
- The height of the widgettitle
- The title or label of the widget
To use dynamic strings use with_label(self, &str)
or set_label(&mut self, &str)
.
labels support special symbols preceded by an @
sign
and for the associated formatting.
Examples found in repository?
examples/calculator.rs (line 107)
89fn main() {
90 let app = app::App::default();
91 let win_w = 400;
92 let win_h = 500;
93 let border = 20;
94 let but_row = 180;
95
96 let mut operation = Ops::None;
97 let mut txt = String::from("0");
98 let mut old_val = String::from("0");
99 let mut new_val: String;
100
101 let mut wind = Window::default()
102 .with_label("FLTK Calc")
103 .with_size(win_w, win_h);
104 wind.set_center_screen();
105 wind.set_color(Color::Light3);
106
107 let mut out = Output::new(border, border, win_w - 40, 140, "");
108 out.set_text_size(36);
109 out.set_value("0");
110
111 let vpack = Pack::new(border, but_row, win_w - 40, 300, "");
112
113 let mut hpack = Pack::new(0, 0, win_w - 40, 60, "");
114 let but_ce = MyButton::new("CE");
115 let but_c = MyButton::new("C");
116 let but_back = MyButton::new("@<-");
117 let but_div = MyButton::new("/");
118 hpack.end();
119 hpack.set_type(PackType::Horizontal);
120
121 let mut hpack = Pack::new(0, 0, win_w - 40, 60, "");
122 let mut but7 = MyButton::new("7");
123 let mut but8 = MyButton::new("8");
124 let mut but9 = MyButton::new("9");
125 let but_mul = MyButton::new("x");
126 hpack.end();
127 hpack.set_type(PackType::Horizontal);
128
129 let mut hpack = Pack::new(0, 0, win_w - 40, 60, "");
130 let mut but4 = MyButton::new("4");
131 let mut but5 = MyButton::new("5");
132 let mut but6 = MyButton::new("6");
133 let but_sub = MyButton::new("-");
134 hpack.end();
135 hpack.set_type(PackType::Horizontal);
136
137 let mut hpack = Pack::new(0, 0, win_w - 40, 60, "");
138 let mut but1 = MyButton::new("1");
139 let mut but2 = MyButton::new("2");
140 let mut but3 = MyButton::new("3");
141 let but_add = MyButton::new("+");
142 hpack.end();
143 hpack.set_type(PackType::Horizontal);
144
145 let mut hpack = Pack::new(0, 0, win_w - 40, 60, "");
146 let mut but_dot = MyButton::new(".");
147 let mut but0 = MyButton::new("0");
148 let but_eq = MyButton::new("=");
149 hpack.end();
150 hpack.set_type(PackType::Horizontal);
151
152 vpack.end();
153
154 wind.make_resizable(false);
155 wind.end();
156 wind.show_with_args(&["-scheme", "gtk+", "-nokbd"]);
157
158 app::set_focus(&*but1);
159
160 let but_vec = vec![
161 &mut but1, &mut but2, &mut but3, &mut but4, &mut but5, &mut but6, &mut but7, &mut but8,
162 &mut but9, &mut but0,
163 ];
164
165 let but_op_vec = vec![
166 but_add, but_sub, but_mul, but_div, but_c, but_ce, but_back, but_eq,
167 ];
168
169 let (s, r) = app::channel::<Message>();
170
171 for but in but_vec {
172 let label = but.label().unwrap();
173 but.emit(s, Message::Number(label.parse().unwrap()));
174 }
175
176 for mut but in but_op_vec {
177 let op = match but.label().unwrap().as_str() {
178 "+" => Ops::Add,
179 "-" => Ops::Sub,
180 "x" => Ops::Mul,
181 "/" => Ops::Div,
182 "=" => Ops::Eq,
183 "CE" => Ops::CE,
184 "C" => Ops::C,
185 "@<-" => Ops::Back,
186 _ => Ops::None,
187 };
188 but.emit(s, Message::Op(op));
189 }
190
191 but_dot.emit(s, Message::Dot);
192
193 while app.wait() {
194 if let Some(val) = r.recv() {
195 match val {
196 Message::Number(num) => {
197 if out.value() == "0" {
198 txt.clear();
199 }
200 txt.push_str(&num.to_string());
201 out.set_value(txt.as_str());
202 }
203 Message::Dot => {
204 if operation == Ops::Eq {
205 txt.clear();
206 operation = Ops::None;
207 out.set_value("0.");
208 txt.push_str("0.");
209 }
210 if !txt.contains('.') {
211 txt.push('.');
212 out.set_value(txt.as_str());
213 }
214 }
215 Message::Op(op) => match op {
216 Ops::Add | Ops::Sub | Ops::Div | Ops::Mul => {
217 old_val.clear();
218 old_val.push_str(&out.value());
219 operation = op;
220 out.set_value("0");
221 }
222 Ops::Back => {
223 let val = out.value();
224 txt.pop();
225 if val.len() > 1 {
226 out.set_value(txt.as_str());
227 } else {
228 out.set_value("0");
229 }
230 }
231 Ops::CE => {
232 txt.clear();
233 old_val.clear();
234 txt.push('0');
235 out.set_value(txt.as_str());
236 }
237 Ops::C => {
238 txt.clear();
239 txt.push('0');
240 out.set_value(txt.as_str());
241 }
242 Ops::Eq => {
243 new_val = out.value();
244 let old: f64 = old_val.parse().unwrap();
245 let new: f64 = new_val.parse().unwrap();
246 let val = match operation {
247 Ops::Div => old / new,
248 Ops::Mul => old * new,
249 Ops::Add => old + new,
250 Ops::Sub => old - new,
251 _ => new,
252 };
253 operation = Ops::None;
254 txt = String::from("0");
255 out.set_value(&val.to_string());
256 }
257 _ => (),
258 },
259 }
260 }
261 }
262}
Sourcepub fn default_fill() -> Self
pub fn default_fill() -> Self
Constructs a widget with the size of its parent
Trait Implementations§
Source§impl InputExt for Output
impl InputExt for Output
Source§fn maximum_size(&self) -> i32
fn maximum_size(&self) -> i32
Returns the maximum size (in bytes) accepted by an input/output widget
Source§fn set_maximum_size(&mut self, val: i32)
fn set_maximum_size(&mut self, val: i32)
Sets the maximum size (in bytes) accepted by an input/output widget
Source§fn insert_position(&self) -> i32
fn insert_position(&self) -> i32
Returns the index position inside an input/output widget
Source§fn set_position(&mut self, val: i32) -> Result<(), FltkError>
fn set_position(&mut self, val: i32) -> Result<(), FltkError>
Sets the index position inside an input/output widget Read more
Source§fn set_mark(&mut self, val: i32) -> Result<(), FltkError>
fn set_mark(&mut self, val: i32) -> Result<(), FltkError>
Sets the index mark inside an input/output widget Read more
Source§fn replace(&mut self, beg: i32, end: i32, val: &str) -> Result<(), FltkError>
fn replace(&mut self, beg: i32, end: i32, val: &str) -> Result<(), FltkError>
Replace content with a &str Read more
Source§fn set_text_font(&mut self, font: Font)
fn set_text_font(&mut self, font: Font)
Sets the text font
Source§fn cursor_color(&self) -> Color
fn cursor_color(&self) -> Color
Return the cursor color
Source§fn set_cursor_color(&mut self, color: Color)
fn set_cursor_color(&mut self, color: Color)
Sets the cursor color
Source§fn text_color(&self) -> Color
fn text_color(&self) -> Color
Return the text color
Source§fn set_text_color(&mut self, color: Color)
fn set_text_color(&mut self, color: Color)
Sets the text color
Source§fn set_text_size(&mut self, sz: i32)
fn set_text_size(&mut self, sz: i32)
Sets the text size
Source§fn set_readonly(&mut self, val: bool)
fn set_readonly(&mut self, val: bool)
Set readonly status of the input/output widget
Sets whether tab navigation is enabled, true by default
Returns whether tab navigation is enabled
Source§impl WidgetBase for Output
impl WidgetBase for Output
Source§unsafe fn from_widget_ptr(ptr: *mut Fl_Widget) -> Self
unsafe fn from_widget_ptr(ptr: *mut Fl_Widget) -> Self
transforms a widget pointer to a Widget, for internal use Read more
Source§unsafe fn from_widget<W: WidgetExt>(w: W) -> Self
unsafe fn from_widget<W: WidgetExt>(w: W) -> Self
Get a widget from base widget Read more
Source§fn handle<F: FnMut(&mut Self, Event) -> bool + 'static>(&mut self, cb: F)
fn handle<F: FnMut(&mut Self, Event) -> bool + 'static>(&mut self, cb: F)
Set a custom handler, where events are managed manually, akin to
Fl_Widget::handle(int)
.
Handled or ignored events should return true, unhandled events should return false.
takes the widget as a closure argument.
The ability to handle an event might depend on handling other events, as explained hereSource§fn draw<F: FnMut(&mut Self) + 'static>(&mut self, cb: F)
fn draw<F: FnMut(&mut Self) + 'static>(&mut self, cb: F)
Set a custom draw method.
takes the widget as a closure argument.
macOS requires that
WidgetBase::draw
actually calls drawing functionsSource§fn resize_callback<F: FnMut(&mut Self, i32, i32, i32, i32) + 'static>(
&mut self,
cb: F,
)
fn resize_callback<F: FnMut(&mut Self, i32, i32, i32, i32) + 'static>( &mut self, cb: F, )
Perform a callback on resize.
Avoid resizing the parent or the same widget to avoid infinite recursion
Source§unsafe fn assume_derived(&mut self)
unsafe fn assume_derived(&mut self)
Makes the widget derived Read more
Source§impl WidgetExt for Output
impl WidgetExt for Output
Source§fn set_label(&mut self, title: &str)
fn set_label(&mut self, title: &str)
Sets the widget’s label.
labels support special symbols preceded by an
@
sign.
and for the associated formatting.Source§fn unset_label(&mut self)
fn unset_label(&mut self)
Unset a widget’s label
Source§fn measure_label(&self) -> (i32, i32)
fn measure_label(&self) -> (i32, i32)
Measures the label’s width and height
Source§fn as_widget_ptr(&self) -> *mut Fl_Widget
fn as_widget_ptr(&self) -> *mut Fl_Widget
transforms a widget to a base
Fl_Widget
, for internal useSource§fn deactivate(&mut self)
fn deactivate(&mut self)
Deactivates the widget
Source§fn redraw_label(&mut self)
fn redraw_label(&mut self)
Redraws the label of the widget
Source§fn resize(&mut self, x: i32, y: i32, width: i32, height: i32)
fn resize(&mut self, x: i32, y: i32, width: i32, height: i32)
Resizes and/or moves the widget, takes x, y, width and height
Source§fn widget_resize(&mut self, x: i32, y: i32, width: i32, height: i32)
fn widget_resize(&mut self, x: i32, y: i32, width: i32, height: i32)
Does a simple resize ignoring class-specific resize functionality
Source§fn set_tooltip(&mut self, txt: &str)
fn set_tooltip(&mut self, txt: &str)
Sets the tooltip text
Source§fn label_color(&self) -> Color
fn label_color(&self) -> Color
Returns the widget label’s color
Source§fn set_label_color(&mut self, color: Color)
fn set_label_color(&mut self, color: Color)
Sets the widget label’s color
Source§fn label_font(&self) -> Font
fn label_font(&self) -> Font
Returns the widget label’s font
Source§fn set_label_font(&mut self, font: Font)
fn set_label_font(&mut self, font: Font)
Sets the widget label’s font
Source§fn label_size(&self) -> i32
fn label_size(&self) -> i32
Returns the widget label’s size
Source§fn set_label_size(&mut self, sz: i32)
fn set_label_size(&mut self, sz: i32)
Sets the widget label’s size
Source§fn label_type(&self) -> LabelType
fn label_type(&self) -> LabelType
Returns the widget label’s type
Source§fn set_label_type(&mut self, typ: LabelType)
fn set_label_type(&mut self, typ: LabelType)
Sets the widget label’s type
Source§fn set_changed(&mut self)
fn set_changed(&mut self)
Mark the widget as changed
Source§fn clear_changed(&mut self)
fn clear_changed(&mut self)
Clears the changed status of the widget
Source§fn set_when(&mut self, trigger: When)
fn set_when(&mut self, trigger: When)
Sets the default callback trigger for a widget, equivalent to
when()
Source§fn selection_color(&self) -> Color
fn selection_color(&self) -> Color
Gets the selection color of the widget
Source§fn set_selection_color(&mut self, color: Color)
fn set_selection_color(&mut self, color: Color)
Sets the selection color of the widget
Source§fn do_callback(&mut self)
fn do_callback(&mut self)
Runs the already registered callback
Source§fn top_window(&self) -> Option<Box<dyn WindowExt>>
fn top_window(&self) -> Option<Box<dyn WindowExt>>
Returns the topmost window holding the widget
Source§fn takes_events(&self) -> bool
fn takes_events(&self) -> bool
Checks whether a widget is capable of taking events
Source§fn set_visible_focus(&mut self)
fn set_visible_focus(&mut self)
Set the widget to have visible focus
Source§fn clear_visible_focus(&mut self)
fn clear_visible_focus(&mut self)
Clear visible focus
Source§fn visible_focus(&mut self, v: bool)
fn visible_focus(&mut self, v: bool)
Set the visible focus using a flag
Source§fn has_visible_focus(&self) -> bool
fn has_visible_focus(&self) -> bool
Return whether the widget has visible focus
Source§fn was_deleted(&self) -> bool
fn was_deleted(&self) -> bool
Check if a widget was deleted
Source§fn set_damage(&mut self, flag: bool)
fn set_damage(&mut self, flag: bool)
Signal the widget as damaged and it should be redrawn in the next event loop cycle
Source§fn damage_type(&self) -> Damage
fn damage_type(&self) -> Damage
Return the damage mask
Source§fn set_damage_type(&mut self, mask: Damage)
fn set_damage_type(&mut self, mask: Damage)
Signal the type of damage a widget received
Source§fn set_damage_area(&mut self, mask: Damage, x: i32, y: i32, w: i32, h: i32)
fn set_damage_area(&mut self, mask: Damage, x: i32, y: i32, w: i32, h: i32)
Signal damage for an area inside the widget
Source§fn clear_damage(&mut self)
fn clear_damage(&mut self)
Clear the damaged flag
Source§fn as_window(&self) -> Option<Box<dyn WindowExt>>
fn as_window(&self) -> Option<Box<dyn WindowExt>>
Return the widget as a window if it’s a window
Source§fn as_group(&self) -> Option<Group>
fn as_group(&self) -> Option<Group>
Return the widget as a group widget if it’s a group widget
Source§fn inside<W: WidgetExt>(&self, wid: &W) -> bool
fn inside<W: WidgetExt>(&self, wid: &W) -> bool
Checks whether the self widget is inside another widget
Source§fn get_type<T: WidgetType>(&self) -> T
fn get_type<T: WidgetType>(&self) -> T
Returns the widget type when applicable
Source§fn set_type<T: WidgetType>(&mut self, typ: T)
fn set_type<T: WidgetType>(&mut self, typ: T)
Sets the widget type
Source§fn set_image_scaled<I: ImageExt>(&mut self, image: Option<I>)
fn set_image_scaled<I: ImageExt>(&mut self, image: Option<I>)
Sets the image of the widget scaled to the widget’s size
Source§fn set_deimage<I: ImageExt>(&mut self, image: Option<I>)
fn set_deimage<I: ImageExt>(&mut self, image: Option<I>)
Sets the deactivated image of the widget
Source§fn set_deimage_scaled<I: ImageExt>(&mut self, image: Option<I>)
fn set_deimage_scaled<I: ImageExt>(&mut self, image: Option<I>)
Sets the deactivated image of the widget scaled to the widget’s size
Source§fn deimage(&self) -> Option<Box<dyn ImageExt>>
fn deimage(&self) -> Option<Box<dyn ImageExt>>
Gets the deactivated image associated with the widget
Source§fn set_callback<F: FnMut(&mut Self) + 'static>(&mut self, cb: F)
fn set_callback<F: FnMut(&mut Self) + 'static>(&mut self, cb: F)
Sets the callback when the widget is triggered (clicks for example)
takes the widget as a closure argument
Source§fn emit<T: 'static + Clone + Send + Sync>(&mut self, sender: Sender<T>, msg: T)
fn emit<T: 'static + Clone + Send + Sync>(&mut self, sender: Sender<T>, msg: T)
Emits a message on callback using a sender
Source§unsafe fn as_widget<W: WidgetBase>(&self) -> W
unsafe fn as_widget<W: WidgetBase>(&self) -> W
Upcast a
WidgetExt
to some widget type Read moreSource§fn visible_r(&self) -> bool
fn visible_r(&self) -> bool
Returns whether a widget or any of its parents are visible (recursively)
Source§fn is_same<W: WidgetExt>(&self, other: &W) -> bool
fn is_same<W: WidgetExt>(&self, other: &W) -> bool
Return whether two widgets object point to the same widget
Source§fn active_r(&self) -> bool
fn active_r(&self) -> bool
Returns whether a widget or any of its parents are active (recursively)
Source§fn handle_event(&mut self, event: Event) -> bool
fn handle_event(&mut self, event: Event) -> bool
Handle a specific event
Source§fn is_derived(&self) -> bool
fn is_derived(&self) -> bool
Check whether a widget is derived
Source§fn as_base_widget(&self) -> Widgetwhere
Self: Sized,
fn as_base_widget(&self) -> Widgetwhere
Self: Sized,
Upcast a
WidgetExt
to a WidgetSource§impl WidgetProps for Output
impl WidgetProps for Output
Source§fn with_label(self, title: &str) -> Self
fn with_label(self, title: &str) -> Self
Initialize with a label
Source§fn with_align(self, align: Align) -> Self
fn with_align(self, align: Align) -> Self
Initialize with alignment
Source§fn with_type<T: WidgetType>(self, typ: T) -> Self
fn with_type<T: WidgetType>(self, typ: T) -> Self
Initialize with type
Source§fn below_of<W: WidgetExt>(self, wid: &W, padding: i32) -> Self
fn below_of<W: WidgetExt>(self, wid: &W, padding: i32) -> Self
Initialize at bottom of another widget
Source§fn above_of<W: WidgetExt>(self, wid: &W, padding: i32) -> Self
fn above_of<W: WidgetExt>(self, wid: &W, padding: i32) -> Self
Initialize above of another widget
Source§fn right_of<W: WidgetExt>(self, wid: &W, padding: i32) -> Self
fn right_of<W: WidgetExt>(self, wid: &W, padding: i32) -> Self
Initialize right of another widget
Source§fn left_of<W: WidgetExt>(self, wid: &W, padding: i32) -> Self
fn left_of<W: WidgetExt>(self, wid: &W, padding: i32) -> Self
Initialize left of another widget
Source§fn center_x<W: WidgetExt>(self, w: &W) -> Self
fn center_x<W: WidgetExt>(self, w: &W) -> Self
Initialize center of another widget on the x axis
Source§fn center_y<W: WidgetExt>(self, w: &W) -> Self
fn center_y<W: WidgetExt>(self, w: &W) -> Self
Initialize center of another widget on the y axis
Source§fn center_of_parent(self) -> Self
fn center_of_parent(self) -> Self
Initialize center of parent
Source§fn size_of_parent(self) -> Self
fn size_of_parent(self) -> Self
Initialize to the size of the parent
impl Eq for Output
impl Send for Output
Available on non-crate feature
single-threaded
only.impl Sync for Output
Available on non-crate feature
single-threaded
only.Auto Trait Implementations§
impl Freeze for Output
impl RefUnwindSafe for Output
impl Unpin for Output
impl UnwindSafe for Output
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
Mutably borrows from an owned value. Read more