1 extern crate sdl2;
2
3 use sdl2::pixels::Color;
4 use sdl2::event::Event;
5 use sdl2::keyboard::Keycode;
6 use ::sdl2::messagebox::*;
7
main() -> Result<(), String>8 pub fn main() -> Result<(), String> {
9 let sdl_context = sdl2::init()?;
10 let video_subsystem = sdl_context.video()?;
11
12 let window = video_subsystem.window("rust-sdl2 demo: Video", 800, 600)
13 .position_centered()
14 .opengl()
15 .build()
16 .map_err(|e| e.to_string())?;
17
18 let mut canvas = window.into_canvas().build().map_err(|e| e.to_string())?;
19
20 canvas.set_draw_color(Color::RGB(255, 0, 0));
21 canvas.clear();
22 canvas.present();
23 let mut event_pump = sdl_context.event_pump()?;
24
25 'running: loop {
26 for event in event_pump.poll_iter() {
27 match event {
28 Event::Quit {..} | Event::KeyDown { keycode: Some(Keycode::Escape), .. } => {
29 show_simple_message_box(MessageBoxFlag::ERROR,
30 "Some title",
31 "Some information inside the window",
32 canvas.window()
33 ).map_err(|e| e.to_string())?;
34 break 'running
35 },
36 _ => {}
37 }
38 }
39 // The rest of the game loop goes here...
40 }
41 let buttons : Vec<_> = vec![
42 ButtonData {
43 flags:MessageBoxButtonFlag::RETURNKEY_DEFAULT,
44 button_id:1,
45 text:"Ok"
46 },
47 ButtonData {
48 flags:MessageBoxButtonFlag::NOTHING,
49 button_id:2,
50 text:"No"
51 },
52 ButtonData {
53 flags:MessageBoxButtonFlag::ESCAPEKEY_DEFAULT,
54 button_id:3,
55 text:"Cancel"
56 },
57 ];
58 let res = show_message_box(MessageBoxFlag::WARNING,
59 buttons.as_slice(),
60 "Some warning",
61 "You forget to do something, do it anyway ?",
62 None,
63 None);
64 println!("{:?}",res);
65
66 Ok(())
67 }
68