Compare commits

...

6 Commits

Author SHA1 Message Date
Florian Dehau
3c38abb203 Release 0.2.2 2018-05-06 12:34:26 +02:00
Florian Dehau
4816563452 Update CHANGELOG 2018-05-06 11:49:32 +02:00
Florian Dehau
24dc73912b [examples] Update table example
Modify example to use variables outside of the closure scope
2018-05-06 11:49:32 +02:00
Florian Dehau
f96db9c74f [layout] Replace FnMut with FnOnce in Group::render
As the function does not need to mutate state and be run multiple times.
2018-05-06 11:49:32 +02:00
Florian Dehau
ef2054a45b [lib] Derive Debug on Terminal 2018-04-15 22:09:36 +02:00
Xavier Bestel
f4052e0e71 fix colors use, add missing Blue 2018-04-04 08:45:58 +02:00
8 changed files with 42 additions and 21 deletions

View File

@@ -1,5 +1,17 @@
# Changelog
## To be released
## v0.2.2 - 2018-05-06
### Added
* `Terminal` implements `Debug`
### Changed
* Use `FnOnce` instead of `FnMut` in Group::render
## v0.2.1 - 2018-04-01
### Added

View File

@@ -1,6 +1,6 @@
[package]
name = "tui"
version = "0.2.1"
version = "0.2.2"
authors = ["Florian Dehau <work@fdehau.com>"]
description = """
A library to build rich terminal user interfaces or dashboards

View File

@@ -84,23 +84,23 @@ fn main() {
}
fn draw(t: &mut Terminal<MouseBackend>, app: &App) {
let selected_style = Style::default().fg(Color::Yellow).modifier(Modifier::Bold);
let normal_style = Style::default().fg(Color::White);
let header = ["Header1", "Header2", "Header3"];
let rows = app.items.iter().enumerate().map(|(i, item)| {
if i == app.selected {
Row::StyledData(item.into_iter(), &selected_style)
} else {
Row::StyledData(item.into_iter(), &normal_style)
}
});
Group::default()
.direction(Direction::Horizontal)
.sizes(&[Size::Percent(100)])
.margin(5)
.render(t, &app.size, |t, chunks| {
let selected_style = Style::default().fg(Color::Yellow).modifier(Modifier::Bold);
let normal_style = Style::default().fg(Color::White);
Table::new(
["Header1", "Header2", "Header3"].into_iter(),
app.items.iter().enumerate().map(|(i, item)| {
if i == app.selected {
Row::StyledData(item.into_iter(), &selected_style)
} else {
Row::StyledData(item.into_iter(), &normal_style)
}
}),
).block(Block::default().borders(Borders::ALL).title("Table"))
Table::new(header.into_iter(), rows)
.block(Block::default().borders(Borders::ALL).title("Table"))
.widths(&[10, 10, 10])
.render(t, &chunks[0]);
});

View File

@@ -194,16 +194,18 @@ impl Color {
Color::Red => termion_fg!(Red),
Color::Green => termion_fg!(Green),
Color::Yellow => termion_fg!(Yellow),
Color::Blue => termion_fg!(Blue),
Color::Magenta => termion_fg!(Magenta),
Color::Cyan => termion_fg!(Cyan),
Color::Gray => termion_fg_rgb!(146, 131, 116),
Color::DarkGray => termion_fg_rgb!(80, 73, 69),
Color::Gray => termion_fg!(White),
Color::DarkGray => termion_fg!(LightBlack),
Color::LightRed => termion_fg!(LightRed),
Color::LightGreen => termion_fg!(LightGreen),
Color::LightBlue => termion_fg!(LightBlue),
Color::LightYellow => termion_fg!(LightYellow),
Color::LightMagenta => termion_fg!(LightMagenta),
Color::LightCyan => termion_fg!(LightCyan),
Color::White => termion_fg!(White),
Color::White => termion_fg!(LightWhite),
Color::Rgb(r, g, b) => termion_fg_rgb!(r, g, b),
}
}
@@ -214,16 +216,18 @@ impl Color {
Color::Red => termion_bg!(Red),
Color::Green => termion_bg!(Green),
Color::Yellow => termion_bg!(Yellow),
Color::Blue => termion_bg!(Blue),
Color::Magenta => termion_bg!(Magenta),
Color::Cyan => termion_bg!(Cyan),
Color::Gray => termion_bg_rgb!(146, 131, 116),
Color::DarkGray => termion_bg_rgb!(80, 73, 69),
Color::Gray => termion_bg!(White),
Color::DarkGray => termion_bg!(LightBlack),
Color::LightRed => termion_bg!(LightRed),
Color::LightGreen => termion_bg!(LightGreen),
Color::LightBlue => termion_bg!(LightBlue),
Color::LightYellow => termion_bg!(LightYellow),
Color::LightMagenta => termion_bg!(LightMagenta),
Color::LightCyan => termion_bg!(LightCyan),
Color::White => termion_bg!(White),
Color::White => termion_bg!(LightWhite),
Color::Rgb(r, g, b) => termion_bg_rgb!(r, g, b),
}
}

View File

@@ -326,10 +326,10 @@ impl Group {
self.sizes = Vec::from(sizes);
self
}
pub fn render<F, B>(&self, t: &mut Terminal<B>, area: &Rect, mut f: F)
pub fn render<F, B>(&self, t: &mut Terminal<B>, area: &Rect, f: F)
where
B: Backend,
F: FnMut(&mut Terminal<B>, &[Rect]),
F: FnOnce(&mut Terminal<B>, &[Rect]),
{
let chunks = t.compute_layout(self, area);
f(t, &chunks);

View File

@@ -5,6 +5,7 @@ pub enum Color {
Red,
Green,
Yellow,
Blue,
Magenta,
Cyan,
Gray,
@@ -12,6 +13,7 @@ pub enum Color {
LightRed,
LightGreen,
LightYellow,
LightBlue,
LightMagenta,
LightCyan,
White,

View File

@@ -14,6 +14,7 @@ pub struct LayoutEntry {
}
/// Interface to the terminal backed by Termion
#[derive(Debug)]
pub struct Terminal<B>
where
B: Backend,

View File

@@ -138,12 +138,14 @@ where
"red" => Color::Red,
"green" => Color::Green,
"yellow" => Color::Yellow,
"blue" => Color::Blue,
"magenta" => Color::Magenta,
"cyan" => Color::Cyan,
"gray" => Color::Gray,
"dark_gray" => Color::DarkGray,
"light_red" => Color::LightRed,
"light_green" => Color::LightGreen,
"light_blue" => Color::LightBlue,
"light_yellow" => Color::LightYellow,
"light_magenta" => Color::LightMagenta,
"light_cyan" => Color::LightCyan,