rat_theme4/themes/
fallback.rs

1use crate::palette::{ColorIdx, Palette};
2use crate::theme::{Category, SalsaTheme};
3use crate::{RatWidgetColor, StyleName, WidgetStyle};
4use rat_widget::button::ButtonStyle;
5use rat_widget::calendar::CalendarStyle;
6use rat_widget::checkbox::CheckboxStyle;
7use rat_widget::choice::ChoiceStyle;
8use rat_widget::clipper::ClipperStyle;
9#[cfg(feature = "color_input")]
10use rat_widget::color_input::ColorInputStyle;
11use rat_widget::combobox::ComboboxStyle;
12use rat_widget::dialog_frame::DialogFrameStyle;
13use rat_widget::file_dialog::FileDialogStyle;
14use rat_widget::form::FormStyle;
15use rat_widget::line_number::LineNumberStyle;
16use rat_widget::list::ListStyle;
17use rat_widget::menu::MenuStyle;
18use rat_widget::msgdialog::MsgDialogStyle;
19use rat_widget::paragraph::ParagraphStyle;
20use rat_widget::radio::RadioStyle;
21use rat_widget::scrolled::ScrollStyle;
22use rat_widget::shadow::ShadowStyle;
23use rat_widget::slider::SliderStyle;
24use rat_widget::splitter::SplitStyle;
25use rat_widget::statusline::StatusLineStyle;
26use rat_widget::tabbed::TabbedStyle;
27use rat_widget::table::TableStyle;
28use rat_widget::text::TextStyle;
29use rat_widget::view::ViewStyle;
30use ratatui::style::{Color, Style};
31
32/// A theme to test the fallback-styles of each widget.
33pub fn create_fallback(name: &str, p: Palette) -> SalsaTheme {
34    let mut th = SalsaTheme::new(name, Category::Other, p);
35
36    th.p.add_aliased(Color::LABEL_FG, ColorIdx::default());
37    th.p.add_aliased(Color::INPUT_BG, ColorIdx::default());
38    th.p.add_aliased(Color::FOCUS_BG, ColorIdx::default());
39    th.p.add_aliased(Color::SELECT_BG, ColorIdx::default());
40    th.p.add_aliased(Color::DISABLED_BG, ColorIdx::default());
41    th.p.add_aliased(Color::INVALID_BG, ColorIdx::default());
42    th.p.add_aliased(Color::HOVER_BG, ColorIdx::default());
43    th.p.add_aliased(Color::TITLE_FG, ColorIdx::default());
44    th.p.add_aliased(Color::TITLE_BG, ColorIdx::default());
45    th.p.add_aliased(Color::HEADER_FG, ColorIdx::default());
46    th.p.add_aliased(Color::HEADER_BG, ColorIdx::default());
47    th.p.add_aliased(Color::FOOTER_FG, ColorIdx::default());
48    th.p.add_aliased(Color::FOOTER_BG, ColorIdx::default());
49    th.p.add_aliased(Color::SHADOW_BG, ColorIdx::default());
50    th.p.add_aliased(Color::WEEK_HEADER_FG, ColorIdx::default());
51    th.p.add_aliased(Color::MONTH_HEADER_FG, ColorIdx::default());
52    th.p.add_aliased(Color::INPUT_FOCUS_BG, ColorIdx::default());
53    th.p.add_aliased(Color::INPUT_SELECT_BG, ColorIdx::default());
54    th.p.add_aliased(Color::BUTTON_BASE_BG, ColorIdx::default());
55    th.p.add_aliased(Color::MENU_BASE_BG, ColorIdx::default());
56    th.p.add_aliased(Color::KEY_BINDING_BG, ColorIdx::default());
57    th.p.add_aliased(Color::STATUS_BASE_BG, ColorIdx::default());
58    th.p.add_aliased(Color::CONTAINER_BASE_BG, ColorIdx::default());
59    th.p.add_aliased(Color::CONTAINER_BORDER_FG, ColorIdx::default());
60    th.p.add_aliased(Color::CONTAINER_ARROW_FG, ColorIdx::default());
61    th.p.add_aliased(Color::DOCUMENT_BASE_BG, ColorIdx::default());
62    th.p.add_aliased(Color::DOCUMENT_BORDER_FG, ColorIdx::default());
63    th.p.add_aliased(Color::DOCUMENT_ARROW_FG, ColorIdx::default());
64    th.p.add_aliased(Color::POPUP_BASE_BG, ColorIdx::default());
65    th.p.add_aliased(Color::POPUP_BORDER_FG, ColorIdx::default());
66    th.p.add_aliased(Color::POPUP_ARROW_FG, ColorIdx::default());
67    th.p.add_aliased(Color::DIALOG_BASE_BG, ColorIdx::default());
68    th.p.add_aliased(Color::DIALOG_BORDER_FG, ColorIdx::default());
69    th.p.add_aliased(Color::DIALOG_ARROW_FG, ColorIdx::default());
70
71    th.define_style(Style::LABEL_FG, Style::default());
72    th.define_style(Style::INPUT, Style::default());
73    th.define_style(Style::FOCUS, Style::default());
74    th.define_style(Style::SELECT, Style::default());
75    th.define_style(Style::DISABLED, Style::default());
76    th.define_style(Style::INVALID, Style::default());
77    th.define_style(Style::HOVER, Style::default());
78    th.define_style(Style::TITLE, Style::default());
79    th.define_style(Style::HEADER, Style::default());
80    th.define_style(Style::FOOTER, Style::default());
81    th.define_style(Style::SHADOWS, Style::default());
82    th.define_style(Style::WEEK_HEADER_FG, Style::default());
83    th.define_style(Style::MONTH_HEADER_FG, Style::default());
84    th.define_style(Style::INPUT_FOCUS, Style::default());
85    th.define_style(Style::INPUT_SELECT, Style::default());
86    th.define_style(Style::KEY_BINDING, Style::default());
87
88    th.define_style(Style::BUTTON_BASE, Style::default());
89    th.define_style(Style::MENU_BASE, Style::default());
90    th.define_style(Style::STATUS_BASE, Style::default());
91
92    th.define_style(Style::CONTAINER_BASE, Style::default());
93    th.define_style(Style::CONTAINER_BORDER_FG, Style::default());
94    th.define_style(Style::CONTAINER_ARROW_FG, Style::default());
95
96    th.define_style(Style::DOCUMENT_BASE, Style::default());
97    th.define_style(Style::DOCUMENT_BORDER_FG, Style::default());
98    th.define_style(Style::DOCUMENT_ARROW_FG, Style::default());
99
100    th.define_style(Style::POPUP_BASE, Style::default());
101    th.define_style(Style::POPUP_BORDER_FG, Style::default());
102    th.define_style(Style::POPUP_ARROW_FG, Style::default());
103
104    th.define_style(Style::DIALOG_BASE, Style::default());
105    th.define_style(Style::DIALOG_BORDER_FG, Style::default());
106    th.define_style(Style::DIALOG_ARROW_FG, Style::default());
107
108    th.define_fn0(WidgetStyle::BUTTON, ButtonStyle::default);
109    th.define_fn0(WidgetStyle::CALENDAR, CalendarStyle::default);
110    th.define_fn0(WidgetStyle::CHECKBOX, CheckboxStyle::default);
111    th.define_fn0(WidgetStyle::CHOICE, ChoiceStyle::default);
112    th.define_fn0(WidgetStyle::CLIPPER, ClipperStyle::default);
113    th.define_fn0(WidgetStyle::COMBOBOX, ComboboxStyle::default);
114    #[cfg(feature = "color_input")]
115    th.define_fn0(WidgetStyle::COLOR_INPUT, ColorInputStyle::default);
116    th.define_fn0(WidgetStyle::DIALOG_FRAME, DialogFrameStyle::default);
117    th.define_fn0(WidgetStyle::FILE_DIALOG, FileDialogStyle::default);
118    th.define_fn0(WidgetStyle::FORM, FormStyle::default);
119    th.define_fn0(WidgetStyle::LINE_NR, LineNumberStyle::default);
120    th.define_fn0(WidgetStyle::LIST, ListStyle::default);
121    th.define_fn0(WidgetStyle::MENU, MenuStyle::default);
122    th.define_fn0(WidgetStyle::MONTH, CalendarStyle::default);
123    th.define_fn0(WidgetStyle::MSG_DIALOG, MsgDialogStyle::default);
124    th.define_fn0(WidgetStyle::PARAGRAPH, ParagraphStyle::default);
125    th.define_fn0(WidgetStyle::RADIO, RadioStyle::default);
126    th.define_fn0(WidgetStyle::SCROLL, ScrollStyle::default);
127    th.define_fn0(WidgetStyle::SCROLL_DIALOG, ScrollStyle::default);
128    th.define_fn0(WidgetStyle::SCROLL_POPUP, ScrollStyle::default);
129    th.define_fn0(WidgetStyle::SHADOW, ShadowStyle::default);
130    th.define_fn0(WidgetStyle::SLIDER, SliderStyle::default);
131    th.define_fn0(WidgetStyle::SPLIT, SplitStyle::default);
132    th.define_fn0(WidgetStyle::STATUSLINE, StatusLineStyle::default);
133    th.define_fn0(WidgetStyle::TABBED, TabbedStyle::default);
134    th.define_fn0(WidgetStyle::TABLE, TableStyle::default);
135    th.define_fn0(WidgetStyle::TEXT, TextStyle::default);
136    th.define_fn0(WidgetStyle::TEXTAREA, TextStyle::default);
137    th.define_fn0(WidgetStyle::TEXTVIEW, TextStyle::default);
138    th.define_fn0(WidgetStyle::VIEW, ViewStyle::default);
139
140    th
141}