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.
This commit is contained in:
2026-06-19 10:26:35 +03:00
parent 2bcaba5340
commit 5a8e33b387
2 changed files with 32 additions and 8 deletions
+1 -1
View File
@@ -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
@@ -65,17 +65,23 @@ fn build_menus() -> Vec<Menu> {
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<Menu> {
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> {
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)));
}