From 86fc573d7a538539ea32fd84a1cd30c5533cacca Mon Sep 17 00:00:00 2001 From: mo8it Date: Sun, 1 Sep 2024 22:02:07 +0200 Subject: [PATCH 1/2] Remove the footer separators --- src/list/state.rs | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/src/list/state.rs b/src/list/state.rs index 49b6d5d8..7a2d3bf0 100644 --- a/src/list/state.rs +++ b/src/list/state.rs @@ -43,7 +43,6 @@ pub struct ListState<'a> { filter: Filter, term_width: u16, term_height: u16, - separator_line: Vec, show_footer: bool, } @@ -76,7 +75,6 @@ impl<'a> ListState<'a> { // Set by `set_term_size` term_width: 0, term_height: 0, - separator_line: Vec::new(), show_footer: true, }; @@ -95,14 +93,10 @@ impl<'a> ListState<'a> { } let header_height = 1; - // 2 separators, 1 progress bar, 2 footer message lines. - let footer_height = 5; + // 1 progress bar, 2 footer message lines. + let footer_height = 3; self.show_footer = height > header_height + footer_height; - if self.show_footer { - self.separator_line = "─".as_bytes().repeat(width as usize); - } - self.scroll_state.set_max_n_rows_to_display( height.saturating_sub(header_height + u16::from(self.show_footer) * footer_height) as usize, @@ -202,9 +196,6 @@ impl<'a> ListState<'a> { } if self.show_footer { - stdout.write_all(&self.separator_line)?; - next_ln(stdout)?; - progress_bar( &mut MaxLenWriter::new(stdout, self.term_width as usize), self.app_state.n_done(), @@ -213,9 +204,6 @@ impl<'a> ListState<'a> { )?; next_ln(stdout)?; - stdout.write_all(&self.separator_line)?; - next_ln(stdout)?; - let mut writer = MaxLenWriter::new(stdout, self.term_width as usize); if self.message.is_empty() { // Help footer message From a8b13f5a821d40f11e206922d990aa7b2e66801f Mon Sep 17 00:00:00 2001 From: mo8it Date: Sun, 1 Sep 2024 22:04:09 +0200 Subject: [PATCH 2/2] Remove "exercises" from the end of the progress bar --- src/term.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/term.rs b/src/term.rs index ee8dbf86..489d6585 100644 --- a/src/term.rs +++ b/src/term.rs @@ -5,7 +5,7 @@ use std::{ use crossterm::{ cursor::MoveTo, - style::{Attribute, Color, ResetColor, SetAttribute, SetForegroundColor}, + style::{Attribute, Color, SetAttribute, SetForegroundColor}, terminal::{Clear, ClearType}, Command, QueueableCommand, }; @@ -93,20 +93,19 @@ pub fn progress_bar<'a>( total: u16, line_width: u16, ) -> io::Result<()> { + debug_assert!(total < 1000); debug_assert!(progress <= total); const PREFIX: &[u8] = b"Progress: ["; const PREFIX_WIDTH: u16 = PREFIX.len() as u16; - // Leaving the last char empty (_) for `total` > 99. - const POSTFIX_WIDTH: u16 = "] xxx/xx exercises_".len() as u16; + const POSTFIX_WIDTH: u16 = "] xxx/xxx".len() as u16; const WRAPPER_WIDTH: u16 = PREFIX_WIDTH + POSTFIX_WIDTH; const MIN_LINE_WIDTH: u16 = WRAPPER_WIDTH + 4; if line_width < MIN_LINE_WIDTH { writer.write_ascii(b"Progress: ")?; // Integers are in ASCII. - writer.write_ascii(format!("{progress}/{total}").as_bytes())?; - return writer.write_ascii(b" exercises"); + return writer.write_ascii(format!("{progress}/{total}").as_bytes()); } let stdout = writer.stdout(); @@ -133,8 +132,9 @@ pub fn progress_bar<'a>( } } - stdout.queue(ResetColor)?; - write!(stdout, "] {progress:>3}/{total} exercises") + stdout.queue(SetForegroundColor(Color::Reset))?; + + write!(stdout, "] {progress:>3}/{total}") } pub fn clear_terminal(stdout: &mut StdoutLock) -> io::Result<()> {