|
|
|
mod block;
|
|
|
|
mod text;
|
|
|
|
mod list;
|
|
|
|
mod gauge;
|
|
|
|
mod sparkline;
|
|
|
|
mod chart;
|
|
|
|
mod barchart;
|
|
|
|
mod tabs;
|
|
|
|
mod table;
|
|
|
|
pub mod canvas;
|
|
|
|
|
|
|
|
pub use self::block::Block;
|
|
|
|
pub use self::text::Text;
|
|
|
|
pub use self::list::List;
|
|
|
|
pub use self::gauge::Gauge;
|
|
|
|
pub use self::sparkline::Sparkline;
|
|
|
|
pub use self::chart::{Chart, Axis, Dataset, Marker};
|
|
|
|
pub use self::barchart::BarChart;
|
|
|
|
pub use self::tabs::Tabs;
|
|
|
|
pub use self::table::Table;
|
|
|
|
|
|
|
|
use buffer::Buffer;
|
|
|
|
use layout::Rect;
|
|
|
|
use terminal::Terminal;
|
|
|
|
use style::Color;
|
|
|
|
|
|
|
|
/// Bitflags that can be composed to set the visible borders essentially on the block widget.
|
|
|
|
pub mod border {
|
|
|
|
bitflags! {
|
|
|
|
pub flags Flags: u32 {
|
|
|
|
/// Show no border (default)
|
|
|
|
const NONE = 0b00000001,
|
|
|
|
/// Show the top border
|
|
|
|
const TOP = 0b00000010,
|
|
|
|
/// Show the right border
|
|
|
|
const RIGHT = 0b00000100,
|
|
|
|
/// Show the bottom border
|
|
|
|
const BOTTOM = 0b0001000,
|
|
|
|
/// Show the left border
|
|
|
|
const LEFT = 0b00010000,
|
|
|
|
/// Show all borders
|
|
|
|
const ALL = TOP.bits | RIGHT.bits | BOTTOM.bits | LEFT.bits,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Base requirements for a Widget
|
|
|
|
pub trait Widget {
|
|
|
|
/// Draws the current state of the widget in the given buffer. That the only method required to
|
|
|
|
/// implement a custom widget.
|
|
|
|
fn draw(&self, area: &Rect, buf: &mut Buffer);
|
|
|
|
/// Helper method to quickly set the background of all cells inside the specified area.
|
|
|
|
fn background(&self, area: &Rect, buf: &mut Buffer, color: Color) {
|
|
|
|
for y in area.top()..area.bottom() {
|
|
|
|
for x in area.left()..area.right() {
|
|
|
|
buf.set_bg(x, y, color);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/// Helper method that can be chained with a widget's builder methods to render it.
|
|
|
|
fn render(&self, area: &Rect, t: &mut Terminal)
|
|
|
|
where Self: Sized
|
|
|
|
{
|
|
|
|
t.render(self, area);
|
|
|
|
}
|
|
|
|
}
|