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