use hyperlog_core::log::GraphItem; use crate::commands::{Command, IntoCommand}; #[derive(Debug)] pub enum Msg { MoveRight, MoveLeft, MoveDown, MoveUp, QuitApp, OpenCreateItemDialog, OpenCreateItemDialogBelow, OpenEditItemDialog { item: GraphItem }, OpenEditor { item: GraphItem }, Interact, EnterInsertMode, EnterViewMode, EnterCommandMode, SubmitCommand { command: String }, Edit(EditMsg), GraphUpdated(IOEvent), ItemCreated(IOEvent<()>), ItemUpdated(IOEvent<()>), SectionCreated(IOEvent<()>), ItemToggled(IOEvent<()>), Archive(IOEvent<()>), OpenUpdateItemDialog(IOEvent<()>), OpenItem(IOEvent<()>), } #[derive(Debug)] pub enum IOEvent { Initialized, Optimistic(T), Success(T), Failure(String), } impl IntoCommand for Msg { fn into_command(self) -> crate::commands::Command { Command::new(|_| Some(self)) } } #[derive(Debug)] pub enum EditMsg { Delete, InsertNewLine, InsertTab, DeleteNext, InsertChar(char), MoveLeft, MoveRight, }