From c8549b3810910615d38729fa6c203803d0771d4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mikrut?= <41945903+qarmin@users.noreply.github.com> Date: Fri, 3 Dec 2021 20:27:59 +0100 Subject: [PATCH] Make settings and progress window a dialog (#481) This will fix issue with showing windows in random position after removing Window::Position Settings are modal, so entire app is frozen and this needs to be closed to be able to use e.g. minimize button. --- czkawka_gui/src/compute_results.rs | 11 +- czkawka_gui/src/connect_button_search.rs | 128 ++-- czkawka_gui/src/connect_settings.rs | 4 - czkawka_gui/src/gui_about.rs | 1 + czkawka_gui/src/gui_progress_dialog.rs | 4 +- czkawka_gui/ui/progress.glade | 246 ++++--- czkawka_gui/ui/settings.glade | 799 ++++++++++++----------- 7 files changed, 632 insertions(+), 561 deletions(-) diff --git a/czkawka_gui/src/compute_results.rs b/czkawka_gui/src/compute_results.rs index a9f1f4e..378d128 100644 --- a/czkawka_gui/src/compute_results.rs +++ b/czkawka_gui/src/compute_results.rs @@ -50,6 +50,9 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< let radio_button_similar_hash_size_16 = gui_data.main_notebook.radio_button_similar_hash_size_16.clone(); let radio_button_similar_hash_size_32 = gui_data.main_notebook.radio_button_similar_hash_size_32.clone(); let radio_button_similar_hash_size_64 = gui_data.main_notebook.radio_button_similar_hash_size_64.clone(); + let notebook_upper = gui_data.upper_notebook.notebook_upper.clone(); + let button_settings = gui_data.header.button_settings.clone(); + let button_app_info = gui_data.header.button_app_info.clone(); let main_context = glib::MainContext::default(); let _guard = main_context.acquire().unwrap(); @@ -57,13 +60,15 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< glib_stop_receiver.attach(None, move |msg| { buttons_search.show(); + notebook_main.set_sensitive(true); + notebook_upper.set_sensitive(true); + button_settings.set_sensitive(true); + button_app_info.set_sensitive(true); + window_progress.hide(); taskbar_state.borrow().hide(); - // Restore clickability to main notebook - notebook_main.set_sensitive(true); - let hash_size; if radio_button_similar_hash_size_8.is_active() { hash_size = 8; diff --git a/czkawka_gui/src/connect_button_search.rs b/czkawka_gui/src/connect_button_search.rs index eb12ee7..4e73244 100644 --- a/czkawka_gui/src/connect_button_search.rs +++ b/czkawka_gui/src/connect_button_search.rs @@ -38,80 +38,83 @@ pub fn connect_button_search( futures_sender_invalid_symlinks: futures::channel::mpsc::UnboundedSender, futures_sender_broken_files: futures::channel::mpsc::UnboundedSender, ) { - let entry_info = gui_data.entry_info.clone(); - let notebook_main = gui_data.main_notebook.notebook_main.clone(); - let tree_view_included_directories = gui_data.upper_notebook.tree_view_included_directories.clone(); - let tree_view_excluded_directories = gui_data.upper_notebook.tree_view_excluded_directories.clone(); - let buttons_search_clone = gui_data.bottom_buttons.buttons_search.clone(); let buttons_array = gui_data.bottom_buttons.buttons_array.clone(); - let check_button_recursive = gui_data.upper_notebook.check_button_recursive.clone(); - let entry_excluded_items = gui_data.upper_notebook.entry_excluded_items.clone(); - let entry_same_music_minimal_size = gui_data.main_notebook.entry_same_music_minimal_size.clone(); - let entry_same_music_maximal_size = gui_data.main_notebook.entry_same_music_maximal_size.clone(); - let entry_allowed_extensions = gui_data.upper_notebook.entry_allowed_extensions.clone(); let buttons_names = gui_data.bottom_buttons.buttons_names.clone(); + let buttons_search_clone = gui_data.bottom_buttons.buttons_search.clone(); + let check_button_duplicates_use_prehash_cache = gui_data.settings.check_button_duplicates_use_prehash_cache.clone(); + let check_button_music_album_artist: gtk::CheckButton = gui_data.main_notebook.check_button_music_album_artist.clone(); + let check_button_music_album_title: gtk::CheckButton = gui_data.main_notebook.check_button_music_album_title.clone(); + let check_button_music_artist: gtk::CheckButton = gui_data.main_notebook.check_button_music_artist.clone(); + let check_button_music_title: gtk::CheckButton = gui_data.main_notebook.check_button_music_title.clone(); + let check_button_music_year: gtk::CheckButton = gui_data.main_notebook.check_button_music_year.clone(); + let check_button_recursive = gui_data.upper_notebook.check_button_recursive.clone(); + let check_button_settings_duplicates_delete_outdated_cache = gui_data.settings.check_button_settings_duplicates_delete_outdated_cache.clone(); + let check_button_settings_hide_hard_links = gui_data.settings.check_button_settings_hide_hard_links.clone(); + let check_button_settings_similar_images_delete_outdated_cache = gui_data.settings.check_button_settings_similar_images_delete_outdated_cache.clone(); + let check_button_settings_similar_videos_delete_outdated_cache = gui_data.settings.check_button_settings_similar_videos_delete_outdated_cache.clone(); + let check_button_settings_use_cache = gui_data.settings.check_button_settings_use_cache.clone(); + let entry_allowed_extensions = gui_data.upper_notebook.entry_allowed_extensions.clone(); + let entry_big_files_number = gui_data.main_notebook.entry_big_files_number.clone(); + let entry_duplicate_maximal_size = gui_data.main_notebook.entry_duplicate_maximal_size.clone(); + let entry_duplicate_minimal_size = gui_data.main_notebook.entry_duplicate_minimal_size.clone(); + let entry_excluded_items = gui_data.upper_notebook.entry_excluded_items.clone(); + let entry_same_music_maximal_size = gui_data.main_notebook.entry_same_music_maximal_size.clone(); + let entry_same_music_minimal_size = gui_data.main_notebook.entry_same_music_minimal_size.clone(); + let entry_settings_cache_file_minimal_size = gui_data.settings.entry_settings_cache_file_minimal_size.clone(); + let entry_settings_prehash_cache_file_minimal_size = gui_data.settings.entry_settings_prehash_cache_file_minimal_size.clone(); + let entry_similar_images_maximal_size = gui_data.main_notebook.entry_similar_images_maximal_size.clone(); + let entry_similar_images_minimal_size = gui_data.main_notebook.entry_similar_images_minimal_size.clone(); + let entry_similar_videos_maximal_size = gui_data.main_notebook.entry_similar_videos_maximal_size.clone(); + let entry_similar_videos_minimal_size = gui_data.main_notebook.entry_similar_videos_minimal_size.clone(); + let grid_progress_stages = gui_data.progress_window.grid_progress_stages.clone(); + let image_preview_similar_images = gui_data.main_notebook.image_preview_similar_images.clone(); + let label_stage = gui_data.progress_window.label_stage.clone(); + let notebook_main = gui_data.main_notebook.notebook_main.clone(); + let notebook_upper = gui_data.upper_notebook.notebook_upper.clone(); + let progress_bar_all_stages = gui_data.progress_window.progress_bar_all_stages.clone(); + let progress_bar_current_stage = gui_data.progress_window.progress_bar_current_stage.clone(); + let radio_button_duplicates_hash = gui_data.main_notebook.radio_button_duplicates_hash.clone(); let radio_button_duplicates_name = gui_data.main_notebook.radio_button_duplicates_name.clone(); let radio_button_duplicates_size = gui_data.main_notebook.radio_button_duplicates_size.clone(); - let radio_button_duplicates_hash = gui_data.main_notebook.radio_button_duplicates_hash.clone(); - let scale_similarity_similar_images = gui_data.main_notebook.scale_similarity_similar_images.clone(); - let scale_similarity_similar_videos = gui_data.main_notebook.scale_similarity_similar_videos.clone(); - let entry_duplicate_minimal_size = gui_data.main_notebook.entry_duplicate_minimal_size.clone(); - let entry_duplicate_maximal_size = gui_data.main_notebook.entry_duplicate_maximal_size.clone(); - let stop_receiver = gui_data.stop_receiver.clone(); - let entry_big_files_number = gui_data.main_notebook.entry_big_files_number.clone(); - let entry_similar_images_minimal_size = gui_data.main_notebook.entry_similar_images_minimal_size.clone(); - let entry_similar_images_maximal_size = gui_data.main_notebook.entry_similar_images_maximal_size.clone(); - let entry_similar_videos_minimal_size = gui_data.main_notebook.entry_similar_videos_minimal_size.clone(); - let entry_similar_videos_maximal_size = gui_data.main_notebook.entry_similar_videos_maximal_size.clone(); - let check_button_music_title: gtk::CheckButton = gui_data.main_notebook.check_button_music_title.clone(); - let check_button_music_artist: gtk::CheckButton = gui_data.main_notebook.check_button_music_artist.clone(); - let check_button_music_album_title: gtk::CheckButton = gui_data.main_notebook.check_button_music_album_title.clone(); - let check_button_music_album_artist: gtk::CheckButton = gui_data.main_notebook.check_button_music_album_artist.clone(); - let check_button_music_year: gtk::CheckButton = gui_data.main_notebook.check_button_music_year.clone(); - let shared_buttons = gui_data.shared_buttons.clone(); - let tree_view_empty_folder_finder = gui_data.main_notebook.tree_view_empty_folder_finder.clone(); - let tree_view_empty_files_finder = gui_data.main_notebook.tree_view_empty_files_finder.clone(); - let tree_view_big_files_finder = gui_data.main_notebook.tree_view_big_files_finder.clone(); - let tree_view_duplicate_finder = gui_data.main_notebook.tree_view_duplicate_finder.clone(); - let tree_view_temporary_files_finder = gui_data.main_notebook.tree_view_temporary_files_finder.clone(); - let tree_view_same_music_finder = gui_data.main_notebook.tree_view_same_music_finder.clone(); - let tree_view_similar_images_finder = gui_data.main_notebook.tree_view_similar_images_finder.clone(); - let tree_view_similar_videos_finder = gui_data.main_notebook.tree_view_similar_videos_finder.clone(); - let tree_view_invalid_symlinks = gui_data.main_notebook.tree_view_invalid_symlinks.clone(); - let tree_view_broken_files = gui_data.main_notebook.tree_view_broken_files.clone(); - let text_view_errors = gui_data.text_view_errors.clone(); - let window_progress = gui_data.progress_window.window_progress.clone(); - let label_stage = gui_data.progress_window.label_stage.clone(); - let grid_progress_stages = gui_data.progress_window.grid_progress_stages.clone(); - let progress_bar_current_stage = gui_data.progress_window.progress_bar_current_stage.clone(); - let progress_bar_all_stages = gui_data.progress_window.progress_bar_all_stages.clone(); - let taskbar_state = gui_data.taskbar_state.clone(); - let image_preview_similar_images = gui_data.main_notebook.image_preview_similar_images.clone(); let radio_button_hash_type_blake3 = gui_data.main_notebook.radio_button_hash_type_blake3.clone(); let radio_button_hash_type_crc32 = gui_data.main_notebook.radio_button_hash_type_crc32.clone(); let radio_button_hash_type_xxh3 = gui_data.main_notebook.radio_button_hash_type_xxh3.clone(); - let check_button_settings_hide_hard_links = gui_data.settings.check_button_settings_hide_hard_links.clone(); - let check_button_settings_use_cache = gui_data.settings.check_button_settings_use_cache.clone(); - let check_button_duplicates_use_prehash_cache = gui_data.settings.check_button_duplicates_use_prehash_cache.clone(); - let entry_settings_cache_file_minimal_size = gui_data.settings.entry_settings_cache_file_minimal_size.clone(); - let entry_settings_prehash_cache_file_minimal_size = gui_data.settings.entry_settings_prehash_cache_file_minimal_size.clone(); - let radio_button_similar_hash_size_8 = gui_data.main_notebook.radio_button_similar_hash_size_8.clone(); - let radio_button_similar_hash_size_16 = gui_data.main_notebook.radio_button_similar_hash_size_16.clone(); - let radio_button_similar_hash_size_32 = gui_data.main_notebook.radio_button_similar_hash_size_32.clone(); - let radio_button_similar_hash_size_64 = gui_data.main_notebook.radio_button_similar_hash_size_64.clone(); let radio_button_resize_algorithm_catmullrom = gui_data.main_notebook.radio_button_resize_algorithm_catmullrom.clone(); + let radio_button_resize_algorithm_gaussian = gui_data.main_notebook.radio_button_resize_algorithm_gaussian.clone(); let radio_button_resize_algorithm_lanczos3 = gui_data.main_notebook.radio_button_resize_algorithm_lanczos3.clone(); let radio_button_resize_algorithm_nearest = gui_data.main_notebook.radio_button_resize_algorithm_nearest.clone(); let radio_button_resize_algorithm_triangle = gui_data.main_notebook.radio_button_resize_algorithm_triangle.clone(); - let radio_button_resize_algorithm_gaussian = gui_data.main_notebook.radio_button_resize_algorithm_gaussian.clone(); - let radio_button_similar_hash_algorithm_gradient = gui_data.main_notebook.radio_button_similar_hash_algorithm_gradient.clone(); let radio_button_similar_hash_algorithm_blockhash = gui_data.main_notebook.radio_button_similar_hash_algorithm_blockhash.clone(); + let radio_button_similar_hash_algorithm_doublegradient = gui_data.main_notebook.radio_button_similar_hash_algorithm_doublegradient.clone(); + let radio_button_similar_hash_algorithm_gradient = gui_data.main_notebook.radio_button_similar_hash_algorithm_gradient.clone(); let radio_button_similar_hash_algorithm_mean = gui_data.main_notebook.radio_button_similar_hash_algorithm_mean.clone(); let radio_button_similar_hash_algorithm_vertgradient = gui_data.main_notebook.radio_button_similar_hash_algorithm_vertgradient.clone(); - let radio_button_similar_hash_algorithm_doublegradient = gui_data.main_notebook.radio_button_similar_hash_algorithm_doublegradient.clone(); - let check_button_settings_duplicates_delete_outdated_cache = gui_data.settings.check_button_settings_duplicates_delete_outdated_cache.clone(); - let check_button_settings_similar_videos_delete_outdated_cache = gui_data.settings.check_button_settings_similar_videos_delete_outdated_cache.clone(); - let check_button_settings_similar_images_delete_outdated_cache = gui_data.settings.check_button_settings_similar_images_delete_outdated_cache.clone(); + let radio_button_similar_hash_size_16 = gui_data.main_notebook.radio_button_similar_hash_size_16.clone(); + let radio_button_similar_hash_size_32 = gui_data.main_notebook.radio_button_similar_hash_size_32.clone(); + let radio_button_similar_hash_size_64 = gui_data.main_notebook.radio_button_similar_hash_size_64.clone(); + let radio_button_similar_hash_size_8 = gui_data.main_notebook.radio_button_similar_hash_size_8.clone(); + let scale_similarity_similar_images = gui_data.main_notebook.scale_similarity_similar_images.clone(); + let scale_similarity_similar_videos = gui_data.main_notebook.scale_similarity_similar_videos.clone(); + let shared_buttons = gui_data.shared_buttons.clone(); + let stop_receiver = gui_data.stop_receiver.clone(); + let taskbar_state = gui_data.taskbar_state.clone(); + let text_view_errors = gui_data.text_view_errors.clone(); + let tree_view_big_files_finder = gui_data.main_notebook.tree_view_big_files_finder.clone(); + let tree_view_broken_files = gui_data.main_notebook.tree_view_broken_files.clone(); + let tree_view_duplicate_finder = gui_data.main_notebook.tree_view_duplicate_finder.clone(); + let tree_view_empty_files_finder = gui_data.main_notebook.tree_view_empty_files_finder.clone(); + let tree_view_empty_folder_finder = gui_data.main_notebook.tree_view_empty_folder_finder.clone(); + let tree_view_excluded_directories = gui_data.upper_notebook.tree_view_excluded_directories.clone(); + let tree_view_included_directories = gui_data.upper_notebook.tree_view_included_directories.clone(); + let tree_view_invalid_symlinks = gui_data.main_notebook.tree_view_invalid_symlinks.clone(); + let tree_view_same_music_finder = gui_data.main_notebook.tree_view_same_music_finder.clone(); + let tree_view_similar_images_finder = gui_data.main_notebook.tree_view_similar_images_finder.clone(); + let tree_view_similar_videos_finder = gui_data.main_notebook.tree_view_similar_videos_finder.clone(); + let tree_view_temporary_files_finder = gui_data.main_notebook.tree_view_temporary_files_finder.clone(); + let window_progress = gui_data.progress_window.window_progress.clone(); + let entry_info = gui_data.entry_info.clone(); + let button_settings = gui_data.header.button_settings.clone(); + let button_app_info = gui_data.header.button_app_info.clone(); buttons_search_clone.connect_clicked(move |_| { let included_directories = get_path_buf_from_vector_of_strings(get_string_from_list_store(&tree_view_included_directories)); @@ -127,8 +130,10 @@ pub fn connect_button_search( hide_all_buttons(&buttons_array); - // Disable main notebook from any iteration until search will end notebook_main.set_sensitive(false); + notebook_upper.set_sensitive(false); + button_settings.set_sensitive(false); + button_app_info.set_sensitive(false); entry_info.set_text("Searching data, it may take a while, please wait..."); @@ -440,7 +445,6 @@ pub fn connect_button_search( let _ = glib_stop_sender.send(Message::SameMusic(mf)); }); } else { - notebook_main.set_sensitive(true); set_buttons(&mut *shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SameMusic).unwrap(), &buttons_array, &buttons_names); entry_info.set_text("ERROR: You must select at least one checkbox with music searching types."); show_dialog.store(false, Ordering::Relaxed); diff --git a/czkawka_gui/src/connect_settings.rs b/czkawka_gui/src/connect_settings.rs index 6ff75ef..a518265 100644 --- a/czkawka_gui/src/connect_settings.rs +++ b/czkawka_gui/src/connect_settings.rs @@ -16,19 +16,15 @@ pub fn connect_settings(gui_data: &GuiData) { // Connect button settings { let button_settings = gui_data.header.button_settings.clone(); - let window_main = gui_data.window_main.clone(); let window_settings = gui_data.settings.window_settings.clone(); button_settings.connect_clicked(move |_| { - window_main.set_sensitive(false); window_settings.show(); }); - let window_main = gui_data.window_main.clone(); let window_settings = gui_data.settings.window_settings.clone(); window_settings.connect_delete_event(move |window, _| { window.hide(); - window_main.set_sensitive(true); gtk::Inhibit(true) }); } diff --git a/czkawka_gui/src/gui_about.rs b/czkawka_gui/src/gui_about.rs index 6e49953..3341f32 100644 --- a/czkawka_gui/src/gui_about.rs +++ b/czkawka_gui/src/gui_about.rs @@ -16,6 +16,7 @@ impl GuiAbout { let builder = Builder::from_string(glade_src.as_str()); let about_dialog: gtk::AboutDialog = builder.object("about_dialog").unwrap(); + about_dialog.set_modal(true); about_dialog.set_transient_for(Some(window_main)); let button_repository: gtk::Button = builder.object("button_repository").unwrap(); diff --git a/czkawka_gui/src/gui_progress_dialog.rs b/czkawka_gui/src/gui_progress_dialog.rs index 7f9d07f..d1fd69c 100644 --- a/czkawka_gui/src/gui_progress_dialog.rs +++ b/czkawka_gui/src/gui_progress_dialog.rs @@ -3,7 +3,7 @@ use gtk::{Builder, EventControllerKey, Window}; #[derive(Clone)] pub struct GuiProgressDialog { - pub window_progress: gtk::Window, + pub window_progress: gtk::Dialog, pub progress_bar_current_stage: gtk::ProgressBar, pub progress_bar_all_stages: gtk::ProgressBar, @@ -21,7 +21,7 @@ impl GuiProgressDialog { let glade_src = include_str!("../ui/progress.glade").to_string(); let builder = Builder::from_string(glade_src.as_str()); - let window_progress: gtk::Window = builder.object("window_progress").unwrap(); + let window_progress: gtk::Dialog = builder.object("window_progress").unwrap(); window_progress.set_transient_for(Some(window_main)); let progress_bar_current_stage: gtk::ProgressBar = builder.object("progress_bar_current_stage").unwrap(); diff --git a/czkawka_gui/ui/progress.glade b/czkawka_gui/ui/progress.glade index 25a4c02..6ea2f16 100644 --- a/czkawka_gui/ui/progress.glade +++ b/czkawka_gui/ui/progress.glade @@ -32,86 +32,161 @@ Author: Rafał Mikrut - + False - Czkawka Progress Window - + dialog + center + - True False - 10 - 10 - 10 - 10 vertical - 10 - - - - True + 2 + + False - center - 2 - 2 - 2 + end - - True - False - All stages: - - - 0 - 1 - + - - True - False - True - 0.099999999776482579 - True - - - 1 - 1 - - - - - True - False - Current stage: - - - 0 - 0 - - - - - True - False - True - - - 1 - 0 - + - True - True + False + False 0 - + True False - Stage 1/2 + 10 + 10 + 10 + 10 + vertical + 10 + + + + True + False + center + 2 + 2 + 2 + + + True + False + All stages: + + + 0 + 1 + + + + + True + False + True + 0.099999999776482579 + True + + + 1 + 1 + + + + + True + False + Current stage: + + + 0 + 0 + + + + + True + False + True + + + 1 + 0 + + + + + True + True + 0 + + + + + True + False + Stage 1/2 + + + False + True + 1 + + + + + True + True + True + end + 2 + + + True + False + + + True + False + dialog-cancel + + + False + True + 0 + + + + + True + False + Stop + + + True + True + 1 + + + + + + + False + False + end + 2 + + False @@ -119,51 +194,6 @@ Author: Rafał Mikrut 1 - - - True - True - True - end - 2 - - - True - False - - - True - False - dialog-cancel - - - False - True - 0 - - - - - True - False - Stop - - - True - True - 1 - - - - - - - False - False - end - 2 - - diff --git a/czkawka_gui/ui/settings.glade b/czkawka_gui/ui/settings.glade index 4b3191a..2246d20 100644 --- a/czkawka_gui/ui/settings.glade +++ b/czkawka_gui/ui/settings.glade @@ -32,55 +32,247 @@ Author: Rafał Mikrut - + False Czkawka Options - + True + dialog + - True False vertical + 2 + + + False + end + + + + + + + + + False + False + 0 + + True False vertical - - - True - False - - - False - False - 0 - - - - - False - True - 0 - - - - - True - True - left True False vertical + + + True + False + + + False + False + 0 + + + + + False + True + 0 + + + + + True + True + left True False vertical - - Load configuration at start + + True + False + vertical + + + Load configuration at start + True + True + False + True + True + + + False + True + 0 + + + + + Save configuration at exit + True + True + False + True + True + + + False + True + 1 + + + + + Show confirm dialog when deleting any files + True + True + False + True + True + + + False + True + 2 + + + + + Show confirm dialog when deleting all files in group + True + True + False + True + True + + + False + True + 3 + + + + + Show bottom text panel + True + True + False + True + True + + + False + False + 4 + + + + + Use cache + True + True + False + True + True + + + False + True + 5 + + + + + Move deleted files to trash + True + True + False + True + True + + + False + True + 6 + + + + + False + False + 0 + + + + + True + False + + + Open cache folder + True + True + True + + + False + True + 0 + + + + + Open settings folder + True + True + True + + + False + True + end + 1 + + + + + False + False + end + 1 + + + + + + + True + False + General + + + False + + + + + True + False + vertical + + + Hide hard links(only Linux and MacOS) True True False @@ -94,8 +286,8 @@ Author: Rafał Mikrut - - Save configuration at exit + + Show image preview True True False @@ -109,8 +301,8 @@ Author: Rafał Mikrut - - Show confirm dialog when deleting any files + + Delete outdated cache entries automatically True True False @@ -124,13 +316,41 @@ Author: Rafał Mikrut - - Show confirm dialog when deleting all files in group + True - True - False - True - True + False + 4 + 4 + 4 + 4 + + + True + False + Minimal size of files in bytes saved to cache + + + True + True + 0 + + + + + True + True + 15 + 257144 + False + number + + + False + False + end + 1 + + False @@ -139,43 +359,69 @@ Author: Rafał Mikrut - - Show bottom text panel + + Use prehash cache True True False - True - True - - - False - False - 4 - - - - - Use cache - True - True - False - True True False True + 4 + + + + + Remove outdated results from duplicates cache + True + True + True + + + False + False + end 5 - - Move deleted files to trash + True - True - False - True - True + False + 4 + 4 + 4 + 4 + + + True + False + Minimal size of files in bytes saved to prehash cache + + + True + True + 0 + + + + + True + True + 15 + 1 + False + number + + + False + False + end + 1 + + False @@ -185,21 +431,33 @@ Author: Rafał Mikrut - False - False - 0 + 1 + + + + + True + False + Duplicate Finder + + + 1 + False True False + vertical - - Open cache folder + + Show image preview True True - True + False + True + True False @@ -208,147 +466,118 @@ Author: Rafał Mikrut - - Open settings folder + + Delete outdated cache entries automatically True True - True + False + True + True False True - end 1 - - - False - False - end - 1 - - - - - - - True - False - General - - - False - - - - - True - False - vertical - - - Hide hard links(only Linux and MacOS) - True - True - False - True - True - - - False - True - 0 - - - - - Show image preview - True - True - False - True - True - - - False - True - 1 - - - - - Delete outdated cache entries automatically - True - True - False - True - True - - - False - True - 2 - - - - - True - False - 4 - 4 - - True - False - Minimal size of files in bytes saved to cache - - - True - True - 0 - - - - + + Remove outdated results from images cache True True - 15 - 257144 - False - number + True False False end + 2 + + + + + 2 + + + + + True + False + Similar Images + + + 2 + False + + + + + True + False + vertical + + + Remove outdated results from videos cache + True + True + True + + + False + False + end + 0 + + + + + Delete outdated cache entries automatically + True + True + False + True + + + False + True 1 - False - True 3 - - - Use prehash cache + + True - True - False - True + False + Similar Videos - False - True - 4 + 3 + False + + + True + True + 1 + + + + + True + False + 3 + 3 + 3 + 3 + 3 - - Remove outdated results from duplicates cache + + Load configuration True True True @@ -356,107 +585,25 @@ Author: Rafał Mikrut False False - end - 5 - - - - - True - False - 4 - 4 - 4 - 4 - - - True - False - Minimal size of files in bytes saved to prehash cache - - - True - True - 0 - - - - - True - True - 15 - 1 - False - number - - - False - False - end - 1 - - - - - False - True - 6 - - - - - 1 - - - - - True - False - Duplicate Finder - - - 1 - False - - - - - True - False - vertical - - - Show image preview - True - True - False - True - True - - - False - True 0 - - Delete outdated cache entries automatically + + Reset configuration True True - False - True - True + True - False - True + True + False 1 - - Remove outdated results from images cache + + Save configuration True True True @@ -470,69 +617,12 @@ Author: Rafał Mikrut + False + True + 3 2 - - - True - False - Similar Images - - - 2 - False - - - - - True - False - vertical - - - Remove outdated results from videos cache - True - True - True - - - False - False - end - 0 - - - - - Delete outdated cache entries automatically - True - True - False - True - - - False - True - 1 - - - - - 3 - - - - - True - False - Similar Videos - - - 3 - False - - True @@ -540,61 +630,6 @@ Author: Rafał Mikrut 1 - - - True - False - 3 - 3 - 3 - - - Load configuration - True - True - True - - - False - False - 0 - - - - - Reset configuration - True - True - True - - - True - False - 1 - - - - - Save configuration - True - True - True - - - False - False - end - 2 - - - - - False - True - 3 - 2 - -