pub struct MessageBox<'a> {
pub title: &'a str,
pub message: &'a str,
pub icon: MessageIcon,
pub buttons: MessageButtons,
pub owner: Option<&'a dyn HasWindowHandle>,
}Expand description
Message box dialog.
let result = rustydialogs::MessageBox {
title: "Confirm Action",
message: "Are you sure you want to proceed?",
icon: rustydialogs::MessageIcon::Question,
buttons: rustydialogs::MessageButtons::YesNo,
owner: None,
}.show();
if result == Some(rustydialogs::MessageResult::Yes) {
println!("User chose Yes");
}Fields§
§title: &'a strThe title of the dialog.
message: &'a strThe message to display to the user.
icon: MessageIconThe icon to show in the dialog.
The buttons to show in the dialog.
owner: Option<&'a dyn HasWindowHandle>The owner window of the dialog.
Implementations§
Source§impl<'a> MessageBox<'a>
impl<'a> MessageBox<'a>
Sourcepub fn show(&self) -> Option<MessageResult>
pub fn show(&self) -> Option<MessageResult>
Show the dialog.
Prefer to check if the dialog result matches Some(Ok) or Some(Yes) rather than checking for Some(No) or Some(Cancel).
When the dialog is dismissed (closing the dialog or pressing ESC), the result maybe None or may be any of the message results even if that button is not present (e.g. Some(Cancel)).
Examples found in repository?
examples/message_box.rs (line 26)
1fn main() {
2 let i = std::process::id() / 4;
3
4 let icon = match i % 4 {
5 0 => rustydialogs::MessageIcon::Info,
6 1 => rustydialogs::MessageIcon::Warning,
7 2 => rustydialogs::MessageIcon::Error,
8 _ => rustydialogs::MessageIcon::Question,
9 };
10
11 let buttons = match i / 4 % 4 {
12 0 => rustydialogs::MessageButtons::Ok,
13 1 => rustydialogs::MessageButtons::OkCancel,
14 2 => rustydialogs::MessageButtons::YesNo,
15 _ => rustydialogs::MessageButtons::YesNoCancel,
16 };
17
18 let dialog = rustydialogs::MessageBox {
19 title: "Rusty Dialogs",
20 message: "Hello from Rust!\nThis is a native message box.",
21 icon,
22 buttons,
23 owner: None,
24 };
25
26 let selected = dialog.show();
27 println!("Selected: {selected:?}");
28}More examples
examples/tests.rs (line 172)
133fn test_message_box() {
134 println!("\n{}", Color("==== Testing MessageBox ====", "120;190;255"));
135
136 let icons: &[rustydialogs::MessageIcon] = &[
137 rustydialogs::MessageIcon::Info,
138 rustydialogs::MessageIcon::Warning,
139 rustydialogs::MessageIcon::Error,
140 rustydialogs::MessageIcon::Question,
141 ];
142
143 let matrix: &[(rustydialogs::MessageButtons, &[Option<rustydialogs::MessageResult>])] = &[
144 (rustydialogs::MessageButtons::Ok, &[Some(rustydialogs::MessageResult::Ok), None]),
145 (rustydialogs::MessageButtons::OkCancel, &[Some(rustydialogs::MessageResult::Ok), Some(rustydialogs::MessageResult::Cancel), None]),
146 (rustydialogs::MessageButtons::YesNo, &[Some(rustydialogs::MessageResult::Yes), Some(rustydialogs::MessageResult::No), None]),
147 (rustydialogs::MessageButtons::YesNoCancel, &[Some(rustydialogs::MessageResult::Yes), Some(rustydialogs::MessageResult::No), Some(rustydialogs::MessageResult::Cancel), None]),
148 ];
149
150 for &icon in icons {
151 println!("\n{} Icon: {}", Color("Testing", "120;190;255"), Color(format_args!("{:?}", icon), "255;214;102"));
152 let title = format!("[tests] MessageBox - {icon:?}");
153 for &(buttons, results) in matrix {
154 for &result in results {
155 let desc = match result {
156 Some(rustydialogs::MessageResult::Ok) => "Press OK.",
157 Some(rustydialogs::MessageResult::Cancel) => "Press Cancel.",
158 Some(rustydialogs::MessageResult::Yes) => "Press Yes.",
159 Some(rustydialogs::MessageResult::No) => "Press No.",
160 None => "Dismiss the dialog.",
161 };
162 let message = format!("Instruction: {desc}");
163 let full_desc = format!("{desc}\n Buttons: {}\n Icon: {}", Color(format_args!("{:?}", buttons), "255;214;102"), Color(format_args!("{:?}", icon), "255;214;102"));
164 step(&full_desc,
165 result,
166 || rustydialogs::MessageBox {
167 title: &title,
168 message: &message,
169 icon,
170 buttons,
171 owner: None,
172 }.show()
173 );
174 }
175 }
176 }
177}Trait Implementations§
Source§impl<'a> Clone for MessageBox<'a>
impl<'a> Clone for MessageBox<'a>
Source§fn clone(&self) -> MessageBox<'a>
fn clone(&self) -> MessageBox<'a>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl<'a> Copy for MessageBox<'a>
Auto Trait Implementations§
impl<'a> Freeze for MessageBox<'a>
impl<'a> !RefUnwindSafe for MessageBox<'a>
impl<'a> !Send for MessageBox<'a>
impl<'a> !Sync for MessageBox<'a>
impl<'a> Unpin for MessageBox<'a>
impl<'a> UnsafeUnpin for MessageBox<'a>
impl<'a> !UnwindSafe for MessageBox<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more