diff options
author | Clement Tsang <34804052+ClementTsang@users.noreply.github.com> | 2024-01-01 10:19:52 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-01 05:19:52 -0500 |
commit | ecb6faa089271be48325eb7371a3a01a17683ba4 (patch) | |
tree | 4a4bfebdc2f27ecb13a0905c8f5eb9b7fb09ac3a | |
parent | 74792f0ddf0a184e17c98877d9f531282cdce92f (diff) |
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
61 files changed, 197 insertions, 157 deletions
diff --git a/rustfmt.toml b/rustfmt.toml index 798864da..c4a8b584 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -7,6 +7,7 @@ tab_spaces = 4 max_width = 100 # Unstable options, disabled by default. +# imports_granularity = "Crate" # group_imports = "StdExternalCrate" # wrap_comments = true # format_code_in_doc_comments = true @@ -15,12 +15,12 @@ use crate::{ constants, data_collection::temperature, data_conversion::ConvertedData, - utils::error::{BottomError, Result}, - Pid, -}; -use crate::{ - utils::data_units::DataUnit, + utils::{ + data_units::DataUnit, + error::{BottomError, Result}, + }, widgets::{ProcWidgetColumn, ProcWidgetMode}, + Pid, }; pub mod data_farmer; diff --git a/src/app/data_farmer.rs b/src/app/data_farmer.rs index 4a2e09fe..720092db 100644 --- a/src/app/data_farmer.rs +++ b/src/app/data_farmer.rs @@ -13,7 +13,6 @@ //! memory usage and higher CPU usage - you will be trying to process more and //! more points as this is used! -use crate::data_collection::processes::ProcessHarvest; use std::{collections::BTreeMap, time::Instant, vec::Vec}; use hashbrown::HashMap; @@ -21,9 +20,8 @@ use hashbrown::HashMap; #[cfg(feature = "battery")] use crate::data_collection::batteries; use crate::{ - data_collection::{cpu, disks, memory, network, temperature, Data}, - utils::data_prefixes::*, - utils::gen_util::get_decimal_bytes, + data_collection::{cpu, disks, memory, network, processes::ProcessHarvest, temperature, Data}, + utils::{data_prefixes::*, gen_util::get_decimal_bytes}, Pid, }; @@ -370,9 +368,10 @@ impl DataCollection { let io_device = { #[cfg(target_os = "macos")] { - use regex::Regex; use std::sync::OnceLock; + use regex::Regex; + // Must trim one level further for macOS! static DISK_REGEX: OnceLock<Regex> = OnceLock::new(); if let Some(new_name) = DISK_REGEX diff --git a/src/app/layout_manager.rs b/src/app/layout_manager.rs index f5ed8eaa..ca353f52 100644 --- a/src/app/layout_manager.rs +++ b/src/app/layout_manager.rs @@ -1,7 +1,9 @@ use std::collections::BTreeMap; -use crate::constants::DEFAULT_WIDGET_ID; -use crate::error::{BottomError, Result}; +use crate::{ + constants::DEFAULT_WIDGET_ID, + error::{BottomError, Result}, +}; /// Represents a more usable representation of the layout, derived from the /// config. diff --git a/src/app/query.rs b/src/app/query.rs index 6f1a2858..5737cbc7 100644 --- a/src/app/query.rs +++ b/src/app/query.rs @@ -1,16 +1,23 @@ -use std::fmt::{Debug, Formatter}; -use std::time::Duration; -use std::{borrow::Cow, collections::VecDeque}; +use std::{ + borrow::Cow, + collections::VecDeque, + fmt::{Debug, Formatter}, + time::Duration, +}; use humantime::parse_duration; use regex::Regex; -use crate::data_collection::processes::ProcessHarvest; -use crate::multi_eq_ignore_ascii_case; -use crate::utils::data_prefixes::*; -use crate::utils::error::{ - BottomError::{self, QueryError}, - Result, +use crate::{ + data_collection::processes::ProcessHarvest, + multi_eq_ignore_ascii_case, + utils::{ + data_prefixes::*, + error::{ + BottomError::{self, QueryError}, + Result, + }, + }, }; const DELIMITER_LIST: [char; 6] = ['=', '>', '<', '(', ')', '\"']; diff --git a/src/args.rs b/src/args.rs index 5da34f85..2c524da8 100644 --- a/src/args.rs +++ b/src/args.rs @@ -1,5 +1,4 @@ -use clap::builder::PossibleValuesParser; -use clap::*; +use clap::{builder::PossibleValuesParser, *}; const TEMPLATE: &str = "\ {name} {version} diff --git a/src/bin/main.rs b/src/bin/main.rs index 5fc02bfe..a5218efe 100644 --- a/src/bin/main.rs +++ b/src/bin/main.rs @@ -13,16 +13,12 @@ use std::{ }; use anyhow::{Context, Result}; -use crossterm::{ - event::{EnableBracketedPaste, EnableMouseCapture}, - execute, - terminal::{enable_raw_mode, EnterAlternateScreen}, -}; -use tui::{backend::CrosstermBackend, Terminal}; - use bottom::{ args, - canvas::{self, canvas_styling::CanvasStyling}, + canvas::{ + styling::CanvasStyling, + {self}, + }, check_if_terminal, cleanup_terminal, create_collection_thread, create_input_thread, create_or_get_config, data_conversion::*, @@ -30,6 +26,12 @@ use bottom::{ options::*, 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. // #[global_allocator] @@ -151,9 +153,10 @@ fn main() -> Result<()> { let _stderr_fd = { // 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. - use filedescriptor::{FileDescriptor, StdioDescriptor}; use std::fs::OpenOptions; + use filedescriptor::{FileDescriptor, StdioDescriptor}; + let path = OpenOptions::new().write(true).open("/dev/null")?; FileDescriptor::redirect_stdio(&path, StdioDescriptor::Stderr)? }; diff --git a/src/canvas.rs b/src/canvas.rs index ef5c9ace..8960f0a0 100644 --- a/src/canvas.rs +++ b/src/canvas.rs @@ -1,7 +1,7 @@ use std::str::FromStr; -use canvas_styling::*; use itertools::izip; +use styling::*; use tui::{ backend::Backend, layout::{Constraint, Direction, Layout, Rect}, @@ -16,13 +16,13 @@ use crate::{ App, }, constants::*, - utils::error, - utils::error::BottomError, + utils::{error, error::BottomError}, }; -pub mod canvas_styling; mod dialogs; mod drawing_utils; +pub mod styling; +pub mod tui_widgets; mod widgets; #[derive(Debug)] diff --git a/src/canvas/dialogs/help_dialog.rs b/src/canvas/dialogs/help_dialog.rs index 39bf2575..082aeb6e 100644 --- a/src/canvas/dialogs/help_dialog.rs +++ b/src/canvas/dialogs/help_dialog.rs @@ -3,8 +3,7 @@ use std::cmp::{max, min}; use tui::{ layout::{Alignment, Rect}, terminal::Frame, - text::Line, - text::Span, + text::{Line, Span}, widgets::{Block, Borders, Paragraph, Wrap}, }; use unicode_width::UnicodeWidthStr; diff --git a/src/canvas/canvas_styling.rs b/src/canvas/styling.rs index 93169f37..efd7638f 100644 --- a/src/canvas/canvas_styling.rs +++ b/src/canvas/styling.rs @@ -235,9 +235,10 @@ impl CanvasStyling { #[cfg(test)] mod test { + use tui::style::{Color, Style}; + use super::{CanvasStyling, ColourScheme}; use crate::Config; - use tui::style::{Color, Style}; #[test] fn default_selected_colour_works() { diff --git a/src/canvas/canvas_styling/colour_utils.rs b/src/canvas/styling/colour_utils.rs index 5c39be74..5c39be74 100644 --- a/src/canvas/canvas_styling/colour_utils.rs +++ b/src/canvas/styling/colour_utils.rs diff --git a/src/canvas/tui_widgets.rs b/src/canvas/tui_widgets.rs new file mode 100644 index 00000000..8355c7d1 --- /dev/null +++ b/src/canvas/tui_widgets.rs @@ -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; diff --git a/src/components/data_table.rs b/src/canvas/tui_widgets/data_table.rs index 4ae23d1d..4ae23d1d 100644 --- a/src/components/data_table.rs +++ b/src/canvas/tui_widgets/data_table.rs diff --git a/src/components/data_table/column.rs b/src/canvas/tui_widgets/data_table/column.rs index e7b82b29..e7b82b29 100644 --- a/src/components/data_table/column.rs +++ b/src/canvas/tui_widgets/data_table/column.rs diff --git a/src/components/data_table/data_type.rs b/src/canvas/tui_widgets/data_table/data_type.rs index bbfceb8c..bbfceb8c 100644 --- a/src/components/data_table/data_type.rs +++ b/src/canvas/tui_widgets/data_table/data_type.rs diff --git a/src/components/data_table/draw.rs b/src/canvas/tui_widgets/data_table/draw.rs index 15faae22..15faae22 100644 --- a/src/components/data_table/draw.rs +++ b/src/canvas/tui_widgets/data_table/draw.rs diff --git a/src/components/data_table/props.rs b/src/canvas/tui_widgets/data_table/props.rs index 66d3a4f0..66d3a4f0 100644 --- a/src/components/data_table/props.rs +++ b/src/canvas/tui_widgets/data_table/props.rs diff --git a/src/components/data_table/sortable.rs b/src/canvas/tui_widgets/data_table/sortable.rs index 3a3de1fc..3a3de1fc 100644 --- a/src/components/data_table/sortable.rs +++ b/src/canvas/tui_widgets/data_table/sortable.rs diff --git a/src/components/data_table/state.rs b/src/canvas/tui_widgets/data_table/state.rs index 0e2ed450..0e2ed450 100644 --- a/src/components/data_table/state.rs +++ b/src/canvas/tui_widgets/data_table/state.rs diff --git a/src/components/data_table/styling.rs b/src/canvas/tui_widgets/data_table/styling.rs index ddda312a..80ce2b70 100644 --- a/src/components/data_table/styling.rs +++ b/src/canvas/tui_widgets/data_table/styling.rs @@ -1,6 +1,6 @@ use tui::style::Style; -use crate::canvas::canvas_styling::CanvasStyling; +use crate::canvas::styling::CanvasStyling; #[derive(Default)] pub struct DataTableStyling { diff --git a/src/components/tui_widget/pipe_gauge.rs b/src/canvas/tui_widgets/pipe_gauge.rs index 08aa4ca2..08aa4ca2 100644 --- a/src/components/tui_widget/pipe_gauge.rs +++ b/src/canvas/tui_widgets/pipe_gauge.rs diff --git a/src/components/tui_widget/time_chart.rs b/src/canvas/tui_widgets/time_chart.rs index 403ef507..403ef507 100644 --- a/src/components/tui_widget/time_chart.rs +++ b/src/canvas/tui_widgets/time_chart.rs diff --git a/src/components/tui_widget/time_chart/canvas.rs b/src/canvas/tui_widgets/time_chart/canvas.rs index b6cc41c1..b6cc41c1 100644 --- a/src/components/tui_widget/time_chart/canvas.rs +++ b/src/canvas/tui_widgets/time_chart/canvas.rs diff --git a/src/components/time_graph.rs b/src/canvas/tui_widgets/time_graph.rs index 63d7330b..2bbcd652 100644 --- a/src/components/time_graph.rs +++ b/src/canvas/tui_widgets/time_graph.rs @@ -11,7 +11,7 @@ use tui::{ }; 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`]. pub struct GraphData<'a> { @@ -183,7 +183,7 @@ mod test { }; 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] = [ Cow::Borrowed("0%"), diff --git a/src/canvas/widgets/basic_table_arrows.rs b/src/canvas/widgets/basic_table_arrows.rs index 352c7f1e..9f7baba7 100644 --- a/src/canvas/widgets/basic_table_arrows.rs +++ b/src/canvas/widgets/basic_table_arrows.rs @@ -1,8 +1,7 @@ use tui::{ layout::{Alignment, Constraint, Direction, Layout, Rect}, terminal::Frame, - text::Line, - text::Span, + text::{Line, Span}, widgets::{Block, Paragraph}, }; diff --git a/src/canvas/widgets/cpu_basic.rs b/src/canvas/widgets/cpu_basic.rs index e04d497f..a2a67c4d 100644 --- a/src/canvas/widgets/cpu_basic.rs +++ b/src/canvas/widgets/cpu_basic.rs @@ -8,8 +8,10 @@ use tui::{ use crate::{ app::App, - canvas::Painter, - components::tui_widget::pipe_gauge::{LabelLimit, PipeGauge}, + canvas::{ + tui_widgets::pipe_gauge::{LabelLimit, PipeGauge}, + Painter, + }, constants::*, data_collection::cpu::CpuDataType, data_conversion::CpuWidgetData, diff --git a/src/canvas/widgets/cpu_graph.rs b/src/canvas/widgets/cpu_graph.rs index 9e9dab2f..7f4e757e 100644 --- a/src/canvas/widgets/cpu_graph.rs +++ b/src/canvas/widgets/cpu_graph.rs @@ -8,10 +8,13 @@ use tui::{ use crate::{ app::{layout_manager::WidgetDirection, App}, - canvas::{drawing_utils::should_hide_x_label, Painter}, - components::{ - data_table::{DrawInfo, SelectionState}, - time_graph::{GraphData, TimeGraph}, + canvas::{ + drawing_utils::should_hide_x_label, + tui_widgets::{ + data_table::{DrawInfo, SelectionState}, + time_graph::{GraphData, TimeGraph}, + }, + Painter, }, data_conversion::CpuWidgetData, widgets::CpuWidgetState, diff --git a/src/canvas/widgets/disk_table.rs b/src/canvas/widgets/disk_table.rs index cfea61b6..5b6b2619 100644 --- a/src/canvas/widgets/disk_table.rs +++ b/src/canvas/widgets/disk_table.rs @@ -2,8 +2,10 @@ use tui::{layout::Rect, terminal::Frame}; use crate::{ app::{self}, - canvas::Painter, - components::data_table::{DrawInfo, SelectionState}, + canvas::{ + tui_widgets::data_table::{DrawInfo, SelectionState}, + Painter, + }, }; impl Painter { diff --git a/src/canvas/widgets/mem_basic.rs b/src/canvas/widgets/mem_basic.rs index d24ae22e..e8ae71b7 100644 --- a/src/canvas/widgets/mem_basic.rs +++ b/src/canvas/widgets/mem_basic.rs @@ -5,7 +5,9 @@ use tui::{ }; 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 { diff --git a/src/canvas/widgets/mem_graph.rs b/src/canvas/widgets/mem_graph.rs index 42e05e02..819c2956 100644 --- a/src/canvas/widgets/mem_graph.rs +++ b/src/canvas/widgets/mem_graph.rs @@ -8,8 +8,11 @@ use tui::{ use crate::{ app::App, - canvas::{drawing_utils::should_hide_x_label, Painter}, - components::time_graph::{GraphData, TimeGraph}, + canvas::{ + drawing_utils::should_hide_x_label, + tui_widgets::time_graph::{GraphData, TimeGraph}, + Painter, + }, }; impl Painter { diff --git a/src/canvas/widgets/network_graph.rs b/src/canvas/widgets/network_graph.rs index 8f0885fa..7c8ce913 100644 --- a/src/canvas/widgets/network_graph.rs +++ b/src/canvas/widgets/network_graph.rs @@ -8,10 +8,13 @@ use tui::{ use crate::{ app::{App, AxisScaling}, - canvas::{drawing_utils::should_hide_x_label, Painter}, - components::{ - time_graph::{GraphData, TimeGraph}, - tui_widget::time_chart::Point, + canvas::{ + drawing_utils::should_hide_x_label, + tui_widgets::{ + time_chart::Point, + time_graph::{GraphData, TimeGraph}, + }, + Painter, }, utils::{data_prefixes::*, data_units::DataUnit, gen_util::partial_ordering}, }; |