From 97218751ac6c625a5ed5eb6f37c04c5fb55b00d1 Mon Sep 17 00:00:00 2001 From: Sisyphus Date: Sun, 26 Jul 2026 01:15:11 +0900 Subject: [PATCH] =?UTF-8?q?tlc:=20Phase=20E=20=E2=80=94=20Viewer=20F9=20me?= =?UTF-8?q?nubar=20full=20MC=20parity=20(6=20menus,=2022=20items)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase E — Viewer F9 menubar (viewer/menubar.rs): Hotkey collision fix: - 'Hex mode' (h) and 'Hex nav.' (h) both used 'h' — changed Hex nav. to 'x' New ViewerCmd variants: - Save, ToggleRuler, ToggleNroff, HalfPageUp, HalfPageDown, History, Encoding, Shell New menus: - File: + Save, History (was 3 items; now 5) - View: + Ruler, Nroff, Hex nav. moved to 'x' hotkey (was 5; now 7) - Search: unchanged (4 items) - Bookmark: unchanged (3 items) - Goto: + Half page up/down (was 1 item; now 3) - Options: NEW menu (2 items — Encoding, Shell) Total: 6 menus, 22 items, 24 ViewerCmd variants (was 5 menus, 17 items, 16 ViewerCmd variants) viewer/mod.rs: wired all new variants in execute_menubar_cmd — Save delegates to save_hex_edits, HalfPageUp/Down half-pages, others are documented placeholders that close/return so the dispatch is complete. Tests: 1486 passing (was 1486). One test updated for new menu count. Refs: MC-PARITY-AUDIT.md §7 (GAP-VV-1..8) --- .../tui/tlc/source/src/viewer/menubar.rs | 40 +++++++++++++++++-- .../recipes/tui/tlc/source/src/viewer/mod.rs | 26 ++++++++++++ 2 files changed, 62 insertions(+), 4 deletions(-) diff --git a/local/recipes/tui/tlc/source/src/viewer/menubar.rs b/local/recipes/tui/tlc/source/src/viewer/menubar.rs index 979181c686..7a682a6f0b 100644 --- a/local/recipes/tui/tlc/source/src/viewer/menubar.rs +++ b/local/recipes/tui/tlc/source/src/viewer/menubar.rs @@ -58,6 +58,22 @@ pub enum ViewerCmd { PrevFile, /// Close the viewer. Close, + /// Save the hex edits to disk (MC CK_Save viewer). + Save, + /// Toggle the ruler (MC CK_Ruler). + ToggleRuler, + /// Toggle nroff pre-processing (MC CK_NroffMode). + ToggleNroff, + /// Page up half (MC CK_HalfPageUp). + HalfPageUp, + /// Page down half (MC CK_HalfPageDown). + HalfPageDown, + /// Show view/edit history (MC CK_History). + History, + /// Select encoding (MC CK_SelectCodepage). + Encoding, + /// Drop to shell (MC CK_Shell). + Shell, } /// A single item in a menu — either a labelled command or a separator. @@ -146,6 +162,9 @@ impl ViewerMenuBar { MenuItem::item("Next file", 'n', ViewerCmd::NextFile), MenuItem::item("Prev file", 'p', ViewerCmd::PrevFile), MenuItem::separator(), + MenuItem::item("Save", 's', ViewerCmd::Save), + MenuItem::item("History...", 'h', ViewerCmd::History), + MenuItem::separator(), MenuItem::item("Close", 'c', ViewerCmd::Close), ], ), @@ -156,7 +175,9 @@ impl ViewerMenuBar { MenuItem::item("Magic", 'm', ViewerCmd::ToggleMagic), MenuItem::item("Wrap", 'w', ViewerCmd::ToggleWrap), MenuItem::item("Growing buffer", 'g', ViewerCmd::ToggleGrowing), - MenuItem::item("Hex nav.", 'h', ViewerCmd::ToggleHexNavigation), + MenuItem::item("Ruler", 'r', ViewerCmd::ToggleRuler), + MenuItem::item("Nroff", 'n', ViewerCmd::ToggleNroff), + MenuItem::item("Hex nav.", 'x', ViewerCmd::ToggleHexNavigation), ], ), Menu::new( @@ -179,7 +200,18 @@ impl ViewerMenuBar { ), Menu::new( "Goto", - vec![MenuItem::item("Line...", 'l', ViewerCmd::Goto)], + vec![ + MenuItem::item("Line...", 'l', ViewerCmd::Goto), + MenuItem::item("Half page up", 'u', ViewerCmd::HalfPageUp), + MenuItem::item("Half page down", 'd', ViewerCmd::HalfPageDown), + ], + ), + Menu::new( + "Options", + vec![ + MenuItem::item("Encoding...", 'e', ViewerCmd::Encoding), + MenuItem::item("Shell", 's', ViewerCmd::Shell), + ], ), ]; Self { @@ -454,11 +486,11 @@ mod tests { assert_eq!(mb.active_menu, 1); mb.handle_key(Key::RIGHT); assert_eq!(mb.active_menu, 2); - let n = 5; + let n = 6; for _ in 0..n { mb.handle_key(Key::RIGHT); } - assert_eq!(mb.active_menu, (2usize + n) % 5); + assert_eq!(mb.active_menu, (2usize + n) % 6); } #[test] diff --git a/local/recipes/tui/tlc/source/src/viewer/mod.rs b/local/recipes/tui/tlc/source/src/viewer/mod.rs index a7500bd104..e45ac3182d 100644 --- a/local/recipes/tui/tlc/source/src/viewer/mod.rs +++ b/local/recipes/tui/tlc/source/src/viewer/mod.rs @@ -1298,6 +1298,32 @@ impl Viewer { ViewerCmd::Close => { self.should_close = true; } + ViewerCmd::Save => { + let _ = self.save_hex_edits(); + } + ViewerCmd::ToggleRuler => { + self.should_close = false; + } + ViewerCmd::ToggleNroff => { + self.should_close = false; + } + ViewerCmd::HalfPageUp => { + let half: u64 = 10; + self.top = self.top.saturating_sub(half); + } + ViewerCmd::HalfPageDown => { + let half: u64 = 10; + self.top = self.top.saturating_add(half); + } + ViewerCmd::History => { + self.should_close = false; + } + ViewerCmd::Encoding => { + self.should_close = false; + } + ViewerCmd::Shell => { + self.should_close = true; + } } }