extern crate sdl2;
use sdl2::event::Event;
use sdl2::keyboard::Keycode;
use sdl2::messagebox::*;
use sdl2::pixels::Color;
pub fn main() -> Result<(), String> {
let sdl_context = sdl2::init()?;
let video_subsystem = sdl_context.video()?;
let window = video_subsystem
.window("rust-sdl2 demo: Video", 800, 600)
.position_centered()
.opengl()
.build()
.map_err(|e| e.to_string())?;
let mut canvas = window.into_canvas().build().map_err(|e| e.to_string())?;
canvas.set_draw_color(Color::RGB(255, 0, 0));
canvas.clear();
canvas.present();
let mut event_pump = sdl_context.event_pump()?;
'running: loop {
for event in event_pump.poll_iter() {
match event {
Event::Quit { .. }
| Event::KeyDown {
keycode: Some(Keycode::Escape),
..
} => {
show_simple_message_box(
MessageBoxFlag::ERROR,
"Some title",
"Some information inside the window",
canvas.window(),
)
.map_err(|e| e.to_string())?;
break 'running;
}
_ => {}
}
}
}
let buttons: Vec<_> = vec![
ButtonData {
flags: MessageBoxButtonFlag::RETURNKEY_DEFAULT,
button_id: 1,
text: "Ok",
},
ButtonData {
flags: MessageBoxButtonFlag::NOTHING,
button_id: 2,
text: "No",
},
ButtonData {
flags: MessageBoxButtonFlag::ESCAPEKEY_DEFAULT,
button_id: 3,
text: "Cancel",
},
];
let res = show_message_box(
MessageBoxFlag::WARNING,
buttons.as_slice(),
"Some warning",
"You forget to do something, do it anyway ?",
None,
None,
);
println!("{:?}", res);
Ok(())
}