Rust · 1174 bytes Raw Blame History
1 //! GUI message types
2
3 use super::state::GridPos;
4
5 /// All messages that can be sent in the GUI
6 #[derive(Debug, Clone)]
7 pub enum Message {
8 // Canvas interactions
9 CanvasEvent(CanvasEvent),
10
11 // Machine CRUD
12 AddMachine,
13 RemoveMachine(usize),
14 CancelAddMachine,
15 ConfirmAddMachine,
16
17 // Form updates
18 UpdateNewMachineName(String),
19 UpdateNewMachineAddress(String),
20 SelectNewMachinePosition(GridPos),
21
22 // Config operations
23 SaveConfig,
24 ReloadDaemon,
25 RestartDaemon,
26 ConfigSaved(Result<(), String>),
27 DaemonReloaded(Result<(), String>),
28
29 // Status updates
30 StatusUpdate(Vec<(String, super::state::ConnectionStatus)>),
31
32 // Notifications
33 ClearError,
34 ClearSuccess,
35 }
36
37 /// Canvas-specific events
38 #[derive(Debug, Clone)]
39 pub enum CanvasEvent {
40 /// Mouse pressed on a machine
41 MachinePressed(usize),
42 /// Mouse released (potentially on a snap target)
43 MouseReleased,
44 /// Mouse moved during drag, with calculated snap target
45 MouseMoved(iced::Point, Option<super::state::GridPos>),
46 /// Mouse entered canvas bounds
47 MouseEntered,
48 /// Mouse left canvas bounds
49 MouseExited,
50 }
51