tauri_dialog_sys/
lib.rs

1//! This crate is no longer maintained. Tauri now uses [rfd](https://github.com/PolyMeilex/rfd).
2
3use std::ffi::CString;
4
5#[repr(C)]
6pub enum DialogStyle {
7  Info,
8  Warning,
9  Error,
10  Question,
11}
12
13#[repr(C)]
14pub enum DialogButtons {
15  Ok,
16  OkCancel,
17  YesNo,
18  Quit,
19}
20
21#[repr(C)]
22#[derive(PartialEq)]
23pub enum DialogSelection {
24  Ok,
25  Cancel,
26  Yes,
27  No,
28  Quit,
29  None,
30  Error,
31}
32
33mod ffi {
34  use crate::{DialogButtons, DialogSelection, DialogStyle};
35  use std::os::raw::*;
36
37  extern "C" {
38    pub fn boxerShow(
39      message: *const c_char,
40      title: *const c_char,
41      style: DialogStyle,
42      buttons: DialogButtons,
43    ) -> DialogSelection;
44  }
45}
46
47pub fn show_dialog(
48  message: &str,
49  title: &str,
50  style: DialogStyle,
51  buttons: DialogButtons,
52) -> DialogSelection {
53  let c_message = CString::new(message).expect("No nul bytes in parameter message");
54  let c_title = CString::new(title).expect("No nul bytes in parameter title");
55  unsafe { ffi::boxerShow(c_message.as_ptr(), c_title.as_ptr(), style, buttons) }
56}