aboutsummaryrefslogtreecommitdiff
path: root/src/tui
diff options
context:
space:
mode:
authorlukeflo2024-11-17 22:21:18 +0100
committerlukeflo2024-11-17 22:21:18 +0100
commit558712ac6741c28777f69b93ccb6b4a5e0d4ff22 (patch)
treef785b2952f14855f4cdad34869ca61863bdc6202 /src/tui
parent585e45708e2a69c7531e94723d681de7f20ea7d1 (diff)
downloadbibiman-558712ac6741c28777f69b93ccb6b4a5e0d4ff22.tar.gz
bibiman-558712ac6741c28777f69b93ccb6b4a5e0d4ff22.zip
implement warning message popup
Diffstat (limited to 'src/tui')
-rw-r--r--src/tui/popup.rs11
-rw-r--r--src/tui/ui.rs25
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