aboutsummaryrefslogtreecommitdiff
path: root/src/gui/message.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/message.rs')
-rw-r--r--src/gui/message.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/gui/message.rs b/src/gui/message.rs
new file mode 100644
index 0000000..158416e
--- /dev/null
+++ b/src/gui/message.rs
@@ -0,0 +1,41 @@
+use crate::gui::util;
+use crate::util::event::{Event, Events};
+use anyhow::Result;
+use termion::event::Key;
+use tui::{
+ backend::Backend,
+ layout::{Alignment, Constraint, Direction, Layout},
+ widgets::Paragraph,
+ Terminal,
+};
+
+pub fn show<B: Backend>(
+ terminal: &mut Terminal<B>,
+ events: &Events,
+ message: &String,
+ deck_name: &String,
+) -> Result<()> {
+ loop {
+ terminal.draw(|f| {
+ let chunks = Layout::default()
+ .direction(Direction::Vertical)
+ .margin(2)
+ .constraints([Constraint::Length(1), Constraint::Percentage(50)].as_ref())
+ .split(f.size());
+
+ let d1 = util::title(deck_name);
+ f.render_widget(d1, chunks[0]);
+
+ let message = Paragraph::new(util::center_vertically(chunks[1], &message))
+ .alignment(Alignment::Center);
+ f.render_widget(message, chunks[1]);
+ })?;
+
+ if let Event::Input(key) = events.next()? {
+ match key {
+ Key::Char('q') => return Ok(()),
+ _ => (),
+ }
+ }
+ }
+}