diff options
| author | lukeflo | 2024-11-17 22:21:18 +0100 |
|---|---|---|
| committer | lukeflo | 2024-11-17 22:21:18 +0100 |
| commit | 558712ac6741c28777f69b93ccb6b4a5e0d4ff22 (patch) | |
| tree | f785b2952f14855f4cdad34869ca61863bdc6202 /src/tui | |
| parent | 585e45708e2a69c7531e94723d681de7f20ea7d1 (diff) | |
| download | bibiman-558712ac6741c28777f69b93ccb6b4a5e0d4ff22.tar.gz bibiman-558712ac6741c28777f69b93ccb6b4a5e0d4ff22.zip | |
implement warning message popup
Diffstat (limited to 'src/tui')
| -rw-r--r-- | src/tui/popup.rs | 11 | ||||
| -rw-r--r-- | src/tui/ui.rs | 25 |
2 files changed, 32 insertions, 4 deletions
diff --git a/src/tui/popup.rs b/src/tui/popup.rs index 94df9b9..4cde704 100644 --- a/src/tui/popup.rs +++ b/src/tui/popup.rs @@ -26,7 +26,8 @@ use crate::{MAIN_BLUE_COLOR_INDEX, MAIN_PURPLE_COLOR_INDEX}; #[derive(Debug)] pub enum PopupKind { Help, - Message, + MessageConfirm, + MessageError, Selection, } @@ -100,13 +101,17 @@ impl PopupArea { Text::from(helptext) } - pub fn popup_message(&mut self, message: &str, object: &str) { + pub fn popup_message(&mut self, message: &str, object: &str, msg_confirm: bool) { if object.is_empty() { self.popup_message = message.to_owned(); } else { self.popup_message = message.to_owned() + object; //format!("{} \"{}\"", message, object); } - self.popup_kind = Some(PopupKind::Message); + if msg_confirm { + self.popup_kind = Some(PopupKind::MessageConfirm); + } else { + self.popup_kind = Some(PopupKind::MessageError) + } self.is_popup = true; } diff --git a/src/tui/ui.rs b/src/tui/ui.rs index 0534761..af94be4 100644 --- a/src/tui/ui.rs +++ b/src/tui/ui.rs @@ -195,7 +195,7 @@ pub fn render_popup(app: &mut App, frame: &mut Frame) { frame.render_widget(Clear, popup_area); frame.render_widget(par, popup_area) } - Some(PopupKind::Message) => { + Some(PopupKind::MessageConfirm) => { let area = frame.area(); let block = Block::bordered() @@ -218,6 +218,29 @@ pub fn render_popup(app: &mut App, frame: &mut Frame) { frame.render_widget(Clear, popup_area); frame.render_widget(&content, popup_area) } + Some(PopupKind::MessageError) => { + let area = frame.area(); + + let block = Block::bordered() + .title_top(" Warning ".bold().fg(Color::Red)) + .border_style(Style::new().fg(Color::Red)) + .style(POPUP_HELP_BOX); + + let content = Paragraph::new(app.bibiman.popup_area.popup_message.clone()) + .block(block) + .style(Style::new().fg(Color::Red)); + + // Calculate popup size. Width is number of string chars plus 2 for border + let popup_area = popup_area( + area, + (app.bibiman.popup_area.popup_message.chars().count() + 2) as u16, + 3, + ); + + // Clear area and draw popup + frame.render_widget(Clear, popup_area); + frame.render_widget(&content, popup_area) + } Some(PopupKind::Selection) => { let list_items: Vec<ListItem> = app .bibiman |
