diff --git a/tui/src/floating_text.rs b/tui/src/floating_text.rs index 52e0c50c..879fcbc5 100644 --- a/tui/src/floating_text.rs +++ b/tui/src/floating_text.rs @@ -24,18 +24,12 @@ use tree_sitter_bash as hl_bash; use tree_sitter_highlight::{self as hl, HighlightEvent}; use zips::zip_result; -pub enum FloatingTextMode { - Preview, - Description, - ActionsGuide, -} - pub struct FloatingText { pub src: Vec, max_line_width: usize, v_scroll: usize, h_scroll: usize, - mode_title: &'static str, + mode_title: String, } macro_rules! style { @@ -130,7 +124,7 @@ fn get_lines_owned(s: &str) -> Vec { } impl FloatingText { - pub fn new(text: String, mode: FloatingTextMode) -> Self { + pub fn new(text: String, title: &str) -> Self { let src = get_lines(&text) .into_iter() .map(|s| s.to_string()) @@ -139,14 +133,14 @@ impl FloatingText { let max_line_width = max_width!(src); Self { src, - mode_title: Self::get_mode_title(mode), + mode_title: title.to_string(), max_line_width, v_scroll: 0, h_scroll: 0, } } - pub fn from_command(command: &Command, mode: FloatingTextMode) -> Option { + pub fn from_command(command: &Command, title: String) -> Option { let (max_line_width, src) = match command { Command::Raw(cmd) => { // just apply highlights directly @@ -169,21 +163,13 @@ impl FloatingText { Some(Self { src, - mode_title: Self::get_mode_title(mode), + mode_title: title, max_line_width, h_scroll: 0, v_scroll: 0, }) } - fn get_mode_title(mode: FloatingTextMode) -> &'static str { - match mode { - FloatingTextMode::Preview => "Command Preview", - FloatingTextMode::Description => "Command Description", - FloatingTextMode::ActionsGuide => "Important Actions Guide", - } - } - fn scroll_down(&mut self) { if self.v_scroll + 1 < self.src.len() { self.v_scroll += 1; @@ -214,7 +200,7 @@ impl FloatContent for FloatingText { // Define the Block with a border and background color let block = Block::default() .borders(Borders::ALL) - .title(self.mode_title) + .title(self.mode_title.clone()) .title_alignment(ratatui::layout::Alignment::Center) .title_style(Style::default().reversed()) .style(Style::default()); @@ -292,7 +278,7 @@ impl FloatContent for FloatingText { fn get_shortcut_list(&self) -> (&str, Box<[Shortcut]>) { ( - self.mode_title, + &self.mode_title, Box::new([ Shortcut::new("Scroll down", ["j", "Down"]), Shortcut::new("Scroll up", ["k", "Up"]), diff --git a/tui/src/state.rs b/tui/src/state.rs index 146f7f45..9ed61771 100644 --- a/tui/src/state.rs +++ b/tui/src/state.rs @@ -1,10 +1,8 @@ -use std::rc::Rc; - use crate::{ confirmation::{ConfirmPrompt, ConfirmStatus}, filter::{Filter, SearchAction}, float::{Float, FloatContent}, - floating_text::{FloatingText, FloatingTextMode}, + floating_text::FloatingText, hint::{create_shortcut_list, Shortcut}, running_command::RunningCommand, theme::Theme, @@ -21,6 +19,7 @@ use ratatui::{ widgets::{Block, Borders, List, ListState, Paragraph}, Frame, }; +use std::rc::Rc; use temp_dir::TempDir; const MIN_WIDTH: u16 = 77; @@ -655,10 +654,10 @@ impl AppState { } fn enable_preview(&mut self) { - if let Some(node) = self.get_selected_node() { - if let Some(preview) = - FloatingText::from_command(&node.command, FloatingTextMode::Preview) - { + if let Some(list_node) = self.get_selected_node() { + let mut preview_title = "[Preview] - ".to_string(); + preview_title.push_str(list_node.name.as_str()); + if let Some(preview) = FloatingText::from_command(&list_node.command, preview_title) { self.spawn_float(preview, 80, 80); } } @@ -666,7 +665,7 @@ impl AppState { fn enable_description(&mut self) { if let Some(command_description) = self.get_selected_description() { - let description = FloatingText::new(command_description, FloatingTextMode::Description); + let description = FloatingText::new(command_description, "Command Description"); self.spawn_float(description, 80, 80); } } @@ -732,7 +731,7 @@ impl AppState { fn toggle_task_list_guide(&mut self) { self.spawn_float( - FloatingText::new(ACTIONS_GUIDE.to_string(), FloatingTextMode::ActionsGuide), + FloatingText::new(ACTIONS_GUIDE.to_string(), "Important Actions Guide"), 80, 80, );