From 4c6b03acc16c968663d2875556aae25ef6dac87c Mon Sep 17 00:00:00 2001 From: Aram Drevekenin Date: Sat, 4 Nov 2023 11:20:50 +0100 Subject: feat(sessions): resurrect sessions through the session-manager (and plugin API) (#2902) * working with table and scrolling * ui and functionality complete * fix formatting * refactor: background jobs * style(fmt): rustfmt --- .../session-manager/src/ui/components.rs | 53 +++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) (limited to 'default-plugins/session-manager/src/ui/components.rs') diff --git a/default-plugins/session-manager/src/ui/components.rs b/default-plugins/session-manager/src/ui/components.rs index 72aa21812..be3da41df 100644 --- a/default-plugins/session-manager/src/ui/components.rs +++ b/default-plugins/session-manager/src/ui/components.rs @@ -478,12 +478,63 @@ pub fn minimize_lines( pub fn render_prompt(typing_session_name: bool, search_term: &str, colors: Colors) { if !typing_session_name { let prompt = colors.bold(&format!("> {}_", search_term)); - println!("{}\n", prompt); + println!("\u{1b}[H{}\n", prompt); } else { println!("\n"); } } +pub fn render_resurrection_toggle(cols: usize, resurrection_screen_is_active: bool) { + let key_indication_text = ""; + let running_sessions_text = "Running"; + let exited_sessions_text = "Exited"; + let key_indication_len = key_indication_text.chars().count() + 1; + let first_ribbon_length = running_sessions_text.chars().count() + 4; + let second_ribbon_length = exited_sessions_text.chars().count() + 4; + let key_indication_x = + cols.saturating_sub(key_indication_len + first_ribbon_length + second_ribbon_length); + let first_ribbon_x = key_indication_x + key_indication_len; + let second_ribbon_x = first_ribbon_x + first_ribbon_length; + print_text_with_coordinates( + Text::new(key_indication_text).color_range(3, ..), + key_indication_x, + 0, + None, + None, + ); + if resurrection_screen_is_active { + print_ribbon_with_coordinates( + Text::new(running_sessions_text), + first_ribbon_x, + 0, + None, + None, + ); + print_ribbon_with_coordinates( + Text::new(exited_sessions_text).selected(), + second_ribbon_x, + 0, + None, + None, + ); + } else { + print_ribbon_with_coordinates( + Text::new(running_sessions_text).selected(), + first_ribbon_x, + 0, + None, + None, + ); + print_ribbon_with_coordinates( + Text::new(exited_sessions_text), + second_ribbon_x, + 0, + None, + None, + ); + } +} + pub fn render_new_session_line(session_name: &Option, is_searching: bool, colors: Colors) { if is_searching { return; -- cgit v1.2.3