use crate::FileHandle;
use std::future::Future;
use std::path::PathBuf;
use std::pin::Pin;
#[cfg(target_os = "linux")]
mod gtk3;
#[cfg(target_os = "macos")]
mod macos;
#[cfg(target_arch = "wasm32")]
mod wasm;
#[cfg(target_os = "windows")]
mod win_cid;
pub trait FilePickerDialogImpl {
fn pick_file(self) -> Option<PathBuf>;
fn pick_files(self) -> Option<Vec<PathBuf>>;
}
pub trait FileSaveDialogImpl {
fn save_file(self) -> Option<PathBuf>;
}
pub trait FolderPickerDialogImpl {
fn pick_folder(self) -> Option<PathBuf>;
}
pub trait MessageDialogImpl {
fn show(self) -> bool;
}
#[cfg(not(target_arch = "wasm32"))]
pub type DialogFutureType<T> = Pin<Box<dyn Future<Output = T> + Send>>;
#[cfg(target_arch = "wasm32")]
pub type DialogFutureType<T> = Pin<Box<dyn Future<Output = T>>>;
pub trait AsyncFilePickerDialogImpl {
fn pick_file_async(self) -> DialogFutureType<Option<FileHandle>>;
fn pick_files_async(self) -> DialogFutureType<Option<Vec<FileHandle>>>;
}
pub trait AsyncFolderPickerDialogImpl {
fn pick_folder_async(self) -> DialogFutureType<Option<FileHandle>>;
}
pub trait AsyncFileSaveDialogImpl {
fn save_file_async(self) -> DialogFutureType<Option<FileHandle>>;
}
pub trait AsyncMessageDialogImpl {
fn show_async(self) -> DialogFutureType<bool>;
}