diff options
author | Aram Drevekenin <aram@poor.dev> | 2023-11-04 11:20:50 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-04 11:20:50 +0100 |
commit | 4c6b03acc16c968663d2875556aae25ef6dac87c (patch) | |
tree | 679530bd592cd7e5bfcedbc4e3f49708618b4886 /default-plugins/session-manager/src/ui/components.rs | |
parent | 37bc6364fa0a906616b1abafceb84e2c8511045d (diff) |
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
Diffstat (limited to 'default-plugins/session-manager/src/ui/components.rs')
-rw-r--r-- | default-plugins/session-manager/src/ui/components.rs | 53 |
1 files changed, 52 insertions, 1 deletions
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 = "<TAB>"; + 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<String>, is_searching: bool, colors: Colors) { if is_searching { return; |