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