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