| 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 |