From 62e5e8e03e64702465fef2ab0303f3402188bf66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mikrut?= <41945903+qarmin@users.noreply.github.com> Date: Sat, 12 Dec 2020 12:09:03 +0100 Subject: [PATCH] Select longer names by default (#113) --- czkawka_gui/src/connect_popovers.rs | 130 +++++++++++++++++++++++----- czkawka_gui/src/saving_loading.rs | 2 +- 2 files changed, 111 insertions(+), 21 deletions(-) diff --git a/czkawka_gui/src/connect_popovers.rs b/czkawka_gui/src/connect_popovers.rs index 4d2226d..81dcfee 100644 --- a/czkawka_gui/src/connect_popovers.rs +++ b/czkawka_gui/src/connect_popovers.rs @@ -4,6 +4,9 @@ use crate::help_functions::*; use gtk::prelude::*; use gtk::TreeIter; +// File length variable allows users to choose duplicates which have shorter file name +// e.g. 'tar.gz' will be selected instead 'tar.gz (copy)' etc. + fn popover_select_all(popover: >k::Popover, scrolled_window: >k::ScrolledWindow) { let tree_view = get_tree_view(&scrolled_window); let selection = tree_view.get_selection(); @@ -52,7 +55,7 @@ fn popover_reverse(popover: >k::Popover, scrolled_window: >k::ScrolledWindow popover.popdown(); } -fn popover_all_except_oldest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_modification_as_secs: i32) { +fn popover_all_except_oldest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) { let tree_view = get_tree_view(&scrolled_window); let selection = tree_view.get_selection(); let tree_model = tree_view.get_model().unwrap(); @@ -67,6 +70,8 @@ fn popover_all_except_oldest(popover: >k::Popover, scrolled_window: >k::Scro let mut current_index: usize = 0; let mut oldest_modification_time: u64 = u64::max_value(); + let mut file_length: usize = 0; + loop { let color = tree_model.get_value(&tree_iter_all, column_color).get::().unwrap().unwrap(); if color == HEADER_ROW_COLOR { @@ -77,7 +82,9 @@ fn popover_all_except_oldest(popover: >k::Popover, scrolled_window: >k::Scro } tree_iter_array.push(tree_iter_all.clone()); let modification = tree_model.get_value(&tree_iter_all, column_modification_as_secs).get::().unwrap().unwrap(); - if modification < oldest_modification_time { + let current_file_length = tree_model.get_value(&tree_iter_all, column_file_name).get::().unwrap().unwrap().len(); + if modification < oldest_modification_time || (modification == oldest_modification_time && current_file_length < file_length) { + file_length = current_file_length; oldest_modification_time = modification; oldest_index = Some(current_index); } @@ -107,7 +114,7 @@ fn popover_all_except_oldest(popover: >k::Popover, scrolled_window: >k::Scro popover.popdown(); } -fn popover_all_except_newest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_modification_as_secs: i32) { +fn popover_all_except_newest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) { let tree_view = get_tree_view(&scrolled_window); let selection = tree_view.get_selection(); let tree_model = tree_view.get_model().unwrap(); @@ -122,6 +129,8 @@ fn popover_all_except_newest(popover: >k::Popover, scrolled_window: >k::Scro let mut current_index: usize = 0; let mut newest_modification_time: u64 = 0; + let mut file_length: usize = 0; + loop { let color = tree_model.get_value(&tree_iter_all, column_color).get::().unwrap().unwrap(); if color == HEADER_ROW_COLOR { @@ -132,7 +141,9 @@ fn popover_all_except_newest(popover: >k::Popover, scrolled_window: >k::Scro } tree_iter_array.push(tree_iter_all.clone()); let modification = tree_model.get_value(&tree_iter_all, column_modification_as_secs).get::().unwrap().unwrap(); - if modification > newest_modification_time { + let current_file_length = tree_model.get_value(&tree_iter_all, column_file_name).get::().unwrap().unwrap().len(); + if modification > newest_modification_time || (modification == newest_modification_time && current_file_length < file_length) { + file_length = current_file_length; newest_modification_time = modification; newest_index = Some(current_index); } @@ -162,7 +173,7 @@ fn popover_all_except_newest(popover: >k::Popover, scrolled_window: >k::Scro popover.popdown(); } -fn popover_one_oldest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_modification_as_secs: i32) { +fn popover_one_oldest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) { let tree_view = get_tree_view(&scrolled_window); let selection = tree_view.get_selection(); let tree_model = tree_view.get_model().unwrap(); @@ -177,6 +188,8 @@ fn popover_one_oldest(popover: >k::Popover, scrolled_window: >k::ScrolledWin let mut current_index: usize = 0; let mut oldest_modification_time: u64 = u64::max_value(); + let mut file_length: usize = 0; + loop { let color = tree_model.get_value(&tree_iter_all, column_color).get::().unwrap().unwrap(); if color == HEADER_ROW_COLOR { @@ -187,7 +200,9 @@ fn popover_one_oldest(popover: >k::Popover, scrolled_window: >k::ScrolledWin } tree_iter_array.push(tree_iter_all.clone()); let modification = tree_model.get_value(&tree_iter_all, column_modification_as_secs).get::().unwrap().unwrap(); - if modification < oldest_modification_time { + let current_file_length = tree_model.get_value(&tree_iter_all, column_file_name).get::().unwrap().unwrap().len(); + if modification < oldest_modification_time || (modification == oldest_modification_time && current_file_length > file_length) { + file_length = current_file_length; oldest_modification_time = modification; oldest_index = Some(current_index); } @@ -217,7 +232,7 @@ fn popover_one_oldest(popover: >k::Popover, scrolled_window: >k::ScrolledWin popover.popdown(); } -fn popover_one_newest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_modification_as_secs: i32) { +fn popover_one_newest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) { let tree_view = get_tree_view(&scrolled_window); let selection = tree_view.get_selection(); let tree_model = tree_view.get_model().unwrap(); @@ -232,6 +247,7 @@ fn popover_one_newest(popover: >k::Popover, scrolled_window: >k::ScrolledWin let mut current_index: usize = 0; let mut newest_modification_time: u64 = 0; + let mut file_length: usize = 0; loop { let color = tree_model.get_value(&tree_iter_all, column_color).get::().unwrap().unwrap(); if color == HEADER_ROW_COLOR { @@ -242,7 +258,9 @@ fn popover_one_newest(popover: >k::Popover, scrolled_window: >k::ScrolledWin } tree_iter_array.push(tree_iter_all.clone()); let modification = tree_model.get_value(&tree_iter_all, column_modification_as_secs).get::().unwrap().unwrap(); - if modification > newest_modification_time { + let current_file_length = tree_model.get_value(&tree_iter_all, column_file_name).get::().unwrap().unwrap().len(); + if modification > newest_modification_time || (modification == newest_modification_time && current_file_length > file_length) { + file_length = current_file_length; newest_modification_time = modification; newest_index = Some(current_index); } @@ -445,13 +463,31 @@ pub fn connect_all_except_oldest(gui_data: &GuiData) { let buttons_popover_duplicate_select_all_except_oldest = gui_data.buttons_popover_duplicate_select_all_except_oldest.clone(); buttons_popover_duplicate_select_all_except_oldest.connect_clicked(move |_| match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() { "notebook_main_duplicate_finder_label" => { - popover_all_except_oldest(&popover_select_duplicate, &scrolled_window_duplicate_finder, ColumnsDuplicates::Color as i32, ColumnsDuplicates::ModificationAsSecs as i32); + popover_all_except_oldest( + &popover_select_duplicate, + &scrolled_window_duplicate_finder, + ColumnsDuplicates::Color as i32, + ColumnsDuplicates::ModificationAsSecs as i32, + ColumnsDuplicates::Name as i32, + ); } "notebook_main_same_music_finder" => { - popover_all_except_oldest(&popover_select_duplicate, &scrolled_window_same_music_finder, ColumnsSameMusic::Color as i32, ColumnsSameMusic::ModificationAsSecs as i32); + popover_all_except_oldest( + &popover_select_duplicate, + &scrolled_window_same_music_finder, + ColumnsSameMusic::Color as i32, + ColumnsSameMusic::ModificationAsSecs as i32, + ColumnsSameMusic::Name as i32, + ); } "notebook_main_similar_images_finder_label" => { - popover_all_except_oldest(&popover_select_duplicate, &scrolled_window_similar_images_finder, ColumnsSimilarImages::Color as i32, ColumnsSimilarImages::ModificationAsSecs as i32); + popover_all_except_oldest( + &popover_select_duplicate, + &scrolled_window_similar_images_finder, + ColumnsSimilarImages::Color as i32, + ColumnsSimilarImages::ModificationAsSecs as i32, + ColumnsSimilarImages::Name as i32, + ); } e => panic!("Not existent {}", e), }); @@ -467,13 +503,31 @@ pub fn connect_all_except_newest(gui_data: &GuiData) { let buttons_popover_duplicate_select_all_except_newest = gui_data.buttons_popover_duplicate_select_all_except_newest.clone(); buttons_popover_duplicate_select_all_except_newest.connect_clicked(move |_| match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() { "notebook_main_duplicate_finder_label" => { - popover_all_except_newest(&popover_select_duplicate, &scrolled_window_duplicate_finder, ColumnsDuplicates::Color as i32, ColumnsDuplicates::ModificationAsSecs as i32); + popover_all_except_newest( + &popover_select_duplicate, + &scrolled_window_duplicate_finder, + ColumnsDuplicates::Color as i32, + ColumnsDuplicates::ModificationAsSecs as i32, + ColumnsDuplicates::Name as i32, + ); } "notebook_main_same_music_finder" => { - popover_all_except_newest(&popover_select_duplicate, &scrolled_window_same_music_finder, ColumnsSameMusic::Color as i32, ColumnsSameMusic::ModificationAsSecs as i32); + popover_all_except_newest( + &popover_select_duplicate, + &scrolled_window_same_music_finder, + ColumnsSameMusic::Color as i32, + ColumnsSameMusic::ModificationAsSecs as i32, + ColumnsSameMusic::Name as i32, + ); } "notebook_main_similar_images_finder_label" => { - popover_all_except_newest(&popover_select_duplicate, &scrolled_window_similar_images_finder, ColumnsSimilarImages::Color as i32, ColumnsSimilarImages::ModificationAsSecs as i32); + popover_all_except_newest( + &popover_select_duplicate, + &scrolled_window_similar_images_finder, + ColumnsSimilarImages::Color as i32, + ColumnsSimilarImages::ModificationAsSecs as i32, + ColumnsSimilarImages::Name as i32, + ); } e => panic!("Not existent {}", e), }); @@ -489,13 +543,31 @@ pub fn connect_one_newest(gui_data: &GuiData) { let buttons_popover_duplicate_select_one_newest = gui_data.buttons_popover_duplicate_select_one_newest.clone(); buttons_popover_duplicate_select_one_newest.connect_clicked(move |_| match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() { "notebook_main_duplicate_finder_label" => { - popover_one_newest(&popover_select_duplicate, &scrolled_window_duplicate_finder, ColumnsDuplicates::Color as i32, ColumnsDuplicates::ModificationAsSecs as i32); + popover_one_newest( + &popover_select_duplicate, + &scrolled_window_duplicate_finder, + ColumnsDuplicates::Color as i32, + ColumnsDuplicates::ModificationAsSecs as i32, + ColumnsDuplicates::Name as i32, + ); } "notebook_main_same_music_finder" => { - popover_one_newest(&popover_select_duplicate, &scrolled_window_same_music_finder, ColumnsSameMusic::Color as i32, ColumnsSameMusic::ModificationAsSecs as i32); + popover_one_newest( + &popover_select_duplicate, + &scrolled_window_same_music_finder, + ColumnsSameMusic::Color as i32, + ColumnsSameMusic::ModificationAsSecs as i32, + ColumnsSameMusic::Name as i32, + ); } "notebook_main_similar_images_finder_label" => { - popover_one_newest(&popover_select_duplicate, &scrolled_window_similar_images_finder, ColumnsSimilarImages::Color as i32, ColumnsSimilarImages::ModificationAsSecs as i32); + popover_one_newest( + &popover_select_duplicate, + &scrolled_window_similar_images_finder, + ColumnsSimilarImages::Color as i32, + ColumnsSimilarImages::ModificationAsSecs as i32, + ColumnsSimilarImages::Name as i32, + ); } e => panic!("Not existent {}", e), }); @@ -511,13 +583,31 @@ pub fn connect_one_oldest(gui_data: &GuiData) { let buttons_popover_duplicate_select_one_oldest = gui_data.buttons_popover_duplicate_select_one_oldest.clone(); buttons_popover_duplicate_select_one_oldest.connect_clicked(move |_| match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() { "notebook_main_duplicate_finder_label" => { - popover_one_oldest(&popover_select_duplicate, &scrolled_window_duplicate_finder, ColumnsDuplicates::Color as i32, ColumnsDuplicates::ModificationAsSecs as i32); + popover_one_oldest( + &popover_select_duplicate, + &scrolled_window_duplicate_finder, + ColumnsDuplicates::Color as i32, + ColumnsDuplicates::ModificationAsSecs as i32, + ColumnsDuplicates::Name as i32, + ); } "notebook_main_same_music_finder" => { - popover_one_oldest(&popover_select_duplicate, &scrolled_window_same_music_finder, ColumnsSameMusic::Color as i32, ColumnsSameMusic::ModificationAsSecs as i32); + popover_one_oldest( + &popover_select_duplicate, + &scrolled_window_same_music_finder, + ColumnsSameMusic::Color as i32, + ColumnsSameMusic::ModificationAsSecs as i32, + ColumnsSameMusic::Name as i32, + ); } "notebook_main_similar_images_finder_label" => { - popover_one_oldest(&popover_select_duplicate, &scrolled_window_similar_images_finder, ColumnsSimilarImages::Color as i32, ColumnsSimilarImages::ModificationAsSecs as i32); + popover_one_oldest( + &popover_select_duplicate, + &scrolled_window_similar_images_finder, + ColumnsSimilarImages::Color as i32, + ColumnsSimilarImages::ModificationAsSecs as i32, + ColumnsSimilarImages::Name as i32, + ); } e => panic!("Not existent {}", e), }); diff --git a/czkawka_gui/src/saving_loading.rs b/czkawka_gui/src/saving_loading.rs index 7e4171c..1b5d9e2 100644 --- a/czkawka_gui/src/saving_loading.rs +++ b/czkawka_gui/src/saving_loading.rs @@ -331,7 +331,7 @@ pub fn reset_configuration(gui_data: &GuiData, manual_clearing: bool) { { let entry_excluded_items = gui_data.entry_excluded_items.clone(); if cfg!(target_family = "unix") { - entry_excluded_items.set_text("*/.git/*,*/node_modules/*,*/lost+found/*,*/Trash/*"); + entry_excluded_items.set_text("*/.git/*,*/node_modules/*,*/lost+found/*,*/Trash/*,*/.Trash-*/*"); } if cfg!(target_family = "windows") { entry_excluded_items.set_text("*/.git/*,*/node_modules/*,*/lost+found/*,*:/windows/*");