diff options
author | Jeff Zhao <jeff.no.zhao@gmail.com> | 2022-01-09 17:56:40 -0500 |
---|---|---|
committer | Jeff Zhao <jeff.no.zhao@gmail.com> | 2022-01-09 17:56:40 -0500 |
commit | 61dc86ffb00ee705bdd4bacefe375d5ff28d6517 (patch) | |
tree | 9b995bfa89dc53d34d9ae7dc039c0d686d5f9567 /src | |
parent | e428cf22dd1f5f735c5b51ab03986b700201dfa4 (diff) |
default configuration for joshuto and for themes now read from
the default configuration files in repo
Diffstat (limited to 'src')
-rw-r--r-- | src/config/general/app.rs | 19 | ||||
-rw-r--r-- | src/config/general/mod.rs | 6 | ||||
-rw-r--r-- | src/config/keymap/default_keymap.rs | 5 | ||||
-rw-r--r-- | src/config/keymap/keymapping.rs | 6 | ||||
-rw-r--r-- | src/config/keymap/mod.rs | 7 | ||||
-rw-r--r-- | src/config/theme/app_theme.rs | 45 | ||||
-rw-r--r-- | src/config/theme/mod.rs | 6 | ||||
-rw-r--r-- | src/ui/widgets/tui_dirlist_loading.rs | 7 |
8 files changed, 47 insertions, 54 deletions
diff --git a/src/config/general/app.rs b/src/config/general/app.rs index 1bfefcf..a55ccbe 100644 --- a/src/config/general/app.rs +++ b/src/config/general/app.rs @@ -1,4 +1,8 @@ +use super::DEFAULT_CONFIG_FILE_PATH; + +use super::app_crude::AppConfigCrude; use crate::config::option::{DisplayOption, PreviewOption, SortOption, TabOption}; +use crate::error::JoshutoResult; #[derive(Debug, Clone)] pub struct AppConfig { @@ -10,6 +14,11 @@ pub struct AppConfig { } impl AppConfig { + pub fn default_res() -> JoshutoResult<Self> { + let crude: AppConfigCrude = toml::from_str(DEFAULT_CONFIG_FILE_PATH)?; + Ok(Self::from(crude)) + } + pub fn display_options_ref(&self) -> &DisplayOption { &self._display_options } @@ -38,12 +47,8 @@ impl AppConfig { impl std::default::Default for AppConfig { fn default() -> Self { - Self { - use_trash: true, - xdg_open: false, - _display_options: DisplayOption::default(), - _preview_options: PreviewOption::default(), - _tab_options: TabOption::default(), - } + // This should not fail. + // If it fails then there is a (syntax) error in the default config file + Self::default_res().unwrap() } } diff --git a/src/config/general/mod.rs b/src/config/general/mod.rs index ff42b69..5840d95 100644 --- a/src/config/general/mod.rs +++ b/src/config/general/mod.rs @@ -7,3 +7,9 @@ mod sort_crude; mod tab_crude; pub use self::app::AppConfig; + +#[cfg(not(target_os = "windows"))] +const DEFAULT_CONFIG_FILE_PATH: &str = include_str!("../../../config/joshuto.toml"); + +#[cfg(target_os = "windows")] +const DEFAULT_CONFIG_FILE_PATH: &str = include_str!("..\\..\\..\\config\\joshuto.toml"); diff --git a/src/config/keymap/default_keymap.rs b/src/config/keymap/default_keymap.rs deleted file mode 100644 index 281e42d..0000000 --- a/src/config/keymap/default_keymap.rs +++ /dev/null @@ -1,5 +0,0 @@ -#[cfg(not(target_os = "windows"))] -pub const DEFAULT_KEYMAP: &str = include_str!("../../../config/keymap.toml"); - -#[cfg(target_os = "windows")] -pub const DEFAULT_KEYMAP: &str = include_str!("..\\..\\..\\config\\keymap.toml"); diff --git a/src/config/keymap/keymapping.rs b/src/config/keymap/keymapping.rs index 5a02178..341db95 100644 --- a/src/config/keymap/keymapping.rs +++ b/src/config/keymap/keymapping.rs @@ -13,7 +13,7 @@ use crate::error::JoshutoResult; use crate::key_command::{Command, CommandKeybind}; use crate::util::keyparse::str_to_event; -use super::default_keymap::DEFAULT_KEYMAP; +use super::DEFAULT_CONFIG_FILE_PATH; #[derive(Debug, Deserialize)] struct CommandKeymap { @@ -40,7 +40,7 @@ impl AppKeyMapping { } pub fn default_res() -> JoshutoResult<Self> { - let crude: AppKeyMappingCrude = toml::from_str(DEFAULT_KEYMAP)?; + let crude: AppKeyMappingCrude = toml::from_str(DEFAULT_CONFIG_FILE_PATH)?; let keymapping: Self = Self::from(crude); Ok(keymapping) } @@ -99,6 +99,8 @@ impl TomlConfigFile for AppKeyMapping { impl std::default::Default for AppKeyMapping { fn default() -> Self { + // This should not fail. + // If it fails then there is a (syntax) error in the default config file AppKeyMapping::default_res().unwrap() } } diff --git a/src/config/keymap/mod.rs b/src/config/keymap/mod.rs index 97e2a33..609f1e6 100644 --- a/src/config/keymap/mod.rs +++ b/src/config/keymap/mod.rs @@ -1,4 +1,9 @@ -mod default_keymap; mod keymapping; pub use self::keymapping::AppKeyMapping; + +#[cfg(not(target_os = "windows"))] +const DEFAULT_CONFIG_FILE_PATH: &str = include_str!("../../../config/keymap.toml"); + +#[cfg(target_os = "windows")] +const DEFAULT_CONFIG_FILE_PATH: &str = include_str!("..\\..\\..\\config\\keymap.toml"); diff --git a/src/config/theme/app_theme.rs b/src/config/theme/app_theme.rs index 62a296a..96a9012 100644 --- a/src/config/theme/app_theme.rs +++ b/src/config/theme/app_theme.rs @@ -1,10 +1,10 @@ use serde_derive::Deserialize; use std::collections::HashMap; -use tui::style::{Color, Modifier}; - +use super::DEFAULT_CONFIG_FILE_PATH; use super::{AppStyle, RawAppStyle}; use crate::config::{parse_to_config_file, TomlConfigFile}; +use crate::error::JoshutoResult; #[derive(Clone, Debug, Deserialize)] pub struct AppThemeCrude { @@ -84,6 +84,13 @@ pub struct AppTheme { pub ext: HashMap<String, AppStyle>, } +impl AppTheme { + pub fn default_res() -> JoshutoResult<Self> { + let crude: AppThemeCrude = toml::from_str(DEFAULT_CONFIG_FILE_PATH)?; + Ok(Self::from(crude)) + } +} + impl TomlConfigFile for AppTheme { fn get_config(file_name: &str) -> Self { parse_to_config_file::<AppThemeCrude, AppTheme>(file_name).unwrap_or_else(Self::default) @@ -92,36 +99,8 @@ impl TomlConfigFile for AppTheme { impl std::default::Default for AppTheme { fn default() -> Self { - let selection = AppStyle::default() - .set_fg(Color::LightYellow) - .insert(Modifier::BOLD); - let executable = AppStyle::default() - .set_fg(Color::LightGreen) - .insert(Modifier::BOLD); - let regular = AppStyle::default().set_fg(Color::White); - let directory = AppStyle::default() - .set_fg(Color::LightBlue) - .insert(Modifier::BOLD); - let link = AppStyle::default() - .set_fg(Color::LightCyan) - .insert(Modifier::BOLD); - let link_invalid = AppStyle::default() - .set_fg(Color::Red) - .insert(Modifier::BOLD); - let socket = AppStyle::default() - .set_fg(Color::LightMagenta) - .insert(Modifier::BOLD); - let ext = HashMap::new(); - - Self { - selection, - executable, - regular, - directory, - link, - link_invalid, - socket, - ext, - } + // This should not fail. + // If it fails then there is a (syntax) error in the default config file + Self::default_res().unwrap() } } diff --git a/src/config/theme/mod.rs b/src/config/theme/mod.rs index 7dc8b4b..7a44897 100644 --- a/src/config/theme/mod.rs +++ b/src/config/theme/mod.rs @@ -3,3 +3,9 @@ mod style; pub use self::app_theme::AppTheme; pub use self::style::{AppStyle, RawAppStyle}; + +#[cfg(not(target_os = "windows"))] +const DEFAULT_CONFIG_FILE_PATH: &str = include_str!("../../../config/theme.toml"); + +#[cfg(target_os = "windows")] +const DEFAULT_CONFIG_FILE_PATH: &str = include_str!("..\\..\\..\\config\\theme.toml"); diff --git a/src/ui/widgets/tui_dirlist_loading.rs b/src/ui/widgets/tui_dirlist_loading.rs index 5e5257a..ef6730d 100644 --- a/src/ui/widgets/tui_dirlist_loading.rs +++ b/src/ui/widgets/tui_dirlist_loading.rs @@ -1,12 +1,7 @@ use tui::buffer::Buffer; use tui::layout::Rect; -use tui::style::{Color, Modifier, Style}; +use tui::style::{Color, Style}; use tui::widgets::Widget; -use unicode_width::UnicodeWidthStr; - -use crate::fs::{JoshutoDirEntry, JoshutoDirList}; -use crate::ui::widgets::trim_file_label; -use crate::util::style; pub struct TuiDirListLoading; |