WIP: menu

This commit is contained in:
2026-01-25 21:37:53 +01:00
parent 250e359fc5
commit 6efcabd32d
14 changed files with 635 additions and 335 deletions

View File

@@ -19,7 +19,7 @@ use crate::state::{
AudioSettings, EditorContext, Focus, LiveKeyState, Metrics, Modal, PanelState, PatternField,
PatternsNav, PlaybackState, ProjectState, UiState,
};
use crate::views::doc_view;
use crate::views::{dict_view, help_view};
const STEPS_PER_PAGE: usize = 32;
@@ -865,33 +865,46 @@ impl App {
AppCommand::PageUp => self.page.up(),
AppCommand::PageDown => self.page.down(),
// Doc navigation
AppCommand::DocNextTopic => {
self.ui.doc_topic = (self.ui.doc_topic + 1) % doc_view::topic_count();
self.ui.doc_scroll = 0;
self.ui.doc_category = 0;
// Help navigation
AppCommand::HelpNextTopic => {
self.ui.help_topic = (self.ui.help_topic + 1) % help_view::topic_count();
self.ui.help_scroll = 0;
}
AppCommand::DocPrevTopic => {
let count = doc_view::topic_count();
self.ui.doc_topic = (self.ui.doc_topic + count - 1) % count;
self.ui.doc_scroll = 0;
self.ui.doc_category = 0;
AppCommand::HelpPrevTopic => {
let count = help_view::topic_count();
self.ui.help_topic = (self.ui.help_topic + count - 1) % count;
self.ui.help_scroll = 0;
}
AppCommand::DocScrollDown(n) => {
self.ui.doc_scroll = self.ui.doc_scroll.saturating_add(n);
AppCommand::HelpScrollDown(n) => {
self.ui.help_scroll = self.ui.help_scroll.saturating_add(n);
}
AppCommand::DocScrollUp(n) => {
self.ui.doc_scroll = self.ui.doc_scroll.saturating_sub(n);
AppCommand::HelpScrollUp(n) => {
self.ui.help_scroll = self.ui.help_scroll.saturating_sub(n);
}
AppCommand::DocNextCategory => {
let count = doc_view::category_count();
self.ui.doc_category = (self.ui.doc_category + 1) % count;
self.ui.doc_scroll = 0;
// Dictionary navigation
AppCommand::DictToggleFocus => {
use crate::state::DictFocus;
self.ui.dict_focus = match self.ui.dict_focus {
DictFocus::Categories => DictFocus::Words,
DictFocus::Words => DictFocus::Categories,
};
}
AppCommand::DocPrevCategory => {
let count = doc_view::category_count();
self.ui.doc_category = (self.ui.doc_category + count - 1) % count;
self.ui.doc_scroll = 0;
AppCommand::DictNextCategory => {
let count = dict_view::category_count();
self.ui.dict_category = (self.ui.dict_category + 1) % count;
self.ui.dict_scroll = 0;
}
AppCommand::DictPrevCategory => {
let count = dict_view::category_count();
self.ui.dict_category = (self.ui.dict_category + count - 1) % count;
self.ui.dict_scroll = 0;
}
AppCommand::DictScrollDown(n) => {
self.ui.dict_scroll = self.ui.dict_scroll.saturating_add(n);
}
AppCommand::DictScrollUp(n) => {
self.ui.dict_scroll = self.ui.dict_scroll.saturating_sub(n);
}
// Patterns view