fix: tuirealm 2.x (#299)

This commit is contained in:
Christian Visintin
2024-10-14 09:55:52 +02:00
committed by GitHub
parent 4e63093d25
commit 7eb913ec7b
28 changed files with 303 additions and 457 deletions
@@ -5,7 +5,7 @@
use tuirealm::command::{Cmd, CmdResult, Direction, Position};
use tuirealm::event::{Key, KeyEvent};
use tuirealm::props::{Alignment, AttrValue, Attribute, Borders, Color, Style, Table};
use tuirealm::tui::widgets::{List as TuiList, ListDirection, ListItem, ListState};
use tuirealm::ratatui::widgets::{List as TuiList, ListDirection, ListItem, ListState};
use tuirealm::{Component, Event, MockComponent, NoUserEvent, Props, State, StateValue};
use super::{Msg, UiMsg};
@@ -32,7 +32,7 @@ impl Log {
}
impl MockComponent for Log {
fn view(&mut self, frame: &mut tuirealm::Frame, area: tuirealm::tui::layout::Rect) {
fn view(&mut self, frame: &mut tuirealm::Frame, area: tuirealm::ratatui::layout::Rect) {
let width: usize = area.width as usize - 4;
let focus = self
.props
@@ -1036,7 +1036,7 @@ pub struct ProgressBarFull {
}
impl ProgressBarFull {
pub fn new<S: AsRef<str>>(prog: f64, label: S, title: S, color: Color) -> Self {
pub fn new<S: Into<String>>(prog: f64, label: S, title: S, color: Color) -> Self {
Self {
component: ProgressBar::default()
.borders(
@@ -1074,7 +1074,7 @@ pub struct ProgressBarPartial {
}
impl ProgressBarPartial {
pub fn new<S: AsRef<str>>(prog: f64, label: S, title: S, color: Color) -> Self {
pub fn new<S: Into<String>>(prog: f64, label: S, title: S, color: Color) -> Self {
Self {
component: ProgressBar::default()
.borders(
@@ -3,7 +3,7 @@ use tui_realm_stdlib::Checkbox;
use tuirealm::command::{Cmd, CmdResult, Direction};
use tuirealm::event::{Key, KeyEvent};
use tuirealm::props::{Alignment, AttrValue, Attribute, BorderSides, Borders, Color};
use tuirealm::tui::layout::{Constraint, Direction as LayoutDirection, Layout};
use tuirealm::ratatui::layout::{Constraint, Direction as LayoutDirection, Layout};
use tuirealm::{Component, Event, MockComponent, NoUserEvent, Props, State, StateValue};
use super::{Msg, TransferMsg, UiMsg};
@@ -186,7 +186,7 @@ impl MockComponent for ChmodPopup {
State::One(StateValue::U32(self.get_mode().into()))
}
fn view(&mut self, frame: &mut tuirealm::Frame, area: tuirealm::tui::layout::Rect) {
fn view(&mut self, frame: &mut tuirealm::Frame, area: tuirealm::ratatui::layout::Rect) {
if self.props.get_or(Attribute::Display, AttrValue::Flag(true)) != AttrValue::Flag(true) {
return;
}
@@ -198,7 +198,7 @@ impl GotoPopup {
}
impl MockComponent for GotoPopup {
fn view(&mut self, frame: &mut tuirealm::Frame, area: tuirealm::tui::prelude::Rect) {
fn view(&mut self, frame: &mut tuirealm::Frame, area: tuirealm::ratatui::prelude::Rect) {
self.input.view(frame, area);
}
@@ -6,8 +6,8 @@ use tuirealm::command::{Cmd, CmdResult, Direction, Position};
use tuirealm::props::{
Alignment, AttrValue, Attribute, Borders, Color, Style, Table, TextModifiers,
};
use tuirealm::tui::text::{Line, Span};
use tuirealm::tui::widgets::{List as TuiList, ListDirection, ListItem, ListState};
use tuirealm::ratatui::text::{Line, Span};
use tuirealm::ratatui::widgets::{List as TuiList, ListDirection, ListItem, ListState};
use tuirealm::{MockComponent, Props, State, StateValue};
pub const FILE_LIST_CMD_SELECT_ALL: &str = "A";
@@ -175,7 +175,7 @@ impl FileList {
}
impl MockComponent for FileList {
fn view(&mut self, frame: &mut tuirealm::Frame, area: tuirealm::tui::layout::Rect) {
fn view(&mut self, frame: &mut tuirealm::Frame, area: tuirealm::ratatui::layout::Rect) {
let title = self
.props
.get_or(
@@ -1,7 +1,7 @@
use tui_realm_stdlib::Input;
use tuirealm::command::{Cmd, CmdResult};
use tuirealm::props::{Alignment, AttrValue, Attribute, Borders, Color, Table};
use tuirealm::tui::layout::{Constraint, Direction, Layout};
use tuirealm::ratatui::layout::{Constraint, Direction, Layout};
use tuirealm::{MockComponent, State};
use super::file_list::FileList;
@@ -88,7 +88,7 @@ impl FileListWithSearch {
}
impl MockComponent for FileListWithSearch {
fn view(&mut self, frame: &mut tuirealm::Frame, area: tuirealm::tui::layout::Rect) {
fn view(&mut self, frame: &mut tuirealm::Frame, area: tuirealm::ratatui::layout::Rect) {
// split the area in two
let chunks = Layout::default()
.direction(Direction::Vertical)
+2 -2
View File
@@ -28,7 +28,7 @@ use session::TransferPayload;
use tempfile::TempDir;
use tuirealm::{Application, EventListenerCfg, NoUserEvent};
use super::{Activity, Context, ExitReason};
use super::{Activity, Context, ExitReason, CROSSTERM_MAX_POLL};
use crate::config::themes::Theme;
use crate::explorer::{FileExplorer, FileSorting};
use crate::filetransfer::{
@@ -256,7 +256,7 @@ impl FileTransferActivity {
app: Application::init(
EventListenerCfg::default()
.poll_timeout(ticks)
.default_input_listener(ticks),
.crossterm_input_listener(ticks, CROSSTERM_MAX_POLL),
),
redraw: true,
host_bridge,
+59 -163
View File
@@ -7,8 +7,8 @@
use remotefs::fs::{File, UnixPex};
use tuirealm::event::{Key, KeyEvent, KeyModifiers};
use tuirealm::props::{PropPayload, PropValue, TextSpan};
use tuirealm::tui::layout::{Constraint, Direction, Layout};
use tuirealm::tui::widgets::Clear;
use tuirealm::ratatui::layout::{Constraint, Direction, Layout};
use tuirealm::ratatui::widgets::Clear;
use tuirealm::{AttrValue, Attribute, Sub, SubClause, SubEventClause};
use unicode_width::UnicodeWidthStr;
@@ -106,7 +106,7 @@ impl FileTransferActivity {
]
.as_ref(),
)
.split(f.size());
.split(f.area());
// main chunks
let main_chunks = Layout::default()
.direction(Direction::Vertical)
@@ -159,74 +159,74 @@ impl FileTransferActivity {
if self.app.mounted(&Id::FatalPopup) {
let popup = Popup(
Size::Percentage(50),
self.calc_popup_height(Id::FatalPopup, f.size().width, f.size().height),
self.calc_popup_height(Id::FatalPopup, f.area().width, f.area().height),
)
.draw_in(f.size());
.draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::FatalPopup, f, popup);
} else if self.app.mounted(&Id::CopyPopup) {
let popup = Popup(Size::Percentage(40), Size::Unit(3)).draw_in(f.size());
let popup = Popup(Size::Percentage(40), Size::Unit(3)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::CopyPopup, f, popup);
} else if self.app.mounted(&Id::ChmodPopup) {
let popup = Popup(Size::Percentage(50), Size::Unit(12)).draw_in(f.size());
let popup = Popup(Size::Percentage(50), Size::Unit(12)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::ChmodPopup, f, popup);
} else if self.app.mounted(&Id::FilterPopup) {
let popup = Popup(Size::Percentage(50), Size::Unit(3)).draw_in(f.size());
let popup = Popup(Size::Percentage(50), Size::Unit(3)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::FilterPopup, f, popup);
} else if self.app.mounted(&Id::GotoPopup) {
let popup = Popup(Size::Percentage(40), Size::Unit(3)).draw_in(f.size());
let popup = Popup(Size::Percentage(40), Size::Unit(3)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::GotoPopup, f, popup);
} else if self.app.mounted(&Id::MkdirPopup) {
let popup = Popup(Size::Percentage(40), Size::Unit(3)).draw_in(f.size());
let popup = Popup(Size::Percentage(40), Size::Unit(3)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::MkdirPopup, f, popup);
} else if self.app.mounted(&Id::NewfilePopup) {
let popup = Popup(Size::Percentage(40), Size::Unit(3)).draw_in(f.size());
let popup = Popup(Size::Percentage(40), Size::Unit(3)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::NewfilePopup, f, popup);
} else if self.app.mounted(&Id::OpenWithPopup) {
let popup = Popup(Size::Percentage(40), Size::Unit(3)).draw_in(f.size());
let popup = Popup(Size::Percentage(40), Size::Unit(3)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::OpenWithPopup, f, popup);
} else if self.app.mounted(&Id::RenamePopup) {
let popup = Popup(Size::Percentage(40), Size::Unit(3)).draw_in(f.size());
let popup = Popup(Size::Percentage(40), Size::Unit(3)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::RenamePopup, f, popup);
} else if self.app.mounted(&Id::SaveAsPopup) {
let popup = Popup(Size::Percentage(40), Size::Unit(3)).draw_in(f.size());
let popup = Popup(Size::Percentage(40), Size::Unit(3)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::SaveAsPopup, f, popup);
} else if self.app.mounted(&Id::SymlinkPopup) {
let popup = Popup(Size::Percentage(50), Size::Unit(3)).draw_in(f.size());
let popup = Popup(Size::Percentage(50), Size::Unit(3)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::SymlinkPopup, f, popup);
} else if self.app.mounted(&Id::ExecPopup) {
let popup = Popup(Size::Percentage(40), Size::Unit(3)).draw_in(f.size());
let popup = Popup(Size::Percentage(40), Size::Unit(3)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::ExecPopup, f, popup);
} else if self.app.mounted(&Id::FileInfoPopup) {
let popup = Popup(Size::Percentage(50), Size::Percentage(50)).draw_in(f.size());
let popup = Popup(Size::Percentage(50), Size::Percentage(50)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::FileInfoPopup, f, popup);
} else if self.app.mounted(&Id::ProgressBarPartial) {
let popup = Popup(Size::Percentage(50), Size::Percentage(20)).draw_in(f.size());
let popup = Popup(Size::Percentage(50), Size::Percentage(20)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
let popup_chunks = Layout::default()
@@ -242,14 +242,14 @@ impl FileTransferActivity {
self.app.view(&Id::ProgressBarFull, f, popup_chunks[0]);
self.app.view(&Id::ProgressBarPartial, f, popup_chunks[1]);
} else if self.app.mounted(&Id::DeletePopup) {
let popup = Popup(Size::Percentage(30), Size::Unit(3)).draw_in(f.size());
let popup = Popup(Size::Percentage(30), Size::Unit(3)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::DeletePopup, f, popup);
} else if self.app.mounted(&Id::ReplacePopup) {
// NOTE: handle extended / normal modes
if self.is_radio_replace_extended() {
let popup = Popup(Size::Percentage(50), Size::Percentage(50)).draw_in(f.size());
let popup = Popup(Size::Percentage(50), Size::Percentage(50)).draw_in(f.area());
f.render_widget(Clear, popup);
let popup_chunks = Layout::default()
.direction(Direction::Vertical)
@@ -265,42 +265,42 @@ impl FileTransferActivity {
.view(&Id::ReplacingFilesListPopup, f, popup_chunks[0]);
self.app.view(&Id::ReplacePopup, f, popup_chunks[1]);
} else {
let popup = Popup(Size::Percentage(50), Size::Unit(3)).draw_in(f.size());
let popup = Popup(Size::Percentage(50), Size::Unit(3)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::ReplacePopup, f, popup);
}
} else if self.app.mounted(&Id::DisconnectPopup) {
let popup = Popup(Size::Percentage(30), Size::Unit(3)).draw_in(f.size());
let popup = Popup(Size::Percentage(30), Size::Unit(3)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::DisconnectPopup, f, popup);
} else if self.app.mounted(&Id::QuitPopup) {
let popup = Popup(Size::Percentage(30), Size::Unit(3)).draw_in(f.size());
let popup = Popup(Size::Percentage(30), Size::Unit(3)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::QuitPopup, f, popup);
} else if self.app.mounted(&Id::WatchedPathsList) {
let popup = Popup(Size::Percentage(60), Size::Percentage(50)).draw_in(f.size());
let popup = Popup(Size::Percentage(60), Size::Percentage(50)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::WatchedPathsList, f, popup);
} else if self.app.mounted(&Id::WatcherPopup) {
let popup = Popup(Size::Percentage(60), Size::Unit(3)).draw_in(f.size());
let popup = Popup(Size::Percentage(60), Size::Unit(3)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::WatcherPopup, f, popup);
} else if self.app.mounted(&Id::SortingPopup) {
let popup = Popup(Size::Percentage(50), Size::Unit(3)).draw_in(f.size());
let popup = Popup(Size::Percentage(50), Size::Unit(3)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::SortingPopup, f, popup);
} else if self.app.mounted(&Id::ErrorPopup) {
let popup = Popup(
Size::Percentage(50),
self.calc_popup_height(Id::ErrorPopup, f.size().width, f.size().height),
self.calc_popup_height(Id::ErrorPopup, f.area().width, f.area().height),
)
.draw_in(f.size());
.draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::ErrorPopup, f, popup);
@@ -313,17 +313,17 @@ impl FileTransferActivity {
.unwrap_or(1) as u16;
let popup =
Popup(Size::Percentage(50), Size::Unit(2 + wait_popup_lines)).draw_in(f.size());
Popup(Size::Percentage(50), Size::Unit(2 + wait_popup_lines)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::WaitPopup, f, popup);
} else if self.app.mounted(&Id::SyncBrowsingMkdirPopup) {
let popup = Popup(Size::Percentage(60), Size::Unit(3)).draw_in(f.size());
let popup = Popup(Size::Percentage(60), Size::Unit(3)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::SyncBrowsingMkdirPopup, f, popup);
} else if self.app.mounted(&Id::KeybindingsPopup) {
let popup = Popup(Size::Percentage(50), Size::Percentage(80)).draw_in(f.size());
let popup = Popup(Size::Percentage(50), Size::Percentage(80)).draw_in(f.area());
f.render_widget(Clear, popup);
// make popup
self.app.view(&Id::KeybindingsPopup, f, popup);
@@ -1067,138 +1067,34 @@ impl FileTransferActivity {
/// Returns a sub clause which requires that no popup is mounted in order to be satisfied
fn no_popup_mounted_clause() -> SubClause<Id> {
SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::CopyPopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::DeletePopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::DisconnectPopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::ErrorPopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::ExecPopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::FatalPopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::FileInfoPopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::GotoPopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::KeybindingsPopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::MkdirPopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::NewfilePopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::OpenWithPopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::ProgressBarFull,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::ProgressBarPartial,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::ExplorerFind,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::QuitPopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::RenamePopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::ReplacePopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::SaveAsPopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::SortingPopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::SyncBrowsingMkdirPopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::SymlinkPopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::WatcherPopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::WatchedPathsList,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::ChmodPopup,
)))),
Box::new(SubClause::And(
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::WaitPopup,
)))),
Box::new(SubClause::Not(Box::new(SubClause::IsMounted(
Id::FilterPopup,
)))),
)),
)),
)),
)),
)),
)),
)),
)),
)),
)),
)),
)),
)),
)),
)),
)),
)),
)),
)),
)),
)),
)),
)),
)),
)),
tuirealm::subclause_and_not!(
Id::CopyPopup,
Id::DeletePopup,
Id::DisconnectPopup,
Id::ErrorPopup,
Id::ExecPopup,
Id::FatalPopup,
Id::FileInfoPopup,
Id::GotoPopup,
Id::KeybindingsPopup,
Id::MkdirPopup,
Id::NewfilePopup,
Id::OpenWithPopup,
Id::ProgressBarFull,
Id::ProgressBarPartial,
Id::ExplorerFind,
Id::QuitPopup,
Id::RenamePopup,
Id::ReplacePopup,
Id::SaveAsPopup,
Id::SortingPopup,
Id::SyncBrowsingMkdirPopup,
Id::SymlinkPopup,
Id::WatcherPopup,
Id::WatchedPathsList,
Id::ChmodPopup,
Id::WaitPopup,
Id::FilterPopup
)
}
}