electron_sys/module/
dialog.rs

1use crate::{
2    class::BrowserWindow,
3    interface::{
4        CertificateTrustDialogOptions,
5        MessageBoxOptions,
6        MessageBoxSyncOptions,
7        OpenDialogOptions,
8        OpenDialogSyncOptions,
9        SaveDialogOptions,
10        SaveDialogSyncOptions,
11    },
12};
13use js_sys::{JsString, Promise};
14use wasm_bindgen::prelude::*;
15
16#[wasm_bindgen(module = "electron")]
17extern {
18    #[wasm_bindgen]
19    pub type Dialog;
20
21    pub static dialog: Dialog;
22
23    #[must_use]
24    #[wasm_bindgen(method, js_name = "showCertificateTrustDialog")]
25    pub fn show_certificate_trust_dialog(
26        this: &Dialog,
27        browser_window: Option<&BrowserWindow>, // FIXME: verify this works with Option<_> for overloads
28        options: CertificateTrustDialogOptions,
29    ) -> Promise;
30
31    #[wasm_bindgen(method, js_name = "showErrBox")]
32    pub fn show_err_box(this: &Dialog, title: &str, content: &str);
33
34    #[must_use]
35    #[wasm_bindgen(method, js_name = "showMessageBox")]
36    pub fn show_message_box(
37        this: &Dialog,
38        browser_window: Option<&BrowserWindow>,
39        options: MessageBoxOptions,
40    ) -> Promise;
41
42    #[wasm_bindgen(method, js_name = "showMessageBoxSync")]
43    pub fn show_message_box_sync(
44        this: &Dialog,
45        browser_window: Option<&BrowserWindow>,
46        options: MessageBoxSyncOptions,
47    ) -> usize;
48
49    #[must_use]
50    #[wasm_bindgen(method, js_name = "showOpenDialog")]
51    pub fn show_open_dialog(
52        this: &Dialog,
53        browser_window: Option<&BrowserWindow>,
54        options: OpenDialogOptions,
55    ) -> Promise;
56
57    #[wasm_bindgen(method, js_name = "showOpenDialogSync")]
58    pub fn show_open_dialog_sync(
59        this: &Dialog,
60        browser_window: Option<&BrowserWindow>,
61        options: OpenDialogSyncOptions,
62    ) -> Option<Box<[JsValue]>>;
63
64    #[must_use]
65    #[wasm_bindgen(method, js_name = "showSaveDialog")]
66    pub fn show_save_dialog(
67        this: &Dialog,
68        browser_window: Option<&BrowserWindow>,
69        options: SaveDialogOptions,
70    ) -> Promise;
71
72    #[wasm_bindgen(method, js_name = "showSaveDialogSync")]
73    pub fn show_save_dialog_sync(
74        this: &Dialog,
75        browser_window: Option<&BrowserWindow>,
76        options: SaveDialogSyncOptions,
77    ) -> Option<JsString>;
78}