form_widget/
form_widget.rs1#[macro_use]
2extern crate fltk_form_derive;
3
4use fltk::{prelude::*, *};
5use fltk_form::{FltkForm, Form};
6
7#[derive(Copy, Debug, Clone, FltkForm)]
8pub enum MyEnum {
9 A,
10 B,
11 C,
12}
13
14#[derive(Debug, Clone, FltkForm)]
15pub struct MyStruct {
16 a: f64,
17 b: f64,
18 c: String,
19 d: MyEnum,
20 e: bool,
21}
22
23impl MyStruct {
24 pub fn default() -> Self {
25 Self {
26 a: 0.0,
27 b: 3.0,
28 c: String::new(),
29 d: MyEnum::A,
30 e: true,
31 }
32 }
33}
34
35fn main() {
36 let my_struct = MyStruct::default(); let a = app::App::default().with_scheme(app::Scheme::Gtk);
39 app::set_background_color(222, 222, 222);
40
41 let mut win = window::Window::default().with_size(400, 300);
42
43 let mut form = Form::default()
44 .with_size(200, 200)
45 .center_of_parent()
46 .from_data(my_struct);
47
48 let mut btn = button::Button::default()
49 .with_label("print")
50 .with_size(80, 30)
51 .below_of(&*form, 5)
52 .center_x(&*form);
53 win.end();
54 win.show();
55
56 form.rename_prop("a", "Longer name");
57 let x = form.x() + 50;
58 let y = form.y();
59 form.set_pos(x, y);
60
61 let v = form.get_prop("b"); assert_eq!(v, Some("3.0".to_owned()));
63
64 btn.set_callback(move |_| {
65 println!("{:?}", form.get_props()); });
67
68 a.run().unwrap();
69}