Skip to main content

toggle_button/
toggle_button.rs

1extern crate pushrod;
2extern crate sdl2;
3
4use pushrod::render::engine::Engine;
5use pushrod::render::widget::Widget;
6use pushrod::render::widget_config::{CONFIG_BORDER_WIDTH, CONFIG_COLOR_BORDER};
7use pushrod::render::{make_points, make_size};
8use pushrod::widgets::toggle_button_widget::ToggleButtonWidget;
9use sdl2::pixels::Color;
10
11/*
12 * This demo just tests the rendering functionality of the `BaseWidget`.  It only tests the
13 * render portion of the library, nothing else.
14 */
15
16pub fn main() {
17    let sdl_context = sdl2::init().unwrap();
18    let video_subsystem = sdl_context.video().unwrap();
19    let window = video_subsystem
20        .window("pushrod-render toggle button demo", 400, 100)
21        .position_centered()
22        .opengl()
23        .build()
24        .unwrap();
25    let mut engine = Engine::new(400, 100, 60);
26    let mut button1 = ToggleButtonWidget::new(
27        make_points(20, 20),
28        make_size(170, 60),
29        String::from("1"),
30        40,
31        false,
32    );
33
34    button1.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
35    button1.set_numeric(CONFIG_BORDER_WIDTH, 2);
36    button1.on_toggle(|_, _widgets, _layouts, _state| {
37        eprintln!("1 Toggled: {}", _state);
38    });
39
40    let mut button2 = ToggleButtonWidget::new(
41        make_points(210, 20),
42        make_size(170, 60),
43        String::from("2"),
44        40,
45        true,
46    );
47
48    button2.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
49    button2.set_numeric(CONFIG_BORDER_WIDTH, 2);
50    button2.on_toggle(|_, _widgets, _layouts, _state| {
51        eprintln!("2 Toggled: {}", _state);
52    });
53
54    engine.add_widget(Box::new(button1), String::from("button1"));
55    engine.add_widget(Box::new(button2), String::from("button2"));
56
57    engine.run(sdl_context, window);
58}