Files
doux-copy/seq/src/commands.rs
2026-01-20 03:08:37 +01:00

99 lines
1.7 KiB
Rust

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<String>,
},
RenamePattern {
bank: usize,
pattern: usize,
name: Option<String>,
},
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,
}