From 6a5c248d352c3a99251e5f185529a2cf33df363c Mon Sep 17 00:00:00 2001 From: veeso Date: Tue, 30 Aug 2022 15:29:34 +0200 Subject: [PATCH] Yes/No dialogs are now answerable by pressing `Y` or `N` on your keyboard --- CHANGELOG.md | 1 + .../activities/auth/components/bookmarks.rs | 18 ++++++- src/ui/activities/auth/components/popup.rs | 18 ++++++- .../filetransfer/components/popups.rs | 50 +++++++++++++++++++ src/ui/activities/setup/components/commons.rs | 10 +++- src/ui/activities/setup/components/ssh.rs | 8 +++ src/ui/activities/setup/view/ssh_keys.rs | 3 +- 7 files changed, 103 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d255f80..9c79638 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ Released on ?? > ⭐ 500 stars update 🌟 +- **Yes/No dialogs** are now answerable by pressing `Y` or `N` on your keyboard ([Issue 121](https://github.com/veeso/termscp/issues/121)) - **Bugfix** - Fixed [Issue 122](https://github.com/veeso/termscp/issues/122) - Dependencies: diff --git a/src/ui/activities/auth/components/bookmarks.rs b/src/ui/activities/auth/components/bookmarks.rs index 764cf1e..a854694 100644 --- a/src/ui/activities/auth/components/bookmarks.rs +++ b/src/ui/activities/auth/components/bookmarks.rs @@ -6,7 +6,7 @@ use super::{FormMsg, Msg, UiMsg}; use tui_realm_stdlib::{Input, List, Radio}; use tuirealm::command::{Cmd, CmdResult, Direction, Position}; -use tuirealm::event::{Key, KeyEvent}; +use tuirealm::event::{Key, KeyEvent, KeyModifiers}; use tuirealm::props::{Alignment, BorderSides, BorderType, Borders, Color, InputType, TextSpan}; use tuirealm::{Component, Event, MockComponent, NoUserEvent, State, StateValue}; @@ -223,6 +223,14 @@ impl Component for DeleteBookmarkPopup { self.perform(Cmd::Move(Direction::Right)); Some(Msg::None) } + Event::Keyboard(KeyEvent { + code: Key::Char('y'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Form(FormMsg::DeleteBookmark)), + Event::Keyboard(KeyEvent { + code: Key::Char('n'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Ui(UiMsg::CloseDeleteBookmark)), Event::Keyboard(KeyEvent { code: Key::Enter, .. }) => { @@ -283,6 +291,14 @@ impl Component for DeleteRecentPopup { self.perform(Cmd::Move(Direction::Right)); Some(Msg::None) } + Event::Keyboard(KeyEvent { + code: Key::Char('y'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Form(FormMsg::DeleteRecent)), + Event::Keyboard(KeyEvent { + code: Key::Char('n'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Ui(UiMsg::CloseDeleteRecent)), Event::Keyboard(KeyEvent { code: Key::Enter, .. }) => { diff --git a/src/ui/activities/auth/components/popup.rs b/src/ui/activities/auth/components/popup.rs index 772d16c..b5e282b 100644 --- a/src/ui/activities/auth/components/popup.rs +++ b/src/ui/activities/auth/components/popup.rs @@ -6,7 +6,7 @@ use super::{FormMsg, Msg, UiMsg}; use tui_realm_stdlib::{List, Paragraph, Radio, Textarea}; use tuirealm::command::{Cmd, CmdResult, Direction, Position}; -use tuirealm::event::{Key, KeyEvent}; +use tuirealm::event::{Key, KeyEvent, KeyModifiers}; use tuirealm::props::{Alignment, BorderType, Borders, Color, TableBuilder, TextSpan}; use tuirealm::{Component, Event, MockComponent, NoUserEvent, State, StateValue}; @@ -186,6 +186,14 @@ impl Component for QuitPopup { self.perform(Cmd::Move(Direction::Right)); Some(Msg::None) } + Event::Keyboard(KeyEvent { + code: Key::Char('y'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Form(FormMsg::Quit)), + Event::Keyboard(KeyEvent { + code: Key::Char('n'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Ui(UiMsg::CloseQuitPopup)), Event::Keyboard(KeyEvent { code: Key::Enter, .. }) => { @@ -245,6 +253,14 @@ impl Component for InstallUpdatePopup { self.perform(Cmd::Move(Direction::Right)); Some(Msg::None) } + Event::Keyboard(KeyEvent { + code: Key::Char('y'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Form(FormMsg::InstallUpdate)), + Event::Keyboard(KeyEvent { + code: Key::Char('n'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Ui(UiMsg::CloseInstallUpdatePopup)), Event::Keyboard(KeyEvent { code: Key::Enter, .. }) => { diff --git a/src/ui/activities/filetransfer/components/popups.rs b/src/ui/activities/filetransfer/components/popups.rs index bd1817c..6d92799 100644 --- a/src/ui/activities/filetransfer/components/popups.rs +++ b/src/ui/activities/filetransfer/components/popups.rs @@ -147,6 +147,14 @@ impl Component for DeletePopup { Event::Keyboard(KeyEvent { code: Key::Esc, .. }) => { Some(Msg::Ui(UiMsg::CloseDeletePopup)) } + Event::Keyboard(KeyEvent { + code: Key::Char('y'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Transfer(TransferMsg::DeleteFile)), + Event::Keyboard(KeyEvent { + code: Key::Char('n'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Ui(UiMsg::CloseDeletePopup)), Event::Keyboard(KeyEvent { code: Key::Enter, .. }) => { @@ -203,6 +211,14 @@ impl Component for DisconnectPopup { Event::Keyboard(KeyEvent { code: Key::Esc, .. }) => { Some(Msg::Ui(UiMsg::CloseDisconnectPopup)) } + Event::Keyboard(KeyEvent { + code: Key::Char('y'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Ui(UiMsg::Disconnect)), + Event::Keyboard(KeyEvent { + code: Key::Char('n'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Ui(UiMsg::CloseDisconnectPopup)), Event::Keyboard(KeyEvent { code: Key::Enter, .. }) => { @@ -1195,6 +1211,14 @@ impl Component for QuitPopup { Event::Keyboard(KeyEvent { code: Key::Esc, .. }) => { Some(Msg::Ui(UiMsg::CloseQuitPopup)) } + Event::Keyboard(KeyEvent { + code: Key::Char('y'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Ui(UiMsg::Quit)), + Event::Keyboard(KeyEvent { + code: Key::Char('n'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Ui(UiMsg::CloseQuitPopup)), Event::Keyboard(KeyEvent { code: Key::Enter, .. }) => { @@ -1344,6 +1368,14 @@ impl Component for ReplacePopup { Event::Keyboard(KeyEvent { code: Key::Esc, .. }) => { Some(Msg::PendingAction(PendingActionMsg::CloseReplacePopups)) } + Event::Keyboard(KeyEvent { + code: Key::Char('y'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::PendingAction(PendingActionMsg::TransferPendingFile)), + Event::Keyboard(KeyEvent { + code: Key::Char('n'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::PendingAction(PendingActionMsg::CloseReplacePopups)), Event::Keyboard(KeyEvent { code: Key::Enter, .. }) => { @@ -1790,6 +1822,16 @@ impl Component for SyncBrowsingMkdirPopup { Event::Keyboard(KeyEvent { code: Key::Esc, .. }) => Some(Msg::PendingAction( PendingActionMsg::CloseSyncBrowsingMkdirPopup, )), + Event::Keyboard(KeyEvent { + code: Key::Char('y'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::PendingAction(PendingActionMsg::MakePendingDirectory)), + Event::Keyboard(KeyEvent { + code: Key::Char('n'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::PendingAction( + PendingActionMsg::CloseSyncBrowsingMkdirPopup, + )), Event::Keyboard(KeyEvent { code: Key::Enter, .. }) => { @@ -1967,6 +2009,14 @@ impl Component for WatcherPopup { Event::Keyboard(KeyEvent { code: Key::Esc, .. }) => { Some(Msg::Ui(UiMsg::CloseWatcherPopup)) } + Event::Keyboard(KeyEvent { + code: Key::Char('y'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Transfer(TransferMsg::ToggleWatch)), + Event::Keyboard(KeyEvent { + code: Key::Char('n'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Ui(UiMsg::CloseWatcherPopup)), Event::Keyboard(KeyEvent { code: Key::Enter, .. }) => { diff --git a/src/ui/activities/setup/components/commons.rs b/src/ui/activities/setup/components/commons.rs index d1500ae..5f9ac7d 100644 --- a/src/ui/activities/setup/components/commons.rs +++ b/src/ui/activities/setup/components/commons.rs @@ -6,7 +6,7 @@ use super::{CommonMsg, Msg, ViewLayout}; use tui_realm_stdlib::{List, Paragraph, Radio, Span}; use tuirealm::command::{Cmd, CmdResult, Direction, Position}; -use tuirealm::event::{Key, KeyEvent}; +use tuirealm::event::{Key, KeyEvent, KeyModifiers}; use tuirealm::props::{Alignment, BorderSides, BorderType, Borders, Color, TableBuilder, TextSpan}; use tuirealm::{Component, Event, MockComponent, NoUserEvent, State, StateValue}; @@ -296,6 +296,14 @@ impl Component for SavePopup { self.perform(Cmd::Move(Direction::Right)); Some(Msg::None) } + Event::Keyboard(KeyEvent { + code: Key::Char('y'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Common(CommonMsg::SaveConfig)), + Event::Keyboard(KeyEvent { + code: Key::Char('n'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Common(CommonMsg::CloseSavePopup)), Event::Keyboard(KeyEvent { code: Key::Enter, .. }) => { diff --git a/src/ui/activities/setup/components/ssh.rs b/src/ui/activities/setup/components/ssh.rs index 12aa4d9..2acf0a8 100644 --- a/src/ui/activities/setup/components/ssh.rs +++ b/src/ui/activities/setup/components/ssh.rs @@ -58,6 +58,14 @@ impl Component for DelSshKeyPopup { self.perform(Cmd::Move(Direction::Right)); Some(Msg::None) } + Event::Keyboard(KeyEvent { + code: Key::Char('y'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Ssh(SshMsg::DeleteSshKey)), + Event::Keyboard(KeyEvent { + code: Key::Char('n'), + modifiers: KeyModifiers::NONE, + }) => Some(Msg::Ssh(SshMsg::CloseDelSshKeyPopup)), Event::Keyboard(KeyEvent { code: Key::Enter, .. }) => { diff --git a/src/ui/activities/setup/view/ssh_keys.rs b/src/ui/activities/setup/view/ssh_keys.rs index 6d64648..647c848 100644 --- a/src/ui/activities/setup/view/ssh_keys.rs +++ b/src/ui/activities/setup/view/ssh_keys.rs @@ -20,8 +20,6 @@ impl SetupActivity { self.new_app(ViewLayout::SshKeys); // Load keys self.reload_ssh_keys(); - // Give focus - assert!(self.app.active(&Id::Ssh(IdSsh::SshKeys)).is_ok()); } pub(crate) fn view_ssh_keys(&mut self) { @@ -137,5 +135,6 @@ impl SetupActivity { vec![] ) .is_ok()); + assert!(self.app.active(&Id::Ssh(IdSsh::SshKeys)).is_ok()); } }