mirror of
https://github.com/ClementTsang/bottom.git
synced 2025-07-24 22:24:53 +02:00
Cells
This commit is contained in:
parent
79c0bedd51
commit
2f99681439
@ -131,6 +131,7 @@ pub enum AppMessages {
|
|||||||
OpenHelp,
|
OpenHelp,
|
||||||
KillProcess { to_kill: Vec<Pid> },
|
KillProcess { to_kill: Vec<Pid> },
|
||||||
ToggleFreeze,
|
ToggleFreeze,
|
||||||
|
Reset,
|
||||||
Clean,
|
Clean,
|
||||||
Quit,
|
Quit,
|
||||||
}
|
}
|
||||||
@ -227,6 +228,9 @@ impl Application for AppState {
|
|||||||
AppMessages::Quit => {
|
AppMessages::Quit => {
|
||||||
self.terminator.store(true, SeqCst);
|
self.terminator.store(true, SeqCst);
|
||||||
}
|
}
|
||||||
|
AppMessages::Reset => {
|
||||||
|
// FIXME: Reset
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -281,6 +285,9 @@ impl Application for AppState {
|
|||||||
KeyCode::Char('c') | KeyCode::Char('C') => {
|
KeyCode::Char('c') | KeyCode::Char('C') => {
|
||||||
messages.push(AppMessages::Quit);
|
messages.push(AppMessages::Quit);
|
||||||
}
|
}
|
||||||
|
KeyCode::Char('r') | KeyCode::Char('R') => {
|
||||||
|
messages.push(AppMessages::Reset);
|
||||||
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,95 @@
|
|||||||
use std::borrow::Cow;
|
use std::{borrow::Cow, fmt::Display};
|
||||||
|
|
||||||
use tui::style::Style;
|
use enum_dispatch::enum_dispatch;
|
||||||
|
use tui::widgets::Cell;
|
||||||
|
|
||||||
|
#[enum_dispatch]
|
||||||
|
pub trait Numeric {}
|
||||||
|
impl Numeric for f64 {}
|
||||||
|
impl Numeric for f32 {}
|
||||||
|
impl Numeric for i64 {}
|
||||||
|
impl Numeric for i32 {}
|
||||||
|
impl Numeric for i16 {}
|
||||||
|
impl Numeric for i8 {}
|
||||||
|
impl Numeric for isize {}
|
||||||
|
impl Numeric for u64 {}
|
||||||
|
impl Numeric for u32 {}
|
||||||
|
impl Numeric for u16 {}
|
||||||
|
impl Numeric for u8 {}
|
||||||
|
impl Numeric for usize {}
|
||||||
|
|
||||||
|
#[allow(non_camel_case_types)]
|
||||||
|
#[enum_dispatch(Numeric)]
|
||||||
|
pub enum Number {
|
||||||
|
f64,
|
||||||
|
f32,
|
||||||
|
i64,
|
||||||
|
i32,
|
||||||
|
i16,
|
||||||
|
i8,
|
||||||
|
isize,
|
||||||
|
u64,
|
||||||
|
u32,
|
||||||
|
u16,
|
||||||
|
u8,
|
||||||
|
usize,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Display for Number {
|
||||||
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
|
match &self {
|
||||||
|
Number::f64(val) => write!(f, "{}", val),
|
||||||
|
Number::f32(val) => write!(f, "{}", val),
|
||||||
|
Number::i64(val) => write!(f, "{}", val),
|
||||||
|
Number::i32(val) => write!(f, "{}", val),
|
||||||
|
Number::i16(val) => write!(f, "{}", val),
|
||||||
|
Number::i8(val) => write!(f, "{}", val),
|
||||||
|
Number::isize(val) => write!(f, "{}", val),
|
||||||
|
Number::u64(val) => write!(f, "{}", val),
|
||||||
|
Number::u32(val) => write!(f, "{}", val),
|
||||||
|
Number::u16(val) => write!(f, "{}", val),
|
||||||
|
Number::u8(val) => write!(f, "{}", val),
|
||||||
|
Number::usize(val) => write!(f, "{}", val),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub enum DataCell {
|
pub enum DataCell {
|
||||||
Display,
|
NumberCell(Number),
|
||||||
Numeric,
|
String(Cow<'static, str>),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl DataCell {}
|
impl DataCell {}
|
||||||
|
|
||||||
|
impl Display for DataCell {
|
||||||
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
|
match self {
|
||||||
|
DataCell::NumberCell(n) => n.fmt(f),
|
||||||
|
DataCell::String(d) => d.fmt(f),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<DataCell> for Cell<'_> {
|
||||||
|
fn from(data_cell: DataCell) -> Self {
|
||||||
|
Cell::from(data_cell.to_string())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<Number> for DataCell {
|
||||||
|
fn from(num: Number) -> Self {
|
||||||
|
DataCell::NumberCell(num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<String> for DataCell {
|
||||||
|
fn from(s: String) -> Self {
|
||||||
|
DataCell::String(s.into())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<&'static str> for DataCell {
|
||||||
|
fn from(s: &'static str) -> Self {
|
||||||
|
DataCell::String(s.into())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user