From 022eade156d0ee815a1f2200fb7ff3fac71087a8 Mon Sep 17 00:00:00 2001 From: cyqsimon <28627918+cyqsimon@users.noreply.github.com> Date: Wed, 1 Nov 2023 12:00:58 +0800 Subject: [PATCH] Bump ratatui to 0.24.0 (#327) --- Cargo.lock | 62 +++++++++++++++++++++++- Cargo.toml | 2 +- src/display/components/header_details.rs | 19 ++------ src/display/components/help_text.rs | 3 +- src/display/components/layout.rs | 3 +- src/display/components/table.rs | 3 +- src/display/raw_terminal_backend.rs | 13 ++++- src/tests/fakes/fake_output.rs | 16 +++++- 8 files changed, 94 insertions(+), 27 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d7e2316dc..816e39d59 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -28,6 +28,18 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "ahash" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.1.2" @@ -37,6 +49,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + [[package]] name = "android-tzdata" version = "0.1.1" @@ -715,6 +733,16 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +[[package]] +name = "hashbrown" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +dependencies = [ + "ahash", + "allocator-api2", +] + [[package]] name = "heck" version = "0.4.1" @@ -924,6 +952,15 @@ version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +[[package]] +name = "lru" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efa59af2ddfad1854ae27d75009d538d0998b4b2fd47083e743ac1a10e46c60" +dependencies = [ + "hashbrown", +] + [[package]] name = "lru-cache" version = "0.1.2" @@ -1392,15 +1429,16 @@ dependencies = [ [[package]] name = "ratatui" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e2e4cd95294a85c3b4446e63ef054eea43e0205b1fd60120c16b74ff7ff96ad" +checksum = "0ebc917cfb527a566c37ecb94c7e3fd098353516fb4eb6bea17015ade0182425" dependencies = [ "bitflags 2.4.1", "cassowary", "crossterm", "indoc", "itertools", + "lru", "paste", "strum", "unicode-segmentation", @@ -2288,6 +2326,26 @@ dependencies = [ "linked-hash-map", ] +[[package]] +name = "zerocopy" +version = "0.7.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686b7e407015242119c33dab17b8f61ba6843534de936d94368856528eae4dcc" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020f3dfe25dfc38dfea49ce62d5d45ecdd7f0d8a724fa63eb36b6eba4ec76806" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] + [[package]] name = "zip" version = "0.6.6" diff --git a/Cargo.toml b/Cargo.toml index 345f7b3eb..feb17b8fe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,7 @@ log = "0.4.20" once_cell = "1.18.0" pnet = "0.34.0" pnet_macros_support = "0.34.0" -ratatui = "0.23.0" +ratatui = "0.24.0" resolv-conf = "0.7.0" simplelog = "0.12.1" thiserror = "1.0.50" diff --git a/src/display/components/header_details.rs b/src/display/components/header_details.rs index 3f689840a..373f09ee6 100644 --- a/src/display/components/header_details.rs +++ b/src/display/components/header_details.rs @@ -1,7 +1,6 @@ use std::time::{Duration, Instant}; use ratatui::{ - backend::Backend, layout::{Alignment, Rect}, style::{Color, Modifier, Style}, terminal::Frame, @@ -42,7 +41,7 @@ pub struct HeaderDetails<'a> { } impl<'a> HeaderDetails<'a> { - pub fn render(&self, frame: &mut Frame, rect: Rect) { + pub fn render(&self, frame: &mut Frame, rect: Rect) { let bandwidth = self.bandwidth_string(); let color = if self.paused { Color::Yellow @@ -63,13 +62,7 @@ impl<'a> HeaderDetails<'a> { self.render_bandwidth(frame, rect, &bandwidth, color); } - fn render_bandwidth( - &self, - frame: &mut Frame, - rect: Rect, - bandwidth: &str, - color: Color, - ) { + fn render_bandwidth(&self, frame: &mut Frame, rect: Rect, bandwidth: &str, color: Color) { let bandwidth_text = Span::styled( bandwidth, Style::default().fg(color).add_modifier(Modifier::BOLD), @@ -95,13 +88,7 @@ impl<'a> HeaderDetails<'a> { format!(" Total {t} (Up / Down): {up} / {down}{paused}") } - fn render_elapsed_time( - &self, - frame: &mut Frame, - rect: Rect, - elapsed_time: &str, - color: Color, - ) { + fn render_elapsed_time(&self, frame: &mut Frame, rect: Rect, elapsed_time: &str, color: Color) { let elapsed_time_text = Span::styled( elapsed_time, Style::default().fg(color).add_modifier(Modifier::BOLD), diff --git a/src/display/components/help_text.rs b/src/display/components/help_text.rs index de7aa3702..a18624982 100644 --- a/src/display/components/help_text.rs +++ b/src/display/components/help_text.rs @@ -1,5 +1,4 @@ use ratatui::{ - backend::Backend, layout::{Alignment, Rect}, style::{Modifier, Style}, terminal::Frame, @@ -22,7 +21,7 @@ const TEXT_WHEN_DNS_SHOWN: &str = " (DNS queries shown)."; const TEXT_TAB_TIP: &str = " Use to rearrange tables."; impl HelpText { - pub fn render(&self, frame: &mut Frame, rect: Rect) { + pub fn render(&self, frame: &mut Frame, rect: Rect) { let pause_content = if self.paused { TEXT_WHEN_PAUSED } else { diff --git a/src/display/components/layout.rs b/src/display/components/layout.rs index 60b7f2341..90cca0b34 100644 --- a/src/display/components/layout.rs +++ b/src/display/components/layout.rs @@ -1,5 +1,4 @@ use ratatui::{ - backend::Backend, layout::{Constraint, Direction, Rect}, terminal::Frame, }; @@ -100,7 +99,7 @@ impl<'a> Layout<'a> { } } - pub fn render(&self, frame: &mut Frame, rect: Rect, ui_offset: usize) { + pub fn render(&self, frame: &mut Frame, rect: Rect, ui_offset: usize) { let (top, app, bottom) = top_app_and_bottom_split(rect); let layout_slots = self.build_layout(app); for i in 0..layout_slots.len() { diff --git a/src/display/components/table.rs b/src/display/components/table.rs index ed9734957..a80142c44 100644 --- a/src/display/components/table.rs +++ b/src/display/components/table.rs @@ -3,7 +3,6 @@ use std::{collections::HashMap, fmt, iter::FromIterator, net::IpAddr, ops::Index use derivative::Derivative; use itertools::Itertools; use ratatui::{ - backend::Backend, layout::{Constraint, Rect}, style::{Color, Style}, terminal::Frame, @@ -326,7 +325,7 @@ impl Table { } /// See [`Table`] for layout rules. - pub fn render(&self, frame: &mut Frame, rect: Rect) { + pub fn render(&self, frame: &mut Frame, rect: Rect) { let (computed_layout, spacer_width) = { // pick the largest possible layout, constrained by the available width let &(_, layout) = self diff --git a/src/display/raw_terminal_backend.rs b/src/display/raw_terminal_backend.rs index fc08abcf1..4be38bbe1 100644 --- a/src/display/raw_terminal_backend.rs +++ b/src/display/raw_terminal_backend.rs @@ -10,7 +10,11 @@ use std::io; -use ratatui::{backend::Backend, buffer::Cell, layout::Rect}; +use ratatui::{ + backend::{Backend, WindowSize}, + buffer::Cell, + layout::{Rect, Size}, +}; pub struct RawTerminalBackend {} @@ -46,6 +50,13 @@ impl Backend for RawTerminalBackend { Ok(Rect::new(0, 0, 0, 0)) } + fn window_size(&mut self) -> io::Result { + Ok(WindowSize { + columns_rows: Size::default(), + pixels: Size::default(), + }) + } + fn flush(&mut self) -> io::Result<()> { Ok(()) } diff --git a/src/tests/fakes/fake_output.rs b/src/tests/fakes/fake_output.rs index ac6f3cd16..7741cc25e 100644 --- a/src/tests/fakes/fake_output.rs +++ b/src/tests/fakes/fake_output.rs @@ -4,7 +4,11 @@ use std::{ sync::{Arc, Mutex}, }; -use ratatui::{backend::Backend, buffer::Cell, layout::Rect}; +use ratatui::{ + backend::{Backend, WindowSize}, + buffer::Cell, + layout::{Rect, Size}, +}; #[derive(Hash, Debug, PartialEq)] pub enum TerminalEvent { @@ -109,6 +113,16 @@ impl Backend for TestBackend { Ok(Rect::new(0, 0, *terminal_width, *terminal_height)) } + fn window_size(&mut self) -> io::Result { + let width = *self.terminal_width.lock().unwrap(); + let height = *self.terminal_height.lock().unwrap(); + + Ok(WindowSize { + columns_rows: Size { width, height }, + pixels: Size::default(), + }) + } + fn flush(&mut self) -> io::Result<()> { self.events.lock().unwrap().push(TerminalEvent::Flush); Ok(())