summaryrefslogtreecommitdiffstats
path: root/default-plugins/session-manager/src/ui/components.rs
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2023-11-04 11:20:50 +0100
committerGitHub <noreply@github.com>2023-11-04 11:20:50 +0100
commit4c6b03acc16c968663d2875556aae25ef6dac87c (patch)
tree679530bd592cd7e5bfcedbc4e3f49708618b4886 /default-plugins/session-manager/src/ui/components.rs
parent37bc6364fa0a906616b1abafceb84e2c8511045d (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.rs53
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;