File Dialogs
Validated dialog requests, filters, content types, and errors.
FileDialogRequest { kind, options } is fully validated before dispatch;
cancellation arrives as an outcome, not an error.
use incular::prelude::*;
fn main() {
let filter =
FileDialogFilter::extensions("images", "Images", ["png", "jpg"])
.expect("filter");
println!("filter: {}", filter.id().as_str());
let ext = FileExtension::new("png").expect("extension");
println!("ext: {}", ext.as_str());
let content = FileContentType::new("image/png").expect("content type");
println!("kind: {}", content.kind() == FileContentTypeKind::Mime);
}FileDialogFilterId is the stable semantic identity (labels are
presentation-only). FileDialogOption: ExtensionFilters /
MimeTypeFilters / TypeIdentifierFilters / SuggestedFileName /
SuggestedDirectory / ParentWindow (backend-support varies).
FileDialogValidationError: bad ids/labels/extensions/content-types, empty or
duplicate filters, inapplicable options. FileDialogError: invalid request,
closed parent, stopped app, unsupported op/option, bad result, backend message.
DocumentActivation (from_paths, documents()) and DocumentDescriptor
(path preserved exactly) model open-document intents.
FileContentTypeKind: Mime / TypeIdentifier — the identifier family.
Related: Application.