blocking_dialog/linux/
alert.rs1use crate::{BlockingAlertDialog, BlockingDialogError, BlockingDialogLevel};
5use native_dialog::{DialogBuilder, MessageLevel};
6use raw_window_handle::HasWindowHandle;
7
8fn get_native_dialog_level(level: BlockingDialogLevel) -> MessageLevel {
9 match level {
10 BlockingDialogLevel::Info => MessageLevel::Info,
11 BlockingDialogLevel::Warning => MessageLevel::Warning,
12 BlockingDialogLevel::Error => MessageLevel::Error,
13 }
14}
15
16impl<'a, W: HasWindowHandle> BlockingAlertDialog<'a, W> {
17 pub fn show(&self) -> Result<(), BlockingDialogError> {
18 let dialog = DialogBuilder::message()
19 .set_title(self.title)
20 .set_text(self.message)
21 .set_level(get_native_dialog_level(self.level))
22 .set_owner(&self.window)
23 .alert();
24
25 match dialog.show() {
26 Ok(()) => Ok(()),
27 Err(e) => Err(BlockingDialogError::NativeDialog(e)),
28 }
29 }
30}