From a5a7c0606f33e125f375110ee06db828295b02e7 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Tue, 4 Jun 2019 11:55:46 +0530 Subject: [PATCH] First sketch of 'better' list - support for paragraphs for each item --- src/interactive/widgets/list.rs | 59 +++++++++++++++++++++++++++++++++ src/interactive/widgets/mod.rs | 2 ++ 2 files changed, 61 insertions(+) create mode 100644 src/interactive/widgets/list.rs diff --git a/src/interactive/widgets/list.rs b/src/interactive/widgets/list.rs new file mode 100644 index 00000000..b039d761 --- /dev/null +++ b/src/interactive/widgets/list.rs @@ -0,0 +1,59 @@ +use tui::buffer::Buffer; +use tui::layout::{Corner, Rect}; +use tui::style::Style; +use tui::widgets::{Block, Paragraph, Text, Widget}; + +pub struct List<'b, 't, I, T> +where + I: IntoIterator>, + T: Iterator>, +{ + pub block: Option>, + pub items: I, + pub style: Style, + pub start_corner: Corner, +} + +impl<'b, 't, I, T> Widget for List<'b, 't, I, T> +where + I: IntoIterator>, + T: Iterator>, +{ + fn draw(&mut self, area: Rect, buf: &mut Buffer) { + // let list_area = match self.block { + // Some(ref mut b) => { + // b.draw(area, buf); + // b.inner(area) + // } + // None => area, + // }; + // + // if list_area.width < 1 || list_area.height < 1 { + // return; + // } + // + // self.background(list_area, buf, self.style.bg); + // + // for (i, item) in self + // .items + // .by_ref() + // .enumerate() + // .take(list_area.height as usize) + // { + // let (x, y) = match self.start_corner { + // Corner::TopLeft => (list_area.left(), list_area.top() + i as u16), + // Corner::BottomLeft => (list_area.left(), list_area.bottom() - (i + 1) as u16), + // // Not supported + // _ => (list_area.left(), list_area.top() + i as u16), + // }; + // match item { + // Text::Raw(ref v) => { + // buf.set_stringn(x, y, v, list_area.width as usize, Style::default()); + // } + // Text::Styled(ref v, s) => { + // buf.set_stringn(x, y, v, list_area.width as usize, s); + // } + // }; + // } + } +} diff --git a/src/interactive/widgets/mod.rs b/src/interactive/widgets/mod.rs index dac0733f..b5b3bc5b 100644 --- a/src/interactive/widgets/mod.rs +++ b/src/interactive/widgets/mod.rs @@ -1,7 +1,9 @@ mod entries; mod footer; +mod list; mod main; pub use entries::*; pub use footer::*; +pub use list::*; pub use main::*;