diff --git a/Cargo.toml b/Cargo.toml index adcf79a068..cd5d3ad792 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -74,7 +74,6 @@ missing_errors_doc = "allow" missing_panics_doc = "allow" module_name_repetitions = "allow" must_use_candidate = "allow" -wildcard_imports = "allow" # nursery or restricted as_underscore = "warn" @@ -96,6 +95,7 @@ rest_pat_in_fully_bound_structs = "warn" string_lit_chars_any = "warn" string_slice = "warn" string_to_string = "warn" +unnecessary_self_imports = "warn" use_self = "warn" [features] diff --git a/examples/barchart.rs b/examples/barchart.rs index b71bd3dd87..a7763712b2 100644 --- a/examples/barchart.rs +++ b/examples/barchart.rs @@ -20,12 +20,16 @@ use std::{ }; use ratatui::{ + backend::{Backend, CrosstermBackend}, crossterm::{ event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode}, execute, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }, - prelude::*, + layout::{Constraint, Direction, Layout, Rect}, + style::{Color, Modifier, Style}, + terminal::{Frame, Terminal}, + text::{Line, Span}, widgets::{Bar, BarChart, BarGroup, Block, Paragraph}, }; diff --git a/examples/block.rs b/examples/block.rs index 385c87f448..506611b2f0 100644 --- a/examples/block.rs +++ b/examples/block.rs @@ -22,12 +22,16 @@ use std::{ use itertools::Itertools; use ratatui::{ + backend::CrosstermBackend, crossterm::{ event::{self, Event, KeyCode}, execute, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }, - prelude::*, + layout::{Alignment, Constraint, Layout, Rect}, + style::{Style, Stylize}, + terminal::Frame, + text::Line, widgets::{ block::{Position, Title}, Block, BorderType, Borders, Padding, Paragraph, Wrap, diff --git a/examples/calendar.rs b/examples/calendar.rs index 4861a786b2..e913d5109d 100644 --- a/examples/calendar.rs +++ b/examples/calendar.rs @@ -13,18 +13,19 @@ //! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples //! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md -#![allow(clippy::wildcard_imports)] - use std::{error::Error, io}; use ratatui::{ + backend::CrosstermBackend, crossterm::{ event::{self, Event, KeyCode}, execute, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }, - prelude::*, - widgets::calendar::*, + layout::{Constraint, Layout, Rect}, + style::{Color, Modifier, Style}, + widgets::calendar::{CalendarEventStore, DateStyler, Monthly}, + Frame, Terminal, }; use time::{Date, Month, OffsetDateTime}; @@ -55,8 +56,8 @@ fn main() -> Result<(), Box> { Ok(()) } -fn draw(f: &mut Frame) { - let app_area = f.size(); +fn draw(frame: &mut Frame) { + let app_area = frame.size(); let calarea = Rect { x: app_area.x + 1, @@ -83,7 +84,7 @@ fn draw(f: &mut Frame) { }); for col in cols { let cal = cals::get_cal(start.month(), start.year(), &list); - f.render_widget(cal, col); + frame.render_widget(cal, col); start = start.replace_month(start.month().next()).unwrap(); } } @@ -169,6 +170,7 @@ fn make_dates(current_year: i32) -> CalendarEventStore { } mod cals { + #[allow(clippy::wildcard_imports)] use super::*; pub fn get_cal<'a, DS: DateStyler>(m: Month, y: i32, es: DS) -> Monthly<'a, DS> { diff --git a/examples/canvas.rs b/examples/canvas.rs index 170490a9ad..78527b360e 100644 --- a/examples/canvas.rs +++ b/examples/canvas.rs @@ -13,21 +13,26 @@ //! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples //! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md -#![allow(clippy::wildcard_imports)] - use std::{ io::{self, stdout, Stdout}, time::{Duration, Instant}, }; use ratatui::{ + backend::CrosstermBackend, crossterm::{ event::{self, Event, KeyCode}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, ExecutableCommand, }, - prelude::*, - widgets::{canvas::*, *}, + layout::{Constraint, Layout, Rect}, + style::{Color, Stylize}, + symbols::Marker, + terminal::{Frame, Terminal}, + widgets::{ + canvas::{Canvas, Circle, Map, MapResolution, Rectangle}, + Block, Widget, + }, }; fn main() -> io::Result<()> { diff --git a/examples/chart.rs b/examples/chart.rs index 57903314d3..eb90074529 100644 --- a/examples/chart.rs +++ b/examples/chart.rs @@ -20,12 +20,17 @@ use std::{ }; use ratatui::{ + backend::{Backend, CrosstermBackend}, crossterm::{ event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode}, execute, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }, - prelude::*, + layout::{Alignment, Constraint, Layout, Rect}, + style::{Color, Modifier, Style, Stylize}, + symbols::{self, Marker}, + terminal::{Frame, Terminal}, + text::Span, widgets::{block::Title, Axis, Block, Chart, Dataset, GraphType, LegendPosition}, }; diff --git a/examples/colors.rs b/examples/colors.rs index 831216c2e5..8799b899db 100644 --- a/examples/colors.rs +++ b/examples/colors.rs @@ -25,12 +25,16 @@ use std::{ use itertools::Itertools; use ratatui::{ + backend::{Backend, CrosstermBackend}, crossterm::{ event::{self, Event, KeyCode}, execute, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }, - prelude::*, + layout::{Alignment, Constraint, Layout, Rect}, + style::{Color, Style, Stylize}, + terminal::{Frame, Terminal}, + text::Line, widgets::{Block, Borders, Paragraph}, }; diff --git a/examples/colors_rgb.rs b/examples/colors_rgb.rs index d19841942a..5196ca1a9b 100644 --- a/examples/colors_rgb.rs +++ b/examples/colors_rgb.rs @@ -35,12 +35,18 @@ use std::{ use color_eyre::{config::HookBuilder, eyre, Result}; use palette::{convert::FromColorUnclamped, Okhsv, Srgb}; use ratatui::{ + backend::{Backend, CrosstermBackend}, + buffer::Buffer, crossterm::{ event::{self, Event, KeyCode, KeyEventKind}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, ExecutableCommand, }, - prelude::*, + layout::{Constraint, Layout, Rect}, + style::Color, + terminal::Terminal, + text::Text, + widgets::Widget, }; #[derive(Debug, Default)] @@ -143,8 +149,7 @@ impl App { /// to update the colors to render. impl Widget for &mut App { fn render(self, area: Rect, buf: &mut Buffer) { - #[allow(clippy::enum_glob_use)] - use Constraint::*; + use Constraint::{Length, Min}; let [top, colors] = Layout::vertical([Length(1), Min(0)]).areas(area); let [title, fps] = Layout::horizontal([Min(0), Length(8)]).areas(top); Text::from("colors_rgb example. Press q to quit") diff --git a/examples/constraint-explorer.rs b/examples/constraint-explorer.rs index a369821508..e67aa95fad 100644 --- a/examples/constraint-explorer.rs +++ b/examples/constraint-explorer.rs @@ -13,23 +13,30 @@ //! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples //! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md -#![allow(clippy::enum_glob_use, clippy::wildcard_imports)] - use std::io::{self, stdout}; use color_eyre::{config::HookBuilder, Result}; use itertools::Itertools; use ratatui::{ + backend::{Backend, CrosstermBackend}, + buffer::Buffer, crossterm::{ event::{self, Event, KeyCode, KeyEventKind}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, ExecutableCommand, }, - layout::{Constraint::*, Flex}, - prelude::*, - style::palette::tailwind::*, - symbols::line, - widgets::{Block, Paragraph, Wrap}, + layout::{ + Constraint::{self, Fill, Length, Max, Min, Percentage, Ratio}, + Flex, Layout, Rect, + }, + style::{ + palette::tailwind::{BLUE, SKY, SLATE, STONE}, + Color, Style, Stylize, + }, + symbols::{self, line}, + terminal::Terminal, + text::{Line, Span, Text}, + widgets::{Block, Paragraph, Widget, Wrap}, }; use strum::{Display, EnumIter, FromRepr}; @@ -123,24 +130,23 @@ impl App { } fn handle_events(&mut self) -> Result<()> { - use KeyCode::*; match event::read()? { Event::Key(key) if key.kind == KeyEventKind::Press => match key.code { - Char('q') | Esc => self.exit(), - Char('1') => self.swap_constraint(ConstraintName::Min), - Char('2') => self.swap_constraint(ConstraintName::Max), - Char('3') => self.swap_constraint(ConstraintName::Length), - Char('4') => self.swap_constraint(ConstraintName::Percentage), - Char('5') => self.swap_constraint(ConstraintName::Ratio), - Char('6') => self.swap_constraint(ConstraintName::Fill), - Char('+') => self.increment_spacing(), - Char('-') => self.decrement_spacing(), - Char('x') => self.delete_block(), - Char('a') => self.insert_block(), - Char('k') | Up => self.increment_value(), - Char('j') | Down => self.decrement_value(), - Char('h') | Left => self.prev_block(), - Char('l') | Right => self.next_block(), + KeyCode::Char('q') | KeyCode::Esc => self.exit(), + KeyCode::Char('1') => self.swap_constraint(ConstraintName::Min), + KeyCode::Char('2') => self.swap_constraint(ConstraintName::Max), + KeyCode::Char('3') => self.swap_constraint(ConstraintName::Length), + KeyCode::Char('4') => self.swap_constraint(ConstraintName::Percentage), + KeyCode::Char('5') => self.swap_constraint(ConstraintName::Ratio), + KeyCode::Char('6') => self.swap_constraint(ConstraintName::Fill), + KeyCode::Char('+') => self.increment_spacing(), + KeyCode::Char('-') => self.decrement_spacing(), + KeyCode::Char('x') => self.delete_block(), + KeyCode::Char('a') => self.insert_block(), + KeyCode::Char('k') | KeyCode::Up => self.increment_value(), + KeyCode::Char('j') | KeyCode::Down => self.decrement_value(), + KeyCode::Char('h') | KeyCode::Left => self.prev_block(), + KeyCode::Char('l') | KeyCode::Right => self.next_block(), _ => {} }, _ => {} diff --git a/examples/constraints.rs b/examples/constraints.rs index 7c9149e614..89733f11ac 100644 --- a/examples/constraints.rs +++ b/examples/constraints.rs @@ -13,21 +13,29 @@ //! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples //! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md -#![allow(clippy::enum_glob_use, clippy::wildcard_imports)] - use std::io::{self, stdout}; use color_eyre::{config::HookBuilder, Result}; use ratatui::{ + backend::{Backend, CrosstermBackend}, + buffer::Buffer, crossterm::{ event::{self, Event, KeyCode, KeyEventKind}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, ExecutableCommand, }, - layout::Constraint::*, - prelude::*, - style::palette::tailwind, - widgets::*, + layout::{ + Constraint::{self, Fill, Length, Max, Min, Percentage, Ratio}, + Layout, Rect, + }, + style::{palette::tailwind, Color, Modifier, Style, Stylize}, + symbols, + terminal::Terminal, + text::Line, + widgets::{ + Block, Padding, Paragraph, Scrollbar, ScrollbarOrientation, ScrollbarState, StatefulWidget, + Tabs, Widget, + }, }; use strum::{Display, EnumIter, FromRepr, IntoEnumIterator}; @@ -113,18 +121,17 @@ impl App { fn handle_events(&mut self) -> Result<()> { if let Event::Key(key) = event::read()? { - use KeyCode::*; if key.kind != KeyEventKind::Press { return Ok(()); } match key.code { - Char('q') | Esc => self.quit(), - Char('l') | Right => self.next(), - Char('h') | Left => self.previous(), - Char('j') | Down => self.down(), - Char('k') | Up => self.up(), - Char('g') | Home => self.top(), - Char('G') | End => self.bottom(), + KeyCode::Char('q') | KeyCode::Esc => self.quit(), + KeyCode::Char('l') | KeyCode::Right => self.next(), + KeyCode::Char('h') | KeyCode::Left => self.previous(), + KeyCode::Char('j') | KeyCode::Down => self.down(), + KeyCode::Char('k') | KeyCode::Up => self.up(), + KeyCode::Char('g') | KeyCode::Home => self.top(), + KeyCode::Char('G') | KeyCode::End => self.bottom(), _ => (), } } diff --git a/examples/custom_widget.rs b/examples/custom_widget.rs index d5d00bd02f..821fdbf902 100644 --- a/examples/custom_widget.rs +++ b/examples/custom_widget.rs @@ -16,6 +16,8 @@ use std::{error::Error, io, ops::ControlFlow, time::Duration}; use ratatui::{ + backend::{Backend, CrosstermBackend}, + buffer::Buffer, crossterm::{ event::{ self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode, MouseButton, MouseEvent, @@ -24,8 +26,11 @@ use ratatui::{ execute, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }, - prelude::*, - widgets::Paragraph, + layout::{Constraint, Layout, Rect}, + style::{Color, Style}, + terminal::{Frame, Terminal}, + text::Line, + widgets::{Paragraph, Widget}, }; /// A custom widget that renders a button with a label, theme and state. diff --git a/examples/demo/crossterm.rs b/examples/demo/crossterm.rs index 3ab93c1a5b..f9dcfe8026 100644 --- a/examples/demo/crossterm.rs +++ b/examples/demo/crossterm.rs @@ -5,12 +5,13 @@ use std::{ }; use ratatui::{ + backend::{Backend, CrosstermBackend}, crossterm::{ event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode, KeyEventKind}, execute, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }, - prelude::*, + terminal::Terminal, }; use crate::{app::App, ui}; diff --git a/examples/demo/termion.rs b/examples/demo/termion.rs index 8b49ed5e87..66e2d2a508 100644 --- a/examples/demo/termion.rs +++ b/examples/demo/termion.rs @@ -1,7 +1,8 @@ use std::{error::Error, io, sync::mpsc, thread, time::Duration}; use ratatui::{ - prelude::*, + backend::{Backend, TermionBackend}, + terminal::Terminal, termion::{ event::Key, input::{MouseTerminal, TermRead}, diff --git a/examples/demo/termwiz.rs b/examples/demo/termwiz.rs index 030be7b818..a67ad2f552 100644 --- a/examples/demo/termwiz.rs +++ b/examples/demo/termwiz.rs @@ -4,7 +4,8 @@ use std::{ }; use ratatui::{ - prelude::*, + backend::TermwizBackend, + terminal::Terminal, termwiz::{ input::{InputEvent, KeyCode}, terminal::Terminal as TermwizTerminal, diff --git a/examples/demo/ui.rs b/examples/demo/ui.rs index 0bf197cd64..2fc8582f96 100644 --- a/examples/demo/ui.rs +++ b/examples/demo/ui.rs @@ -1,7 +1,14 @@ -#[allow(clippy::wildcard_imports)] use ratatui::{ - prelude::*, - widgets::{canvas::*, *}, + layout::{Constraint, Layout, Rect}, + style::{Color, Modifier, Style}, + symbols, + terminal::Frame, + text::{self, Span}, + widgets::{ + canvas::{self, Canvas, Circle, Map, MapResolution, Rectangle}, + Axis, BarChart, Block, Cell, Chart, Dataset, Gauge, LineGauge, List, ListItem, Paragraph, + Row, Sparkline, Table, Tabs, Wrap, + }, }; use crate::app::App; diff --git a/examples/demo2/app.rs b/examples/demo2/app.rs index 480a01e9ed..ffa9f6531a 100644 --- a/examples/demo2/app.rs +++ b/examples/demo2/app.rs @@ -3,13 +3,22 @@ use std::time::Duration; use color_eyre::{eyre::Context, Result}; use itertools::Itertools; use ratatui::{ + backend::Backend, + buffer::Buffer, crossterm::event::{Event, KeyCode, KeyEvent, KeyEventKind}, - prelude::*, - widgets::*, + layout::{Constraint, Layout, Rect}, + style::Color, + terminal::Terminal, + text::{Line, Span}, + widgets::{Block, Tabs, Widget}, }; use strum::{Display, EnumIter, FromRepr, IntoEnumIterator}; -use crate::{destroy, tabs::*, term, THEME}; +use crate::{ + destroy, + tabs::{AboutTab, EmailTab, RecipeTab, TracerouteTab, WeatherTab}, + term, THEME, +}; #[derive(Debug, Default, Clone, Copy, PartialEq, Eq)] pub struct App { @@ -85,14 +94,13 @@ impl App { } fn handle_key_press(&mut self, key: KeyEvent) { - use KeyCode::*; match key.code { - Char('q') | Esc => self.mode = Mode::Quit, - Char('h') | Left => self.prev_tab(), - Char('l') | Right => self.next_tab(), - Char('k') | Up => self.prev(), - Char('j') | Down => self.next(), - Char('d') | Delete => self.destroy(), + KeyCode::Char('q') | KeyCode::Esc => self.mode = Mode::Quit, + KeyCode::Char('h') | KeyCode::Left => self.prev_tab(), + KeyCode::Char('l') | KeyCode::Right => self.next_tab(), + KeyCode::Char('k') | KeyCode::Up => self.prev(), + KeyCode::Char('j') | KeyCode::Down => self.next(), + KeyCode::Char('d') | KeyCode::Delete => self.destroy(), _ => {} }; } diff --git a/examples/demo2/big_text.rs b/examples/demo2/big_text.rs index 05d3667ee3..f86112201d 100644 --- a/examples/demo2/big_text.rs +++ b/examples/demo2/big_text.rs @@ -20,7 +20,16 @@ //! //! ```rust //! use anyhow::Result; -//! use ratatui::prelude::*; +//! use ratatui::{ +//! backend::{self, Backend, CrosstermBackend}, +//! buffer::{self, Buffer}, +//! layout::{self, Alignment, Constraint, Direction, Layout, Margin, Rect}, +//! style::{self, Color, Modifier, Style, Styled, Stylize}, +//! symbols::{self, Marker}, +//! terminal::{CompletedFrame, Frame, Terminal, TerminalOptions, Viewport}, +//! text::{self, Line, Masked, Span, Text}, +//! widgets::{block::BlockExt, StatefulWidget, Widget}, +//! }; //! use tui_big_text::{BigTextBuilder, PixelSize}; //! //! fn render(frame: &mut Frame) -> Result<()> { @@ -50,7 +59,13 @@ use std::cmp::min; use derive_builder::Builder; use font8x8::UnicodeFonts; -use ratatui::{prelude::*, text::StyledGrapheme}; +use ratatui::{ + buffer::Buffer, + layout::Rect, + style::Style, + text::{Line, StyledGrapheme}, + widgets::Widget, +}; #[allow(unused)] #[derive(Debug, Clone, Copy, Eq, PartialEq, Hash, Default)] @@ -79,7 +94,16 @@ pub enum PixelSize { /// # Examples /// /// ```rust -/// use ratatui::prelude::*; +/// use ratatui::{ +/// backend::{self, Backend, CrosstermBackend}, +/// buffer::{self, Buffer}, +/// layout::{self, Alignment, Constraint, Direction, Layout, Margin, Rect}, +/// style::{self, Color, Modifier, Style, Styled, Stylize}, +/// symbols::{self, Marker}, +/// terminal::{CompletedFrame, Frame, Terminal, TerminalOptions, Viewport}, +/// text::{self, Line, Masked, Span, Text}, +/// widgets::{block::BlockExt, StatefulWidget, Widget}, +/// }; /// use tui_big_text::{BigTextBuilder, PixelSize}; /// /// BigText::builder() @@ -276,6 +300,8 @@ fn render_glyph(glyph: [u8; 8], area: Rect, buf: &mut Buffer, pixel_size: PixelS #[cfg(test)] mod tests { + use ratatui::style::Stylize; + use super::*; type Result = std::result::Result>; diff --git a/examples/demo2/colors.rs b/examples/demo2/colors.rs index ec882567a7..893b02d1b6 100644 --- a/examples/demo2/colors.rs +++ b/examples/demo2/colors.rs @@ -1,5 +1,5 @@ use palette::{IntoColor, Okhsv, Srgb}; -use ratatui::prelude::*; +use ratatui::{buffer::Buffer, layout::Rect, style::Color, widgets::Widget}; /// A widget that renders a color swatch of RGB colors. /// diff --git a/examples/demo2/destroy.rs b/examples/demo2/destroy.rs index d4e06173de..ddeb3082b1 100644 --- a/examples/demo2/destroy.rs +++ b/examples/demo2/destroy.rs @@ -1,6 +1,12 @@ use rand::Rng; use rand_chacha::rand_core::SeedableRng; -use ratatui::{layout::Flex, prelude::*}; +use ratatui::{ + buffer::Buffer, + layout::{Flex, Layout, Rect}, + style::{Color, Style}, + terminal::Frame, + widgets::Widget, +}; use unicode_width::UnicodeWidthStr; use crate::big_text::{BigTextBuilder, PixelSize}; diff --git a/examples/demo2/main.rs b/examples/demo2/main.rs index be511476f2..2971260426 100644 --- a/examples/demo2/main.rs +++ b/examples/demo2/main.rs @@ -14,11 +14,9 @@ //! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md #![allow( - clippy::enum_glob_use, clippy::missing_errors_doc, clippy::module_name_repetitions, - clippy::must_use_candidate, - clippy::wildcard_imports + clippy::must_use_candidate )] mod app; @@ -30,16 +28,17 @@ mod tabs; mod term; mod theme; -pub use app::*; use color_eyre::Result; -pub use colors::*; -pub use term::*; -pub use theme::*; + +pub use self::{ + colors::{color_from_oklab, RgbSwatch}, + theme::THEME, +}; fn main() -> Result<()> { errors::init_hooks()?; let terminal = &mut term::init()?; - App::default().run(terminal)?; + app::run(terminal)?; term::restore()?; Ok(()) } diff --git a/examples/demo2/tabs/about.rs b/examples/demo2/tabs/about.rs index 802bff519c..374572cf7d 100644 --- a/examples/demo2/tabs/about.rs +++ b/examples/demo2/tabs/about.rs @@ -1,5 +1,9 @@ use itertools::Itertools; -use ratatui::{prelude::*, widgets::*}; +use ratatui::{ + buffer::Buffer, + layout::{Alignment, Constraint, Layout, Margin, Rect}, + widgets::{Block, Borders, Clear, Padding, Paragraph, Widget, Wrap}, +}; use crate::{RgbSwatch, THEME}; diff --git a/examples/demo2/tabs/email.rs b/examples/demo2/tabs/email.rs index 2a5e2a0d66..ab0f6c3119 100644 --- a/examples/demo2/tabs/email.rs +++ b/examples/demo2/tabs/email.rs @@ -1,5 +1,14 @@ use itertools::Itertools; -use ratatui::{prelude::*, widgets::*}; +use ratatui::{ + buffer::Buffer, + layout::{Constraint, Layout, Margin, Rect}, + style::{Styled, Stylize}, + text::Line, + widgets::{ + Block, BorderType, Borders, Clear, List, ListItem, ListState, Padding, Paragraph, + Scrollbar, ScrollbarState, StatefulWidget, Tabs, Widget, + }, +}; use unicode_width::UnicodeWidthStr; use crate::{RgbSwatch, THEME}; diff --git a/examples/demo2/tabs/recipe.rs b/examples/demo2/tabs/recipe.rs index c38945ec55..e17a7892c8 100644 --- a/examples/demo2/tabs/recipe.rs +++ b/examples/demo2/tabs/recipe.rs @@ -1,5 +1,14 @@ use itertools::Itertools; -use ratatui::{prelude::*, widgets::*}; +use ratatui::{ + buffer::Buffer, + layout::{Alignment, Constraint, Layout, Margin, Rect}, + style::{Style, Stylize}, + text::Line, + widgets::{ + Block, Clear, Padding, Paragraph, Row, Scrollbar, ScrollbarOrientation, ScrollbarState, + StatefulWidget, Table, TableState, Widget, Wrap, + }, +}; use crate::{RgbSwatch, THEME}; diff --git a/examples/demo2/tabs/traceroute.rs b/examples/demo2/tabs/traceroute.rs index cd5bc5c0e6..4b11703cdc 100644 --- a/examples/demo2/tabs/traceroute.rs +++ b/examples/demo2/tabs/traceroute.rs @@ -1,7 +1,14 @@ use itertools::Itertools; use ratatui::{ - prelude::*, - widgets::{canvas::*, *}, + buffer::Buffer, + layout::{Alignment, Constraint, Layout, Margin, Rect}, + style::{Styled, Stylize}, + symbols::Marker, + widgets::{ + canvas::{self, Canvas, Map, MapResolution, Points}, + Block, BorderType, Clear, Padding, Row, Scrollbar, ScrollbarOrientation, ScrollbarState, + Sparkline, StatefulWidget, Table, TableState, Widget, + }, }; use crate::{RgbSwatch, THEME}; @@ -104,7 +111,7 @@ fn render_map(selected_row: usize, area: Rect, buf: &mut Buffer) { let theme = THEME.traceroute.map; let path: Option<(&Hop, &Hop)> = HOPS.iter().tuple_windows().nth(selected_row); let map = Map { - resolution: canvas::MapResolution::High, + resolution: MapResolution::High, color: theme.color, }; Canvas::default() diff --git a/examples/demo2/tabs/weather.rs b/examples/demo2/tabs/weather.rs index 439c9ed377..bf09b0e847 100644 --- a/examples/demo2/tabs/weather.rs +++ b/examples/demo2/tabs/weather.rs @@ -1,8 +1,14 @@ use itertools::Itertools; use palette::Okhsv; use ratatui::{ - prelude::*, - widgets::{calendar::CalendarEventStore, *}, + buffer::Buffer, + layout::{Constraint, Direction, Layout, Margin, Rect}, + style::{Color, Style, Stylize}, + symbols, + widgets::{ + calendar::{CalendarEventStore, Monthly}, + Bar, BarChart, BarGroup, Block, Clear, LineGauge, Padding, Widget, + }, }; use time::OffsetDateTime; @@ -59,7 +65,7 @@ impl Widget for WeatherTab { fn render_calendar(area: Rect, buf: &mut Buffer) { let date = OffsetDateTime::now_utc().date(); - calendar::Monthly::new(date, CalendarEventStore::today(Style::new().red().bold())) + Monthly::new(date, CalendarEventStore::today(Style::new().red().bold())) .block(Block::new().padding(Padding::new(0, 0, 2, 0))) .show_month_header(Style::new().bold()) .show_weekdays_header(Style::new().italic()) diff --git a/examples/demo2/term.rs b/examples/demo2/term.rs index 9c1ff3fdb9..fa54720ed8 100644 --- a/examples/demo2/term.rs +++ b/examples/demo2/term.rs @@ -5,12 +5,14 @@ use std::{ use color_eyre::{eyre::WrapErr, Result}; use ratatui::{ + backend::{Backend, CrosstermBackend}, crossterm::{ event::{self, Event}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, ExecutableCommand, }, - prelude::*, + layout::Rect, + terminal::{Terminal, TerminalOptions, Viewport}, }; pub fn init() -> Result> { diff --git a/examples/demo2/theme.rs b/examples/demo2/theme.rs index a61aa03b57..e960d7ef7d 100644 --- a/examples/demo2/theme.rs +++ b/examples/demo2/theme.rs @@ -1,4 +1,4 @@ -use ratatui::prelude::*; +use ratatui::style::{Color, Modifier, Style}; pub struct Theme { pub root: Style, diff --git a/examples/docsrs.rs b/examples/docsrs.rs index d2b58b13e3..86a7e3420c 100644 --- a/examples/docsrs.rs +++ b/examples/docsrs.rs @@ -16,12 +16,16 @@ use std::io::{self, stdout}; use ratatui::{ + backend::CrosstermBackend, crossterm::{ event::{self, Event, KeyCode}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, ExecutableCommand, }, - prelude::*, + layout::{Constraint, Layout}, + style::{Color, Modifier, Style, Stylize}, + terminal::{Frame, Terminal}, + text::{Line, Span, Text}, widgets::{Block, Borders, Paragraph}, }; diff --git a/examples/flex.rs b/examples/flex.rs index 706e3e2ba6..60d6d19b8a 100644 --- a/examples/flex.rs +++ b/examples/flex.rs @@ -13,22 +13,30 @@ //! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples //! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md -#![allow(clippy::enum_glob_use, clippy::wildcard_imports)] - use std::io::{self, stdout}; use color_eyre::{config::HookBuilder, Result}; use ratatui::{ + backend::{Backend, CrosstermBackend}, + buffer::Buffer, crossterm::{ event::{self, Event, KeyCode, KeyEventKind}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, ExecutableCommand, }, - layout::{Constraint::*, Flex}, - prelude::*, - style::palette::tailwind, - symbols::line, - widgets::{block::Title, *}, + layout::{ + Alignment, + Constraint::{self, Fill, Length, Max, Min, Percentage, Ratio}, + Flex, Layout, Rect, + }, + style::{palette::tailwind, Color, Modifier, Style, Stylize}, + symbols::{self, line}, + terminal::Terminal, + text::{Line, Text}, + widgets::{ + block::Title, Block, Paragraph, Scrollbar, ScrollbarOrientation, ScrollbarState, + StatefulWidget, Tabs, Widget, + }, }; use strum::{Display, EnumIter, FromRepr, IntoEnumIterator}; @@ -177,18 +185,17 @@ impl App { } fn handle_events(&mut self) -> Result<()> { - use KeyCode::*; match event::read()? { Event::Key(key) if key.kind == KeyEventKind::Press => match key.code { - Char('q') | Esc => self.quit(), - Char('l') | Right => self.next(), - Char('h') | Left => self.previous(), - Char('j') | Down => self.down(), - Char('k') | Up => self.up(), - Char('g') | Home => self.top(), - Char('G') | End => self.bottom(), - Char('+') => self.increment_spacing(), - Char('-') => self.decrement_spacing(), + KeyCode::Char('q') | KeyCode::Esc => self.quit(), + KeyCode::Char('l') | KeyCode::Right => self.next(), + KeyCode::Char('h') | KeyCode::Left => self.previous(), + KeyCode::Char('j') | KeyCode::Down => self.down(), + KeyCode::Char('k') | KeyCode::Up => self.up(), + KeyCode::Char('g') | KeyCode::Home => self.top(), + KeyCode::Char('G') | KeyCode::End => self.bottom(), + KeyCode::Char('+') => self.increment_spacing(), + KeyCode::Char('-') => self.decrement_spacing(), _ => (), }, _ => {} @@ -364,7 +371,7 @@ impl SelectedTab { /// Convert a `SelectedTab` into a `Line` to display it by the `Tabs` widget. fn to_tab_title(value: Self) -> Line<'static> { - use tailwind::*; + use tailwind::{INDIGO, ORANGE, SKY}; let text = value.to_string(); let color = match value { Self::Legacy => ORANGE.c400, @@ -509,7 +516,7 @@ impl Example { } const fn color_for_constraint(constraint: Constraint) -> Color { - use tailwind::*; + use tailwind::{BLUE, SLATE}; match constraint { Constraint::Min(_) => BLUE.c900, Constraint::Max(_) => BLUE.c800, diff --git a/examples/gauge.rs b/examples/gauge.rs index 86428efc7d..38d5ce75e9 100644 --- a/examples/gauge.rs +++ b/examples/gauge.rs @@ -13,20 +13,22 @@ //! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples //! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md -#![allow(clippy::enum_glob_use)] - use std::{io::stdout, time::Duration}; use color_eyre::{config::HookBuilder, Result}; use ratatui::{ + backend::{Backend, CrosstermBackend}, + buffer::Buffer, crossterm::{ event::{self, Event, KeyCode, KeyEventKind}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, ExecutableCommand, }, - prelude::*, - style::palette::tailwind, - widgets::{block::Title, Block, Borders, Gauge, Padding, Paragraph}, + layout::{Alignment, Constraint, Layout, Rect}, + style::{palette::tailwind, Color, Style, Stylize}, + terminal::Terminal, + text::Span, + widgets::{block::Title, Block, Borders, Gauge, Padding, Paragraph, Widget}, }; const GAUGE1_COLOR: Color = tailwind::RED.c800; @@ -99,10 +101,9 @@ impl App { if event::poll(timeout)? { if let Event::Key(key) = event::read()? { if key.kind == KeyEventKind::Press { - use KeyCode::*; match key.code { - Char(' ') | Enter => self.start(), - Char('q') | Esc => self.quit(), + KeyCode::Char(' ') | KeyCode::Enter => self.start(), + KeyCode::Char('q') | KeyCode::Esc => self.quit(), _ => {} } } @@ -123,7 +124,7 @@ impl App { impl Widget for &App { #[allow(clippy::similar_names)] fn render(self, area: Rect, buf: &mut Buffer) { - use Constraint::*; + use Constraint::{Length, Min, Ratio}; let layout = Layout::vertical([Length(2), Min(0), Length(1)]); let [header_area, gauge_area, footer_area] = layout.areas(area); diff --git a/examples/hello_world.rs b/examples/hello_world.rs index cc6b3874ae..5bdda7d37b 100644 --- a/examples/hello_world.rs +++ b/examples/hello_world.rs @@ -20,12 +20,13 @@ use std::{ use anyhow::{Context, Result}; use ratatui::{ + backend::CrosstermBackend, crossterm::{ event::{self, Event, KeyCode}, execute, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }, - prelude::*, + terminal::{Frame, Terminal}, widgets::Paragraph, }; diff --git a/examples/inline.rs b/examples/inline.rs index 71cf841a95..1992761e80 100644 --- a/examples/inline.rs +++ b/examples/inline.rs @@ -13,8 +13,6 @@ //! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples //! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md -#![allow(clippy::wildcard_imports)] - use std::{ collections::{BTreeMap, VecDeque}, error::Error, @@ -25,7 +23,16 @@ use std::{ }; use rand::distributions::{Distribution, Uniform}; -use ratatui::{prelude::*, widgets::*}; +use ratatui::{ + backend::{Backend, CrosstermBackend}, + layout::{Alignment, Constraint, Layout, Rect}, + style::{Color, Modifier, Style}, + symbols, + terminal::{Frame, Terminal, Viewport}, + text::{Line, Span}, + widgets::{block, Block, Gauge, LineGauge, List, ListItem, Paragraph, Widget}, + TerminalOptions, +}; const NUM_DOWNLOADS: usize = 10; diff --git a/examples/layout.rs b/examples/layout.rs index 3facac5832..f507bc0433 100644 --- a/examples/layout.rs +++ b/examples/layout.rs @@ -13,19 +13,24 @@ //! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples //! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md -#![allow(clippy::enum_glob_use)] - use std::{error::Error, io}; use itertools::Itertools; use ratatui::{ + backend::{Backend, CrosstermBackend}, crossterm::{ event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode}, execute, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }, - layout::Constraint::*, - prelude::*, + layout::{ + Constraint, + Constraint::{Length, Max, Min, Percentage, Ratio}, + Layout, Rect, + }, + style::{Color, Style, Stylize}, + terminal::{Frame, Terminal}, + text::Line, widgets::{Block, Paragraph}, }; diff --git a/examples/line_gauge.rs b/examples/line_gauge.rs index 0bec1785fb..a14ddf47cc 100644 --- a/examples/line_gauge.rs +++ b/examples/line_gauge.rs @@ -17,14 +17,17 @@ use std::{io::stdout, time::Duration}; use color_eyre::{config::HookBuilder, Result}; use ratatui::{ + backend::{Backend, CrosstermBackend}, + buffer::Buffer, crossterm::{ event::{self, Event, KeyCode, KeyEventKind}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, ExecutableCommand, }, - prelude::*, - style::palette::tailwind, - widgets::{block::Title, *}, + layout::{Alignment, Constraint, Layout, Rect}, + style::{palette::tailwind, Color, Style, Stylize}, + terminal::Terminal, + widgets::{block::Title, Block, Borders, LineGauge, Padding, Paragraph, Widget}, }; const CUSTOM_LABEL_COLOR: Color = tailwind::SLATE.c200; diff --git a/examples/list.rs b/examples/list.rs index d4baecb199..9499fbb815 100644 --- a/examples/list.rs +++ b/examples/list.rs @@ -13,20 +13,25 @@ //! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples //! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md -#![allow(clippy::enum_glob_use, clippy::wildcard_imports)] - use std::{error::Error, io, io::stdout}; use color_eyre::config::HookBuilder; use ratatui::{ + backend::{Backend, CrosstermBackend}, + buffer::Buffer, crossterm::{ event::{self, Event, KeyCode, KeyEventKind}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, ExecutableCommand, }, - prelude::*, - style::palette::tailwind, - widgets::*, + layout::{Alignment, Constraint, Layout, Rect}, + style::{palette::tailwind, Color, Modifier, Style, Stylize}, + terminal::Terminal, + text::Line, + widgets::{ + Block, Borders, HighlightSpacing, List, ListItem, ListState, Padding, Paragraph, + StatefulWidget, Widget, Wrap, + }, }; const TODO_HEADER_BG: Color = tailwind::BLUE.c950; @@ -156,15 +161,16 @@ impl App { if let Event::Key(key) = event::read()? { if key.kind == KeyEventKind::Press { - use KeyCode::*; match key.code { - Char('q') | Esc => return Ok(()), - Char('h') | Left => self.items.unselect(), - Char('j') | Down => self.items.next(), - Char('k') | Up => self.items.previous(), - Char('l') | Right | Enter => self.change_status(), - Char('g') => self.go_top(), - Char('G') => self.go_bottom(), + KeyCode::Char('q') | KeyCode::Esc => return Ok(()), + KeyCode::Char('h') | KeyCode::Left => self.items.unselect(), + KeyCode::Char('j') | KeyCode::Down => self.items.next(), + KeyCode::Char('k') | KeyCode::Up => self.items.previous(), + KeyCode::Char('l') | KeyCode::Right | KeyCode::Enter => { + self.change_status(); + } + KeyCode::Char('g') => self.go_top(), + KeyCode::Char('G') => self.go_bottom(), _ => {} } } diff --git a/examples/modifiers.rs b/examples/modifiers.rs index 20954cd084..107ee9ea5e 100644 --- a/examples/modifiers.rs +++ b/examples/modifiers.rs @@ -27,12 +27,16 @@ use std::{ use itertools::Itertools; use ratatui::{ + backend::{Backend, CrosstermBackend}, crossterm::{ event::{self, Event, KeyCode}, execute, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }, - prelude::*, + layout::{Constraint, Layout}, + style::{Color, Modifier, Style, Stylize}, + terminal::{Frame, Terminal}, + text::Line, widgets::Paragraph, }; diff --git a/examples/panic.rs b/examples/panic.rs index a82bc52590..5a36628e4d 100644 --- a/examples/panic.rs +++ b/examples/panic.rs @@ -32,11 +32,13 @@ use std::{error::Error, io}; use ratatui::{ + backend::{Backend, CrosstermBackend}, crossterm::{ event::{self, Event, KeyCode}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }, - prelude::*, + terminal::{Frame, Terminal}, + text::Line, widgets::{Block, Paragraph}, }; diff --git a/examples/paragraph.rs b/examples/paragraph.rs index 38f1c994dd..c9e421ffc8 100644 --- a/examples/paragraph.rs +++ b/examples/paragraph.rs @@ -20,12 +20,16 @@ use std::{ }; use ratatui::{ + backend::{Backend, CrosstermBackend}, crossterm::{ event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode}, execute, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }, - prelude::*, + layout::{Constraint, Layout}, + style::{Color, Modifier, Style, Stylize}, + terminal::{Frame, Terminal}, + text::{Line, Masked, Span}, widgets::{Block, Paragraph, Wrap}, }; diff --git a/examples/popup.rs b/examples/popup.rs index 0b4ce10690..1245de83f9 100644 --- a/examples/popup.rs +++ b/examples/popup.rs @@ -19,12 +19,15 @@ use std::{error::Error, io}; use ratatui::{ + backend::{Backend, CrosstermBackend}, crossterm::{ event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode, KeyEventKind}, execute, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }, - prelude::*, + layout::{Constraint, Layout, Rect}, + style::Stylize, + terminal::{Frame, Terminal}, widgets::{Block, Clear, Paragraph, Wrap}, }; diff --git a/examples/ratatui-logo.rs b/examples/ratatui-logo.rs index 30a421ec89..2cb6c146e8 100644 --- a/examples/ratatui-logo.rs +++ b/examples/ratatui-logo.rs @@ -22,9 +22,11 @@ use std::{ use indoc::indoc; use itertools::izip; use ratatui::{ + backend::{Backend, CrosstermBackend}, crossterm::terminal::{disable_raw_mode, enable_raw_mode}, - prelude::*, + terminal::{Terminal, Viewport}, widgets::Paragraph, + TerminalOptions, }; /// A fun example of using half block characters to draw a logo diff --git a/examples/scrollbar.rs b/examples/scrollbar.rs index 9601becabe..d414bd6ac7 100644 --- a/examples/scrollbar.rs +++ b/examples/scrollbar.rs @@ -14,7 +14,6 @@ //! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md #![warn(clippy::pedantic)] -#![allow(clippy::wildcard_imports)] use std::{ error::Error, @@ -23,14 +22,18 @@ use std::{ }; use ratatui::{ + backend::{Backend, CrosstermBackend}, crossterm::{ event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode}, execute, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }, - prelude::*, + layout::{Alignment, Constraint, Layout, Margin}, + style::{Color, Style, Stylize}, symbols::scrollbar, - widgets::*, + terminal::{Frame, Terminal}, + text::{Line, Masked, Span}, + widgets::{Block, Paragraph, Scrollbar, ScrollbarOrientation, ScrollbarState}, }; #[derive(Default)] diff --git a/examples/sparkline.rs b/examples/sparkline.rs index cc4523ef0d..500ee60562 100644 --- a/examples/sparkline.rs +++ b/examples/sparkline.rs @@ -24,12 +24,15 @@ use rand::{ rngs::ThreadRng, }; use ratatui::{ + backend::{Backend, CrosstermBackend}, crossterm::{ event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode}, execute, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }, - prelude::*, + layout::{Constraint, Layout}, + style::{Color, Style}, + terminal::{Frame, Terminal}, widgets::{Block, Borders, Sparkline}, }; diff --git a/examples/table.rs b/examples/table.rs index 3d9cd20206..7bcad18427 100644 --- a/examples/table.rs +++ b/examples/table.rs @@ -13,19 +13,24 @@ //! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples //! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md -#![allow(clippy::enum_glob_use, clippy::wildcard_imports)] - use std::{error::Error, io}; use itertools::Itertools; use ratatui::{ + backend::{Backend, CrosstermBackend}, crossterm::{ event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode, KeyEventKind}, execute, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }, - prelude::*, - widgets::*, + layout::{Constraint, Layout, Margin, Rect}, + style::{self, Color, Modifier, Style, Stylize}, + terminal::{Frame, Terminal}, + text::{Line, Text}, + widgets::{ + Block, BorderType, Cell, HighlightSpacing, Paragraph, Row, Scrollbar, ScrollbarOrientation, + ScrollbarState, Table, TableState, + }, }; use style::palette::tailwind; use unicode_width::UnicodeWidthStr; @@ -215,13 +220,12 @@ fn run_app(terminal: &mut Terminal, mut app: App) -> io::Result<( if let Event::Key(key) = event::read()? { if key.kind == KeyEventKind::Press { - use KeyCode::*; match key.code { - Char('q') | Esc => return Ok(()), - Char('j') | Down => app.next(), - Char('k') | Up => app.previous(), - Char('l') | Right => app.next_color(), - Char('h') | Left => app.previous_color(), + KeyCode::Char('q') | KeyCode::Esc => return Ok(()), + KeyCode::Char('j') | KeyCode::Down => app.next(), + KeyCode::Char('k') | KeyCode::Up => app.previous(), + KeyCode::Char('l') | KeyCode::Right => app.next_color(), + KeyCode::Char('h') | KeyCode::Left => app.previous_color(), _ => {} } } diff --git a/examples/tabs.rs b/examples/tabs.rs index 1b25bf7bcb..f03dc2c3d9 100644 --- a/examples/tabs.rs +++ b/examples/tabs.rs @@ -13,20 +13,23 @@ //! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples //! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md -#![allow(clippy::wildcard_imports, clippy::enum_glob_use)] - use std::io::stdout; use color_eyre::{config::HookBuilder, Result}; use ratatui::{ + backend::{Backend, CrosstermBackend}, + buffer::Buffer, crossterm::{ event::{self, Event, KeyCode, KeyEventKind}, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, ExecutableCommand, }, - prelude::*, - style::palette::tailwind, - widgets::*, + layout::{Constraint, Layout, Rect}, + style::{palette::tailwind, Color, Stylize}, + symbols, + terminal::Terminal, + text::Line, + widgets::{Block, Padding, Paragraph, Tabs, Widget}, }; use strum::{Display, EnumIter, FromRepr, IntoEnumIterator}; @@ -81,11 +84,10 @@ impl App { fn handle_events(&mut self) -> std::io::Result<()> { if let Event::Key(key) = event::read()? { if key.kind == KeyEventKind::Press { - use KeyCode::*; match key.code { - Char('l') | Right => self.next_tab(), - Char('h') | Left => self.previous_tab(), - Char('q') | Esc => self.quit(), + KeyCode::Char('l') | KeyCode::Right => self.next_tab(), + KeyCode::Char('h') | KeyCode::Left => self.previous_tab(), + KeyCode::Char('q') | KeyCode::Esc => self.quit(), _ => {} } } @@ -124,7 +126,7 @@ impl SelectedTab { impl Widget for &App { fn render(self, area: Rect, buf: &mut Buffer) { - use Constraint::*; + use Constraint::{Length, Min}; let vertical = Layout::vertical([Length(1), Min(0), Length(1)]); let [header_area, inner_area, footer_area] = vertical.areas(area); diff --git a/examples/user_input.rs b/examples/user_input.rs index 24f4d19dc1..98f5e656be 100644 --- a/examples/user_input.rs +++ b/examples/user_input.rs @@ -30,12 +30,16 @@ use std::{error::Error, io}; use ratatui::{ + backend::{Backend, CrosstermBackend}, crossterm::{ event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode, KeyEventKind}, execute, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }, - prelude::*, + layout::{Constraint, Layout}, + style::{Color, Modifier, Style, Stylize}, + terminal::{Frame, Terminal}, + text::{Line, Span, Text}, widgets::{Block, List, ListItem, Paragraph}, }; diff --git a/src/widgets/paragraph.rs b/src/widgets/paragraph.rs index 12544bfce3..78074dff7b 100644 --- a/src/widgets/paragraph.rs +++ b/src/widgets/paragraph.rs @@ -3,7 +3,10 @@ use unicode_width::UnicodeWidthStr; use crate::{ prelude::*, text::StyledGrapheme, - widgets::{reflow::*, Block}, + widgets::{ + reflow::{LineComposer, LineTruncator, WordWrapper, WrappedLine}, + Block, + }, }; const fn get_line_offset(line_width: u16, text_area_width: u16, alignment: Alignment) -> u16 { diff --git a/src/widgets/scrollbar.rs b/src/widgets/scrollbar.rs index e679f3b0e7..bf75aac4ef 100644 --- a/src/widgets/scrollbar.rs +++ b/src/widgets/scrollbar.rs @@ -3,8 +3,7 @@ clippy::cast_possible_truncation, clippy::cast_precision_loss, clippy::cast_sign_loss, - clippy::module_name_repetitions, - clippy::wildcard_imports + clippy::module_name_repetitions )] use std::iter; @@ -12,7 +11,10 @@ use std::iter; use strum::{Display, EnumString}; use unicode_width::UnicodeWidthStr; -use crate::{prelude::*, symbols::scrollbar::*}; +use crate::{ + prelude::*, + symbols::scrollbar::{Set, DOUBLE_HORIZONTAL, DOUBLE_VERTICAL}, +}; /// A widget to display a scrollbar /// diff --git a/src/widgets/table/row.rs b/src/widgets/table/row.rs index b3e8410cfc..13986f31b4 100644 --- a/src/widgets/table/row.rs +++ b/src/widgets/table/row.rs @@ -1,4 +1,4 @@ -use super::*; +use super::Cell; use crate::prelude::*; /// A single row of data to be displayed in a [`Table`] widget. diff --git a/src/widgets/table/table.rs b/src/widgets/table/table.rs index 3494f64994..ff522e9147 100644 --- a/src/widgets/table/table.rs +++ b/src/widgets/table/table.rs @@ -1,6 +1,8 @@ use itertools::Itertools; -use super::*; +#[allow(unused_imports)] // `Cell` is used in the doc comment but not the code +use super::Cell; +use super::{HighlightSpacing, Row, TableState}; use crate::{layout::Flex, prelude::*, widgets::Block}; /// A widget to display data in formatted columns. @@ -176,7 +178,11 @@ use crate::{layout::Flex, prelude::*, widgets::Block}; /// Row::new(vec!["Row21", "Row22", "Row23"]), /// Row::new(vec!["Row31", "Row32", "Row33"]), /// ]; -/// let widths = [Constraint::Length(5), Constraint::Length(5), Constraint::Length(10)]; +/// let widths = [ +/// Constraint::Length(5), +/// Constraint::Length(5), +/// Constraint::Length(10), +/// ]; /// let table = Table::new(rows, widths) /// .block(Block::new().title("Table")) /// .highlight_style(Style::new().add_modifier(Modifier::REVERSED)) @@ -184,6 +190,7 @@ use crate::{layout::Flex, prelude::*, widgets::Block}; /// /// frame.render_stateful_widget(table, area, &mut table_state); /// # } +/// ``` #[derive(Debug, Clone, Eq, PartialEq, Hash)] pub struct Table<'a> { /// Data to display in each row @@ -842,7 +849,7 @@ mod tests { use std::vec; use super::*; - use crate::{layout::Constraint::*, style::Style, text::Line}; + use crate::{layout::Constraint::*, style::Style, text::Line, widgets::Cell}; #[test] fn new() {