summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJeff Zhao <jeff.no.zhao@gmail.com>2022-01-09 17:56:40 -0500
committerJeff Zhao <jeff.no.zhao@gmail.com>2022-01-09 17:56:40 -0500
commit61dc86ffb00ee705bdd4bacefe375d5ff28d6517 (patch)
tree9b995bfa89dc53d34d9ae7dc039c0d686d5f9567 /src
parente428cf22dd1f5f735c5b51ab03986b700201dfa4 (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.rs19
-rw-r--r--src/config/general/mod.rs6
-rw-r--r--src/config/keymap/default_keymap.rs5
-rw-r--r--src/config/keymap/keymapping.rs6
-rw-r--r--src/config/keymap/mod.rs7
-rw-r--r--src/config/theme/app_theme.rs45
-rw-r--r--src/config/theme/mod.rs6
-rw-r--r--src/ui/widgets/tui_dirlist_loading.rs7
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;