[tui] Add File MenuBar options Reload and Close.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
use crate::tui::component::{Action, Component, ComponentState, FocusState};
|
||||
use crate::tui::menu_bar::MenuBarItemOption::{
|
||||
About, Exit, Reload, Save, ShowHideExplorer, ShowHideLogger,
|
||||
About, CloseTab, Exit, Reload, Save, ShowHideExplorer, ShowHideLogger,
|
||||
};
|
||||
use log::trace;
|
||||
use ratatui::buffer::Buffer;
|
||||
@@ -23,6 +23,7 @@ enum MenuBarItem {
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, FromRepr, EnumIter)]
|
||||
enum MenuBarItemOption {
|
||||
Save,
|
||||
CloseTab,
|
||||
Reload,
|
||||
Exit,
|
||||
ShowHideExplorer,
|
||||
@@ -39,6 +40,7 @@ impl MenuBarItemOption {
|
||||
ShowHideExplorer => "Show / hide explorer",
|
||||
ShowHideLogger => "Show / hide logger",
|
||||
About => "About",
|
||||
CloseTab => "Close tab",
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -66,7 +68,7 @@ impl MenuBarItem {
|
||||
|
||||
pub fn options(&self) -> &[MenuBarItemOption] {
|
||||
match self {
|
||||
MenuBarItem::File => &[Save, Reload, Exit],
|
||||
MenuBarItem::File => &[Save, CloseTab, Reload, Exit],
|
||||
MenuBarItem::View => &[ShowHideExplorer, ShowHideLogger],
|
||||
MenuBarItem::Help => &[About],
|
||||
}
|
||||
@@ -145,14 +147,14 @@ impl MenuBar {
|
||||
}
|
||||
|
||||
fn rect_under_option(anchor: Rect, area: Rect, width: u16, height: u16) -> Rect {
|
||||
// TODO: X offset for item option? It's fine as-is, but it might look nicer.
|
||||
let rect = Rect {
|
||||
x: anchor.x,
|
||||
y: anchor.y + anchor.height,
|
||||
width: width.min(area.width),
|
||||
height,
|
||||
};
|
||||
trace!(target:Self::id(), "Building Rect under MenuBar popup {}", rect);
|
||||
// TODO: X offset for item option? It's fine as-is, but it might look nicer.
|
||||
// trace!(target:Self::id(), "Building Rect under MenuBar popup {}", rect);
|
||||
rect
|
||||
}
|
||||
}
|
||||
@@ -190,14 +192,15 @@ impl Component for MenuBar {
|
||||
}
|
||||
KeyCode::Enter => {
|
||||
if let Some(selected) = self.list_state.selected() {
|
||||
let seletion = self.selected.options()[selected];
|
||||
return match seletion {
|
||||
let selection = self.selected.options()[selected];
|
||||
return match selection {
|
||||
Save => Ok(Action::Save),
|
||||
Exit => Ok(Action::Quit),
|
||||
Reload => Ok(Action::Noop), // TODO
|
||||
ShowHideExplorer => Ok(Action::Noop), // TODO
|
||||
ShowHideLogger => Ok(Action::Noop), // TODO
|
||||
About => Ok(Action::Noop), // TODO
|
||||
Reload => Ok(Action::ReloadFile),
|
||||
ShowHideExplorer => Ok(Action::ShowHideExplorer),
|
||||
ShowHideLogger => Ok(Action::ShowHideLogger),
|
||||
About => Ok(Action::About),
|
||||
CloseTab => Ok(Action::CloseTab),
|
||||
};
|
||||
}
|
||||
Ok(Action::Noop)
|
||||
|
||||
Reference in New Issue
Block a user