Upgraded ratatui to 0.28.0
This commit is contained in:
Generated
+41
-30
@@ -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
@@ -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]
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
_ => (),
|
||||
};
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
_ => (),
|
||||
};
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
_ => (),
|
||||
};
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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,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)]
|
||||
|
||||
@@ -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,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user