fret_platform/
file_dialog.rs1use crate::external_drop::ExternalDropReadLimits;
6use fret_core::{FileDialogDataEvent, FileDialogOptions, FileDialogSelection, FileDialogToken};
7
8pub type FileDialogReadLimits = ExternalDropReadLimits;
9
10#[derive(Debug, Clone, Copy, PartialEq, Eq)]
11pub enum FileDialogErrorKind {
12 Unsupported,
13 BackendError,
14}
15
16#[derive(Debug, Clone, PartialEq, Eq)]
17pub struct FileDialogError {
18 pub kind: FileDialogErrorKind,
19}
20
21pub trait FileDialogProvider {
22 fn open_files(
23 &mut self,
24 options: &FileDialogOptions,
25 ) -> Result<Option<FileDialogSelection>, FileDialogError>;
26
27 fn read_all(
28 &mut self,
29 token: FileDialogToken,
30 limits: FileDialogReadLimits,
31 ) -> Option<FileDialogDataEvent>;
32
33 fn release(&mut self, token: FileDialogToken);
34}