mirror of
https://github.com/veeso/termscp.git
synced 2025-12-07 09:36:00 -08:00
Added help footers
This commit is contained in:
committed by
Christian Visintin
parent
2a3d4f2670
commit
a93dbde0c8
@@ -44,7 +44,7 @@ pub use popup::{
|
|||||||
ErrorPopup, InfoPopup, InstallUpdatePopup, Keybindings, QuitPopup, ReleaseNotes, WaitPopup,
|
ErrorPopup, InfoPopup, InstallUpdatePopup, Keybindings, QuitPopup, ReleaseNotes, WaitPopup,
|
||||||
WindowSizeError,
|
WindowSizeError,
|
||||||
};
|
};
|
||||||
pub use text::{HelpText, NewVersionDisclaimer, Subtitle, Title};
|
pub use text::{HelpFooter, NewVersionDisclaimer, Subtitle, Title};
|
||||||
|
|
||||||
use tui_realm_stdlib::Phantom;
|
use tui_realm_stdlib::Phantom;
|
||||||
use tuirealm::event::{Event, Key, KeyEvent, KeyModifiers, NoUserEvent};
|
use tuirealm::event::{Event, Key, KeyEvent, KeyModifiers, NoUserEvent};
|
||||||
@@ -60,7 +60,10 @@ pub struct GlobalListener {
|
|||||||
impl Component<Msg, NoUserEvent> for GlobalListener {
|
impl Component<Msg, NoUserEvent> for GlobalListener {
|
||||||
fn on(&mut self, ev: Event<NoUserEvent>) -> Option<Msg> {
|
fn on(&mut self, ev: Event<NoUserEvent>) -> Option<Msg> {
|
||||||
match ev {
|
match ev {
|
||||||
Event::Keyboard(KeyEvent { code: Key::Esc, .. }) => Some(Msg::ShowQuitPopup),
|
Event::Keyboard(KeyEvent {
|
||||||
|
code: Key::Esc | Key::Function(10),
|
||||||
|
..
|
||||||
|
}) => Some(Msg::ShowQuitPopup),
|
||||||
Event::Keyboard(KeyEvent {
|
Event::Keyboard(KeyEvent {
|
||||||
code: Key::Char('c'),
|
code: Key::Char('c'),
|
||||||
modifiers: KeyModifiers::CONTROL,
|
modifiers: KeyModifiers::CONTROL,
|
||||||
@@ -69,6 +72,10 @@ impl Component<Msg, NoUserEvent> for GlobalListener {
|
|||||||
code: Key::Char('h'),
|
code: Key::Char('h'),
|
||||||
modifiers: KeyModifiers::CONTROL,
|
modifiers: KeyModifiers::CONTROL,
|
||||||
}) => Some(Msg::ShowKeybindingsPopup),
|
}) => Some(Msg::ShowKeybindingsPopup),
|
||||||
|
Event::Keyboard(KeyEvent {
|
||||||
|
code: Key::Function(1),
|
||||||
|
..
|
||||||
|
}) => Some(Msg::ShowKeybindingsPopup),
|
||||||
Event::Keyboard(KeyEvent {
|
Event::Keyboard(KeyEvent {
|
||||||
code: Key::Char('r'),
|
code: Key::Char('r'),
|
||||||
modifiers: KeyModifiers::CONTROL,
|
modifiers: KeyModifiers::CONTROL,
|
||||||
|
|||||||
@@ -104,28 +104,35 @@ impl Component<Msg, NoUserEvent> for NewVersionDisclaimer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// -- HelpText
|
// -- HelpFooter
|
||||||
|
|
||||||
#[derive(MockComponent)]
|
#[derive(MockComponent)]
|
||||||
pub struct HelpText {
|
pub struct HelpFooter {
|
||||||
component: Span,
|
component: Span,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl HelpText {
|
impl HelpFooter {
|
||||||
pub fn new(key_color: Color) -> Self {
|
pub fn new(key_color: Color) -> Self {
|
||||||
Self {
|
Self {
|
||||||
component: Span::default().spans(&[
|
component: Span::default().spans(&[
|
||||||
TextSpan::new("Press ").bold(),
|
TextSpan::from("<F1|CTRL+H>").bold().fg(key_color),
|
||||||
TextSpan::new("<CTRL+H>").bold().fg(key_color),
|
TextSpan::from(" Help "),
|
||||||
TextSpan::new(" to show keybindings; ").bold(),
|
TextSpan::from("<CTRL+C>").bold().fg(key_color),
|
||||||
TextSpan::new("<CTRL+C>").bold().fg(key_color),
|
TextSpan::from(" Enter setup "),
|
||||||
TextSpan::new(" to enter setup").bold(),
|
TextSpan::from("<UP/DOWN>").bold().fg(key_color),
|
||||||
|
TextSpan::from(" Change field "),
|
||||||
|
TextSpan::from("<TAB>").bold().fg(key_color),
|
||||||
|
TextSpan::from(" Switch tab "),
|
||||||
|
TextSpan::from("<ENTER>").bold().fg(key_color),
|
||||||
|
TextSpan::from(" Submit form "),
|
||||||
|
TextSpan::from("<F10|ESC>").bold().fg(key_color),
|
||||||
|
TextSpan::from(" Quit "),
|
||||||
]),
|
]),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Component<Msg, NoUserEvent> for HelpText {
|
impl Component<Msg, NoUserEvent> for HelpFooter {
|
||||||
fn on(&mut self, _ev: Event<NoUserEvent>) -> Option<Msg> {
|
fn on(&mut self, _ev: Event<NoUserEvent>) -> Option<Msg> {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ pub enum Id {
|
|||||||
DeleteRecentPopup,
|
DeleteRecentPopup,
|
||||||
ErrorPopup,
|
ErrorPopup,
|
||||||
GlobalListener,
|
GlobalListener,
|
||||||
HelpText,
|
HelpFooter,
|
||||||
InfoPopup,
|
InfoPopup,
|
||||||
InstallUpdatePopup,
|
InstallUpdatePopup,
|
||||||
Keybindings,
|
Keybindings,
|
||||||
|
|||||||
@@ -58,8 +58,8 @@ impl AuthActivity {
|
|||||||
assert!(self
|
assert!(self
|
||||||
.app
|
.app
|
||||||
.mount(
|
.mount(
|
||||||
Id::HelpText,
|
Id::HelpFooter,
|
||||||
Box::new(components::HelpText::new(key_color)),
|
Box::new(components::HelpFooter::new(key_color)),
|
||||||
vec![]
|
vec![]
|
||||||
)
|
)
|
||||||
.is_ok());
|
.is_ok());
|
||||||
@@ -111,17 +111,30 @@ impl AuthActivity {
|
|||||||
let height: u16 = f.size().height;
|
let height: u16 = f.size().height;
|
||||||
self.check_minimum_window_size(height);
|
self.check_minimum_window_size(height);
|
||||||
// Prepare chunks
|
// Prepare chunks
|
||||||
let chunks = Layout::default()
|
let body = Layout::default()
|
||||||
.direction(Direction::Vertical)
|
.direction(Direction::Vertical)
|
||||||
.margin(1)
|
|
||||||
.constraints(
|
.constraints(
|
||||||
[
|
[
|
||||||
Constraint::Length(21), // Auth Form
|
Constraint::Min(24), // Body
|
||||||
Constraint::Min(3), // Bookmarks
|
Constraint::Length(1), // Footer
|
||||||
]
|
]
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
)
|
)
|
||||||
.split(f.size());
|
.split(f.size());
|
||||||
|
// Footer
|
||||||
|
self.app.view(&Id::HelpFooter, f, body[1]);
|
||||||
|
let auth_form_len = 7 + self.input_mask_size();
|
||||||
|
let main_chunks = Layout::default()
|
||||||
|
.direction(Direction::Vertical)
|
||||||
|
.margin(1)
|
||||||
|
.constraints(
|
||||||
|
[
|
||||||
|
Constraint::Length(auth_form_len), // Auth Form
|
||||||
|
Constraint::Min(3), // Bookmarks
|
||||||
|
]
|
||||||
|
.as_ref(),
|
||||||
|
)
|
||||||
|
.split(body[0]);
|
||||||
// Create explorer chunks
|
// Create explorer chunks
|
||||||
let auth_chunks = Layout::default()
|
let auth_chunks = Layout::default()
|
||||||
.constraints(
|
.constraints(
|
||||||
@@ -131,12 +144,12 @@ impl AuthActivity {
|
|||||||
Constraint::Length(1), // Version
|
Constraint::Length(1), // Version
|
||||||
Constraint::Length(3), // protocol
|
Constraint::Length(3), // protocol
|
||||||
Constraint::Length(self.input_mask_size()), // Input mask
|
Constraint::Length(self.input_mask_size()), // Input mask
|
||||||
Constraint::Length(3), // footer
|
Constraint::Length(1), // Prevents last field to overflow
|
||||||
]
|
]
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
)
|
)
|
||||||
.direction(Direction::Vertical)
|
.direction(Direction::Vertical)
|
||||||
.split(chunks[0]);
|
.split(main_chunks[0]);
|
||||||
// Input mask chunks
|
// Input mask chunks
|
||||||
let input_mask = match self.input_mask() {
|
let input_mask = match self.input_mask() {
|
||||||
InputMask::AwsS3 => Layout::default()
|
InputMask::AwsS3 => Layout::default()
|
||||||
@@ -167,7 +180,7 @@ impl AuthActivity {
|
|||||||
let bookmark_chunks = Layout::default()
|
let bookmark_chunks = Layout::default()
|
||||||
.constraints([Constraint::Percentage(50), Constraint::Percentage(50)].as_ref())
|
.constraints([Constraint::Percentage(50), Constraint::Percentage(50)].as_ref())
|
||||||
.direction(Direction::Horizontal)
|
.direction(Direction::Horizontal)
|
||||||
.split(chunks[1]);
|
.split(main_chunks[1]);
|
||||||
// Render
|
// Render
|
||||||
// Auth chunks
|
// Auth chunks
|
||||||
self.app.view(&Id::Title, f, auth_chunks[0]);
|
self.app.view(&Id::Title, f, auth_chunks[0]);
|
||||||
@@ -188,7 +201,6 @@ impl AuthActivity {
|
|||||||
self.app.view(&Id::Password, f, input_mask[3]);
|
self.app.view(&Id::Password, f, input_mask[3]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.app.view(&Id::HelpText, f, auth_chunks[5]);
|
|
||||||
// Bookmark chunks
|
// Bookmark chunks
|
||||||
self.app.view(&Id::BookmarksList, f, bookmark_chunks[0]);
|
self.app.view(&Id::BookmarksList, f, bookmark_chunks[0]);
|
||||||
self.app.view(&Id::RecentsList, f, bookmark_chunks[1]);
|
self.app.view(&Id::RecentsList, f, bookmark_chunks[1]);
|
||||||
@@ -788,6 +800,13 @@ impl AuthActivity {
|
|||||||
}),
|
}),
|
||||||
Self::no_popup_mounted_clause(),
|
Self::no_popup_mounted_clause(),
|
||||||
),
|
),
|
||||||
|
Sub::new(
|
||||||
|
SubEventClause::Keyboard(KeyEvent {
|
||||||
|
code: Key::Function(10),
|
||||||
|
modifiers: KeyModifiers::NONE,
|
||||||
|
}),
|
||||||
|
Self::no_popup_mounted_clause(),
|
||||||
|
),
|
||||||
Sub::new(
|
Sub::new(
|
||||||
SubEventClause::Keyboard(KeyEvent {
|
SubEventClause::Keyboard(KeyEvent {
|
||||||
code: Key::Char('c'),
|
code: Key::Char('c'),
|
||||||
@@ -802,6 +821,13 @@ impl AuthActivity {
|
|||||||
}),
|
}),
|
||||||
Self::no_popup_mounted_clause(),
|
Self::no_popup_mounted_clause(),
|
||||||
),
|
),
|
||||||
|
Sub::new(
|
||||||
|
SubEventClause::Keyboard(KeyEvent {
|
||||||
|
code: Key::Function(1),
|
||||||
|
modifiers: KeyModifiers::NONE,
|
||||||
|
}),
|
||||||
|
Self::no_popup_mounted_clause(),
|
||||||
|
),
|
||||||
Sub::new(
|
Sub::new(
|
||||||
SubEventClause::Keyboard(KeyEvent {
|
SubEventClause::Keyboard(KeyEvent {
|
||||||
code: Key::Char('r'),
|
code: Key::Char('r'),
|
||||||
|
|||||||
@@ -40,27 +40,27 @@ impl FooterBar {
|
|||||||
pub fn new(key_color: Color) -> Self {
|
pub fn new(key_color: Color) -> Self {
|
||||||
Self {
|
Self {
|
||||||
component: Span::default().spans(&[
|
component: Span::default().spans(&[
|
||||||
TextSpan::from("<F1|H>").fg(key_color),
|
TextSpan::from("<F1|H>").bold().fg(key_color),
|
||||||
TextSpan::from(" Help "),
|
TextSpan::from(" Help "),
|
||||||
TextSpan::from("<TAB>").fg(key_color),
|
TextSpan::from("<TAB>").bold().fg(key_color),
|
||||||
TextSpan::from(" Change tab "),
|
TextSpan::from(" Change tab "),
|
||||||
TextSpan::from("<SPACE>").fg(key_color),
|
TextSpan::from("<SPACE>").bold().fg(key_color),
|
||||||
TextSpan::from(" Transfer "),
|
TextSpan::from(" Transfer "),
|
||||||
TextSpan::from("<ENTER>").fg(key_color),
|
TextSpan::from("<ENTER>").bold().fg(key_color),
|
||||||
TextSpan::from(" Enter dir "),
|
TextSpan::from(" Enter dir "),
|
||||||
TextSpan::from("<F3|V>").fg(key_color),
|
TextSpan::from("<F3|V>").bold().fg(key_color),
|
||||||
TextSpan::from(" View "),
|
TextSpan::from(" View "),
|
||||||
TextSpan::from("<F4|O>").fg(key_color),
|
TextSpan::from("<F4|O>").bold().fg(key_color),
|
||||||
TextSpan::from(" Edit "),
|
TextSpan::from(" Edit "),
|
||||||
TextSpan::from("<F5|C>").fg(key_color),
|
TextSpan::from("<F5|C>").bold().fg(key_color),
|
||||||
TextSpan::from(" Copy "),
|
TextSpan::from(" Copy "),
|
||||||
TextSpan::from("<F6|R>").fg(key_color),
|
TextSpan::from("<F6|R>").bold().fg(key_color),
|
||||||
TextSpan::from(" Rename "),
|
TextSpan::from(" Rename "),
|
||||||
TextSpan::from("<F7|D>").fg(key_color),
|
TextSpan::from("<F7|D>").bold().fg(key_color),
|
||||||
TextSpan::from(" Make dir "),
|
TextSpan::from(" Make dir "),
|
||||||
TextSpan::from("<F8|DEL>").fg(key_color),
|
TextSpan::from("<F8|DEL>").bold().fg(key_color),
|
||||||
TextSpan::from(" Make dir "),
|
TextSpan::from(" Make dir "),
|
||||||
TextSpan::from("<F10|Q>").fg(key_color),
|
TextSpan::from("<F10|Q>").bold().fg(key_color),
|
||||||
TextSpan::from(" Quit "),
|
TextSpan::from(" Quit "),
|
||||||
]),
|
]),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,13 +76,16 @@ impl Default for Footer {
|
|||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self {
|
Self {
|
||||||
component: Span::default().spans(&[
|
component: Span::default().spans(&[
|
||||||
TextSpan::new("Press ").bold(),
|
TextSpan::new("<F1|CTRL+H>").bold().fg(Color::Cyan),
|
||||||
TextSpan::new("<CTRL+H>").bold().fg(Color::Cyan),
|
TextSpan::new(" Help "),
|
||||||
TextSpan::new(" to show keybindings; ").bold(),
|
TextSpan::new("<F4|CTRL+S>").bold().fg(Color::Cyan),
|
||||||
TextSpan::new("<CTRL+S>").bold().fg(Color::Cyan),
|
TextSpan::new(" Save parameters "),
|
||||||
TextSpan::new(" to save parameters; ").bold(),
|
TextSpan::new("<F10|ESC>").bold().fg(Color::Cyan),
|
||||||
|
TextSpan::new(" Exit "),
|
||||||
TextSpan::new("<TAB>").bold().fg(Color::Cyan),
|
TextSpan::new("<TAB>").bold().fg(Color::Cyan),
|
||||||
TextSpan::new(" to change panel").bold(),
|
TextSpan::new(" Change panel "),
|
||||||
|
TextSpan::new("<UP/DOWN>").bold().fg(Color::Cyan),
|
||||||
|
TextSpan::new(" Change field "),
|
||||||
]),
|
]),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,9 +54,10 @@ pub struct GlobalListener {
|
|||||||
impl Component<Msg, NoUserEvent> for GlobalListener {
|
impl Component<Msg, NoUserEvent> for GlobalListener {
|
||||||
fn on(&mut self, ev: Event<NoUserEvent>) -> Option<Msg> {
|
fn on(&mut self, ev: Event<NoUserEvent>) -> Option<Msg> {
|
||||||
match ev {
|
match ev {
|
||||||
Event::Keyboard(KeyEvent { code: Key::Esc, .. }) => {
|
Event::Keyboard(KeyEvent {
|
||||||
Some(Msg::Common(CommonMsg::ShowQuitPopup))
|
code: Key::Esc | Key::Function(10),
|
||||||
}
|
..
|
||||||
|
}) => Some(Msg::Common(CommonMsg::ShowQuitPopup)),
|
||||||
Event::Keyboard(KeyEvent { code: Key::Tab, .. }) => {
|
Event::Keyboard(KeyEvent { code: Key::Tab, .. }) => {
|
||||||
Some(Msg::Common(CommonMsg::ChangeLayout))
|
Some(Msg::Common(CommonMsg::ChangeLayout))
|
||||||
}
|
}
|
||||||
@@ -64,6 +65,10 @@ impl Component<Msg, NoUserEvent> for GlobalListener {
|
|||||||
code: Key::Char('h'),
|
code: Key::Char('h'),
|
||||||
modifiers: KeyModifiers::CONTROL,
|
modifiers: KeyModifiers::CONTROL,
|
||||||
}) => Some(Msg::Common(CommonMsg::ShowKeybindings)),
|
}) => Some(Msg::Common(CommonMsg::ShowKeybindings)),
|
||||||
|
Event::Keyboard(KeyEvent {
|
||||||
|
code: Key::Function(1),
|
||||||
|
modifiers: KeyModifiers::NONE,
|
||||||
|
}) => Some(Msg::Common(CommonMsg::ShowKeybindings)),
|
||||||
Event::Keyboard(KeyEvent {
|
Event::Keyboard(KeyEvent {
|
||||||
code: Key::Char('r'),
|
code: Key::Char('r'),
|
||||||
modifiers: KeyModifiers::CONTROL,
|
modifiers: KeyModifiers::CONTROL,
|
||||||
@@ -72,6 +77,10 @@ impl Component<Msg, NoUserEvent> for GlobalListener {
|
|||||||
code: Key::Char('s'),
|
code: Key::Char('s'),
|
||||||
modifiers: KeyModifiers::CONTROL,
|
modifiers: KeyModifiers::CONTROL,
|
||||||
}) => Some(Msg::Common(CommonMsg::ShowSavePopup)),
|
}) => Some(Msg::Common(CommonMsg::ShowSavePopup)),
|
||||||
|
Event::Keyboard(KeyEvent {
|
||||||
|
code: Key::Function(4),
|
||||||
|
modifiers: KeyModifiers::NONE,
|
||||||
|
}) => Some(Msg::Common(CommonMsg::ShowSavePopup)),
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -206,6 +206,13 @@ impl SetupActivity {
|
|||||||
}),
|
}),
|
||||||
Self::no_popup_mounted_clause(),
|
Self::no_popup_mounted_clause(),
|
||||||
),
|
),
|
||||||
|
Sub::new(
|
||||||
|
SubEventClause::Keyboard(KeyEvent {
|
||||||
|
code: Key::Function(10),
|
||||||
|
modifiers: KeyModifiers::NONE,
|
||||||
|
}),
|
||||||
|
Self::no_popup_mounted_clause(),
|
||||||
|
),
|
||||||
Sub::new(
|
Sub::new(
|
||||||
SubEventClause::Keyboard(KeyEvent {
|
SubEventClause::Keyboard(KeyEvent {
|
||||||
code: Key::Tab,
|
code: Key::Tab,
|
||||||
@@ -220,6 +227,13 @@ impl SetupActivity {
|
|||||||
}),
|
}),
|
||||||
Self::no_popup_mounted_clause(),
|
Self::no_popup_mounted_clause(),
|
||||||
),
|
),
|
||||||
|
Sub::new(
|
||||||
|
SubEventClause::Keyboard(KeyEvent {
|
||||||
|
code: Key::Function(1),
|
||||||
|
modifiers: KeyModifiers::NONE,
|
||||||
|
}),
|
||||||
|
Self::no_popup_mounted_clause(),
|
||||||
|
),
|
||||||
Sub::new(
|
Sub::new(
|
||||||
SubEventClause::Keyboard(KeyEvent {
|
SubEventClause::Keyboard(KeyEvent {
|
||||||
code: Key::Char('r'),
|
code: Key::Char('r'),
|
||||||
@@ -234,6 +248,13 @@ impl SetupActivity {
|
|||||||
}),
|
}),
|
||||||
Self::no_popup_mounted_clause(),
|
Self::no_popup_mounted_clause(),
|
||||||
),
|
),
|
||||||
|
Sub::new(
|
||||||
|
SubEventClause::Keyboard(KeyEvent {
|
||||||
|
code: Key::Function(4),
|
||||||
|
modifiers: KeyModifiers::NONE,
|
||||||
|
}),
|
||||||
|
Self::no_popup_mounted_clause(),
|
||||||
|
),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
.is_ok());
|
.is_ok());
|
||||||
|
|||||||
@@ -60,8 +60,8 @@ impl SetupActivity {
|
|||||||
.constraints(
|
.constraints(
|
||||||
[
|
[
|
||||||
Constraint::Length(3), // Current tab
|
Constraint::Length(3), // Current tab
|
||||||
Constraint::Length(18), // Main body
|
Constraint::Min(18), // Main body
|
||||||
Constraint::Length(3), // Help footer
|
Constraint::Length(1), // Help footer
|
||||||
]
|
]
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
)
|
)
|
||||||
@@ -85,6 +85,7 @@ impl SetupActivity {
|
|||||||
Constraint::Length(3), // Updates tab
|
Constraint::Length(3), // Updates tab
|
||||||
Constraint::Length(3), // Prompt file replace
|
Constraint::Length(3), // Prompt file replace
|
||||||
Constraint::Length(3), // Group dirs
|
Constraint::Length(3), // Group dirs
|
||||||
|
Constraint::Length(1), // Prevent overflow
|
||||||
]
|
]
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
)
|
)
|
||||||
@@ -120,7 +121,7 @@ impl SetupActivity {
|
|||||||
Constraint::Length(3), // Notifications enabled
|
Constraint::Length(3), // Notifications enabled
|
||||||
Constraint::Length(3), // Notifications threshold
|
Constraint::Length(3), // Notifications threshold
|
||||||
Constraint::Length(3), // Ssh config
|
Constraint::Length(3), // Ssh config
|
||||||
Constraint::Length(1), // Filler
|
Constraint::Length(1), // Prevent overflow
|
||||||
]
|
]
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -57,8 +57,8 @@ impl SetupActivity {
|
|||||||
.constraints(
|
.constraints(
|
||||||
[
|
[
|
||||||
Constraint::Length(3), // Current tab
|
Constraint::Length(3), // Current tab
|
||||||
Constraint::Percentage(90), // Main body
|
Constraint::Min(5), // Main body
|
||||||
Constraint::Length(3), // Help footer
|
Constraint::Length(1), // Help footer
|
||||||
]
|
]
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -57,8 +57,8 @@ impl SetupActivity {
|
|||||||
.constraints(
|
.constraints(
|
||||||
[
|
[
|
||||||
Constraint::Length(3), // Current tab
|
Constraint::Length(3), // Current tab
|
||||||
Constraint::Length(22), // Main body
|
Constraint::Min(22), // Main body
|
||||||
Constraint::Length(3), // Help footer
|
Constraint::Length(1), // Help footer
|
||||||
]
|
]
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
)
|
)
|
||||||
@@ -91,6 +91,7 @@ impl SetupActivity {
|
|||||||
Constraint::Length(3), // Password
|
Constraint::Length(3), // Password
|
||||||
Constraint::Length(3), // Bookmarks
|
Constraint::Length(3), // Bookmarks
|
||||||
Constraint::Length(3), // Recents
|
Constraint::Length(3), // Recents
|
||||||
|
Constraint::Length(1), // Prevent overflow
|
||||||
]
|
]
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
)
|
)
|
||||||
@@ -126,6 +127,7 @@ impl SetupActivity {
|
|||||||
Constraint::Length(3), // Quit
|
Constraint::Length(3), // Quit
|
||||||
Constraint::Length(3), // Save
|
Constraint::Length(3), // Save
|
||||||
Constraint::Length(3), // Warn
|
Constraint::Length(3), // Warn
|
||||||
|
Constraint::Length(1), // Prevent overflow
|
||||||
]
|
]
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
)
|
)
|
||||||
@@ -158,7 +160,7 @@ impl SetupActivity {
|
|||||||
Constraint::Length(3), // remote explorer bg
|
Constraint::Length(3), // remote explorer bg
|
||||||
Constraint::Length(3), // remote explorer fg
|
Constraint::Length(3), // remote explorer fg
|
||||||
Constraint::Length(3), // remote explorer hg
|
Constraint::Length(3), // remote explorer hg
|
||||||
Constraint::Length(3), // empty
|
Constraint::Length(1), // Prevent overflow
|
||||||
]
|
]
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
)
|
)
|
||||||
@@ -210,6 +212,7 @@ impl SetupActivity {
|
|||||||
Constraint::Length(3), // status sorting
|
Constraint::Length(3), // status sorting
|
||||||
Constraint::Length(3), // status hidden
|
Constraint::Length(3), // status hidden
|
||||||
Constraint::Length(3), // sync browsing
|
Constraint::Length(3), // sync browsing
|
||||||
|
Constraint::Length(1), // Prevent overflow
|
||||||
]
|
]
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user