Ungoing refactoring

This commit is contained in:
2026-02-04 18:47:40 +01:00
parent 2097997372
commit 6cf9d2eec1
19 changed files with 749 additions and 451 deletions

65
src/model/categories.rs Normal file
View File

@@ -0,0 +1,65 @@
pub enum CatEntry {
Section(&'static str),
Category(&'static str),
}
use CatEntry::{Category, Section};
pub const CATEGORIES: &[CatEntry] = &[
// Forth core
Section("Forth"),
Category("Stack"),
Category("Arithmetic"),
Category("Comparison"),
Category("Logic"),
Category("Control"),
Category("Variables"),
Category("Probability"),
Category("Definitions"),
// Live coding
Section("Live Coding"),
Category("Sound"),
Category("Time"),
Category("Context"),
Category("Music"),
Category("LFO"),
// Synthesis
Section("Synthesis"),
Category("Oscillator"),
Category("Wavetable"),
Category("Generator"),
Category("Envelope"),
Category("Sample"),
// Effects
Section("Effects"),
Category("Filter"),
Category("FM"),
Category("Modulation"),
Category("Mod FX"),
Category("Lo-fi"),
Category("Stereo"),
Category("Delay"),
Category("Reverb"),
// External I/O
Section("I/O"),
Category("MIDI"),
Category("Desktop"),
];
pub fn category_count() -> usize {
CATEGORIES
.iter()
.filter(|e| matches!(e, Category(_)))
.count()
}
pub fn get_category_name(index: usize) -> &'static str {
CATEGORIES
.iter()
.filter_map(|e| match e {
Category(name) => Some(*name),
Section(_) => None,
})
.nth(index)
.unwrap_or("Unknown")
}