use super::{UnicodeProvider, UnicodeTheme};
#[derive(Debug, Clone, Copy)]
pub enum Arrow {
Up,
Down,
Left,
Right,
UpLeft,
UpRight,
DownLeft,
DownRight,
DoubleUp,
DoubleDown,
DoubleLeft,
DoubleRight,
CurvedLeft,
CurvedRight,
Return,
Refresh,
}
impl UnicodeProvider for Arrow {
fn get_char(&self, theme: UnicodeTheme) -> char {
match (self, theme) {
(Arrow::Up, UnicodeTheme::Minimal) => '^',
(Arrow::Up, UnicodeTheme::Basic) => '↑',
(Arrow::Up, UnicodeTheme::Rich) => '↑',
(Arrow::Up, UnicodeTheme::Fancy) => '⬆',
(Arrow::Down, UnicodeTheme::Minimal) => 'v',
(Arrow::Down, UnicodeTheme::Basic) => '↓',
(Arrow::Down, UnicodeTheme::Rich) => '↓',
(Arrow::Down, UnicodeTheme::Fancy) => '⬇',
(Arrow::Left, UnicodeTheme::Minimal) => '<',
(Arrow::Left, UnicodeTheme::Basic) => '←',
(Arrow::Left, UnicodeTheme::Rich) => '←',
(Arrow::Left, UnicodeTheme::Fancy) => '⬅',
(Arrow::Right, UnicodeTheme::Minimal) => '>',
(Arrow::Right, UnicodeTheme::Basic) => '→',
(Arrow::Right, UnicodeTheme::Rich) => '→',
(Arrow::Right, UnicodeTheme::Fancy) => '➡',
(Arrow::UpLeft, UnicodeTheme::Minimal) => '\\',
(Arrow::UpLeft, UnicodeTheme::Basic) => '↖',
(Arrow::UpLeft, UnicodeTheme::Rich) => '↖',
(Arrow::UpLeft, UnicodeTheme::Fancy) => '↖',
(Arrow::UpRight, UnicodeTheme::Minimal) => '/',
(Arrow::UpRight, UnicodeTheme::Basic) => '↗',
(Arrow::UpRight, UnicodeTheme::Rich) => '↗',
(Arrow::UpRight, UnicodeTheme::Fancy) => '↗',
(Arrow::DownLeft, UnicodeTheme::Minimal) => '/',
(Arrow::DownLeft, UnicodeTheme::Basic) => '↙',
(Arrow::DownLeft, UnicodeTheme::Rich) => '↙',
(Arrow::DownLeft, UnicodeTheme::Fancy) => '↙',
(Arrow::DownRight, UnicodeTheme::Minimal) => '\\',
(Arrow::DownRight, UnicodeTheme::Basic) => '↘',
(Arrow::DownRight, UnicodeTheme::Rich) => '↘',
(Arrow::DownRight, UnicodeTheme::Fancy) => '↘',
(Arrow::DoubleUp, UnicodeTheme::Minimal) => '^',
(Arrow::DoubleUp, UnicodeTheme::Basic) => '⇑',
(Arrow::DoubleUp, UnicodeTheme::Rich) => '⇑',
(Arrow::DoubleUp, UnicodeTheme::Fancy) => '⏫',
(Arrow::DoubleDown, UnicodeTheme::Minimal) => 'v',
(Arrow::DoubleDown, UnicodeTheme::Basic) => '⇓',
(Arrow::DoubleDown, UnicodeTheme::Rich) => '⇓',
(Arrow::DoubleDown, UnicodeTheme::Fancy) => '⏬',
(Arrow::DoubleLeft, UnicodeTheme::Minimal) => '<',
(Arrow::DoubleLeft, UnicodeTheme::Basic) => '⇐',
(Arrow::DoubleLeft, UnicodeTheme::Rich) => '⇐',
(Arrow::DoubleLeft, UnicodeTheme::Fancy) => '⏪',
(Arrow::DoubleRight, UnicodeTheme::Minimal) => '>',
(Arrow::DoubleRight, UnicodeTheme::Basic) => '⇒',
(Arrow::DoubleRight, UnicodeTheme::Rich) => '⇒',
(Arrow::DoubleRight, UnicodeTheme::Fancy) => '⏩',
(Arrow::CurvedLeft, UnicodeTheme::Minimal) => '<',
(Arrow::CurvedLeft, UnicodeTheme::Basic) => '↰',
(Arrow::CurvedLeft, UnicodeTheme::Rich) => '↰',
(Arrow::CurvedLeft, UnicodeTheme::Fancy) => '↰',
(Arrow::CurvedRight, UnicodeTheme::Minimal) => '>',
(Arrow::CurvedRight, UnicodeTheme::Basic) => '↱',
(Arrow::CurvedRight, UnicodeTheme::Rich) => '↱',
(Arrow::CurvedRight, UnicodeTheme::Fancy) => '↱',
(Arrow::Return, UnicodeTheme::Minimal) => '\\',
(Arrow::Return, UnicodeTheme::Basic) => '↵',
(Arrow::Return, UnicodeTheme::Rich) => '↵',
(Arrow::Return, UnicodeTheme::Fancy) => '⏎',
(Arrow::Refresh, UnicodeTheme::Minimal) => 'R',
(Arrow::Refresh, UnicodeTheme::Basic) => '↻',
(Arrow::Refresh, UnicodeTheme::Rich) => '↻',
(Arrow::Refresh, UnicodeTheme::Fancy) => '🔄',
}
}
}
#[derive(Debug, Clone, Copy)]
pub enum Navigation {
First,
Previous,
Next,
Last,
Home,
End,
PageUp,
PageDown,
Back,
Forward,
}
impl UnicodeProvider for Navigation {
fn get_char(&self, theme: UnicodeTheme) -> char {
match (self, theme) {
(Navigation::First, UnicodeTheme::Minimal) => '<',
(Navigation::First, UnicodeTheme::Basic) => '⇤',
(Navigation::First, UnicodeTheme::Rich) => '⇤',
(Navigation::First, UnicodeTheme::Fancy) => '⏮',
(Navigation::Previous, UnicodeTheme::Minimal) => '<',
(Navigation::Previous, UnicodeTheme::Basic) => '◀',
(Navigation::Previous, UnicodeTheme::Rich) => '◀',
(Navigation::Previous, UnicodeTheme::Fancy) => '⏪',
(Navigation::Next, UnicodeTheme::Minimal) => '>',
(Navigation::Next, UnicodeTheme::Basic) => '▶',
(Navigation::Next, UnicodeTheme::Rich) => '▶',
(Navigation::Next, UnicodeTheme::Fancy) => '⏩',
(Navigation::Last, UnicodeTheme::Minimal) => '>',
(Navigation::Last, UnicodeTheme::Basic) => '⇥',
(Navigation::Last, UnicodeTheme::Rich) => '⇥',
(Navigation::Last, UnicodeTheme::Fancy) => '⏭',
(Navigation::Home, UnicodeTheme::Minimal) => 'H',
(Navigation::Home, UnicodeTheme::Basic) => '⌂',
(Navigation::Home, UnicodeTheme::Rich) => '⌂',
(Navigation::Home, UnicodeTheme::Fancy) => '🏠',
(Navigation::End, UnicodeTheme::Minimal) => 'E',
(Navigation::End, UnicodeTheme::Basic) => '⌐',
(Navigation::End, UnicodeTheme::Rich) => '⌐',
(Navigation::End, UnicodeTheme::Fancy) => '🔚',
(Navigation::PageUp, UnicodeTheme::Minimal) => '^',
(Navigation::PageUp, UnicodeTheme::Basic) => '⇞',
(Navigation::PageUp, UnicodeTheme::Rich) => '⇞',
(Navigation::PageUp, UnicodeTheme::Fancy) => '📄',
(Navigation::PageDown, UnicodeTheme::Minimal) => 'v',
(Navigation::PageDown, UnicodeTheme::Basic) => '⇟',
(Navigation::PageDown, UnicodeTheme::Rich) => '⇟',
(Navigation::PageDown, UnicodeTheme::Fancy) => '📄',
(Navigation::Back, UnicodeTheme::Minimal) => '<',
(Navigation::Back, UnicodeTheme::Basic) => '⬅',
(Navigation::Back, UnicodeTheme::Rich) => '⬅',
(Navigation::Back, UnicodeTheme::Fancy) => '🔙',
(Navigation::Forward, UnicodeTheme::Minimal) => '>',
(Navigation::Forward, UnicodeTheme::Basic) => '➡',
(Navigation::Forward, UnicodeTheme::Rich) => '➡',
(Navigation::Forward, UnicodeTheme::Fancy) => '🔜',
}
}
}
pub mod chars {
use super::*;
pub const UP: Arrow = Arrow::Up;
pub const DOWN: Arrow = Arrow::Down;
pub const LEFT: Arrow = Arrow::Left;
pub const RIGHT: Arrow = Arrow::Right;
pub const UP_LEFT: Arrow = Arrow::UpLeft;
pub const UP_RIGHT: Arrow = Arrow::UpRight;
pub const DOWN_LEFT: Arrow = Arrow::DownLeft;
pub const DOWN_RIGHT: Arrow = Arrow::DownRight;
pub const DOUBLE_UP: Arrow = Arrow::DoubleUp;
pub const DOUBLE_DOWN: Arrow = Arrow::DoubleDown;
pub const DOUBLE_LEFT: Arrow = Arrow::DoubleLeft;
pub const DOUBLE_RIGHT: Arrow = Arrow::DoubleRight;
pub const CURVED_LEFT: Arrow = Arrow::CurvedLeft;
pub const CURVED_RIGHT: Arrow = Arrow::CurvedRight;
pub const RETURN: Arrow = Arrow::Return;
pub const REFRESH: Arrow = Arrow::Refresh;
pub const FIRST: Navigation = Navigation::First;
pub const PREVIOUS: Navigation = Navigation::Previous;
pub const NEXT: Navigation = Navigation::Next;
pub const LAST: Navigation = Navigation::Last;
pub const HOME: Navigation = Navigation::Home;
pub const END: Navigation = Navigation::End;
pub const PAGE_UP: Navigation = Navigation::PageUp;
pub const PAGE_DOWN: Navigation = Navigation::PageDown;
pub const BACK: Navigation = Navigation::Back;
pub const FORWARD: Navigation = Navigation::Forward;
}