Upgraded ratatui to 0.28.0

This commit is contained in:
2024-09-09 17:12:43 -06:00
parent 64d6beda80
commit 217d3242a8
21 changed files with 129 additions and 128 deletions
Generated
+41 -30
View File
@@ -247,13 +247,14 @@ dependencies = [
[[package]]
name = "compact_str"
version = "0.7.1"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f86b9c4c00838774a6d902ef931eff7470720c51d90c2e32cfe15dc304737b3f"
checksum = "6050c3a16ddab2e412160b31f2c871015704239bca62f72f6e5f0be631d3f644"
dependencies = [
"castaway",
"cfg-if",
"itoa",
"rustversion",
"ryu",
"static_assertions",
]
@@ -302,6 +303,22 @@ dependencies = [
"winapi",
]
[[package]]
name = "crossterm"
version = "0.28.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6"
dependencies = [
"bitflags 2.6.0",
"crossterm_winapi",
"mio 1.0.1",
"parking_lot",
"rustix",
"signal-hook",
"signal-hook-mio",
"winapi",
]
[[package]]
name = "crossterm_winapi"
version = "0.9.1"
@@ -732,6 +749,16 @@ version = "2.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
[[package]]
name = "instability"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b23a0c8dfe501baac4adf6ebbfa6eddf8f0c07f56b058cc1288017e32397846c"
dependencies = [
"quote",
"syn 2.0.72",
]
[[package]]
name = "ipnet"
version = "2.9.0"
@@ -744,15 +771,6 @@ version = "1.70.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800"
[[package]]
name = "itertools"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
dependencies = [
"either",
]
[[package]]
name = "itertools"
version = "0.13.0"
@@ -876,7 +894,7 @@ dependencies = [
"bimap",
"chrono",
"confy",
"crossterm",
"crossterm 0.27.0",
"derivative",
"human-panic",
"indoc",
@@ -939,6 +957,7 @@ checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4"
dependencies = [
"hermit-abi",
"libc",
"log",
"wasi",
"windows-sys 0.52.0",
]
@@ -1213,19 +1232,20 @@ dependencies = [
[[package]]
name = "ratatui"
version = "0.26.3"
version = "0.28.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f44c9e68fd46eda15c646fbb85e1040b657a58cdc8c98db1d97a55930d991eef"
checksum = "fdef7f9be5c0122f890d58bdf4d964349ba6a6161f705907526d891efabba57d"
dependencies = [
"bitflags 2.6.0",
"cassowary",
"compact_str",
"crossterm",
"itertools 0.12.1",
"crossterm 0.28.1",
"instability",
"itertools",
"lru",
"paste",
"stability",
"strum",
"strum_macros",
"time",
"unicode-segmentation",
"unicode-truncate",
@@ -1536,12 +1556,13 @@ dependencies = [
[[package]]
name = "signal-hook-mio"
version = "0.2.3"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af"
checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd"
dependencies = [
"libc",
"mio 0.8.11",
"mio 1.0.1",
"signal-hook",
]
@@ -1585,16 +1606,6 @@ dependencies = [
"windows-sys 0.52.0",
]
[[package]]
name = "stability"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac"
dependencies = [
"quote",
"syn 2.0.72",
]
[[package]]
name = "static_assertions"
version = "1.1.0"
@@ -1908,7 +1919,7 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf"
dependencies = [
"itertools 0.13.0",
"itertools",
"unicode-segmentation",
"unicode-width",
]
+1 -1
View File
@@ -32,7 +32,7 @@ strum = {version = "0.26.1", features = ["derive"] }
strum_macros = "0.26.1"
tokio = { version = "1.36.0", features = ["full"] }
tokio-util = "0.7.8"
ratatui = { version = "0.26.0", features = ["all-widgets"] }
ratatui = { version = "0.28.0", features = ["all-widgets"] }
urlencoding = "2.1.2"
[dev-dependencies]
+9 -13
View File
@@ -18,18 +18,16 @@ impl<T> Scrollable for StatefulList<T> {
return;
}
let selected_row = match self.state.selected() {
match self.state.selected() {
Some(i) => {
if i >= self.items.len() - 1 {
0
self.state.select_first();
} else {
i + 1
self.state.select_next();
}
}
None => 0,
None => self.state.select_first(),
};
self.state.select(Some(selected_row));
}
fn scroll_up(&mut self) {
@@ -37,18 +35,16 @@ impl<T> Scrollable for StatefulList<T> {
return;
}
let selected_row = match self.state.selected() {
match self.state.selected() {
Some(i) => {
if i == 0 {
self.items.len() - 1
self.state.select(Some(self.items.len() - 1));
} else {
i - 1
self.state.select_previous();
}
}
None => 0,
None => self.state.select_first(),
};
self.state.select(Some(selected_row));
}
fn scroll_to_top(&mut self) {
@@ -56,7 +52,7 @@ impl<T> Scrollable for StatefulList<T> {
return;
}
self.state.select(Some(0));
self.state.select_first();
}
fn scroll_to_bottom(&mut self) {
+22 -32
View File
@@ -42,22 +42,17 @@ where
return;
}
let selected_row = match self.filtered_state.as_ref().unwrap().selected() {
match self.filtered_state.as_ref().unwrap().selected() {
Some(i) => {
if i >= filtered_items.len() - 1 {
0
self.filtered_state.as_mut().unwrap().select_first();
} else {
i + 1
self.filtered_state.as_mut().unwrap().select_next();
}
}
None => 0,
None => self.filtered_state.as_mut().unwrap().select_first(),
};
self
.filtered_state
.as_mut()
.unwrap()
.select(Some(selected_row));
return;
}
@@ -65,18 +60,16 @@ where
return;
}
let selected_row = match self.state.selected() {
match self.state.selected() {
Some(i) => {
if i >= self.items.len() - 1 {
0
self.state.select_first();
} else {
i + 1
self.state.select_next();
}
}
None => 0,
None => self.state.select_first(),
};
self.state.select(Some(selected_row));
}
fn scroll_up(&mut self) {
@@ -85,22 +78,21 @@ where
return;
}
let selected_row = match self.filtered_state.as_ref().unwrap().selected() {
match self.filtered_state.as_ref().unwrap().selected() {
Some(i) => {
if i == 0 {
filtered_items.len() - 1
self
.filtered_state
.as_mut()
.unwrap()
.select(Some(filtered_items.len() - 1));
} else {
i - 1
self.filtered_state.as_mut().unwrap().select_previous();
}
}
None => 0,
None => self.filtered_state.as_mut().unwrap().select_first(),
};
self
.filtered_state
.as_mut()
.unwrap()
.select(Some(selected_row));
return;
}
@@ -108,18 +100,16 @@ where
return;
}
let selected_row = match self.state.selected() {
match self.state.selected() {
Some(i) => {
if i == 0 {
self.items.len() - 1
self.state.select(Some(self.items.len() - 1));
} else {
i - 1
self.state.select_previous();
}
}
None => 0,
None => self.state.select_first(),
};
self.state.select(Some(selected_row));
}
fn scroll_to_top(&mut self) {
@@ -128,7 +118,7 @@ where
return;
}
self.filtered_state.as_mut().unwrap().select(Some(0));
self.filtered_state.as_mut().unwrap().select_first();
return;
}
@@ -136,7 +126,7 @@ where
return;
}
self.state.select(Some(0));
self.state.select_first();
}
fn scroll_to_bottom(&mut self) {
+5 -5
View File
@@ -31,7 +31,7 @@ pub trait DrawUi {
}
pub fn ui(f: &mut Frame<'_>, app: &mut App<'_>) {
f.render_widget(background_block(), f.size());
f.render_widget(background_block(), f.area());
let [header_area, context_area, table_area] = if !app.error.text.is_empty() {
let [header_area, error_area, context_area, table_area] = Layout::vertical([
Constraint::Length(3),
@@ -39,7 +39,7 @@ pub fn ui(f: &mut Frame<'_>, app: &mut App<'_>) {
Constraint::Length(10),
Constraint::Fill(0),
])
.areas(f.size());
.areas(f.area());
draw_error(f, app, error_area);
@@ -50,7 +50,7 @@ pub fn ui(f: &mut Frame<'_>, app: &mut App<'_>) {
Constraint::Length(10),
Constraint::Fill(0),
])
.areas(f.size())
.areas(f.area())
};
draw_header_row(f, app, header_area);
@@ -110,7 +110,7 @@ pub fn draw_popup(
size: Size,
) {
let (percent_x, percent_y) = size.to_percent();
let popup_area = centered_rect(percent_x, percent_y, f.size());
let popup_area = centered_rect(percent_x, percent_y, f.area());
f.render_widget(Clear, popup_area);
f.render_widget(background_block(), popup_area);
popup_fn(f, app, popup_area);
@@ -118,7 +118,7 @@ pub fn draw_popup(
fn draw_popup_ui<T: DrawUi>(f: &mut Frame<'_>, app: &mut App<'_>, size: Size) {
let (percent_x, percent_y) = size.to_percent();
let popup_area = centered_rect(percent_x, percent_y, f.size());
let popup_area = centered_rect(percent_x, percent_y, f.area());
f.render_widget(Clear, popup_area);
f.render_widget(background_block(), popup_area);
T::draw(f, app, popup_area);
+3 -3
View File
@@ -56,7 +56,7 @@ impl DrawUi for BlocklistUi {
.yes_no_value(app.data.radarr_data.prompt_confirm);
draw_blocklist_table(f, app, area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size());
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
}
ActiveRadarrBlock::BlocklistClearAllItemsPrompt => {
let confirmation_prompt = ConfirmationPrompt::new()
@@ -67,7 +67,7 @@ impl DrawUi for BlocklistUi {
draw_blocklist_table(f, app, area);
f.render_widget(
Popup::new(confirmation_prompt).size(Size::SmallPrompt),
f.size(),
f.area(),
);
}
_ => (),
@@ -197,5 +197,5 @@ fn draw_blocklist_item_details_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
.style(Style::new().secondary())
.alignment(Alignment::Left);
f.render_widget(Popup::new(message).size(Size::NarrowMessage), f.size());
f.render_widget(Popup::new(message).size(Size::NarrowMessage), f.area());
}
@@ -182,7 +182,7 @@ fn draw_edit_collection_select_minimum_availability_popup(f: &mut Frame<'_>, app
);
let popup = Popup::new(min_availability_list).size(Size::Dropdown);
f.render_widget(popup, f.size());
f.render_widget(popup, f.area());
}
fn draw_edit_collection_select_quality_profile_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
@@ -198,5 +198,5 @@ fn draw_edit_collection_select_quality_profile_popup(f: &mut Frame<'_>, app: &mu
);
let popup = Popup::new(quality_profile_list).size(Size::Dropdown);
f.render_widget(popup, f.size());
f.render_widget(popup, f.area());
}
+3 -3
View File
@@ -55,7 +55,7 @@ impl DrawUi for CollectionsUi {
let popup = Popup::new(Message::new("Collection not found!")).size(Size::Message);
draw_collections(f, app, area);
f.render_widget(popup, f.size());
f.render_widget(popup, f.area());
}
ActiveRadarrBlock::FilterCollections => draw_popup_over(
f,
@@ -72,7 +72,7 @@ impl DrawUi for CollectionsUi {
.size(Size::Message);
draw_collections(f, app, area);
f.render_widget(popup, f.size());
f.render_widget(popup, f.area());
}
ActiveRadarrBlock::UpdateAllCollectionsPrompt => {
let confirmation_prompt = ConfirmationPrompt::new()
@@ -81,7 +81,7 @@ impl DrawUi for CollectionsUi {
.yes_no_value(app.data.radarr_data.prompt_confirm);
draw_collections(f, app, area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size());
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
}
_ => (),
};
+2 -2
View File
@@ -44,7 +44,7 @@ impl DrawUi for DownloadsUi {
.yes_no_value(app.data.radarr_data.prompt_confirm);
draw_downloads(f, app, area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size());
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
}
ActiveRadarrBlock::UpdateDownloadsPrompt => {
let confirmation_prompt = ConfirmationPrompt::new()
@@ -53,7 +53,7 @@ impl DrawUi for DownloadsUi {
.yes_no_value(app.data.radarr_data.prompt_confirm);
draw_downloads(f, app, area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size());
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
}
_ => (),
}
+3 -3
View File
@@ -54,7 +54,7 @@ impl DrawUi for IndexersUi {
title_block("Testing Indexer"),
))
.size(Size::LargeMessage);
f.render_widget(loading_popup, f.size());
f.render_widget(loading_popup, f.area());
} else {
let popup = if let Some(result) = app.data.radarr_data.indexer_test_error.as_ref() {
Popup::new(Message::new(result.clone())).size(Size::LargeMessage)
@@ -65,7 +65,7 @@ impl DrawUi for IndexersUi {
Popup::new(message).size(Size::Message)
};
f.render_widget(popup, f.size());
f.render_widget(popup, f.area());
}
}
ActiveRadarrBlock::DeleteIndexerPrompt => {
@@ -86,7 +86,7 @@ impl DrawUi for IndexersUi {
.yes_no_value(app.data.radarr_data.prompt_confirm);
draw_indexers(f, app, area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size());
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
}
_ => (),
};
+6 -6
View File
@@ -80,7 +80,7 @@ impl DrawUi for AddMovieUi {
draw_add_movie_search(f, app, area);
f.render_widget(
Popup::new(Message::new("This film is already in your library")).size(Size::Message),
f.size(),
f.area(),
);
}
_ => (),
@@ -223,7 +223,7 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
let error_message_popup = Popup::new(error_message).size(Size::Message);
f.render_widget(layout_block(), results_area);
f.render_widget(error_message_popup, f.size());
f.render_widget(error_message_popup, f.area());
f.render_widget(help_paragraph, help_area);
}
ActiveRadarrBlock::AddMovieSearchResults
@@ -447,7 +447,7 @@ fn draw_add_movie_select_monitor_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
);
let popup = Popup::new(monitor_list).size(Size::Dropdown);
f.render_widget(popup, f.size());
f.render_widget(popup, f.area());
}
fn draw_add_movie_select_minimum_availability_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
@@ -463,7 +463,7 @@ fn draw_add_movie_select_minimum_availability_popup(f: &mut Frame<'_>, app: &mut
);
let popup = Popup::new(minimum_availability_list).size(Size::Dropdown);
f.render_widget(popup, f.size());
f.render_widget(popup, f.area());
}
fn draw_add_movie_select_quality_profile_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
@@ -479,7 +479,7 @@ fn draw_add_movie_select_quality_profile_popup(f: &mut Frame<'_>, app: &mut App<
);
let popup = Popup::new(quality_profile_list).size(Size::Dropdown);
f.render_widget(popup, f.size());
f.render_widget(popup, f.area());
}
fn draw_add_movie_select_root_folder_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
@@ -495,5 +495,5 @@ fn draw_add_movie_select_root_folder_popup(f: &mut Frame<'_>, app: &mut App<'_>)
);
let popup = Popup::new(root_folder_list).size(Size::Dropdown);
f.render_widget(popup, f.size());
f.render_widget(popup, f.area());
}
+1 -1
View File
@@ -51,7 +51,7 @@ impl DrawUi for DeleteMovieUi {
.yes_no_value(app.data.radarr_data.prompt_confirm);
draw_library(f, app, area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size());
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
}
}
}
+2 -2
View File
@@ -194,7 +194,7 @@ fn draw_edit_movie_select_minimum_availability_popup(f: &mut Frame<'_>, app: &mu
);
let popup = Popup::new(minimum_availability_list).size(Size::Dropdown);
f.render_widget(popup, f.size());
f.render_widget(popup, f.area());
}
fn draw_edit_movie_select_quality_profile_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
@@ -210,5 +210,5 @@ fn draw_edit_movie_select_quality_profile_popup(f: &mut Frame<'_>, app: &mut App
);
let popup = Popup::new(quality_profile_list).size(Size::Dropdown);
f.render_widget(popup, f.size());
f.render_widget(popup, f.area());
}
+3 -3
View File
@@ -60,7 +60,7 @@ impl DrawUi for LibraryUi {
let popup = Popup::new(Message::new("Movie not found!")).size(Size::Message);
draw_library(f, app, area);
f.render_widget(popup, f.size());
f.render_widget(popup, f.area());
}
ActiveRadarrBlock::FilterMovies => draw_popup_over(
f,
@@ -75,7 +75,7 @@ impl DrawUi for LibraryUi {
.size(Size::Message);
draw_library(f, app, area);
f.render_widget(popup, f.size());
f.render_widget(popup, f.area());
}
ActiveRadarrBlock::UpdateAllMoviesPrompt => {
let confirmation_prompt = ConfirmationPrompt::new()
@@ -84,7 +84,7 @@ impl DrawUi for LibraryUi {
.yes_no_value(app.data.radarr_data.prompt_confirm);
draw_library(f, app, area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size());
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
}
_ => (),
};
+4 -4
View File
@@ -61,7 +61,7 @@ impl DrawUi for MovieDetailsUi {
.yes_no_value(app.data.radarr_data.prompt_confirm);
draw_movie_info(f, app, content_area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size());
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
}
ActiveRadarrBlock::UpdateAndScanPrompt => {
let prompt = format!(
@@ -73,7 +73,7 @@ impl DrawUi for MovieDetailsUi {
.prompt(&prompt)
.yes_no_value(app.data.radarr_data.prompt_confirm);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size());
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
}
ActiveRadarrBlock::ManualSearchConfirmPrompt => {
draw_manual_search_confirm_prompt(f, app);
@@ -517,14 +517,14 @@ fn draw_manual_search_confirm_prompt(f: &mut Frame<'_>, app: &mut App<'_>) {
.content(content_paragraph)
.yes_no_value(app.data.radarr_data.prompt_confirm);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Small), f.size());
f.render_widget(Popup::new(confirmation_prompt).size(Size::Small), f.area());
} else {
let confirmation_prompt = ConfirmationPrompt::new()
.title(title)
.prompt(&prompt)
.yes_no_value(app.data.radarr_data.prompt_confirm);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size());
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
}
}
+1 -1
View File
@@ -52,7 +52,7 @@ impl DrawUi for RootFoldersUi {
.yes_no_value(app.data.radarr_data.prompt_confirm);
draw_root_folders(f, app, area);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size());
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
}
_ => (),
}
+5 -5
View File
@@ -87,7 +87,7 @@ fn draw_logs_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
.block(block)
.footer(&help_footer);
f.render_widget(popup, f.size());
f.render_widget(popup, f.area());
return;
}
@@ -103,7 +103,7 @@ fn draw_logs_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
.block(block)
.footer(&help_footer);
f.render_widget(popup, f.size());
f.render_widget(popup, f.area());
}
fn draw_tasks_popup(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
@@ -145,7 +145,7 @@ fn draw_tasks_popup(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
.prompt(&prompt)
.yes_no_value(app.data.radarr_data.prompt_confirm);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size());
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.area());
}
}
@@ -166,7 +166,7 @@ fn draw_updates_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
.block(block)
.footer(&help_footer);
f.render_widget(popup, f.size());
f.render_widget(popup, f.area());
} else {
let loading = LoadingBlock::new(app.is_loading, borderless_block());
let popup = Popup::new(loading)
@@ -174,6 +174,6 @@ fn draw_updates_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
.block(block)
.footer(&help_footer);
f.render_widget(popup, f.size());
f.render_widget(popup, f.area());
}
}
+3 -3
View File
@@ -1,5 +1,5 @@
use ratatui::prelude::{Color, Styled};
use ratatui::style::Stylize;
use ratatui::prelude::Color;
use ratatui::style::{Styled, Stylize};
pub const COLOR_ORANGE: Color = Color::Rgb(255, 170, 66);
@@ -99,7 +99,7 @@ where
fn unreleased(self) -> T {
self.light_cyan()
}
fn warning(self) -> T {
self.magenta()
}
+2 -2
View File
@@ -98,7 +98,7 @@ pub fn centered_rect(percent_x: u16, percent_y: u16, area: Rect) -> Rect {
pub fn line_gauge_with_title(title: &str, ratio: f64) -> LineGauge<'_> {
LineGauge::new()
.block(Block::new().title(title))
.gauge_style(Style::new().cyan())
.filled_style(Style::new().cyan())
.line_set(symbols::line::THICK)
.ratio(ratio)
.label(Line::from(format!("{:.0}%", ratio * 100.0)))
@@ -107,7 +107,7 @@ pub fn line_gauge_with_title(title: &str, ratio: f64) -> LineGauge<'_> {
pub fn line_gauge_with_label(title: &str, ratio: f64) -> LineGauge<'_> {
LineGauge::new()
.block(Block::new())
.gauge_style(Style::new().cyan())
.filled_style(Style::new().cyan())
.line_set(symbols::line::THICK)
.ratio(ratio)
.label(Line::from(format!("{title}: {:.0}%", ratio * 100.0)))
+2 -1
View File
@@ -2,7 +2,8 @@ use crate::ui::styles::ManagarrStyle;
use crate::ui::utils::{layout_block, style_block_highlight};
use ratatui::buffer::Buffer;
use ratatui::layout::{Alignment, Constraint, Flex, Layout, Rect};
use ratatui::prelude::{Style, Styled, Text, Widget};
use ratatui::prelude::{Style, Text, Widget};
use ratatui::style::Styled;
use ratatui::widgets::Paragraph;
#[cfg(test)]
+9 -6
View File
@@ -1,5 +1,5 @@
use ratatui::buffer::Buffer;
use ratatui::layout::{Alignment, Constraint, Layout, Rect};
use ratatui::layout::{Alignment, Constraint, Layout, Position, Rect};
use ratatui::prelude::Text;
use ratatui::style::{Style, Styled, Stylize};
use ratatui::widgets::{Block, Paragraph, Widget};
@@ -84,12 +84,15 @@ impl<'a> InputBox<'a> {
};
if self.cursor_after_string {
f.set_cursor(
area.x + (self.content.len() - self.offset) as u16 + 1,
area.y + 1,
);
f.set_cursor_position(Position {
x: area.x + (self.content.len() - self.offset) as u16 + 1,
y: area.y + 1,
});
} else {
f.set_cursor(area.x + 1u16, area.y + 1);
f.set_cursor_position(Position {
x: area.x + 1u16,
y: area.y + 1,
});
}
}