stims wore off and i have no idea what i did for the past 3 hours
This commit is contained in:
parent
7434a2b94d
commit
0918ffea90
|
@ -82,6 +82,7 @@ impl Page for Body {
|
|||
#[derive(Debug, Clone, Default)]
|
||||
pub struct SigninPage {
|
||||
hostname: String,
|
||||
token: String,
|
||||
cursor: SigninCursorLocation,
|
||||
frame: Option<Frame>,
|
||||
}
|
||||
|
@ -89,6 +90,7 @@ pub struct SigninPage {
|
|||
#[derive(Debug, Clone)]
|
||||
enum SigninCursorLocation {
|
||||
Hostname,
|
||||
Token,
|
||||
Ok,
|
||||
}
|
||||
|
||||
|
@ -103,8 +105,9 @@ impl SigninPage {
|
|||
fn next(&mut self) {
|
||||
self.cursor = match self.cursor {
|
||||
SigninCursorLocation::Hostname => {
|
||||
SigninCursorLocation::Ok
|
||||
SigninCursorLocation::Token
|
||||
}
|
||||
SigninCursorLocation::Token => SigninCursorLocation::Ok,
|
||||
SigninCursorLocation::Ok => {
|
||||
SigninCursorLocation::Hostname
|
||||
}
|
||||
|
@ -113,8 +116,15 @@ impl SigninPage {
|
|||
|
||||
#[inline]
|
||||
fn previous(&mut self) {
|
||||
// Don't tell them this neat trick
|
||||
self.next()
|
||||
self.cursor = match self.cursor {
|
||||
SigninCursorLocation::Hostname => {
|
||||
SigninCursorLocation::Ok
|
||||
}
|
||||
SigninCursorLocation::Token => {
|
||||
SigninCursorLocation::Hostname
|
||||
}
|
||||
SigninCursorLocation::Ok => SigninCursorLocation::Token,
|
||||
}
|
||||
}
|
||||
|
||||
fn draw(
|
||||
|
@ -124,14 +134,22 @@ impl SigninPage {
|
|||
) -> Components {
|
||||
const HEADER_Y: u16 = 1;
|
||||
const HOSTNAME_Y: u16 = 3;
|
||||
const OK_Y: u16 = 5;
|
||||
const TOKEN_Y: u16 = 4;
|
||||
const OK_Y: u16 = 6;
|
||||
let frame = self.frame.unwrap();
|
||||
let (w, _) = frame.inner_size();
|
||||
let exp_w = w / 3;
|
||||
let exp_w = w - (w / 3);
|
||||
|
||||
let (hostname_theme, ok_theme) = match self.cursor {
|
||||
SigninCursorLocation::Hostname => (highlight, normal),
|
||||
SigninCursorLocation::Ok => (normal, highlight),
|
||||
let (hostname_theme, token_theme, ok_theme) = match self
|
||||
.cursor
|
||||
{
|
||||
SigninCursorLocation::Hostname => {
|
||||
(highlight, normal, normal)
|
||||
}
|
||||
SigninCursorLocation::Token => {
|
||||
(normal, highlight, normal)
|
||||
}
|
||||
SigninCursorLocation::Ok => (normal, normal, highlight),
|
||||
};
|
||||
|
||||
vec![
|
||||
|
@ -156,6 +174,18 @@ impl SigninPage {
|
|||
HOSTNAME_Y,
|
||||
)
|
||||
.0,
|
||||
frame
|
||||
.prefix_centered_goto(
|
||||
self.field(
|
||||
token_theme,
|
||||
normal,
|
||||
exp_w,
|
||||
"token",
|
||||
&self.token,
|
||||
),
|
||||
TOKEN_Y,
|
||||
)
|
||||
.0,
|
||||
vec![Component::Theme(ok_theme)],
|
||||
HorizontalAlignment::Center
|
||||
.align(Text::Normal("[ok]".into()), w, OK_Y)
|
||||
|
@ -196,12 +226,27 @@ impl SigninPage {
|
|||
.into()
|
||||
}
|
||||
|
||||
fn del(&mut self) {
|
||||
match self.cursor {
|
||||
SigninCursorLocation::Hostname => {
|
||||
self.hostname.pop();
|
||||
}
|
||||
SigninCursorLocation::Token => {
|
||||
self.token.pop();
|
||||
}
|
||||
SigninCursorLocation::Ok => {}
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn char(&mut self, c: char) {
|
||||
match self.cursor {
|
||||
SigninCursorLocation::Hostname => {
|
||||
self.hostname.push(c);
|
||||
}
|
||||
SigninCursorLocation::Token => {
|
||||
self.token.push(c);
|
||||
}
|
||||
SigninCursorLocation::Ok => {}
|
||||
}
|
||||
}
|
||||
|
@ -217,8 +262,8 @@ impl Page for SigninPage {
|
|||
match event {
|
||||
Event::Key(key) => match key {
|
||||
termion::event::Key::Char(c) => self.char(c),
|
||||
termion::event::Key::Up => self.next(),
|
||||
termion::event::Key::Down => self.previous(),
|
||||
termion::event::Key::Up => self.previous(),
|
||||
termion::event::Key::Down => self.next(),
|
||||
termion::event::Key::Backspace => {
|
||||
if let SigninCursorLocation::Hostname =
|
||||
self.cursor
|
||||
|
@ -257,8 +302,8 @@ impl Page for SigninPage {
|
|||
) -> Result<()> {
|
||||
self.frame = Some(env.frame.sub(
|
||||
env.theme.colors.subframe,
|
||||
super::frame::FrameSize::ByPercent(50, 50),
|
||||
2,
|
||||
super::frame::FrameSize::ByAbsolute(70, 15),
|
||||
1,
|
||||
));
|
||||
write!(
|
||||
screen,
|
||||
|
|
|
@ -110,21 +110,6 @@ impl Frame {
|
|||
.into()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn to_end(&self, s: &str, x: u16, y: u16) -> Components {
|
||||
// FIXME: handle the fucking newlines grrrr i hate this
|
||||
let width = self.inner_size().0;
|
||||
vec![
|
||||
Component::Goto(x, y),
|
||||
Component::String(Text::LimitedOrPadded(
|
||||
s.into(),
|
||||
' ',
|
||||
width - x,
|
||||
)),
|
||||
]
|
||||
.into()
|
||||
}
|
||||
|
||||
pub fn make(&self, comp: Components) -> String {
|
||||
comp.0.into_iter().map(|c| c.make(self)).collect()
|
||||
}
|
||||
|
@ -225,10 +210,6 @@ impl Frame {
|
|||
// the frame within a screen
|
||||
pub fn compose(&self, body_theme: ColorSet) -> Components {
|
||||
let body_theme = Component::Internal(body_theme.to_string());
|
||||
if self.border == 0 {
|
||||
// FIXME: this will fuck up subframes
|
||||
return vec![body_theme, Component::Clear].into();
|
||||
}
|
||||
let (w_len, h_len) = self.size();
|
||||
let frame_theme = Component::Internal(self.theme.to_string());
|
||||
|
||||
|
|
|
@ -81,24 +81,24 @@ impl Default for Theme {
|
|||
Self {
|
||||
colors: Colors {
|
||||
primary: ColorSet {
|
||||
fg: "#ffe6ff".into(),
|
||||
bg: "#3b224c".into(),
|
||||
fg: "#330033".into(),
|
||||
bg: "#a006d3".into(),
|
||||
},
|
||||
frame: ColorSet {
|
||||
fg: "#ffe6ff".into(),
|
||||
bg: "#330033".into(),
|
||||
bg: "#9005c2".into(),
|
||||
},
|
||||
subframe: ColorSet{
|
||||
subframe: ColorSet {
|
||||
fg: "#ffe6ff".into(),
|
||||
bg: "#110011".into()
|
||||
bg: "#7003a0".into(),
|
||||
},
|
||||
highlight: ColorSet{
|
||||
highlight: ColorSet {
|
||||
fg: "#ffffff".into(),
|
||||
bg: "#0000ff".into()
|
||||
bg: "#0000ff".into(),
|
||||
},
|
||||
subwin: ColorSet{
|
||||
subwin: ColorSet {
|
||||
fg: "#ffffff".into(),
|
||||
bg: "#000000".into(),
|
||||
bg: "#500170".into(),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue