pub use graphite_editor::messages::prelude::DocumentId; use graphite_editor::messages::prelude::FrontendMessage; use std::path::PathBuf; pub(crate) use graphite_editor::messages::prelude::Message as EditorMessage; pub use graphite_editor::messages::prelude::PreferencesMessageHandler as Preferences; pub enum DesktopFrontendMessage { ToWeb(Vec), OpenFileDialog { title: String, filters: Vec, context: OpenFileDialogContext, }, SaveFileDialog { title: String, default_filename: String, default_folder: Option, filters: Vec, context: SaveFileDialogContext, }, WriteFile { path: PathBuf, content: Vec, }, OpenUrl(String), UpdateViewportBounds { x: f32, y: f32, width: f32, height: f32, }, UpdateOverlays(vello::Scene), MinimizeWindow, MaximizeWindow, DragWindow, CloseWindow, PersistenceWriteDocument { id: DocumentId, document: Document, }, PersistenceDeleteDocument { id: DocumentId, }, PersistenceUpdateCurrentDocument { id: DocumentId, }, PersistenceLoadCurrentDocument, PersistenceLoadRemainingDocuments, PersistenceUpdateDocumentsList { ids: Vec, }, PersistenceWritePreferences { preferences: Preferences, }, PersistenceLoadPreferences, } pub enum DesktopWrapperMessage { FromWeb(Box), OpenFileDialogResult { path: PathBuf, content: Vec, context: OpenFileDialogContext, }, SaveFileDialogResult { path: PathBuf, context: SaveFileDialogContext, }, OpenDocument { path: PathBuf, content: Vec, }, OpenFile { path: PathBuf, content: Vec, }, ImportFile { path: PathBuf, content: Vec, }, ImportSvg { path: PathBuf, content: Vec, }, ImportImage { path: PathBuf, content: Vec, }, PollNodeGraphEvaluation, UpdatePlatform(Platform), UpdateMaximized { maximized: bool, }, LoadDocument { id: DocumentId, document: Document, to_front: bool, select_after_open: bool, }, SelectDocument { id: DocumentId, }, LoadPreferences { preferences: Option, }, } #[derive(Clone, serde::Serialize, serde::Deserialize, Debug)] pub struct Document { pub content: String, pub name: String, pub path: Option, pub is_saved: bool, } pub struct FileFilter { pub name: String, pub extensions: Vec, } pub enum OpenFileDialogContext { Document, Import, } pub enum SaveFileDialogContext { Document { document_id: DocumentId, content: Vec }, File { content: Vec }, } pub enum Platform { Windows, Mac, Linux, }