1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
use crossterm::event::KeyCode;
use serde::{Deserialize, Serialize};
use tui::style::Color;
#[derive(Serialize, Deserialize, Default, Debug)]
pub struct Configs {
pub colors: Colors,
pub keybindings: KeyBindings,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Colors {
pub foreground: Color,
pub background: Color,
pub selection_fg: Color,
pub selection_bg: Color,
pub check_sign: Color,
}
impl Default for Colors {
fn default() -> Self {
Self {
foreground: Color::White,
background: Color::Black,
selection_fg: Color::Black,
selection_bg: Color::Yellow,
check_sign: Color::Green,
}
}
}
#[derive(Serialize, Deserialize, Debug)]
pub struct KeyBindings {
pub exit_app: KeyCode,
pub new_quest: KeyCode,
pub check_and_uncheck_quest: KeyCode,
pub list_up: KeyCode,
pub list_down: KeyCode,
pub delete_quest: KeyCode,
pub exit_adding: KeyCode,
pub save_quest: KeyCode,
}
impl Default for KeyBindings {
fn default() -> Self {
Self {
exit_app: KeyCode::Char('q'),
new_quest: KeyCode::Char('n'),
check_and_uncheck_quest: KeyCode::Enter,
list_up: KeyCode::Up,
list_down: KeyCode::Down,
delete_quest: KeyCode::Delete,
exit_adding: KeyCode::Esc,
save_quest: KeyCode::Enter,
}
}
}
pub fn keycode_to_string(keycode: KeyCode) -> String {
let temp;
let stringified = match keycode {
KeyCode::Backspace => "Backspace",
KeyCode::Enter => "Enter",
KeyCode::Left => "←",
KeyCode::Right => "→",
KeyCode::Up => "↑",
KeyCode::Down => "↓",
KeyCode::Home => "Home",
KeyCode::End => "End",
KeyCode::PageUp => "Page Up",
KeyCode::PageDown => "Page Down",
KeyCode::Tab => "Tab",
KeyCode::BackTab => "Back Tab",
KeyCode::Delete => "Delete",
KeyCode::Insert => "Insert",
KeyCode::F(n) => {
temp = format!("F{}", n);
temp.as_str()
}
KeyCode::Char(char) => {
temp = char.to_string();
temp.as_str()
}
KeyCode::Null => "Null",
KeyCode::Esc => "Esc",
}
.to_string();
stringified
}