use std::path::PathBuf; use crate::model::PatternSpeed; use crate::sequencer::SlotChange; use crate::state::{Modal, PatternField}; pub enum AppCommand { // Playback TogglePlaying, TempoUp, TempoDown, // Navigation NextStep, PrevStep, StepUp, StepDown, ToggleFocus, SelectEditBank(usize), SelectEditPattern(usize), // Pattern editing ToggleStep, LengthIncrease, LengthDecrease, SpeedIncrease, SpeedDecrease, SetLength { bank: usize, pattern: usize, length: usize, }, SetSpeed { bank: usize, pattern: usize, speed: PatternSpeed, }, // Script editing SaveEditorToStep, CompileCurrentStep, CompileAllSteps, // Clipboard CopyStep, PasteStep, // Pattern playback QueueSlotChange(SlotChange), TogglePatternPlayback { bank: usize, pattern: usize, }, // Project RenameBank { bank: usize, name: Option, }, RenamePattern { bank: usize, pattern: usize, name: Option, }, Save(PathBuf), Load(PathBuf), // UI SetStatus(String), ClearStatus, Flash { message: String, duration_ms: u64, }, OpenModal(Modal), CloseModal, OpenPatternModal(PatternField), // Page navigation PageLeft, PageRight, PageUp, PageDown, // Doc navigation DocNextTopic, DocPrevTopic, DocScrollDown(usize), DocScrollUp(usize), // Patterns view PatternsCursorLeft, PatternsCursorRight, PatternsCursorUp, PatternsCursorDown, PatternsEnter, PatternsBack, }