Skip to main content

fret_core/
file_dialog.rs

1//! Portable file-dialog contracts.
2//!
3//! A file dialog selection is modeled as a token plus safe metadata. The UI/runtime can later
4//! request bytes via effects, keeping the contract portable to sandboxed environments.
5
6use crate::{ExternalDragFile, ExternalDropFileData, ExternalDropReadError, FileDialogToken};
7
8#[derive(Debug, Clone, PartialEq, Eq)]
9pub struct FileDialogFilter {
10    pub name: String,
11    pub extensions: Vec<String>,
12}
13
14#[derive(Debug, Clone, PartialEq, Eq, Default)]
15pub struct FileDialogOptions {
16    pub title: Option<String>,
17    pub multiple: bool,
18    pub filters: Vec<FileDialogFilter>,
19}
20
21#[derive(Debug, Clone, PartialEq)]
22pub struct FileDialogSelection {
23    pub token: FileDialogToken,
24    pub files: Vec<ExternalDragFile>,
25}
26
27pub type FileDialogFileData = ExternalDropFileData;
28pub type FileDialogReadError = ExternalDropReadError;
29
30#[derive(Debug, Clone, PartialEq)]
31pub struct FileDialogDataEvent {
32    pub token: FileDialogToken,
33    pub files: Vec<FileDialogFileData>,
34    pub errors: Vec<FileDialogReadError>,
35}