use std::time::Instant;
use unicode_segmentation::GraphemeCursor;
use unicode_width::{UnicodeWidthChar, UnicodeWidthStr};
use data_farmer::*;
use data_harvester::{processes, temperature};
use crate::{canvas, constants, utils::error::Result};
pub mod data_farmer;
pub mod data_harvester;
mod process_killer;
const MAX_SEARCH_LENGTH: usize = 200;
#[derive(Debug, Clone, Copy)]
pub enum WidgetPosition {
Cpu,
Mem,
Disk,
Temp,
Network,
Process,
ProcessSearch,
BasicCpu,
BasicMem,
BasicNet,
}
impl WidgetPosition {
pub fn is_widget_table(self) -> bool {
match self {
WidgetPosition::Disk
| WidgetPosition::Process
| WidgetPosition::ProcessSearch
| WidgetPosition::Temp => true,
_ => false,
}
}
pub fn get_pretty_name(self) -> String {
match self {
WidgetPosition::Cpu | WidgetPosition::BasicCpu => "CPU",
WidgetPosition::Mem | WidgetPosition::BasicMem => "Memory",
WidgetPosition::Disk => "Disks",
WidgetPosition::Temp => "Temperature",
WidgetPosition::Network | WidgetPosition::BasicNet => "Network",
WidgetPosition::Process | WidgetPosition::ProcessSearch => "Processes",
}
.to_string()
}