refactor: restructure canvas file folder structure (#1368)

* refactor: group together some canvas files

* rename file

* more shuffling around

* fmt

* more shuffling

Going to flatten widgets in another PR.

* some docs

* naming

* fmt
This commit is contained in:
Clement Tsang 2024-01-01 10:19:52 +00:00 committed by GitHub
parent 74792f0ddf
commit ecb6faa089
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
61 changed files with 197 additions and 157 deletions

View File

@ -7,6 +7,7 @@ tab_spaces = 4
max_width = 100 max_width = 100
# Unstable options, disabled by default. # Unstable options, disabled by default.
# imports_granularity = "Crate"
# group_imports = "StdExternalCrate" # group_imports = "StdExternalCrate"
# wrap_comments = true # wrap_comments = true
# format_code_in_doc_comments = true # format_code_in_doc_comments = true

View File

@ -15,12 +15,12 @@ use crate::{
constants, constants,
data_collection::temperature, data_collection::temperature,
data_conversion::ConvertedData, data_conversion::ConvertedData,
utils::error::{BottomError, Result}, utils::{
Pid, data_units::DataUnit,
}; error::{BottomError, Result},
use crate::{ },
utils::data_units::DataUnit,
widgets::{ProcWidgetColumn, ProcWidgetMode}, widgets::{ProcWidgetColumn, ProcWidgetMode},
Pid,
}; };
pub mod data_farmer; pub mod data_farmer;

View File

