diff --git a/Cargo.lock b/Cargo.lock index 818ae287e1..0737bebdde 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1260,22 +1260,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "crossterm" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ebde6a9dd5e331cd6c6f48253254d117642c31653baa475e394657c59c1f7d" -dependencies = [ - "bitflags 1.3.2", - "crossterm_winapi 0.8.0", - "libc", - "mio 0.7.14", - "parking_lot 0.11.2", - "signal-hook", - "signal-hook-mio", - "winapi", -] - [[package]] name = "crossterm" version = "0.23.2" @@ -1283,11 +1267,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2102ea4f781910f8a5b98dd061f4c2023f479ce7bb1236330099ceb5a93cf17" dependencies = [ "bitflags 1.3.2", - "crossterm_winapi 0.9.1", + "crossterm_winapi", "futures-core", "libc", - "mio 0.8.8", - "parking_lot 0.12.1", + "mio", + "parking_lot", "signal-hook", "signal-hook-mio", "winapi", @@ -1300,21 +1284,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67" dependencies = [ "bitflags 1.3.2", - "crossterm_winapi 0.9.1", + "crossterm_winapi", "libc", - "mio 0.8.8", - "parking_lot 0.12.1", + "mio", + "parking_lot", "signal-hook", "signal-hook-mio", "winapi", ] [[package]] -name = "crossterm_winapi" -version = "0.8.0" +name = "crossterm" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6966607622438301997d3dac0d2f6e9a90c68bb6bc1785ea98456ab93c0507" +checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" dependencies = [ + "bitflags 2.3.3", + "crossterm_winapi", + "libc", + "mio", + "parking_lot", + "signal-hook", + "signal-hook-mio", "winapi", ] @@ -2584,6 +2575,12 @@ dependencies = [ "hashbrown 0.14.0", ] +[[package]] +name = "indoc" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c785eefb63ebd0e33416dfcb8d6da0bf27ce752843a45632a67bf10d4d4b5c4" + [[package]] name = "inflections" version = "1.1.1" @@ -2599,15 +2596,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", -] - [[package]] name = "integer-encoding" version = "3.0.4" @@ -2666,6 +2654,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.9" @@ -2927,7 +2924,7 @@ dependencies = [ "libc", "log", "log-mdc", - "parking_lot 0.12.1", + "parking_lot", "serde", "serde-value", "serde_json", @@ -3132,7 +3129,7 @@ dependencies = [ "clap 3.2.25", "config", "console-subscriber", - "crossterm 0.25.0", + "crossterm 0.27.0", "digest 0.10.7", "futures 0.3.28", "log", @@ -3142,6 +3139,7 @@ dependencies = [ "minotari_wallet", "qrcode", "rand 0.8.5", + "ratatui", "regex", "reqwest", "rpassword", @@ -3149,8 +3147,8 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.7", - "strum", - "strum_macros", + "strum 0.22.0", + "strum_macros 0.22.0", "tari_common", "tari_common_types", "tari_comms", @@ -3168,7 +3166,6 @@ dependencies = [ "thiserror", "tokio", "tonic 0.6.2", - "tui", "unicode-segmentation", "unicode-width", "url", @@ -3289,7 +3286,7 @@ dependencies = [ "rustyline", "rustyline-derive", "serde", - "strum", + "strum 0.22.0", "tari_common", "tari_common_types", "tari_comms", @@ -3343,8 +3340,8 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.7", - "strum", - "strum_macros", + "strum 0.22.0", + "strum_macros 0.22.0", "tari_common", "tari_common_sqlite", "tari_common_types", @@ -3417,19 +3414,6 @@ dependencies = [ "tonic 0.6.2", ] -[[package]] -name = "mio" -version = "0.7.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" -dependencies = [ - "libc", - "log", - "miow", - "ntapi", - "winapi", -] - [[package]] name = "mio" version = "0.8.8" @@ -3442,15 +3426,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "miow" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" -dependencies = [ - "winapi", -] - [[package]] name = "monero" version = "0.18.2" @@ -3600,15 +3575,6 @@ dependencies = [ "nom 7.1.3", ] -[[package]] -name = "ntapi" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" -dependencies = [ - "winapi", -] - [[package]] name = "num-bigint" version = "0.4.3" @@ -3831,17 +3797,6 @@ dependencies = [ "libm 0.1.4", ] -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", -] - [[package]] name = "parking_lot" version = "0.12.1" @@ -3849,21 +3804,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.8", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", + "parking_lot_core", ] [[package]] @@ -3890,6 +3831,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + [[package]] name = "path-clean" version = "0.1.0" @@ -4279,7 +4226,7 @@ dependencies = [ "fnv", "lazy_static", "memchr", - "parking_lot 0.12.1", + "parking_lot", "protobuf", "thiserror", ] @@ -4422,7 +4369,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51de85fb3fb6524929c8a2eb85e6b6d363de4e8c48f9e2c2eac4944abc181c93" dependencies = [ "log", - "parking_lot 0.12.1", + "parking_lot", "scheduled-thread-pool", ] @@ -4517,6 +4464,23 @@ dependencies = [ "thiserror", ] +[[package]] +name = "ratatui" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e2e4cd95294a85c3b4446e63ef054eea43e0205b1fd60120c16b74ff7ff96ad" +dependencies = [ + "bitflags 2.3.3", + "cassowary", + "crossterm 0.27.0", + "indoc", + "itertools 0.11.0", + "paste", + "strum 0.25.0", + "unicode-segmentation", + "unicode-width", +] + [[package]] name = "rayon" version = "1.7.0" @@ -4886,7 +4850,7 @@ version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19" dependencies = [ - "parking_lot 0.12.1", + "parking_lot", ] [[package]] @@ -5170,8 +5134,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" dependencies = [ "libc", - "mio 0.7.14", - "mio 0.8.8", + "mio", "signal-hook", ] @@ -5344,7 +5307,16 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7ac893c7d471c8a21f31cfe213ec4f6d9afeed25537c772e08ef3f005f8729e" dependencies = [ - "strum_macros", + "strum_macros 0.22.0", +] + +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +dependencies = [ + "strum_macros 0.25.2", ] [[package]] @@ -5359,6 +5331,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "strum_macros" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8d03b598d3d0fff69bf533ee3ef19b8eeb342729596df84bcc7e1f96ec4059" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.28", +] + [[package]] name = "subtle" version = "2.5.0" @@ -5751,8 +5736,8 @@ dependencies = [ "serde_json", "serde_repr", "sha3 0.10.8", - "strum", - "strum_macros", + "strum 0.22.0", + "strum_macros 0.22.0", "tari-curve25519-dalek", "tari_common", "tari_common_sqlite", @@ -5873,8 +5858,8 @@ dependencies = [ "rand 0.8.5", "serde", "sha2 0.9.9", - "strum", - "strum_macros", + "strum 0.22.0", + "strum_macros 0.22.0", "subtle", "tari_common_sqlite", "tari_common_types", @@ -6227,7 +6212,7 @@ dependencies = [ "backtrace", "bytes 1.4.0", "libc", - "mio 0.8.8", + "mio", "num_cpus", "pin-project-lite", "signal-hook-registry", @@ -6598,19 +6583,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" -[[package]] -name = "tui" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c8ce4e27049eed97cfa363a5048b09d995e209994634a0efc26a14ab6c0c23" -dependencies = [ - "bitflags 1.3.2", - "cassowary", - "crossterm 0.20.0", - "unicode-segmentation", - "unicode-width", -] - [[package]] name = "twofish" version = "0.6.0" @@ -7224,7 +7196,7 @@ dependencies = [ "futures 0.3.28", "log", "nohash-hasher", - "parking_lot 0.12.1", + "parking_lot", "rand 0.8.5", "static_assertions", ] diff --git a/applications/minotari_console_wallet/Cargo.toml b/applications/minotari_console_wallet/Cargo.toml index a05164af76..0b562199a7 100644 --- a/applications/minotari_console_wallet/Cargo.toml +++ b/applications/minotari_console_wallet/Cargo.toml @@ -32,7 +32,7 @@ bitflags = "1.2.1" chrono = { version = "0.4.19", default-features = false } clap = { version = "3.2", features = ["derive", "env"] } config = "0.13.0" -crossterm = { version = "0.25.0" } +crossterm = { version = "0.27.0" } digest = "0.10" futures = { version = "^0.3.16", default-features = false, features = ["alloc"] } log4rs = { git = "https://github.com/tari-project/log4rs.git", default_features = false, features = ["config_parsing", "threshold_filter", "yaml_format", "console_appender", "rolling_file_appender", "compound_policy", "size_trigger", "fixed_window_roller", "delete_roller"] } @@ -62,8 +62,8 @@ path = "../../base_layer/core" default-features = false features = ["transactions", "mempool_proto", "base_node_proto"] -[dependencies.tui] -version = "^0.16" +[dependencies.ratatui] +version = "^0.23" default-features = false features = ["crossterm"] diff --git a/applications/minotari_console_wallet/src/ui/app.rs b/applications/minotari_console_wallet/src/ui/app.rs index 7cd1c19e74..5c69a5c5dd 100644 --- a/applications/minotari_console_wallet/src/ui/app.rs +++ b/applications/minotari_console_wallet/src/ui/app.rs @@ -21,13 +21,13 @@ // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. use minotari_wallet::{util::wallet_identity::WalletIdentity, WalletConfig, WalletSqlite}; -use tari_comms::peer_manager::Peer; -use tokio::runtime::Handle; -use tui::{ +use ratatui::{ backend::Backend, layout::{Constraint, Direction, Layout}, Frame, }; +use tari_comms::peer_manager::Peer; +use tokio::runtime::Handle; use crate::{ notifier::Notifier, diff --git a/applications/minotari_console_wallet/src/ui/components/balance.rs b/applications/minotari_console_wallet/src/ui/components/balance.rs index 8dc1812f24..99d15a0a7d 100644 --- a/applications/minotari_console_wallet/src/ui/components/balance.rs +++ b/applications/minotari_console_wallet/src/ui/components/balance.rs @@ -1,15 +1,15 @@ // Copyright 2022 The Tari Project // SPDX-License-Identifier: BSD-3-Clause -use tari_core::transactions::tari_amount::MicroMinotari; -use tui::{ +use ratatui::{ backend::Backend, layout::{Constraint, Direction, Layout, Rect}, style::{Color, Modifier, Style}, - text::{Span, Spans}, + text::{Line, Span}, widgets::{Block, Borders, Paragraph}, Frame, }; +use tari_core::transactions::tari_amount::MicroMinotari; use crate::ui::{components::Component, state::AppState}; @@ -50,18 +50,18 @@ impl Component for Balance { let balance = app_state.get_balance(); let time_locked = balance.time_locked_balance.unwrap_or_else(|| MicroMinotari::from(0u64)); - let available_balance = Spans::from(vec![ + let available_balance = Line::from(vec![ Span::styled("Available:", Style::default().fg(Color::Magenta)), Span::raw(" "), Span::raw(format!("{}", balance.available_balance.saturating_sub(time_locked))), Span::raw(format!(" (Time Locked: {})", time_locked)), ]); - let incoming_balance = Spans::from(vec![ + let incoming_balance = Line::from(vec![ Span::styled("Pending Incoming:", Style::default().fg(Color::Magenta)), Span::raw(" "), Span::raw(format!("{}", balance.pending_incoming_balance)), ]); - let outgoing_balance = Spans::from(vec![ + let outgoing_balance = Line::from(vec![ Span::styled("Pending Outgoing:", Style::default().fg(Color::Magenta)), Span::raw(" "), Span::raw(format!("{}", balance.pending_outgoing_balance)), diff --git a/applications/minotari_console_wallet/src/ui/components/base_node.rs b/applications/minotari_console_wallet/src/ui/components/base_node.rs index 97866d9cf5..23d26c79cc 100644 --- a/applications/minotari_console_wallet/src/ui/components/base_node.rs +++ b/applications/minotari_console_wallet/src/ui/components/base_node.rs @@ -21,11 +21,11 @@ // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. use minotari_wallet::connectivity_service::{OnlineStatus, WalletConnectivityInterface}; -use tui::{ +use ratatui::{ backend::Backend, layout::{Constraint, Direction, Layout, Rect}, style::{Color, Style}, - text::{Span, Spans}, + text::{Line, Span}, widgets::{Block, Borders, Paragraph}, Frame, }; @@ -46,7 +46,7 @@ impl Component for BaseNode { #[allow(clippy::too_many_lines)] fn draw(&mut self, f: &mut Frame, area: Rect, app_state: &AppState) where B: Backend { - let title = Spans::from(vec![Span::styled( + let title = Line::from(vec![Span::styled( " Base Node Status - ", Style::default().fg(Color::White), )]); @@ -54,12 +54,12 @@ impl Component for BaseNode { let current_online_status = app_state.get_wallet_connectivity().get_connectivity_status(); let mut base_node_id_color = Color::White; let chain_info = match current_online_status { - OnlineStatus::Connecting => Spans::from(vec![ + OnlineStatus::Connecting => Line::from(vec![ Span::styled("Chain Tip:", Style::default().fg(Color::Magenta)), Span::raw(" "), Span::styled("Connecting...", Style::default().fg(Color::Reset)), ]), - OnlineStatus::Offline => Spans::from(vec![ + OnlineStatus::Offline => Line::from(vec![ Span::styled("Chain Tip:", Style::default().fg(Color::Magenta)), Span::raw(" "), Span::styled("Offline", Style::default().fg(Color::Red)), @@ -109,9 +109,9 @@ impl Component for BaseNode { Span::styled(" ms", Style::default().fg(Color::DarkGray)), ]; - Spans::from(tip_info) + Line::from(tip_info) } else { - Spans::from(vec![ + Line::from(vec![ Span::styled("Chain Tip:", Style::default().fg(Color::Magenta)), Span::raw(" "), Span::styled("Waiting for data...", Style::default().fg(Color::DarkGray)), @@ -120,7 +120,7 @@ impl Component for BaseNode { }, }; - let base_node_id = Spans::from(vec![ + let base_node_id = Line::from(vec![ Span::styled(" Connected Base Node ID: ", Style::default().fg(Color::Magenta)), Span::styled( format!("{}", app_state.get_selected_base_node().node_id.clone()), diff --git a/applications/minotari_console_wallet/src/ui/components/burn_tab.rs b/applications/minotari_console_wallet/src/ui/components/burn_tab.rs index e41a4a7e7a..bcd1dadf04 100644 --- a/applications/minotari_console_wallet/src/ui/components/burn_tab.rs +++ b/applications/minotari_console_wallet/src/ui/components/burn_tab.rs @@ -5,16 +5,16 @@ use std::fs; use log::*; use minotari_wallet::output_manager_service::UtxoSelectionCriteria; -use tari_core::transactions::tari_amount::MicroMinotari; -use tokio::{runtime::Handle, sync::watch}; -use tui::{ +use ratatui::{ backend::Backend, layout::{Constraint, Direction, Layout, Rect}, style::{Color, Modifier, Style}, - text::{Span, Spans}, + text::{Line, Span}, widgets::{Block, Borders, ListItem, Paragraph, Wrap}, Frame, }; +use tari_core::transactions::tari_amount::MicroMinotari; +use tokio::{runtime::Handle, sync::watch}; use unicode_width::UnicodeWidthStr; use crate::ui::{ @@ -90,7 +90,7 @@ impl BurnTab { .split(area); let instructions = Paragraph::new(vec![ - Spans::from(vec![ + Line::from(vec![ Span::raw("Press "), Span::styled("P", Style::default().add_modifier(Modifier::BOLD)), Span::raw(" to edit "), @@ -111,7 +111,7 @@ impl BurnTab { Span::styled("B", Style::default().add_modifier(Modifier::BOLD)), Span::raw(" to view burnt proofs."), ]), - Spans::from(vec![ + Line::from(vec![ Span::raw("Press "), Span::styled("S", Style::default().add_modifier(Modifier::BOLD)), Span::raw(" to send a burn transaction."), @@ -121,7 +121,7 @@ impl BurnTab { .block(Block::default()); f.render_widget(instructions, vert_chunks[0]); - let burnt_proof_filepath_input = Paragraph::new(self.burnt_proof_filepath_field.as_ref()) + let burnt_proof_filepath_input = Paragraph::new(&*self.burnt_proof_filepath_field) .style(match self.burn_input_mode { BurnInputMode::BurntProofPath => Style::default().fg(Color::Magenta), _ => Style::default(), @@ -133,7 +133,7 @@ impl BurnTab { ); f.render_widget(burnt_proof_filepath_input, vert_chunks[1]); - let claim_public_key_input = Paragraph::new(self.claim_public_key_field.as_ref()) + let claim_public_key_input = Paragraph::new(&*self.claim_public_key_field) .style(match self.burn_input_mode { BurnInputMode::ClaimPublicKey => Style::default().fg(Color::Magenta), _ => Style::default(), @@ -154,7 +154,7 @@ impl BurnTab { .block(Block::default().borders(Borders::ALL).title("(A)mount:")); f.render_widget(amount_input, amount_fee_layout[0]); - let fee_input = Paragraph::new(self.fee_field.as_ref()) + let fee_input = Paragraph::new(&*self.fee_field) .style(match self.burn_input_mode { BurnInputMode::Fee => Style::default().fg(Color::Magenta), _ => Style::default(), @@ -162,7 +162,7 @@ impl BurnTab { .block(Block::default().borders(Borders::ALL).title("(F)ee-per-gram (uT):")); f.render_widget(fee_input, amount_fee_layout[1]); - let message_input = Paragraph::new(self.message_field.as_ref()) + let message_input = Paragraph::new(&*self.message_field) .style(match self.burn_input_mode { BurnInputMode::Message => Style::default().fg(Color::Magenta), _ => Style::default(), @@ -220,7 +220,7 @@ impl BurnTab { .margin(1) .split(area); - let instructions = Paragraph::new(Spans::from(vec![ + let instructions = Paragraph::new(Line::from(vec![ Span::raw(" Use "), Span::styled("Up↑/Down↓ Keys", Style::default().add_modifier(Modifier::BOLD)), Span::raw(" to choose a proof, "), diff --git a/applications/minotari_console_wallet/src/ui/components/component.rs b/applications/minotari_console_wallet/src/ui/components/component.rs index cc70ab03c3..3d16b5bbb9 100644 --- a/applications/minotari_console_wallet/src/ui/components/component.rs +++ b/applications/minotari_console_wallet/src/ui/components/component.rs @@ -1,11 +1,11 @@ // Copyright 2022 The Tari Project // SPDX-License-Identifier: BSD-3-Clause -use tui::{ +use ratatui::{ backend::Backend, layout::Rect, style::{Color, Style}, - text::{Span, Spans}, + text::{Line, Span}, Frame, }; @@ -25,7 +25,7 @@ pub trait Component { fn on_tick(&mut self, _app_state: &mut AppState) {} // Create custom title based on data in AppState. - fn format_title(&self, title: &str, _app_state: &AppState) -> Spans { - Spans::from(Span::styled(title.to_owned(), Style::default().fg(Color::White))) + fn format_title(&self, title: &str, _app_state: &AppState) -> Line { + Line::from(Span::styled(title.to_owned(), Style::default().fg(Color::White))) } } diff --git a/applications/minotari_console_wallet/src/ui/components/contacts_tab.rs b/applications/minotari_console_wallet/src/ui/components/contacts_tab.rs index e68c8a1670..6863893a6f 100644 --- a/applications/minotari_console_wallet/src/ui/components/contacts_tab.rs +++ b/applications/minotari_console_wallet/src/ui/components/contacts_tab.rs @@ -1,15 +1,15 @@ // Copyright 2022 The Tari Project // SPDX-License-Identifier: BSD-3-Clause -use tokio::runtime::Handle; -use tui::{ +use ratatui::{ backend::Backend, layout::{Constraint, Layout, Rect}, style::{Color, Modifier, Style}, - text::{Span, Spans}, + text::{Line, Span}, widgets::{Block, Borders, Clear, ListItem, Paragraph, Wrap}, Frame, }; +use tokio::runtime::Handle; use unicode_width::UnicodeWidthStr; use crate::{ @@ -58,7 +58,7 @@ impl ContactsTab { .margin(1) .split(area); - let instructions = Paragraph::new(Spans::from(vec![ + let instructions = Paragraph::new(Line::from(vec![ Span::raw("Use "), Span::styled("Up↑/Down↓ Keys", Style::default().add_modifier(Modifier::BOLD)), Span::raw(" to select a contact, "), @@ -137,7 +137,7 @@ impl ContactsTab { .margin(1) .split(popup_area); - let instructions = Paragraph::new(Spans::from(vec![ + let instructions = Paragraph::new(Line::from(vec![ Span::raw("Press "), Span::styled("L", Style::default().add_modifier(Modifier::BOLD)), Span::raw(" to edit "), @@ -153,7 +153,7 @@ impl ContactsTab { .block(Block::default()); f.render_widget(instructions, vert_chunks[0]); - let alias_input = Paragraph::new(self.alias_field.as_ref()) + let alias_input = Paragraph::new(&*self.alias_field) .style(match self.edit_contact_mode { ContactInputMode::Alias => Style::default().fg(Color::Magenta), _ => Style::default(), @@ -161,7 +161,7 @@ impl ContactsTab { .block(Block::default().borders(Borders::ALL).title("A(l)ias:")); f.render_widget(alias_input, vert_chunks[1]); - let tari_address_input = Paragraph::new(self.address_field.as_ref()) + let tari_address_input = Paragraph::new(&*self.address_field) .style(match self.edit_contact_mode { ContactInputMode::PubkeyEmojiId => Style::default().fg(Color::Magenta), _ => Style::default(), diff --git a/applications/minotari_console_wallet/src/ui/components/events_component.rs b/applications/minotari_console_wallet/src/ui/components/events_component.rs index 81d576a037..aa00d2e1c5 100644 --- a/applications/minotari_console_wallet/src/ui/components/events_component.rs +++ b/applications/minotari_console_wallet/src/ui/components/events_component.rs @@ -1,7 +1,7 @@ // Copyright 2022 The Tari Project // SPDX-License-Identifier: BSD-3-Clause -use tui::{ +use ratatui::{ backend::Backend, layout::{Constraint, Rect}, widgets::{Block, Borders, Row, Table, TableState}, diff --git a/applications/minotari_console_wallet/src/ui/components/log_tab.rs b/applications/minotari_console_wallet/src/ui/components/log_tab.rs index fb9effbed1..a4c7454bdc 100644 --- a/applications/minotari_console_wallet/src/ui/components/log_tab.rs +++ b/applications/minotari_console_wallet/src/ui/components/log_tab.rs @@ -3,15 +3,15 @@ use std::fs; -use regex::Regex; -use tui::{ +use ratatui::{ backend::Backend, layout::{Constraint, Layout, Rect}, style::{Color, Modifier, Style}, - text::{Span, Spans}, + text::{Line, Span}, widgets::{Block, Borders, Paragraph, Wrap}, Frame, }; +use regex::Regex; use crate::ui::{components::Component, state::AppState}; @@ -31,9 +31,9 @@ impl LogTab { } // Format the log line nicely. If it cannot be parsed then return raw line - fn format_line(&self, line: String) -> Spans { + fn format_line(&self, line: String) -> Line { match self.re.captures(line.as_str()) { - Some(caps) => Spans::from(vec![ + Some(caps) => Line::from(vec![ Span::styled(caps["timestamp"].to_string(), Style::default().fg(Color::LightGreen)), Span::raw(" ["), Span::styled(caps["target"].to_string(), Style::default().fg(Color::LightMagenta)), @@ -49,7 +49,7 @@ impl LogTab { Span::raw(caps["message"].to_string()), ]), // In case the line is not well formatted, just print as it is - None => Spans::from(vec![Span::raw(line)]), + None => Line::from(vec![Span::raw(line)]), } } @@ -70,8 +70,8 @@ impl LogTab { Ok(content) => content, Err(err) => format!("Error reading log: {}", err), }; - // Convert the content into Spans - let mut text: Vec = content.lines().map(|line| self.format_line(line.to_string())).collect(); + // Convert the content into Line + let mut text: Vec = content.lines().map(|line| self.format_line(line.to_string())).collect(); // We want newest at the top text.reverse(); // Render the Paragraph diff --git a/applications/minotari_console_wallet/src/ui/components/menu.rs b/applications/minotari_console_wallet/src/ui/components/menu.rs index 1ef24962e3..dc96faee94 100644 --- a/applications/minotari_console_wallet/src/ui/components/menu.rs +++ b/applications/minotari_console_wallet/src/ui/components/menu.rs @@ -2,15 +2,15 @@ // SPDX-License-Identifier: BSD-3-Clause use minotari_app_utilities::consts; -use tokio::runtime::Handle; -use tui::{ +use ratatui::{ backend::Backend, layout::{Constraint, Direction, Layout, Rect}, style::{Color, Style}, - text::{Span, Spans}, + text::{Line, Span}, widgets::{Block, Paragraph}, Frame, }; +use tokio::runtime::Handle; use crate::ui::{components::Component, state::AppState}; @@ -38,13 +38,13 @@ impl Component for Menu { ) .split(area); - let version = Spans::from(vec![ + let version = Line::from(vec![ Span::styled(" Version: ", Style::default().fg(Color::White)), Span::styled(consts::APP_VERSION_NUMBER, Style::default().fg(Color::Magenta)), Span::raw(" "), ]); - let network = Spans::from(vec![ + let network = Line::from(vec![ Span::styled(" Network: ", Style::default().fg(Color::White)), Span::styled( Handle::current().block_on(app_state.get_network()).to_string(), @@ -53,7 +53,7 @@ impl Component for Menu { Span::raw(" "), ]); - let tabs = Spans::from(vec![ + let tabs = Line::from(vec![ Span::styled("LeftArrow: ", Style::default().fg(Color::White)), Span::styled("Previous Tab ", Style::default().fg(Color::Magenta)), Span::raw(" "), @@ -61,7 +61,7 @@ impl Component for Menu { Span::styled("Next Tab ", Style::default().fg(Color::Magenta)), ]); - let quit = Spans::from(vec![ + let quit = Line::from(vec![ Span::styled(" F10/Ctrl-Q: ", Style::default().fg(Color::White)), Span::styled("Quit ", Style::default().fg(Color::Magenta)), ]); diff --git a/applications/minotari_console_wallet/src/ui/components/network_tab.rs b/applications/minotari_console_wallet/src/ui/components/network_tab.rs index e6f438004f..72a4d68321 100644 --- a/applications/minotari_console_wallet/src/ui/components/network_tab.rs +++ b/applications/minotari_console_wallet/src/ui/components/network_tab.rs @@ -4,17 +4,17 @@ use std::collections::HashMap; use log::*; -use tari_comms::peer_manager::Peer; -use tari_utilities::hex::Hex; -use tokio::runtime::Handle; -use tui::{ +use ratatui::{ backend::Backend, layout::{Constraint, Direction, Layout, Rect}, style::{Color, Modifier, Style}, - text::{Span, Spans}, + text::{Line, Span}, widgets::{Block, Borders, ListItem, ListState, Paragraph, Wrap}, Frame, }; +use tari_comms::peer_manager::Peer; +use tari_utilities::hex::Hex; +use tokio::runtime::Handle; use crate::{ ui::{ @@ -73,7 +73,7 @@ impl NetworkTab { .margin(1) .split(area); - let instructions = Paragraph::new(Spans::from(vec![ + let instructions = Paragraph::new(Line::from(vec![ Span::raw("Press "), Span::styled("B", Style::default().add_modifier(Modifier::BOLD)), Span::raw(" and use "), @@ -236,7 +236,7 @@ impl NetworkTab { ]); } - let instructions_p = Paragraph::new(Spans::from(instructions)).block(Block::default()); + let instructions_p = Paragraph::new(Line::from(instructions)).block(Block::default()); f.render_widget(instructions_p, base_node_layout[0]); let peer = app_state.get_selected_base_node(); diff --git a/applications/minotari_console_wallet/src/ui/components/notification_tab.rs b/applications/minotari_console_wallet/src/ui/components/notification_tab.rs index a8c8536fc4..0bc25a2b28 100644 --- a/applications/minotari_console_wallet/src/ui/components/notification_tab.rs +++ b/applications/minotari_console_wallet/src/ui/components/notification_tab.rs @@ -8,15 +8,15 @@ // Currently notifications are only added from the wallet_event_monitor which has // add_notification method. -use tokio::runtime::Handle; -use tui::{ +use ratatui::{ backend::Backend, layout::{Constraint, Layout, Rect}, style::{Color, Modifier, Style}, - text::{Span, Spans}, + text::{Line, Span}, widgets::{Block, Borders, Paragraph, Wrap}, Frame, }; +use tokio::runtime::Handle; use crate::ui::{components::Component, state::AppState}; @@ -35,7 +35,7 @@ impl NotificationTab { Span::raw(" to clear notifications"), ]; - let instructions = Paragraph::new(Spans::from(span_vec)).wrap(Wrap { trim: false }); + let instructions = Paragraph::new(Line::from(span_vec)).wrap(Wrap { trim: false }); let block = Block::default().borders(Borders::ALL).title(Span::styled( "Notifications", @@ -51,7 +51,7 @@ impl NotificationTab { .iter() .rev() .map(|(time, line)| { - Spans::from(vec![ + Line::from(vec![ Span::styled( time.format("%Y-%m-%d %H:%M:%S ").to_string(), Style::default().fg(Color::LightGreen), @@ -80,15 +80,15 @@ impl Component for NotificationTab { Handle::current().block_on(app_state.mark_notifications_as_read()); } - fn format_title(&self, title: &str, app_state: &AppState) -> Spans { + fn format_title(&self, title: &str, app_state: &AppState) -> Line { // Create custom title based on notifications count. if app_state.unread_notifications_count() > 0 { - Spans::from(Span::styled( + Line::from(Span::styled( format!("{}({})", title, app_state.unread_notifications_count()), Style::default().fg(Color::LightGreen), )) } else { - Spans::from(Span::styled(title.to_owned(), Style::default().fg(Color::White))) + Line::from(Span::styled(title.to_owned(), Style::default().fg(Color::White))) } } diff --git a/applications/minotari_console_wallet/src/ui/components/receive_tab.rs b/applications/minotari_console_wallet/src/ui/components/receive_tab.rs index 388b98f516..eb13dda732 100644 --- a/applications/minotari_console_wallet/src/ui/components/receive_tab.rs +++ b/applications/minotari_console_wallet/src/ui/components/receive_tab.rs @@ -1,11 +1,11 @@ // Copyright 2022 The Tari Project // SPDX-License-Identifier: BSD-3-Clause -use tui::{ +use ratatui::{ backend::Backend, layout::{Constraint, Direction, Layout, Rect}, style::{Color, Modifier, Style}, - text::{Span, Spans}, + text::{Line, Span}, widgets::{Block, Borders, Paragraph}, Frame, }; @@ -63,7 +63,7 @@ impl ReceiveTab { const ITEM_04: &str = "Emoji ID: "; // Tari address - let tari_address_text = Spans::from(vec![ + let tari_address_text = Line::from(vec![ Span::styled(ITEM_01, Style::default().fg(Color::Magenta)), Span::styled( app_state.get_identity().tari_address.clone(), @@ -74,7 +74,7 @@ impl ReceiveTab { f.render_widget(paragraph, details_chunks[0]); // NodeId - let node_id_text = Spans::from(vec![ + let node_id_text = Line::from(vec![ Span::styled(ITEM_02, Style::default().fg(Color::Magenta)), Span::styled( app_state.get_identity().node_id.clone(), @@ -85,7 +85,7 @@ impl ReceiveTab { f.render_widget(paragraph, details_chunks[1]); // Public Address - let public_address_text = Spans::from(vec![ + let public_address_text = Line::from(vec![ Span::styled(ITEM_03, Style::default().fg(Color::Magenta)), Span::styled( app_state.get_identity().network_address.clone(), @@ -96,7 +96,7 @@ impl ReceiveTab { f.render_widget(paragraph, details_chunks[2]); // Emoji ID - let emoji_id_text = Spans::from(vec![ + let emoji_id_text = Line::from(vec![ Span::styled(ITEM_04, Style::default().fg(Color::Magenta)), Span::styled( app_state.get_identity().emoji_id.clone(), diff --git a/applications/minotari_console_wallet/src/ui/components/register_template_tab.rs b/applications/minotari_console_wallet/src/ui/components/register_template_tab.rs index e82d9e5374..8eb6186966 100644 --- a/applications/minotari_console_wallet/src/ui/components/register_template_tab.rs +++ b/applications/minotari_console_wallet/src/ui/components/register_template_tab.rs @@ -7,6 +7,14 @@ use blake2::Blake2b; use digest::{consts::U32, Digest}; use log::*; use minotari_wallet::output_manager_service::UtxoSelectionCriteria; +use ratatui::{ + backend::Backend, + layout::{Constraint, Direction, Layout, Rect}, + style::{Color, Modifier, Style}, + text::{Line, Span}, + widgets::{Block, Borders, Paragraph, Wrap}, + Frame, +}; use regex::Regex; use reqwest::StatusCode; use tari_core::transactions::{tari_amount::MicroMinotari, transaction_components::TemplateType}; @@ -16,14 +24,6 @@ use tokio::{ runtime::{Handle, Runtime}, sync::watch, }; -use tui::{ - backend::Backend, - layout::{Constraint, Direction, Layout, Rect}, - style::{Color, Modifier, Style}, - text::{Span, Spans}, - widgets::{Block, Borders, Paragraph, Wrap}, - Frame, -}; use unicode_width::UnicodeWidthStr; use url::Url; @@ -166,7 +166,7 @@ impl RegisterTemplateTab { .split(area); let instructions = Paragraph::new(vec![ - Spans::from(vec![ + Line::from(vec![ Span::raw("Press "), Span::styled("B", Style::default().add_modifier(Modifier::BOLD)), Span::raw(" to edit "), @@ -200,7 +200,7 @@ impl RegisterTemplateTab { Span::styled("Fee-per-gram", Style::default().add_modifier(Modifier::BOLD)), Span::raw(" field."), ]), - Spans::from(vec![ + Line::from(vec![ Span::raw("Press "), Span::styled("S", Style::default().add_modifier(Modifier::BOLD)), Span::raw(" to send a template registration transaction."), @@ -252,7 +252,7 @@ impl RegisterTemplateTab { // First row - Binary URL // ---------------------------------------------------------------------------- - let binary_url = Paragraph::new(self.binary_url.as_ref()) + let binary_url = Paragraph::new(&*self.binary_url) .style(match self.input_mode { InputMode::BinaryUrl => Style::default().fg(Color::Magenta), _ => Style::default(), @@ -264,7 +264,7 @@ impl RegisterTemplateTab { // Second row - Template Name, Template Version, Template Type // ---------------------------------------------------------------------------- - let template_name = Paragraph::new(self.template_name.as_ref()) + let template_name = Paragraph::new(&*self.template_name) .style(match self.input_mode { InputMode::TemplateName => Style::default().fg(Color::Magenta), _ => Style::default(), @@ -280,7 +280,7 @@ impl RegisterTemplateTab { .block(Block::default().borders(Borders::ALL).title("Template (V)ersion:")); f.render_widget(template_version, second_row_layout[1]); - let template_type = Paragraph::new(self.template_type.as_ref()) + let template_type = Paragraph::new(&*self.template_type) .style(match self.input_mode { InputMode::TemplateType => Style::default().fg(Color::Magenta), _ => Style::default(), @@ -292,7 +292,7 @@ impl RegisterTemplateTab { // Third row - Repository URL // ---------------------------------------------------------------------------- - let repository_url = Paragraph::new(self.repository_url.as_ref()) + let repository_url = Paragraph::new(&*self.repository_url) .style(match self.input_mode { InputMode::RepositoryUrl => Style::default().fg(Color::Magenta), _ => Style::default(), @@ -304,12 +304,12 @@ impl RegisterTemplateTab { // Fourth row - Binary checksum, Repository Commit Hash, Fee per gram // ---------------------------------------------------------------------------- - let binary_checksum = Paragraph::new(self.binary_checksum.as_ref()) + let binary_checksum = Paragraph::new(&*self.binary_checksum) .style(Style::default().fg(Color::Gray)) .block(Block::default().borders(Borders::ALL).title("Binary Checksum:")); f.render_widget(binary_checksum, fourth_row_layout[0]); - let repository_commit_hash = Paragraph::new(self.repository_commit_hash.as_ref()) + let repository_commit_hash = Paragraph::new(&*self.repository_commit_hash) .style(match self.input_mode { InputMode::RepositoryCommitHash => Style::default().fg(Color::Magenta), _ => Style::default(), @@ -321,7 +321,7 @@ impl RegisterTemplateTab { ); f.render_widget(repository_commit_hash, fourth_row_layout[1]); - let fee_per_gram = Paragraph::new(self.fee_per_gram.as_ref()) + let fee_per_gram = Paragraph::new(&*self.fee_per_gram) .style(match self.input_mode { InputMode::FeePerGram => Style::default().fg(Color::Magenta), _ => Style::default(), diff --git a/applications/minotari_console_wallet/src/ui/components/send_tab.rs b/applications/minotari_console_wallet/src/ui/components/send_tab.rs index 884dff315a..e466f638f7 100644 --- a/applications/minotari_console_wallet/src/ui/components/send_tab.rs +++ b/applications/minotari_console_wallet/src/ui/components/send_tab.rs @@ -3,17 +3,17 @@ use log::*; use minotari_wallet::output_manager_service::UtxoSelectionCriteria; -use tari_core::transactions::tari_amount::MicroMinotari; -use tari_utilities::hex::Hex; -use tokio::{runtime::Handle, sync::watch}; -use tui::{ +use ratatui::{ backend::Backend, layout::{Constraint, Direction, Layout, Rect}, style::{Color, Modifier, Style}, - text::{Span, Spans}, + text::{Line, Span}, widgets::{Block, Borders, Paragraph, TableState, Wrap}, Frame, }; +use tari_core::transactions::tari_amount::MicroMinotari; +use tari_utilities::hex::Hex; +use tokio::{runtime::Handle, sync::watch}; use unicode_width::UnicodeWidthStr; use crate::ui::{ @@ -88,7 +88,7 @@ impl SendTab { .margin(1) .split(area); let instructions = Paragraph::new(vec![ - Spans::from(vec![ + Line::from(vec![ Span::raw("Press "), Span::styled("T", Style::default().add_modifier(Modifier::BOLD)), Span::raw(" to edit "), @@ -105,7 +105,7 @@ impl SendTab { Span::styled("C", Style::default().add_modifier(Modifier::BOLD)), Span::raw(" to select a contact."), ]), - Spans::from(vec![ + Line::from(vec![ Span::raw("Press "), Span::styled("S", Style::default().add_modifier(Modifier::BOLD)), Span::raw(" to send a normal transaction, "), @@ -119,7 +119,7 @@ impl SendTab { .block(Block::default()); f.render_widget(instructions, vert_chunks[0]); - let to_input = Paragraph::new(self.to_field.as_ref()) + let to_input = Paragraph::new(&*self.to_field) .style(match self.send_input_mode { SendInputMode::To => Style::default().fg(Color::Magenta), _ => Style::default(), @@ -151,7 +151,7 @@ impl SendTab { ); f.render_widget(amount_input, amount_fee_layout[0]); - let fee_input = Paragraph::new(self.fee_field.as_ref()) + let fee_input = Paragraph::new(&*self.fee_field) .style(match self.send_input_mode { SendInputMode::Fee => Style::default().fg(Color::Magenta), _ => Style::default(), @@ -159,7 +159,7 @@ impl SendTab { .block(Block::default().borders(Borders::ALL).title("(F)ee-per-gram (uT):")); f.render_widget(fee_input, amount_fee_layout[1]); - let message_input = Paragraph::new(self.message_field.as_ref()) + let message_input = Paragraph::new(&*self.message_field) .style(match self.send_input_mode { SendInputMode::Message => Style::default().fg(Color::Magenta), _ => Style::default(), @@ -212,7 +212,7 @@ impl SendTab { .margin(1) .split(area); - let instructions = Paragraph::new(Spans::from(vec![ + let instructions = Paragraph::new(Line::from(vec![ Span::raw(" Use "), Span::styled("Up↑/Down↓ Keys", Style::default().add_modifier(Modifier::BOLD)), Span::raw(" to choose a contact, "), diff --git a/applications/minotari_console_wallet/src/ui/components/styles.rs b/applications/minotari_console_wallet/src/ui/components/styles.rs index 52352c0271..c99151af6c 100644 --- a/applications/minotari_console_wallet/src/ui/components/styles.rs +++ b/applications/minotari_console_wallet/src/ui/components/styles.rs @@ -1,7 +1,7 @@ // Copyright 2022 The Tari Project // SPDX-License-Identifier: BSD-3-Clause -use tui::style::{Color, Modifier, Style}; +use ratatui::style::{Color, Modifier, Style}; pub fn header_row() -> Style { Style::default().fg(Color::Magenta) diff --git a/applications/minotari_console_wallet/src/ui/components/tabs_container.rs b/applications/minotari_console_wallet/src/ui/components/tabs_container.rs index 512e810df2..054d8dea84 100644 --- a/applications/minotari_console_wallet/src/ui/components/tabs_container.rs +++ b/applications/minotari_console_wallet/src/ui/components/tabs_container.rs @@ -20,7 +20,7 @@ // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -use tui::{ +use ratatui::{ backend::Backend, layout::Rect, style::{Color, Modifier, Style}, diff --git a/applications/minotari_console_wallet/src/ui/components/transactions_tab.rs b/applications/minotari_console_wallet/src/ui/components/transactions_tab.rs index 798042d18a..3cb9ed3936 100644 --- a/applications/minotari_console_wallet/src/ui/components/transactions_tab.rs +++ b/applications/minotari_console_wallet/src/ui/components/transactions_tab.rs @@ -6,16 +6,16 @@ use std::collections::HashMap; use chrono::{DateTime, Local}; use log::*; use minotari_wallet::transaction_service::storage::models::TxCancellationReason; -use tari_common_types::transaction::{TransactionDirection, TransactionStatus}; -use tokio::runtime::Handle; -use tui::{ +use ratatui::{ backend::Backend, layout::{Constraint, Direction, Layout, Rect}, style::{Color, Modifier, Style}, - text::{Span, Spans}, + text::{Line, Span}, widgets::{Block, Borders, ListItem, Paragraph, Wrap}, Frame, }; +use tari_common_types::transaction::{TransactionDirection, TransactionStatus}; +use tokio::runtime::Handle; use crate::ui::{ components::{balance::Balance, styles, Component}, @@ -375,7 +375,7 @@ impl TransactionsTab { Style::default().fg(Color::Gray), ) }; - let fee = Spans::from(vec![ + let fee = Line::from(vec![ Span::styled(format!("{}", tx.fee), Style::default().fg(Color::White)), fee_details, ]); @@ -506,7 +506,7 @@ impl Component for TransactionsTab { span_vec.push(Span::styled("(Esc)", Style::default().add_modifier(Modifier::BOLD))); span_vec.push(Span::raw(" exit list")); - let instructions = Paragraph::new(Spans::from(span_vec)).wrap(Wrap { trim: false }); + let instructions = Paragraph::new(Line::from(span_vec)).wrap(Wrap { trim: false }); f.render_widget(instructions, areas[1]); self.draw_transaction_lists(f, areas[2], app_state); diff --git a/applications/minotari_console_wallet/src/ui/mod.rs b/applications/minotari_console_wallet/src/ui/mod.rs index 93f14443a5..943d3d851f 100644 --- a/applications/minotari_console_wallet/src/ui/mod.rs +++ b/applications/minotari_console_wallet/src/ui/mod.rs @@ -43,8 +43,8 @@ use crossterm::{ terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }; use log::*; +use ratatui::{backend::CrosstermBackend, Terminal}; use tokio::runtime::Handle; -use tui::{backend::CrosstermBackend, Terminal}; use ui_error::UiError; use crate::utils::events::{Event, EventStream}; diff --git a/applications/minotari_console_wallet/src/ui/widgets/list_state.rs b/applications/minotari_console_wallet/src/ui/widgets/list_state.rs index ba93429534..6a04b7b07d 100644 --- a/applications/minotari_console_wallet/src/ui/widgets/list_state.rs +++ b/applications/minotari_console_wallet/src/ui/widgets/list_state.rs @@ -20,7 +20,7 @@ // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -use tui::widgets::ListState; +use ratatui::widgets::ListState; #[derive(Debug)] pub struct WindowedListState { offset: usize, diff --git a/applications/minotari_console_wallet/src/ui/widgets/multi_column_list.rs b/applications/minotari_console_wallet/src/ui/widgets/multi_column_list.rs index 502161302e..fb8875d1a5 100644 --- a/applications/minotari_console_wallet/src/ui/widgets/multi_column_list.rs +++ b/applications/minotari_console_wallet/src/ui/widgets/multi_column_list.rs @@ -20,7 +20,7 @@ // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -use tui::{ +use ratatui::{ backend::Backend, layout::{Constraint, Direction, Layout, Rect}, style::Style, diff --git a/applications/minotari_console_wallet/src/ui/widgets/utilities.rs b/applications/minotari_console_wallet/src/ui/widgets/utilities.rs index a361102195..3b9d35dd11 100644 --- a/applications/minotari_console_wallet/src/ui/widgets/utilities.rs +++ b/applications/minotari_console_wallet/src/ui/widgets/utilities.rs @@ -20,11 +20,11 @@ // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -use tui::{ +use ratatui::{ backend::Backend, layout::{Alignment, Constraint, Direction, Layout, Rect}, style::{Color, Modifier, Style}, - text::{Span, Spans}, + text::{Line, Span}, widgets::{Block, Borders, Clear, Paragraph, Wrap}, Frame, }; @@ -85,7 +85,7 @@ pub fn draw_dialog( let mut spans = Vec::new(); for l in lines { - spans.push(Spans::from(Span::styled( + spans.push(Line::from(Span::styled( l, Style::default().fg(color).add_modifier(Modifier::BOLD), ))); diff --git a/applications/minotari_console_wallet/src/wallet_modes.rs b/applications/minotari_console_wallet/src/wallet_modes.rs index 4383401e66..f77cdebf4d 100644 --- a/applications/minotari_console_wallet/src/wallet_modes.rs +++ b/applications/minotari_console_wallet/src/wallet_modes.rs @@ -29,12 +29,12 @@ use log::*; use minotari_app_grpc::authentication::ServerAuthenticationInterceptor; use minotari_wallet::{WalletConfig, WalletSqlite}; use rand::{rngs::OsRng, seq::SliceRandom}; +use ratatui::backend::CrosstermBackend; use tari_common::exit_codes::{ExitCode, ExitError}; use tari_common_types::grpc_authentication::GrpcAuthentication; use tari_comms::{multiaddr::Multiaddr, peer_manager::Peer, utils::multiaddr::multiaddr_to_socketaddr}; use tokio::{runtime::Handle, sync::broadcast}; use tonic::transport::Server; -use tui::backend::CrosstermBackend; use crate::{ automation::commands::command_runner,