forked from Rust-SDL2/rust-sdl2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
message-box.rs
76 lines (69 loc) · 2.04 KB
/
message-box.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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;
}
_ => {}
}
}
// The rest of the game loop goes here...
}
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(())
}