aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main.rs9
-rw-r--r--src/message.rs37
2 files changed, 43 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs
index 1f5dc8a..9309f63 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -15,6 +15,7 @@ use std::{
15 env, 15 env,
16 fs::OpenOptions, 16 fs::OpenOptions,
17 io::{Cursor, Read}, 17 io::{Cursor, Read},
18 path::{Path, PathBuf},
18}; 19};
19 20
20use log::{error, info}; 21use log::{error, info};
@@ -41,15 +42,15 @@ pub fn main() {
41 42
42 let args: Vec<_> = env::args().collect(); 43 let args: Vec<_> = env::args().collect();
43 if args.len() < 2 { 44 if args.len() < 2 {
44 AppState::init(160, 160, &sdl_context, &ttf_context, None).run(); 45 AppState::init(160, 160, &sdl_context, &ttf_context, None, None).run();
45 return; 46 return;
46 } else { 47 } else {
47 let path = args.get(1).unwrap(); 48 let path = PathBuf::from(args.get(1).unwrap());
48 let image_src = OpenOptions::new() 49 let image_src = OpenOptions::new()
49 .read(true) 50 .read(true)
50 .write(false) 51 .write(false)
51 .create(false) 52 .create(false)
52 .open(path); 53 .open(&path);
53 if let Ok(mut image) = image_src { 54 if let Ok(mut image) = image_src {
54 let mut buf = Vec::new(); 55 let mut buf = Vec::new();
55 image.read_to_end(&mut buf).unwrap(); 56 image.read_to_end(&mut buf).unwrap();
@@ -61,8 +62,10 @@ pub fn main() {
61 &sdl_context, 62 &sdl_context,
62 &ttf_context, 63 &ttf_context,
63 Some(decoded.data), 64 Some(decoded.data),
65 Some(&path),
64 ) 66 )
65 .run(); 67 .run();
68 } else {
66 } 69 }
67 } 70 }
68} 71}
diff --git a/src/message.rs b/src/message.rs
index d1032cf..958dd68 100644
--- a/src/message.rs
+++ b/src/message.rs
@@ -1,3 +1,7 @@
1use crate::consts::colors::*;
2
3use sdl2::pixels::Color;
4
1#[derive(Debug)] 5#[derive(Debug)]
2pub struct Message { 6pub struct Message {
3 pub text: String, 7 pub text: String,
@@ -11,14 +15,36 @@ impl Message {
11 kind: MessageKind::Info, 15 kind: MessageKind::Info,
12 } 16 }
13 } 17 }
18
14 pub fn kind(mut self, kind: MessageKind) -> Self { 19 pub fn kind(mut self, kind: MessageKind) -> Self {
15 self.kind = kind; 20 self.kind = kind;
16 self 21 self
17 } 22 }
23
18 pub fn text<S: AsRef<str>>(mut self, text: S) -> Self { 24 pub fn text<S: AsRef<str>>(mut self, text: S) -> Self {
19 self.text = text.as_ref().into(); 25 self.text = text.as_ref().into();
20 self 26 self
21 } 27 }
28
29 pub fn set_info<S: AsRef<str>>(&mut self, text: S) {
30 self.text = text.as_ref().into();
31 self.kind = MessageKind::Info;
32 }
33
34 pub fn set_error<S: AsRef<str>>(&mut self, text: S) {
35 self.text = text.as_ref().into();
36 self.kind = MessageKind::Error;
37 }
38
39 pub fn set_hint<S: AsRef<str>>(&mut self, text: S) {
40 self.text = text.as_ref().into();
41 self.kind = MessageKind::Hint;
42 }
43
44 pub fn clear(&mut self) {
45 self.text.clear();
46 self.kind = MessageKind::Info;
47 }
22} 48}
23 49
24#[derive(Debug, Copy, Clone)] 50#[derive(Debug, Copy, Clone)]
@@ -40,3 +66,14 @@ where
40 }; 66 };
41 } 67 }
42} 68}
69
70impl Into<Color> for MessageKind {
71 fn into(self) -> Color {
72 match self {
73 Self::Error => PINK,
74 Self::Info => WHITE,
75 Self::Hint => CYAN,
76 Self::LispResult => GREY,
77 }
78 }
79}