From 5a8e33b387985e080f8aa9f83cd23fd0dcade595 Mon Sep 17 00:00:00 2001 From: vasilito Date: Fri, 19 Jun 2026 10:26:35 +0300 Subject: [PATCH] tlc: expand F9 menubar with all implemented commands Left/Right menus: Quick view, Info, External panelize, Reload added. File menu: Filtered view, Relative symlink, Edit symlink, Directory size added. Command menu: Compare directories, Directory hotlist, Screen list, View/edit history, External panelize, Active VFS list, Background jobs added. Menubar now exposes all 20+ implemented Cmd variants across 5 menus. --- local/recipes/tui/tlc/README.md | 2 +- .../tui/tlc/source/src/filemanager/menubar.rs | 38 +++++++++++++++---- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/local/recipes/tui/tlc/README.md b/local/recipes/tui/tlc/README.md index d32927993a..21bb549f4c 100644 --- a/local/recipes/tui/tlc/README.md +++ b/local/recipes/tui/tlc/README.md @@ -86,7 +86,7 @@ cargo build --release --target x86_64-unknown-redox ```bash cd local/recipes/tui/tlc/source cargo test --lib -# → 973 passed; 0 failed (verified 2026-06-19) +# → 976 passed; 0 failed (verified 2026-06-19) ``` ## Linux Portability diff --git a/local/recipes/tui/tlc/source/src/filemanager/menubar.rs b/local/recipes/tui/tlc/source/src/filemanager/menubar.rs index b180cf35a9..87a57eaa44 100644 --- a/local/recipes/tui/tlc/source/src/filemanager/menubar.rs +++ b/local/recipes/tui/tlc/source/src/filemanager/menubar.rs @@ -65,17 +65,23 @@ fn build_menus() -> Vec { Menu::new("Left", vec![ MenuItem::item("List mode", Cmd::ToggleLayout), MenuItem::separator(), + MenuItem::item("Quick view", Cmd::PanelQuickView), + MenuItem::item("Info", Cmd::PanelInfo), + MenuItem::item("Tree", Cmd::Tree), + MenuItem::separator(), MenuItem::item("Quick filter...", Cmd::Search), MenuItem::separator(), MenuItem::item("Show hidden files", Cmd::ToggleHidden), MenuItem::separator(), - MenuItem::item("Info", Cmd::Info), - MenuItem::item("Tree", Cmd::Tree), MenuItem::item("Hotlist", Cmd::HotList), MenuItem::item("Quick cd", Cmd::QuickCd), + MenuItem::separator(), + MenuItem::item("External panelize", Cmd::Panelize), + MenuItem::item("Reload", Cmd::Reload), ]), Menu::new("File", vec![ MenuItem::item("View", Cmd::View), + MenuItem::item("Filtered view", Cmd::FilteredView), MenuItem::item("Edit", Cmd::Edit), MenuItem::separator(), MenuItem::item("Copy", Cmd::Copy), @@ -83,19 +89,30 @@ fn build_menus() -> Vec { MenuItem::item("Delete", Cmd::Delete), MenuItem::separator(), MenuItem::item("Make directory", Cmd::MkDir), + MenuItem::separator(), MenuItem::item("Hard link", Cmd::Link), MenuItem::item("Symbolic link", Cmd::Symlink), + MenuItem::item("Relative symlink", Cmd::SymlinkRelative), + MenuItem::item("Edit symlink", Cmd::SymlinkEdit), MenuItem::separator(), MenuItem::item("Chmod", Cmd::Permission), MenuItem::item("Chown", Cmd::Owner), - MenuItem::item("Rmdir", Cmd::Rmdir), + MenuItem::item("Directory size", Cmd::DirSize), ]), Menu::new("Command", vec![ MenuItem::item("User menu", Cmd::UserMenu), MenuItem::item("Find file", Cmd::Find), MenuItem::separator(), MenuItem::item("Swap panels", Cmd::SwapPanels), - MenuItem::item("Reload", Cmd::Reload), + MenuItem::item("Compare directories", Cmd::CompareDirs), + MenuItem::separator(), + MenuItem::item("Directory hotlist", Cmd::HotList), + MenuItem::item("Screen list", Cmd::ScreenList), + MenuItem::item("View/edit history", Cmd::EditHistory), + MenuItem::separator(), + MenuItem::item("External panelize", Cmd::Panelize), + MenuItem::item("Active VFS list", Cmd::VfsList), + MenuItem::item("Background jobs", Cmd::Jobs), MenuItem::separator(), MenuItem::item("Toggle panels", Cmd::TogglePanels), ]), @@ -112,14 +129,19 @@ fn build_menus() -> Vec { Menu::new("Right", vec![ MenuItem::item("List mode", Cmd::ToggleLayout), MenuItem::separator(), + MenuItem::item("Quick view", Cmd::PanelQuickView), + MenuItem::item("Info", Cmd::PanelInfo), + MenuItem::item("Tree", Cmd::Tree), + MenuItem::separator(), MenuItem::item("Quick filter...", Cmd::Search), MenuItem::separator(), MenuItem::item("Show hidden files", Cmd::ToggleHidden), MenuItem::separator(), - MenuItem::item("Info", Cmd::Info), - MenuItem::item("Tree", Cmd::Tree), MenuItem::item("Hotlist", Cmd::HotList), MenuItem::item("Quick cd", Cmd::QuickCd), + MenuItem::separator(), + MenuItem::item("External panelize", Cmd::Panelize), + MenuItem::item("Reload", Cmd::Reload), ]), ] } @@ -454,7 +476,9 @@ mod tests { fn enter_on_file_edit_dispatches_edit() { let mut mb = MenuBar::new(); mb.handle_key(Key { code: 0x2192, mods: crate::key::Modifiers::empty() }); - mb.handle_key(Key { code: 0x2193, mods: crate::key::Modifiers::empty() }); + let down = Key { code: 0x2193, mods: crate::key::Modifiers::empty() }; + mb.handle_key(down); + mb.handle_key(down); assert!(matches!(mb.handle_key(Key::ENTER), MenuBarOutcome::Dispatch(Cmd::Edit))); }