From 79577de0f92eb7b494ee7a669949e278c0008a38 Mon Sep 17 00:00:00 2001 From: Thomas Eppers Date: Wed, 3 Nov 2021 15:06:54 +0100 Subject: [PATCH] take a generic object for displaying in the info widget --- src/ui/default.rs | 17 ++++++++++++++--- src/ui/no_yaml.rs | 14 ++++++++++++-- src/widget/info.rs | 6 +++++- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/ui/default.rs b/src/ui/default.rs index f1b333a..c027081 100644 --- a/src/ui/default.rs +++ b/src/ui/default.rs @@ -28,6 +28,16 @@ pub enum State { SelectService, } +impl std::fmt::Display for State { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + State::EditRepo => write!(f, "Edit repository"), + State::SelectTag => write!(f, "Select a tag"), + State::SelectService => write!(f, "Select a image"), + } + } +} + impl std::iter::Iterator for State { type Item = Self; @@ -103,13 +113,14 @@ impl Ui { Ok(Key::Ctrl('q')) => break 'core, //quit program without saving Ok(Key::Char('\t')) => { ui.state.next(); + ui.info.set_info(&ui.state); } Ok(Key::Ctrl('s')) => match ui.services.save() { Err(e) => { ui.info.set_info(&format!("{}", e)); continue; } - Ok(_) => ui.info.set_info("Saved compose file"), + Ok(_) => ui.info.set_text("Saved compose file"), }, Ok(Key::Ctrl('r')) => { ui.repo.confirm(); @@ -139,7 +150,7 @@ impl Ui { Ok(Key::Char(key)) => match ui.state { State::SelectService => (), State::EditRepo => { - ui.info.set_info("Editing Repository"); + ui.info.set_text("Editing Repository"); ui.repo.handle_input(Key::Char(key)); } State::SelectTag => (), @@ -147,7 +158,7 @@ impl Ui { Ok(Key::Backspace) => match ui.state { State::SelectService => (), State::EditRepo => { - ui.info.set_info("Editing Repository"); + ui.info.set_text("Editing Repository"); ui.repo.handle_input(Key::Backspace); } State::SelectTag => (), diff --git a/src/ui/no_yaml.rs b/src/ui/no_yaml.rs index 06757b5..e093ed2 100644 --- a/src/ui/no_yaml.rs +++ b/src/ui/no_yaml.rs @@ -17,6 +17,15 @@ pub enum State { SelectTag, } +impl std::fmt::Display for State { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + State::EditRepo => write!(f, "Edit repository"), + State::SelectTag => write!(f, "Select a tag"), + } + } +} + impl std::iter::Iterator for State { type Item = Self; @@ -97,6 +106,7 @@ impl NoYaml { Ok(Key::Ctrl('q')) => break 'core, Ok(Key::Char('\t')) => { ui.state.next(); + ui.info.set_info(&ui.state); } Ok(Key::Ctrl('r')) => { ui.repo.confirm(); @@ -111,7 +121,7 @@ impl NoYaml { }, Ok(Key::Char(key)) => match ui.state { State::EditRepo => { - ui.info.set_info("Editing Repository"); + ui.info.set_text("Editing Repository"); ui.repo.handle_input(Key::Char(key)); } State::SelectTag => { @@ -120,7 +130,7 @@ impl NoYaml { }, Ok(Key::Backspace) => match ui.state { State::EditRepo => { - ui.info.set_info("Editing Repository"); + ui.info.set_text("Editing Repository"); ui.repo.handle_input(Key::Backspace); } State::SelectTag => (), diff --git a/src/widget/info.rs b/src/widget/info.rs index 93b3052..8d2d7d3 100644 --- a/src/widget/info.rs +++ b/src/widget/info.rs @@ -27,7 +27,11 @@ impl Info { .highlight_style(Style::default().bg(Color::Black)) } - pub fn set_info(&mut self, info: &str) { + pub fn set_text(&mut self, info: &str) { self.info = String::from(info); } + + pub fn set_info(&mut self, text: &dyn std::fmt::Display) { + self.info = format!("{}", text); + } }