diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 689dfd3..46aa7da 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -42,7 +42,7 @@ jobs: - name: Show console window on windows run: | - ./sd.exe -s '#![windows_subsystem = "windows"]' '//#![windows_subsystem = "windows"]' krokiet/src/main.rs + ./sd -s '#![windows_subsystem = "windows"]' '//#![windows_subsystem = "windows"]' krokiet/src/main.rs cat krokiet/src/main.rs - name: Compile Krokiet Console diff --git a/krokiet/src/settings.rs b/krokiet/src/settings.rs index a6d3612..3a33d37 100644 --- a/krokiet/src/settings.rs +++ b/krokiet/src/settings.rs @@ -15,12 +15,21 @@ const DEFAULT_EXCLUDED_DIRECTORIES: &[&str] = &["/proc", "/dev", "/sys", "/run", #[cfg(not(target_family = "unix"))] const DEFAULT_EXCLUDED_DIRECTORIES: &[&str] = &["C:\\Windows"]; +#[cfg(target_family = "unix")] +pub const DEFAULT_EXCLUDED_ITEMS: &str = "*/.git/*,*/node_modules/*,*/lost+found/*,*/Trash/*,*/.Trash-*/*,*/snap/*,/home/*/.cache/*"; +#[cfg(not(target_family = "unix"))] +pub const DEFAULT_EXCLUDED_ITEMS: &str = "*\\.git\\*,*\\node_modules\\*,*\\lost+found\\*,*:\\windows\\*,*:\\$RECYCLE.BIN\\*,*:\\$SysReset\\*,*:\\System Volume Information\\*,*:\\OneDriveTemp\\*,*:\\hiberfil.sys,*:\\pagefile.sys,*:\\swapfile.sys"; + #[derive(Debug, Clone, Serialize, Deserialize)] pub struct SettingsCustom { #[serde(default = "default_included_directories")] pub included_directories: Vec, #[serde(default = "default_excluded_directories")] pub excluded_directories: Vec, + #[serde(default = "default_excluded_items")] + pub excluded_items: String, + #[serde(default)] + pub allowed_extensions: String, } impl Default for SettingsCustom { @@ -28,12 +37,14 @@ impl Default for SettingsCustom { Self { included_directories: default_included_directories(), excluded_directories: default_excluded_directories(), + excluded_items: default_excluded_items(), + allowed_extensions: String::new(), } } } pub fn reset_settings(app: &MainWindow) { - set_settings_to_gui(app, &SettingsCustom::default()); + serde::set_settings_to_gui(app, &SettingsCustom::default()); } pub fn load_settings_from_file(app: &MainWindow) { @@ -100,12 +111,15 @@ pub fn set_settings_to_gui(app: &MainWindow, custom_settings: &SettingsCustom) { let settings = app.global::(); // Included directories - let included_items = create_string_standard_list_view_from_pathbuf(&custom_settings.included_directories); - settings.set_included_directories(included_items); + let included_directories = create_string_standard_list_view_from_pathbuf(&custom_settings.included_directories); + settings.set_included_directories(included_directories); // Excluded directories - let excluded_items = create_string_standard_list_view_from_pathbuf(&custom_settings.excluded_directories); - settings.set_excluded_directories(excluded_items); + let excluded_directories = create_string_standard_list_view_from_pathbuf(&custom_settings.excluded_directories); + settings.set_excluded_directories(excluded_directories); + + settings.set_excluded_items(custom_settings.excluded_items.clone().into()); + settings.set_allowed_extensions(custom_settings.allowed_extensions.clone().into()); // Clear text app.global::().set_info_text("".into()); @@ -120,9 +134,14 @@ pub fn collect_settings(app: &MainWindow) -> SettingsCustom { let excluded_directories = settings.get_excluded_directories(); let excluded_directories = excluded_directories.iter().map(|x| PathBuf::from(x.text.as_str())).collect::>(); + let excluded_items = settings.get_excluded_items().to_string(); + let allowed_extensions = settings.get_allowed_extensions().to_string(); + SettingsCustom { included_directories, excluded_directories, + excluded_items, + allowed_extensions, } } @@ -147,3 +166,7 @@ fn default_excluded_directories() -> Vec { excluded_directories.sort(); excluded_directories } + +fn default_excluded_items() -> String { + DEFAULT_EXCLUDED_ITEMS.to_string() +} diff --git a/krokiet/ui/settings_list.slint b/krokiet/ui/settings_list.slint index f291007..6b0f57c 100644 --- a/krokiet/ui/settings_list.slint +++ b/krokiet/ui/settings_list.slint @@ -17,7 +17,7 @@ component TextComponent inherits HorizontalLayout { LineEdit { horizontal-stretch: 1.0; height: SettingsSize.item_height; - text: Settings.excluded_items; + text: model; } }