@ -13,7 +13,6 @@
//! memory usage and higher CPU usage - you will be trying to process more and //! memory usage and higher CPU usage - you will be trying to process more and
//! more points as this is used! //! more points as this is used!
use crate::data_collection::processes::ProcessHarvest;
use std::{collections::BTreeMap, time::Instant, vec::Vec}; use std::{collections::BTreeMap, time::Instant, vec::Vec};
use hashbrown::HashMap; use hashbrown::HashMap;
@ -21,9 +20,8 @@ use hashbrown::HashMap;
#[cfg(feature = "battery")] #[cfg(feature = "battery")]
use crate::data_collection::batteries; use crate::data_collection::batteries;
use crate::{ use crate::{
data_collection::{cpu, disks, memory, network, temperature, Data}, data_collection::{cpu, disks, memory, network, processes::ProcessHarvest, temperature, Data},
utils::data_prefixes::*, utils::{data_prefixes::*, gen_util::get_decimal_bytes},
utils::gen_util::get_decimal_bytes,
Pid, Pid,
}; };
@ -370,9 +368,10 @@ impl DataCollection {
let io_device = { let io_device = {
#[cfg(target_os = "macos")] #[cfg(target_os = "macos")]
{ {
use regex::Regex;
use std::sync::OnceLock; use std::sync::OnceLock;
use regex::Regex;
// Must trim one level further for macOS! // Must trim one level further for macOS!
static DISK_REGEX: OnceLock<Regex> = OnceLock::new(); static DISK_REGEX: OnceLock<Regex> = OnceLock::new();
if let Some(new_name) = DISK_REGEX if let Some(new_name) = DISK_REGEX

View File

@ -1,7 +1,9 @@
use std::collections::BTreeMap; use std::collections::BTreeMap;
use crate::constants::DEFAULT_WIDGET_ID; use crate::{
use crate::error::{BottomError, Result}; constants::DEFAULT_WIDGET_ID,
error::{BottomError, Result},
};
/// Represents a more usable representation of the layout, derived from the /// Represents a more usable representation of the layout, derived from the
/// config. /// config.

View File

@ -1,16 +1,23 @@
use std::fmt::{Debug, Formatter}; use std::{
use std::time::Duration; borrow::Cow,
use std::{borrow::Cow, collections::VecDeque}; collections::VecDeque,
fmt::{Debug, Formatter},
time::Duration,
};
use humantime::parse_duration; use humantime::parse_duration;
use regex::Regex; use regex::Regex;
use crate::data_collection::processes::ProcessHarvest; use crate::{
use crate::multi_eq_ignore_ascii_case; data_collection::processes::ProcessHarvest,
use crate::utils::data_prefixes::*; multi_eq_ignore_ascii_case,
use crate::utils::error::{ utils::{
BottomError::{self, QueryError}, data_prefixes::*,
Result, error::{
BottomError::{self, QueryError},
Result,
},
},
}; };
const DELIMITER_LIST: [char; 6] = ['=', '>', '<', '(', ')', '\"']; const DELIMITER_LIST: [char; 6] = ['=', '>', '<', '(', ')', '\"'];

View File

@ -1,5 +1,4 @@
use clap::builder::PossibleValuesParser; use clap::{builder::PossibleValuesParser, *};
use clap::*;
const TEMPLATE: &str = "\ const TEMPLATE: &str = "\
{name} {version} {name} {version}

View File

@ -13,16 +13,12 @@ use std::{
}; };
use anyhow::{Context, Result}; use anyhow::{Context, Result};
use crossterm::{
event::{EnableBracketedPaste, EnableMouseCapture},
execute,
terminal::{enable_raw_mode, EnterAlternateScreen},
};
use tui::{backend::CrosstermBackend, Terminal};
use bottom::{ use bottom::{
args, args,
canvas::{self, canvas_styling::CanvasStyling}, canvas::{
styling::CanvasStyling,
{self},
},
check_if_terminal, cleanup_terminal, create_collection_thread, create_input_thread, check_if_terminal, cleanup_terminal, create_collection_thread, create_input_thread,
create_or_get_config, create_or_get_config,
data_conversion::*, data_conversion::*,
@ -30,6 +26,12 @@ use bottom::{
options::*, options::*,
panic_hook, read_config, try_drawing, update_data, BottomEvent, panic_hook, read_config, try_drawing, update_data, BottomEvent,
}; };
use crossterm::{
event::{EnableBracketedPaste, EnableMouseCapture},
execute,
terminal::{enable_raw_mode, EnterAlternateScreen},
};
use tui::{backend::CrosstermBackend, Terminal};
// Used for heap allocation debugging purposes. // Used for heap allocation debugging purposes.
// #[global_allocator] // #[global_allocator]
@ -151,9 +153,10 @@ fn main() -> Result<()> {
let _stderr_fd = { let _stderr_fd = {
// A really ugly band-aid to suppress stderr warnings on FreeBSD due to sysinfo. // A really ugly band-aid to suppress stderr warnings on FreeBSD due to sysinfo.
// For more information, see https://github.com/ClementTsang/bottom/issues/798. // For more information, see https://github.com/ClementTsang/bottom/issues/798.
use filedescriptor::{FileDescriptor, StdioDescriptor};
use std::fs::OpenOptions; use std::fs::OpenOptions;
use filedescriptor::{FileDescriptor, StdioDescriptor};
let path = OpenOptions::new().write(true).open("/dev/null")?; let path = OpenOptions::new().write(true).open("/dev/null")?;
FileDescriptor::redirect_stdio(&path, StdioDescriptor::Stderr)? FileDescriptor::redirect_stdio(&path, StdioDescriptor::Stderr)?
}; };

View File

@ -1,7 +1,7 @@
use std::str::FromStr; use std::str::FromStr;
use canvas_styling::*;
use itertools::izip; use itertools::izip;
use styling::*;
use tui::{ use tui::{
backend::Backend, backend::Backend,
layout::{Constraint, Direction, Layout, Rect}, layout::{Constraint, Direction, Layout, Rect},
@ -16,13 +16,13 @@ use crate::{
App, App,
}, },
constants::*, constants::*,
utils::error, utils::{error, error::BottomError},
utils::error::BottomError,
}; };
pub mod canvas_styling;
mod dialogs; mod dialogs;
mod drawing_utils; mod drawing_utils;
pub mod styling;
pub mod tui_widgets;
mod widgets; mod widgets;
#[derive(Debug)] #[derive(Debug)]

View File

@ -3,8 +3,7 @@ use std::cmp::{max, min};
use tui::{ use tui::{
layout::{Alignment, Rect}, layout::{Alignment, Rect},
terminal::Frame, terminal::Frame,
text::Line, text::{Line, Span},
text::Span,
widgets::{Block, Borders, Paragraph, Wrap}, widgets::{Block, Borders, Paragraph, Wrap},
}; };
use unicode_width::UnicodeWidthStr; use unicode_width::UnicodeWidthStr;

View File

@ -235,9 +235,10 @@ impl CanvasStyling {
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use tui::style::{Color, Style};
use super::{CanvasStyling, ColourScheme}; use super::{CanvasStyling, ColourScheme};
use crate::Config; use crate::Config;
use tui::style::{Color, Style};
#[test] #[test]
fn default_selected_colour_works() { fn default_selected_colour_works() {

View File

@ -0,0 +1,6 @@
//! Cstom ratatui widgets used by the rest of bottom.
pub mod data_table;
pub mod pipe_gauge;
pub mod time_chart;
pub mod time_graph;

View File

@ -1,6 +1,6 @@
use tui::style::Style; use tui::style::Style;
use crate::canvas::canvas_styling::CanvasStyling; use crate::canvas::styling::CanvasStyling;
#[derive(Default)] #[derive(Default)]
pub struct DataTableStyling { pub struct DataTableStyling {

View File

@ -11,7 +11,7 @@ use tui::{
}; };
use unicode_segmentation::UnicodeSegmentation; use unicode_segmentation::UnicodeSegmentation;
use super::tui_widget::time_chart::{Axis, Dataset, Point, TimeChart, DEFAULT_LEGEND_CONSTRAINTS}; use super::time_chart::{Axis, Dataset, Point, TimeChart, DEFAULT_LEGEND_CONSTRAINTS};
/// Represents the data required by the [`TimeGraph`]. /// Represents the data required by the [`TimeGraph`].
pub struct GraphData<'a> { pub struct GraphData<'a> {
@ -183,7 +183,7 @@ mod test {
}; };
use super::TimeGraph; use super::TimeGraph;
use crate::components::tui_widget::time_chart::Axis; use crate::canvas::tui_widgets::time_chart::Axis;
const Y_LABELS: [Cow<'static, str>; 3] = [ const Y_LABELS: [Cow<'static, str>; 3] = [
Cow::Borrowed("0%"), Cow::Borrowed("0%"),

View File

@ -1,8 +1,7 @@
use tui::{ use tui::{
layout::{Alignment, Constraint, Direction, Layout, Rect}, layout::{Alignment, Constraint, Direction, Layout, Rect},
terminal::Frame, terminal::Frame,
text::Line, text::{Line, Span},
text::Span,
widgets::{Block, Paragraph}, widgets::{Block, Paragraph},
}; };

View File

@ -8,8 +8,10 @@ use tui::{
use crate::{ use crate::{
app::App, app::App,
canvas::Painter, canvas::{
components::tui_widget::pipe_gauge::{LabelLimit, PipeGauge}, tui_widgets::pipe_gauge::{LabelLimit, PipeGauge},
Painter,
},
constants::*, constants::*,
data_collection::cpu::CpuDataType, data_collection::cpu::CpuDataType,
data_conversion::CpuWidgetData, data_conversion::CpuWidgetData,

View File

@ -8,10 +8,13 @@ use tui::{
use crate::{ use crate::{
app::{layout_manager::WidgetDirection, App}, app::{layout_manager::WidgetDirection, App},
canvas::{drawing_utils::should_hide_x_label, Painter}, canvas::{
components::{ drawing_utils::should_hide_x_label,
data_table::{DrawInfo, SelectionState}, tui_widgets::{
time_graph::{GraphData, TimeGraph}, data_table::{DrawInfo, SelectionState},
time_graph::{GraphData, TimeGraph},
},
Painter,
}, },
data_conversion::CpuWidgetData, data_conversion::CpuWidgetData,
widgets::CpuWidgetState, widgets::CpuWidgetState,

View File

@ -2,8 +2,10 @@ use tui::{layout::Rect, terminal::Frame};
use crate::{ use crate::{
app::{self}, app::{self},
canvas::Painter, canvas::{
components::data_table::{DrawInfo, SelectionState}, tui_widgets::data_table::{DrawInfo, SelectionState},
Painter,
},
}; };
impl Painter { impl Painter {

View File

@ -5,7 +5,9 @@ use tui::{
}; };
use crate::{ use crate::{
app::App, canvas::Painter, components::tui_widget::pipe_gauge::PipeGauge, constants::*, app::App,
canvas::{tui_widgets::pipe_gauge::PipeGauge, Painter},
constants::*,
}; };
impl Painter { impl Painter {

View File

@ -8,8 +8,11 @@ use tui::{
use crate::{ use crate::{
app::App, app::App,
canvas::{drawing_utils::should_hide_x_label, Painter}, canvas::{
components::time_graph::{GraphData, TimeGraph}, drawing_utils::should_hide_x_label,
tui_widgets::time_graph::{GraphData, TimeGraph},
Painter,
},
}; };
impl Painter { impl Painter {

View File

@ -8,10 +8,13 @@ use tui::{
use crate::{ use crate::{
app::{App, AxisScaling}, app::{App, AxisScaling},
canvas::{drawing_utils::should_hide_x_label, Painter}, canvas::{
components::{ drawing_utils::should_hide_x_label,
time_graph::{GraphData, TimeGraph}, tui_widgets::{
tui_widget::time_chart::Point, time_chart::Point,
time_graph::{GraphData, TimeGraph},
},
Painter,
}, },
utils::{data_prefixes::*, data_units::DataUnit, gen_util::partial_ordering}, utils::{data_prefixes::*, data_units::DataUnit, gen_util::partial_ordering},
}; };

View File

@ -9,8 +9,10 @@ use unicode_segmentation::UnicodeSegmentation;
use crate::{ use crate::{
app::{App, AppSearchState}, app::{App, AppSearchState},
canvas::Painter, canvas::{
components::data_table::{DrawInfo, SelectionState}, tui_widgets::data_table::{DrawInfo, SelectionState},
Painter,
},
constants::*, constants::*,
}; };

View File

@ -2,8 +2,10 @@ use tui::{layout::Rect, terminal::Frame};
use crate::{ use crate::{
app, app,
canvas::Painter, canvas::{
components::data_table::{DrawInfo, SelectionState}, tui_widgets::data_table::{DrawInfo, SelectionState},
Painter,
},
}; };
impl Painter { impl Painter {

View File

@ -1,3 +0,0 @@
pub mod data_table;
pub mod time_graph;
pub mod tui_widget;

View File

@ -1,2 +0,0 @@
pub mod pipe_gauge;
pub mod time_chart;

View File

@ -2,15 +2,14 @@
use std::io; use std::io;
use hashbrown::HashMap;
use serde::Deserialize; use serde::Deserialize;
use super::{keep_disk_entry, DiskHarvest, IoHarvest}; use super::{keep_disk_entry, DiskHarvest, IoHarvest};
use crate::{ use crate::{
data_collection::deserialize_xo, data_collection::disks::IoData, data_collection::{deserialize_xo, disks::IoData, DataCollector},
data_collection::DataCollector, utils::error, utils::error,
}; };
use hashbrown::HashMap;
#[derive(Deserialize, Debug, Default)] #[derive(Deserialize, Debug, Default)]
#[serde(rename_all = "kebab-case")] #[serde(rename_all = "kebab-case")]

View File

@ -2,9 +2,8 @@
use sysinfo::{DiskExt, SystemExt}; use sysinfo::{DiskExt, SystemExt};
use crate::data_collection::DataCollector;
use super::{keep_disk_entry, DiskHarvest}; use super::{keep_disk_entry, DiskHarvest};
use crate::data_collection::DataCollector;
pub(crate) fn get_disk_usage(collector: &DataCollector) -> anyhow::Result<Vec<DiskHarvest>> { pub(crate) fn get_disk_usage(collector: &DataCollector) -> anyhow::Result<Vec<DiskHarvest>> {
let disks = collector.sys.disks(); let disks = collector.sys.disks();

View File

@ -166,9 +166,10 @@ impl FromStr for FileSystem {
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use super::FileSystem;
use std::str::FromStr; use std::str::FromStr;
use super::FileSystem;
#[test] #[test]
fn file_system_from_str() { fn file_system_from_str() {
// Something supported // Something supported

View File

@ -5,11 +5,12 @@
//! //!
//! Ideally, we can remove this if sysinfo ever gains disk I/O capabilities. //! Ideally, we can remove this if sysinfo ever gains disk I/O capabilities.
use core_foundation::base::{mach_port_t, CFAllocatorRef}; use core_foundation::{
use core_foundation::dictionary::CFMutableDictionaryRef; base::{mach_port_t, CFAllocatorRef},
dictionary::CFMutableDictionaryRef,
};
use libc::c_char; use libc::c_char;
use mach2::kern_return::kern_return_t; use mach2::{kern_return::kern_return_t, port::MACH_PORT_NULL};
use mach2::port::MACH_PORT_NULL;
#[allow(non_camel_case_types)] #[allow(non_camel_case_types)]
pub type io_object_t = mach_port_t; pub type io_object_t = mach_port_t;

View File

@ -4,13 +4,15 @@
use std::mem; use std::mem;
use anyhow::{anyhow, bail}; use anyhow::{anyhow, bail};
use core_foundation::base::{kCFAllocatorDefault, CFType, TCFType, ToVoid}; use core_foundation::{
use core_foundation::dictionary::{ base::{kCFAllocatorDefault, CFType, TCFType, ToVoid},
CFDictionary, CFDictionaryGetTypeID, CFDictionaryRef, CFMutableDictionary, dictionary::{
CFMutableDictionaryRef, CFDictionary, CFDictionaryGetTypeID, CFDictionaryRef, CFMutableDictionary,
CFMutableDictionaryRef,
},
number::{CFNumber, CFNumberGetTypeID},
string::{CFString, CFStringGetTypeID},
}; };
use core_foundation::number::{CFNumber, CFNumberGetTypeID};
use core_foundation::string::{CFString, CFStringGetTypeID};
use mach2::kern_return; use mach2::kern_return;
use super::bindings::*; use super::bindings::*;

View File

@ -4,7 +4,6 @@ use itertools::Itertools;
use sysinfo::{DiskExt, SystemExt}; use sysinfo::{DiskExt, SystemExt};
use super::{keep_disk_entry, DiskHarvest}; use super::{keep_disk_entry, DiskHarvest};
use crate::data_collection::{disks::IoCounters, DataCollector}; use crate::data_collection::{disks::IoCounters, DataCollector};
mod bindings; mod bindings;

View File

@ -1,15 +1,17 @@
use std::sync::OnceLock; use std::sync::OnceLock;
use hashbrown::HashMap; use hashbrown::HashMap;
use nvml_wrapper::enum_wrappers::device::TemperatureSensor; use nvml_wrapper::{
use nvml_wrapper::enums::device::UsedGpuMemory; enum_wrappers::device::TemperatureSensor, enums::device::UsedGpuMemory, error::NvmlError, Nvml,
use nvml_wrapper::{error::NvmlError, Nvml}; };
use crate::app::filter::Filter; use crate::{
app::{filter::Filter, layout_manager::UsedWidgets},
use crate::app::layout_manager::UsedWidgets; data_collection::{
use crate::data_collection::memory::MemHarvest; memory::MemHarvest,
use crate::data_collection::temperature::{is_temp_filtered, TempHarvest, TemperatureType}; temperature::{is_temp_filtered, TempHarvest, TemperatureType},
},
};
pub static NVML_DATA: OnceLock<Result<Nvml, NvmlError>> = OnceLock::new(); pub static NVML_DATA: OnceLock<Result<Nvml, NvmlError>> = OnceLock::new();

View File

@ -3,11 +3,11 @@
//! For Linux, this is handled by a custom set of functions. //! For Linux, this is handled by a custom set of functions.
//! For Windows, macOS, FreeBSD, Android, and Linux, this is handled by sysinfo. //! For Windows, macOS, FreeBSD, Android, and Linux, this is handled by sysinfo.
use cfg_if::cfg_if;
use std::{borrow::Cow, time::Duration}; use std::{borrow::Cow, time::Duration};
use super::DataCollector; use cfg_if::cfg_if;
use super::DataCollector;
use crate::{utils::error, Pid}; use crate::{utils::error, Pid};
cfg_if! { cfg_if! {

View File

@ -1,13 +1,14 @@
//! Process data collection for FreeBSD. Uses sysinfo. //! Process data collection for FreeBSD. Uses sysinfo.
use std::io; use std::{io, process::Command};
use std::process::Command;
use hashbrown::HashMap; use hashbrown::HashMap;
use serde::{Deserialize, Deserializer}; use serde::{Deserialize, Deserializer};
use crate::data_collection::{deserialize_xo, processes::UnixProcessExt}; use crate::{
use crate::Pid; data_collection::{deserialize_xo, processes::UnixProcessExt},
Pid,
};
#[derive(Deserialize, Debug, Default)] #[derive(Deserialize, Debug, Default)]
#[serde(rename_all = "kebab-case")] #[serde(rename_all = "kebab-case")]

View File

@ -1,19 +1,22 @@
//! Process data collection for Linux. //! Process data collection for Linux.
mod process; mod process;
use process::*; use std::{
fs::{self, File},
use std::fs::{self, File}; io::{BufRead, BufReader},
use std::io::{BufRead, BufReader}; time::Duration,
use std::time::Duration; };
use hashbrown::HashSet; use hashbrown::HashSet;
use process::*;
use sysinfo::ProcessStatus; use sysinfo::ProcessStatus;
use super::{ProcessHarvest, UserTable}; use super::{ProcessHarvest, UserTable};
use crate::data_collection::DataCollector; use crate::{
use crate::utils::error::{self, BottomError}; data_collection::DataCollector,
use crate::Pid; utils::error::{self, BottomError},
Pid,
};
/// Maximum character length of a /proc/<PID>/stat process name. /// Maximum character length of a /proc/<PID>/stat process name.
/// If it's equal or greater, then we instead refer to the command for the name. /// If it's equal or greater, then we instead refer to the command for the name.

View File

@ -1,14 +1,12 @@
//! Process data collection for macOS. Uses sysinfo and custom bindings. //! Process data collection for macOS. Uses sysinfo and custom bindings.
use std::io; use std::{io, process::Command};
use std::process::Command;
use hashbrown::HashMap; use hashbrown::HashMap;
use itertools::Itertools; use itertools::Itertools;
use sysinfo::{PidExt, ProcessExt}; use sysinfo::{PidExt, ProcessExt};
use super::UnixProcessExt; use super::UnixProcessExt;
use crate::Pid; use crate::Pid;
mod sysctl_bindings; mod sysctl_bindings;

View File

@ -1,7 +1,6 @@
//! Shared process data harvesting code from macOS and FreeBSD via sysinfo. //! Shared process data harvesting code from macOS and FreeBSD via sysinfo.
use std::io; use std::{io, time::Duration};
use std::time::Duration;
use hashbrown::HashMap; use hashbrown::HashMap;
use sysinfo::{CpuExt, PidExt, ProcessExt, ProcessStatus, System, SystemExt}; use sysinfo::{CpuExt, PidExt, ProcessExt, ProcessStatus, System, SystemExt};

View File

@ -5,7 +5,6 @@ use std::time::Duration;
use sysinfo::{CpuExt, PidExt, ProcessExt, SystemExt, UserExt}; use sysinfo::{CpuExt, PidExt, ProcessExt, SystemExt, UserExt};
use super::ProcessHarvest; use super::ProcessHarvest;
use crate::data_collection::DataCollector; use crate::data_collection::DataCollector;
pub fn sysinfo_process_data( pub fn sysinfo_process_data(

View File

@ -3,13 +3,13 @@
use kstring::KString; use kstring::KString;
use crate::app::{data_farmer::DataCollection, AxisScaling}; use crate::{
use crate::components::tui_widget::time_chart::Point; app::{data_farmer::DataCollection, AxisScaling},
use crate::data_collection::{cpu::CpuDataType, memory::MemHarvest, temperature::TemperatureType}; canvas::tui_widgets::time_chart::Point,
use crate::utils::data_prefixes::*; data_collection::{cpu::CpuDataType, memory::MemHarvest, temperature::TemperatureType},
use crate::utils::data_units::DataUnit; utils::{data_prefixes::*, data_units::DataUnit, gen_util::*},
use crate::utils::gen_util::*; widgets::{DiskWidgetData, TempWidgetData},
use crate::widgets::{DiskWidgetData, TempWidgetData}; };
#[derive(Debug, Default)] #[derive(Debug, Default)]
pub enum BatteryDuration { pub enum BatteryDuration {

View File

@ -16,10 +16,9 @@ use std::{
io::{stderr, stdout, Write}, io::{stderr, stdout, Write},
panic::PanicInfo, panic::PanicInfo,
path::PathBuf, path::PathBuf,
sync::Mutex,
sync::{ sync::{
mpsc::{Receiver, Sender}, mpsc::{Receiver, Sender},
Arc, Condvar, Arc, Condvar, Mutex,
}, },
thread::{self, JoinHandle}, thread::{self, JoinHandle},
time::{Duration, Instant}, time::{Duration, Instant},
@ -54,7 +53,6 @@ pub mod utils {
} }
pub mod args; pub mod args;
pub mod canvas; pub mod canvas;
pub mod components;
pub mod constants; pub mod constants;
pub mod data_collection; pub mod data_collection;
pub mod data_conversion; pub mod data_conversion;

View File

@ -11,13 +11,12 @@ use indexmap::IndexSet;
use layout_options::*; use layout_options::*;
use regex::Regex; use regex::Regex;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg(feature = "battery")] #[cfg(feature = "battery")]
use starship_battery::Manager; use starship_battery::Manager;
use crate::{ use crate::{
app::{filter::Filter, layout_manager::*, *}, app::{filter::Filter, layout_manager::*, *},
canvas::{canvas_styling::CanvasStyling, ColourScheme}, canvas::{styling::CanvasStyling, ColourScheme},
constants::*, constants::*,
data_collection::temperature::TemperatureType, data_collection::temperature::TemperatureType,
utils::{ utils::{
@ -33,9 +32,8 @@ mod process_columns;
pub use process_columns::ProcessConfig; pub use process_columns::ProcessConfig;
mod cpu; mod cpu;
pub use cpu::{CpuConfig, CpuDefault};
use anyhow::{Context, Result}; use anyhow::{Context, Result};
pub use cpu::{CpuConfig, CpuDefault};
#[derive(Clone, Debug, Default, Deserialize)] #[derive(Clone, Debug, Default, Deserialize)]
pub struct Config { pub struct Config {
@ -918,7 +916,7 @@ mod test {
use super::{get_color_scheme, get_time_interval, get_widget_layout, Config}; use super::{get_color_scheme, get_time_interval, get_widget_layout, Config};
use crate::{ use crate::{
app::App, app::App,
canvas::canvas_styling::CanvasStyling, canvas::styling::CanvasStyling,
options::{ options::{
get_default_time_value, get_retention, get_update_rate, try_parse_ms, ConfigFlags, get_default_time_value, get_retention, get_update_rate, try_parse_ms, ConfigFlags,
}, },

View File

@ -1,7 +1,6 @@
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use crate::app::layout_manager::*; use crate::{app::layout_manager::*, error::Result};
use crate::error::Result;
/// Represents a row. This has a length of some sort (optional) and a vector /// Represents a row. This has a length of some sort (optional) and a vector
/// of children. /// of children.

View File

@ -10,9 +10,8 @@ pub struct ProcessConfig {
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use crate::widgets::ProcWidgetColumn;
use super::ProcessConfig; use super::ProcessConfig;
use crate::widgets::ProcWidgetColumn;
#[test] #[test]
fn empty_column_setting() { fn empty_column_setting() {

View File

@ -5,10 +5,13 @@ use tui::{style::Style, text::Text, widgets::Row};
use crate::{ use crate::{
app::AppConfigFields, app::AppConfigFields,
canvas::{canvas_styling::CanvasStyling, Painter}, canvas::{
components::data_table::{ styling::CanvasStyling,
Column, ColumnHeader, DataTable, DataTableColumn, DataTableProps, DataTableStyling, tui_widgets::data_table::{
DataToCell, Column, ColumnHeader, DataTable, DataTableColumn, DataTableProps, DataTableStyling,
DataToCell,
},
Painter,
}, },
data_collection::cpu::CpuDataType, data_collection::cpu::CpuDataType,
data_conversion::CpuWidgetData, data_conversion::CpuWidgetData,

View File

@ -5,10 +5,12 @@ use tui::text::Text;
use crate::{ use crate::{
app::AppConfigFields, app::AppConfigFields,
canvas::canvas_styling::CanvasStyling, canvas::{
components::data_table::{ styling::CanvasStyling,
ColumnHeader, DataTableColumn, DataTableProps, DataTableStyling, DataToCell, SortColumn, tui_widgets::data_table::{
SortDataTable, SortDataTableProps, SortOrder, SortsRow, ColumnHeader, DataTableColumn, DataTableProps, DataTableStyling, DataToCell,
SortColumn, SortDataTable, SortDataTableProps, SortOrder, SortsRow,
},
}, },
utils::gen_util::{get_decimal_bytes, sort_partial_fn, truncate_to_text}, utils::gen_util::{get_decimal_bytes, sort_partial_fn, truncate_to_text},
}; };

View File

@ -11,10 +11,12 @@ use crate::{
query::*, query::*,
AppConfigFields, AppSearchState, AppConfigFields, AppSearchState,
}, },
canvas::canvas_styling::CanvasStyling, canvas::{
components::data_table::{ styling::CanvasStyling,
Column, ColumnHeader, ColumnWidthBounds, DataTable, DataTableColumn, DataTableProps, tui_widgets::data_table::{
DataTableStyling, SortColumn, SortDataTable, SortDataTableProps, SortOrder, SortsRow, Column, ColumnHeader, ColumnWidthBounds, DataTable, DataTableColumn, DataTableProps,
DataTableStyling, SortColumn, SortDataTable, SortDataTableProps, SortOrder, SortsRow,
},
}, },
data_collection::processes::ProcessHarvest, data_collection::processes::ProcessHarvest,
Pid, Pid,

View File

@ -4,7 +4,7 @@ use serde::{de::Error, Deserialize, Serialize};
use super::ProcWidgetData; use super::ProcWidgetData;
use crate::{ use crate::{
components::data_table::{ColumnHeader, SortsRow}, canvas::tui_widgets::data_table::{ColumnHeader, SortsRow},
utils::gen_util::sort_partial_fn, utils::gen_util::sort_partial_fn,
}; };

View File

@ -9,8 +9,10 @@ use tui::{text::Text, widgets::Row};
use super::proc_widget_column::ProcColumn; use super::proc_widget_column::ProcColumn;
use crate::{ use crate::{
canvas::Painter, canvas::{
components::data_table::{DataTableColumn, DataToCell}, tui_widgets::data_table::{DataTableColumn, DataToCell},
Painter,
},
data_collection::processes::ProcessHarvest, data_collection::processes::ProcessHarvest,
data_conversion::{binary_byte_string, dec_bytes_per_second_string, dec_bytes_string}, data_conversion::{binary_byte_string, dec_bytes_per_second_string, dec_bytes_string},
utils::gen_util::truncate_to_text, utils::gen_util::truncate_to_text,

View File

@ -3,7 +3,7 @@ use std::borrow::Cow;
use tui::text::Text; use tui::text::Text;
use crate::{ use crate::{
components::data_table::{ColumnHeader, DataTableColumn, DataToCell}, canvas::tui_widgets::data_table::{ColumnHeader, DataTableColumn, DataToCell},
utils::gen_util::truncate_to_text, utils::gen_util::truncate_to_text,
}; };

View File

@ -6,10 +6,12 @@ use tui::text::Text;
use crate::{ use crate::{
app::AppConfigFields, app::AppConfigFields,
canvas::canvas_styling::CanvasStyling, canvas::{
components::data_table::{ styling::CanvasStyling,
ColumnHeader, DataTableColumn, DataTableProps, DataTableStyling, DataToCell, SortColumn, tui_widgets::data_table::{
SortDataTable, SortDataTableProps, SortOrder, SortsRow, ColumnHeader, DataTableColumn, DataTableProps, DataTableStyling, DataToCell,
SortColumn, SortDataTable, SortDataTableProps, SortOrder, SortsRow,
},
}, },
data_collection::temperature::TemperatureType, data_collection::temperature::TemperatureType,
utils::gen_util::{sort_partial_fn, truncate_to_text}, utils::gen_util::{sort_partial_fn, truncate_to_text},

View File

@ -1,11 +1,13 @@
//! Mocks layout management, so we can check if we broke anything. //! Mocks layout management, so we can check if we broke anything.
use bottom::app::layout_manager::{BottomLayout, BottomWidgetType};
#[cfg(feature = "battery")] #[cfg(feature = "battery")]
use bottom::constants::DEFAULT_BATTERY_LAYOUT; use bottom::constants::DEFAULT_BATTERY_LAYOUT;
use bottom::constants::{DEFAULT_LAYOUT, DEFAULT_WIDGET_ID}; use bottom::{
use bottom::options::{layout_options::Row, Config}; app::layout_manager::{BottomLayout, BottomWidgetType},
use bottom::utils::error; constants::{DEFAULT_LAYOUT, DEFAULT_WIDGET_ID},
options::{layout_options::Row, Config},
utils::error,
};
use toml_edit::de::from_str; use toml_edit::de::from_str;
// TODO: Could move these into the library files rather than external tbh. // TODO: Could move these into the library files rather than external tbh.