diff --git a/czkawka_gui/czkawka.glade b/czkawka_gui/czkawka.glade index 42b5a97..828d20e 100644 --- a/czkawka_gui/czkawka.glade +++ b/czkawka_gui/czkawka.glade @@ -218,7 +218,7 @@ Author: Rafał Mikrut - + False @@ -226,8 +226,8 @@ Author: Rafał Mikrut False vertical - - Select All + + Select custom True True True @@ -239,8 +239,8 @@ Author: Rafał Mikrut - - Unselect All + + Unselect custom True True True @@ -252,7 +252,7 @@ Author: Rafał Mikrut - + True False @@ -263,8 +263,8 @@ Author: Rafał Mikrut - - Reverse Selection + + Select all except biggest True True True @@ -276,9 +276,11 @@ Author: Rafał Mikrut - + + Select all except smallest True - False + True + True False @@ -287,11 +289,9 @@ Author: Rafał Mikrut - - Select all except oldest + True - True - True + False False @@ -300,8 +300,8 @@ Author: Rafał Mikrut - - Select all except newest + + Select all except oldest True True True @@ -313,8 +313,8 @@ Author: Rafał Mikrut - - Select one oldest + + Select all except newest True True True @@ -326,8 +326,8 @@ Author: Rafał Mikrut - - Select one newest + + Select one oldest True True True @@ -339,9 +339,11 @@ Author: Rafał Mikrut - + + Select one newest True - False + True + True False @@ -350,11 +352,9 @@ Author: Rafał Mikrut - - Select custom + True - True - True + False False @@ -363,8 +363,8 @@ Author: Rafał Mikrut - - Unselect custom + + Reverse Selection True True True @@ -375,18 +375,19 @@ Author: Rafał Mikrut 11 - - - - - False - - - True - False - vertical - + + True + False + + + False + True + 12 + + + + Select All True True @@ -395,11 +396,11 @@ Author: Rafał Mikrut False True - 0 + 13 - + Unselect All True True @@ -408,128 +409,7 @@ Author: Rafał Mikrut False True - 1 - - - - - True - False - - - False - True - 2 - - - - - Reverse Selection - True - True - True - - - False - True - 3 - - - - - True - False - - - False - True - 4 - - - - - Select custom - True - True - True - - - False - True - 5 - - - - - Unselect custom - True - True - True - - - False - True - 6 - - - - - - - False - - - True - False - vertical - - - Select All - True - True - True - - - False - True - 0 - - - - - Unselect All - True - True - True - - - False - True - 1 - - - - - True - False - - - False - True - 2 - - - - - Reverse Selection - True - True - True - - - False - True - 3 + 14 diff --git a/czkawka_gui/src/connect_button_select.rs b/czkawka_gui/src/connect_button_select.rs index 25a10b4..bac724f 100644 --- a/czkawka_gui/src/connect_button_select.rs +++ b/czkawka_gui/src/connect_button_select.rs @@ -1,28 +1,138 @@ extern crate gtk; use crate::gui_data::GuiData; use gtk::prelude::*; +use std::collections::HashMap; pub fn connect_button_select(gui_data: &GuiData) { + // let mode = ["all", "image_size", "reverse", "custom", "date"]; + let mut hashmap: HashMap<&str, Vec<&str>> = Default::default(); + { + // Remember to update connect_popovers file, because this data are connected to each others + hashmap.insert("images", vec!["all", "image_size", "reverse", "custom", "date"]); + hashmap.insert("duplicate", vec!["all", "reverse", "custom", "date"]); + hashmap.insert("music", vec!["all", "reverse", "custom", "date"]); + + hashmap.insert("empty_files", vec!["all", "reverse", "custom"]); + hashmap.insert("empty_folders", vec!["all", "reverse", "custom"]); + hashmap.insert("big", vec!["all", "reverse", "custom"]); + hashmap.insert("symlinks", vec!["all", "reverse", "custom"]); + hashmap.insert("zeroed", vec!["all", "reverse", "custom"]); + hashmap.insert("temporary", vec!["all", "reverse", "custom"]); + } + + let gui_data = gui_data.clone(); let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); let notebook_main = gui_data.notebook_main.clone(); let buttons_select_clone = gui_data.buttons_select.clone(); - let popover_select_duplicate = gui_data.popover_select_duplicate.clone(); - let popover_select_simple_list = gui_data.popover_select_simple_list.clone(); - let popover_select_very_simple_list = gui_data.popover_select_very_simple_list.clone(); + let popover_select = gui_data.popover_select.clone(); let buttons_select = gui_data.buttons_select.clone(); - buttons_select_clone.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" | "notebook_main_same_music_finder" | "notebook_main_similar_images_finder_label" => { - popover_select_duplicate.set_relative_to(Some(&buttons_select)); - popover_select_duplicate.popup(); + + buttons_select_clone.connect_clicked(move |_| { + let current_mode; + + match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() { + "notebook_main_duplicate_finder_label" => { + current_mode = "duplicate"; + } + "notebook_main_same_music_finder" => { + current_mode = "music"; + } + "notebook_main_similar_images_finder_label" => { + current_mode = "images"; + } + "scrolled_window_main_empty_folder_finder" => { + current_mode = "empty_folders"; + } + "scrolled_window_main_empty_files_finder" => { + current_mode = "empty_files"; + } + "scrolled_window_main_temporary_files_finder" => { + current_mode = "temporary"; + } + "notebook_big_main_file_finder" => { + current_mode = "big"; + } + "notebook_main_zeroed_files_finder" => { + current_mode = "zeroed"; + } + "scrolled_window_invalid_symlinks" => { + current_mode = "symlinks"; + } + e => panic!("Not existent {}", e), } - "scrolled_window_main_empty_folder_finder" | "scrolled_window_main_empty_files_finder" | "scrolled_window_main_temporary_files_finder" | "notebook_big_main_file_finder" | "notebook_main_zeroed_files_finder" => { - popover_select_simple_list.set_relative_to(Some(&buttons_select)); - popover_select_simple_list.popup(); - } - "scrolled_window_invalid_symlinks" => { - popover_select_very_simple_list.set_relative_to(Some(&buttons_select)); - popover_select_very_simple_list.popup(); - } - e => panic!("Not existent {}", e), + show_required_popovers(&gui_data, current_mode, &hashmap); + popover_select.set_relative_to(Some(&buttons_select)); + popover_select.popup(); }); } + +fn show_required_popovers(gui_data: &GuiData, current_mode: &str, hashmap: &HashMap<&str, Vec<&str>>) { + let buttons_popover_select_all = gui_data.buttons_popover_select_all.clone(); + let buttons_popover_unselect_all = gui_data.buttons_popover_unselect_all.clone(); + let buttons_popover_reverse = gui_data.buttons_popover_reverse.clone(); + let buttons_popover_select_all_except_oldest = gui_data.buttons_popover_select_all_except_oldest.clone(); + let buttons_popover_select_all_except_newest = gui_data.buttons_popover_select_all_except_newest.clone(); + let buttons_popover_select_one_oldest = gui_data.buttons_popover_select_one_oldest.clone(); + let buttons_popover_select_one_newest = gui_data.buttons_popover_select_one_newest.clone(); + let buttons_popover_select_custom = gui_data.buttons_popover_select_custom.clone(); + let buttons_popover_unselect_custom = gui_data.buttons_popover_unselect_custom.clone(); + let buttons_popover_select_all_images_except_biggest = gui_data.buttons_popover_select_all_images_except_biggest.clone(); + let buttons_popover_select_all_images_except_smallest = gui_data.buttons_popover_select_all_images_except_smallest.clone(); + + let separator_select_custom = gui_data.separator_select_custom.clone(); + let separator_select_date = gui_data.separator_select_date.clone(); + let separator_select_image_size = gui_data.separator_select_image_size.clone(); + let separator_select_reverse = gui_data.separator_select_reverse.clone(); + + let vec = hashmap.get(current_mode).unwrap(); + + if vec.contains(&"all") { + buttons_popover_select_all.show(); + buttons_popover_unselect_all.show(); + } else { + buttons_popover_select_all.hide(); + buttons_popover_unselect_all.hide(); + } + + if vec.contains(&"image_size") { + buttons_popover_select_all_images_except_biggest.show(); + buttons_popover_select_all_images_except_smallest.show(); + separator_select_image_size.show(); + } else { + buttons_popover_select_all_images_except_biggest.hide(); + buttons_popover_select_all_images_except_smallest.hide(); + separator_select_image_size.hide(); + } + + if vec.contains(&"reverse") { + buttons_popover_reverse.show(); + separator_select_reverse.show(); + } else { + buttons_popover_reverse.hide(); + separator_select_reverse.hide(); + } + + if vec.contains(&"custom") { + buttons_popover_select_custom.show(); + buttons_popover_unselect_custom.show(); + separator_select_custom.show(); + } else { + buttons_popover_select_custom.hide(); + buttons_popover_unselect_custom.hide(); + separator_select_custom.hide(); + } + + if vec.contains(&"date") { + buttons_popover_select_all_except_oldest.show(); + buttons_popover_select_all_except_newest.show(); + buttons_popover_select_one_oldest.show(); + buttons_popover_select_one_newest.show(); + separator_select_date.show(); + } else { + buttons_popover_select_all_except_oldest.hide(); + buttons_popover_select_all_except_newest.hide(); + buttons_popover_select_one_oldest.hide(); + buttons_popover_select_one_newest.hide(); + separator_select_date.hide(); + } +} diff --git a/czkawka_gui/src/connect_compute_results.rs b/czkawka_gui/src/connect_compute_results.rs index 33502b0..5b01a9c 100644 --- a/czkawka_gui/src/connect_compute_results.rs +++ b/czkawka_gui/src/connect_compute_results.rs @@ -398,15 +398,16 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< { let list_store = get_list_store(&scrolled_window_similar_images_finder); - let col_indices = [0, 1, 2, 3, 4, 5, 6, 7, 8]; + let col_indices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; let vec_struct_similar = sf.get_similar_images(); for vec_file_entry in vec_struct_similar.iter() { // Header - let values: [&dyn ToValue; 9] = [ + let values: [&dyn ToValue; 10] = [ &"".to_string(), &"".to_string(), + &(0), &"".to_string(), &"".to_string(), &"".to_string(), @@ -420,9 +421,10 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< // Meat for file_entry in vec_file_entry.iter() { let (directory, file) = split_path(&file_entry.path); - let values: [&dyn ToValue; 9] = [ + let values: [&dyn ToValue; 10] = [ &(get_text_from_similarity(&file_entry.similarity).to_string()), &file_entry.size.file_size(options::BINARY).unwrap(), + &file_entry.size, &file_entry.dimensions, &file, &directory, @@ -472,14 +474,15 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< { let list_store = get_list_store(&scrolled_window_zeroed_files_finder); - let col_indices = [0, 1, 2, 3]; + let col_indices = [0, 1, 2, 3, 4]; let vector = zf.get_zeroed_files(); for file_entry in vector { let (directory, file) = split_path(&file_entry.path); - let values: [&dyn ToValue; 4] = [ + let values: [&dyn ToValue; 5] = [ &(file_entry.size.file_size(options::BINARY).unwrap()), + &(file_entry.size), &file, &directory, &(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string()), @@ -521,7 +524,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< { let list_store = get_list_store(&scrolled_window_same_music_finder); - let col_indices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; + let col_indices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; let vector = mf.get_duplicated_music_entries(); @@ -536,8 +539,9 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< let text: String = "-----".to_string(); for vec_file_entry in vector { - let values: [&dyn ToValue; 12] = [ + let values: [&dyn ToValue; 13] = [ &"".to_string(), + &(0), &"".to_string(), &"".to_string(), &(match is_title { @@ -568,8 +572,9 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver< list_store.set(&list_store.append(), &col_indices, &values); for file_entry in vec_file_entry { let (directory, file) = split_path(&file_entry.path); - let values: [&dyn ToValue; 12] = [ + let values: [&dyn ToValue; 13] = [ &file_entry.size.file_size(options::BINARY).unwrap(), + &file_entry.size, &file, &directory, &file_entry.title, diff --git a/czkawka_gui/src/connect_popovers.rs b/czkawka_gui/src/connect_popovers.rs index 9befcc8..838242b 100644 --- a/czkawka_gui/src/connect_popovers.rs +++ b/czkawka_gui/src/connect_popovers.rs @@ -527,540 +527,256 @@ fn popover_unselect_custom(popover: >k::Popover, gui_data: &GuiData, scrolled_ } } +#[derive(Clone)] +pub struct PopoverObject { + pub name: String, + pub available_modes: Vec, + pub scrolled_windows: gtk::ScrolledWindow, + pub column_path: Option, + pub column_name: Option, + pub column_color: Option, + pub column_dimensions: Option, + pub column_size: Option, + pub column_size_as_bytes: Option, + pub column_modification_as_secs: Option, +} + +pub fn find_name(name: &str, vec: &[PopoverObject]) -> Option { + for e in vec { + if e.name == *name { + return Some(e.clone()); + } + } + None +} + pub fn connect_popovers(gui_data: &GuiData) { - connect_select_all(&gui_data); - connect_unselect_all(&gui_data); - connect_reverse(&gui_data); + let popover_objects = vec![ + PopoverObject { + name: "notebook_main_duplicate_finder_label".to_string(), + available_modes: vec!["all", "reverse", "custom", "date"].iter().map(|e| e.to_string()).collect(), + scrolled_windows: gui_data.scrolled_window_duplicate_finder.clone(), + column_path: Some(ColumnsDuplicates::Path as i32), + column_name: Some(ColumnsDuplicates::Name as i32), + column_color: Some(ColumnsDuplicates::Color as i32), + column_dimensions: None, + column_size: None, + column_size_as_bytes: None, + column_modification_as_secs: Some(ColumnsDuplicates::ModificationAsSecs as i32), + }, + PopoverObject { + name: "notebook_main_same_music_finder".to_string(), + available_modes: vec!["all", "reverse", "custom", "date"].iter().map(|e| e.to_string()).collect(), + scrolled_windows: gui_data.scrolled_window_same_music_finder.clone(), + column_path: Some(ColumnsSameMusic::Path as i32), + column_name: Some(ColumnsSameMusic::Name as i32), + column_color: Some(ColumnsSameMusic::Color as i32), + column_dimensions: None, + column_size: None, + column_size_as_bytes: Some(ColumnsSameMusic::SizeAsBytes as i32), + column_modification_as_secs: Some(ColumnsSameMusic::ModificationAsSecs as i32), + }, + PopoverObject { + name: "notebook_main_similar_images_finder_label".to_string(), + available_modes: vec!["all", "reverse", "custom", "date"].iter().map(|e| e.to_string()).collect(), + scrolled_windows: gui_data.scrolled_window_similar_images_finder.clone(), + column_path: Some(ColumnsSimilarImages::Path as i32), + column_name: Some(ColumnsSimilarImages::Name as i32), + column_color: Some(ColumnsSimilarImages::Color as i32), + column_dimensions: Some(ColumnsSimilarImages::Dimensions as i32), + column_size: Some(ColumnsSimilarImages::Size as i32), + column_size_as_bytes: Some(ColumnsSimilarImages::SizeAsBytes as i32), + column_modification_as_secs: Some(ColumnsSimilarImages::ModificationAsSecs as i32), + }, + PopoverObject { + name: "scrolled_window_main_empty_folder_finder".to_string(), + available_modes: vec!["all", "reverse", "custom"].iter().map(|e| e.to_string()).collect(), + scrolled_windows: gui_data.scrolled_window_main_empty_folder_finder.clone(), + column_path: Some(ColumnsEmptyFolders::Path as i32), + column_name: Some(ColumnsEmptyFolders::Name as i32), + column_color: None, + column_dimensions: None, + column_size: None, + column_size_as_bytes: None, + column_modification_as_secs: None, + }, + PopoverObject { + name: "scrolled_window_main_empty_files_finder".to_string(), + available_modes: vec!["all", "reverse", "custom"].iter().map(|e| e.to_string()).collect(), + scrolled_windows: gui_data.scrolled_window_main_empty_files_finder.clone(), + column_path: Some(ColumnsEmptyFiles::Path as i32), + column_name: Some(ColumnsEmptyFiles::Name as i32), + column_color: None, + column_dimensions: None, + column_size: None, + column_size_as_bytes: None, + column_modification_as_secs: None, + }, + PopoverObject { + name: "scrolled_window_main_temporary_files_finder".to_string(), + available_modes: vec!["all", "reverse", "custom"].iter().map(|e| e.to_string()).collect(), + scrolled_windows: gui_data.scrolled_window_main_temporary_files_finder.clone(), + column_path: Some(ColumnsTemporaryFiles::Path as i32), + column_name: Some(ColumnsTemporaryFiles::Name as i32), + column_color: None, + column_dimensions: None, + column_size: None, + column_size_as_bytes: None, + column_modification_as_secs: None, + }, + PopoverObject { + name: "notebook_big_main_file_finder".to_string(), + available_modes: vec!["all", "reverse", "custom"].iter().map(|e| e.to_string()).collect(), + scrolled_windows: gui_data.scrolled_window_big_files_finder.clone(), + column_path: Some(ColumnsBigFiles::Path as i32), + column_name: Some(ColumnsBigFiles::Name as i32), + column_color: None, + column_dimensions: None, + column_size: None, + column_size_as_bytes: None, + column_modification_as_secs: None, + }, + PopoverObject { + name: "notebook_main_zeroed_files_finder".to_string(), + available_modes: vec!["all", "reverse", "custom"].iter().map(|e| e.to_string()).collect(), + scrolled_windows: gui_data.scrolled_window_zeroed_files_finder.clone(), + column_path: Some(ColumnsZeroedFiles::Path as i32), + column_name: Some(ColumnsZeroedFiles::Name as i32), + column_color: None, + column_dimensions: None, + column_size: None, + column_size_as_bytes: Some(ColumnsZeroedFiles::SizeAsBytes as i32), + column_modification_as_secs: None, + }, + ]; - connect_all_except_oldest(&gui_data); - connect_all_except_newest(&gui_data); - connect_one_oldest(&gui_data); - connect_one_newest(&gui_data); - - connect_select_custom(&gui_data); - connect_unselect_custom(&gui_data); -} -pub fn connect_select_all(gui_data: &GuiData) { + let popover_select = gui_data.popover_select.clone(); let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); + let buttons_popover_select_all = gui_data.buttons_popover_select_all.clone(); let notebook_main = gui_data.notebook_main.clone(); - - let scrolled_window_main_empty_folder_finder = gui_data.scrolled_window_main_empty_folder_finder.clone(); - let scrolled_window_big_files_finder = gui_data.scrolled_window_big_files_finder.clone(); - let scrolled_window_main_empty_files_finder = gui_data.scrolled_window_main_empty_files_finder.clone(); - let scrolled_window_main_temporary_files_finder = gui_data.scrolled_window_main_temporary_files_finder.clone(); - let scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone(); - let scrolled_window_zeroed_files_finder = gui_data.scrolled_window_zeroed_files_finder.clone(); - let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_finder.clone(); - let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone(); - let scrolled_window_invalid_symlinks = gui_data.scrolled_window_invalid_symlinks.clone(); - let popover_select_duplicate = gui_data.popover_select_duplicate.clone(); - let popover_select_simple_list = gui_data.popover_select_simple_list.clone(); - let popover_select_very_simple_list = gui_data.popover_select_very_simple_list.clone(); - let buttons_popover_simple_list_select_all = gui_data.buttons_popover_simple_list_select_all.clone(); - let buttons_popover_very_simple_list_select_all = gui_data.buttons_popover_very_simple_list_select_all.clone(); - let buttons_popover_duplicate_select_all = gui_data.buttons_popover_duplicate_select_all.clone(); - buttons_popover_duplicate_select_all.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_select_all(&popover_select_duplicate, &scrolled_window_duplicate_finder); - } - "notebook_main_same_music_finder" => { - popover_select_all(&popover_select_duplicate, &scrolled_window_same_music_finder); - } - "notebook_main_similar_images_finder_label" => { - popover_select_all(&popover_select_duplicate, &scrolled_window_similar_images_finder); - } - e => panic!("Not existent {}", e), + let vec_popover_objects = popover_objects.clone(); + buttons_popover_select_all.connect_clicked(move |_| { + let object_popover = find_name(notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap(), &vec_popover_objects).unwrap(); + popover_select_all(&popover_select, &object_popover.scrolled_windows); }); + let popover_select = gui_data.popover_select.clone(); let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); + let buttons_popover_unselect_all = gui_data.buttons_popover_unselect_all.clone(); let notebook_main = gui_data.notebook_main.clone(); - buttons_popover_simple_list_select_all.connect_clicked(move |_| match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() { - "scrolled_window_main_empty_folder_finder" => { - popover_select_all(&popover_select_simple_list, &scrolled_window_main_empty_folder_finder); - } - "scrolled_window_main_empty_files_finder" => { - popover_select_all(&popover_select_simple_list, &scrolled_window_main_empty_files_finder); - } - "scrolled_window_main_temporary_files_finder" => { - popover_select_all(&popover_select_simple_list, &scrolled_window_main_temporary_files_finder); - } - "notebook_main_zeroed_files_finder" => { - popover_select_all(&popover_select_simple_list, &scrolled_window_zeroed_files_finder); - } - "notebook_big_main_file_finder" => { - popover_select_all(&popover_select_simple_list, &scrolled_window_big_files_finder); - } - e => panic!("Not existent {}", e), + let vec_popover_objects = popover_objects.clone(); + buttons_popover_unselect_all.connect_clicked(move |_| { + let object_popover = find_name(notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap(), &vec_popover_objects).unwrap(); + popover_unselect_all(&popover_select, &object_popover.scrolled_windows); }); + let popover_select = gui_data.popover_select.clone(); let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); + let buttons_popover_reverse = gui_data.buttons_popover_reverse.clone(); let notebook_main = gui_data.notebook_main.clone(); - buttons_popover_very_simple_list_select_all.connect_clicked(move |_| match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() { - "scrolled_window_invalid_symlinks" => { - popover_select_all(&popover_select_very_simple_list, &scrolled_window_invalid_symlinks); - } - e => panic!("Not existent {}", e), - }); -} -pub fn connect_unselect_all(gui_data: &GuiData) { - let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); - let notebook_main = gui_data.notebook_main.clone(); - - let scrolled_window_main_empty_folder_finder = gui_data.scrolled_window_main_empty_folder_finder.clone(); - let scrolled_window_big_files_finder = gui_data.scrolled_window_big_files_finder.clone(); - let scrolled_window_main_empty_files_finder = gui_data.scrolled_window_main_empty_files_finder.clone(); - let scrolled_window_main_temporary_files_finder = gui_data.scrolled_window_main_temporary_files_finder.clone(); - let scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone(); - let scrolled_window_zeroed_files_finder = gui_data.scrolled_window_zeroed_files_finder.clone(); - let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_finder.clone(); - let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone(); - let scrolled_window_invalid_symlinks = gui_data.scrolled_window_invalid_symlinks.clone(); - let popover_select_duplicate = gui_data.popover_select_duplicate.clone(); - let popover_select_simple_list = gui_data.popover_select_simple_list.clone(); - let popover_select_very_simple_list = gui_data.popover_select_very_simple_list.clone(); - let buttons_popover_simple_list_unselect_all = gui_data.buttons_popover_simple_list_unselect_all.clone(); - let buttons_popover_very_simple_list_unselect_all = gui_data.buttons_popover_very_simple_list_unselect_all.clone(); - let buttons_popover_duplicate_unselect_all = gui_data.buttons_popover_duplicate_unselect_all.clone(); - buttons_popover_duplicate_unselect_all.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_unselect_all(&popover_select_duplicate, &scrolled_window_duplicate_finder); - } - "notebook_main_same_music_finder" => { - popover_unselect_all(&popover_select_duplicate, &scrolled_window_same_music_finder); - } - "notebook_main_similar_images_finder_label" => { - popover_unselect_all(&popover_select_duplicate, &scrolled_window_similar_images_finder); - } - e => panic!("Not existent {}", e), - }); - - let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); - let notebook_main = gui_data.notebook_main.clone(); - buttons_popover_simple_list_unselect_all.connect_clicked(move |_| match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() { - "scrolled_window_main_empty_folder_finder" => { - popover_unselect_all(&popover_select_simple_list, &scrolled_window_main_empty_folder_finder); - } - "scrolled_window_main_empty_files_finder" => { - popover_unselect_all(&popover_select_simple_list, &scrolled_window_main_empty_files_finder); - } - "scrolled_window_main_temporary_files_finder" => { - popover_unselect_all(&popover_select_simple_list, &scrolled_window_main_temporary_files_finder); - } - "notebook_main_zeroed_files_finder" => { - popover_unselect_all(&popover_select_simple_list, &scrolled_window_zeroed_files_finder); - } - "notebook_big_main_file_finder" => { - popover_unselect_all(&popover_select_simple_list, &scrolled_window_big_files_finder); - } - e => panic!("Not existent {}", e), - }); - - let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); - let notebook_main = gui_data.notebook_main.clone(); - buttons_popover_very_simple_list_unselect_all.connect_clicked(move |_| match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() { - "scrolled_window_invalid_symlinks" => { - popover_unselect_all(&popover_select_very_simple_list, &scrolled_window_invalid_symlinks); - } - e => panic!("Not existent {}", e), - }); -} -pub fn connect_reverse(gui_data: &GuiData) { - let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); - let notebook_main = gui_data.notebook_main.clone(); - - let scrolled_window_main_empty_folder_finder = gui_data.scrolled_window_main_empty_folder_finder.clone(); - let scrolled_window_big_files_finder = gui_data.scrolled_window_big_files_finder.clone(); - let scrolled_window_main_empty_files_finder = gui_data.scrolled_window_main_empty_files_finder.clone(); - let scrolled_window_main_temporary_files_finder = gui_data.scrolled_window_main_temporary_files_finder.clone(); - let scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone(); - let scrolled_window_zeroed_files_finder = gui_data.scrolled_window_zeroed_files_finder.clone(); - let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_finder.clone(); - let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone(); - let scrolled_window_invalid_symlinks = gui_data.scrolled_window_invalid_symlinks.clone(); - let popover_select_duplicate = gui_data.popover_select_duplicate.clone(); - let popover_select_simple_list = gui_data.popover_select_simple_list.clone(); - let popover_select_very_simple_list = gui_data.popover_select_very_simple_list.clone(); - let buttons_popover_simple_list_reverse = gui_data.buttons_popover_simple_list_reverse.clone(); - let buttons_popover_very_simple_list_reverse = gui_data.buttons_popover_very_simple_list_reverse.clone(); - let buttons_popover_duplicate_reverse = gui_data.buttons_popover_duplicate_reverse.clone(); - buttons_popover_duplicate_reverse.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_reverse(&popover_select_duplicate, &scrolled_window_duplicate_finder); - } - "notebook_main_same_music_finder" => { - popover_reverse(&popover_select_duplicate, &scrolled_window_same_music_finder); - } - "notebook_main_similar_images_finder_label" => { - popover_reverse(&popover_select_duplicate, &scrolled_window_similar_images_finder); - } - e => panic!("Not existent {}", e), - }); - - let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); - let notebook_main = gui_data.notebook_main.clone(); - buttons_popover_simple_list_reverse.connect_clicked(move |_| match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() { - "scrolled_window_main_empty_folder_finder" => { - popover_reverse(&popover_select_simple_list, &scrolled_window_main_empty_folder_finder); - } - "scrolled_window_main_empty_files_finder" => { - popover_reverse(&popover_select_simple_list, &scrolled_window_main_empty_files_finder); - } - "scrolled_window_main_temporary_files_finder" => { - popover_reverse(&popover_select_simple_list, &scrolled_window_main_temporary_files_finder); - } - "notebook_main_zeroed_files_finder" => { - popover_reverse(&popover_select_simple_list, &scrolled_window_zeroed_files_finder); - } - "notebook_big_main_file_finder" => { - popover_reverse(&popover_select_simple_list, &scrolled_window_big_files_finder); - } - e => panic!("Not existent {}", e), - }); - - let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); - let notebook_main = gui_data.notebook_main.clone(); - buttons_popover_very_simple_list_reverse.connect_clicked(move |_| match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() { - "scrolled_window_invalid_symlinks" => { - popover_reverse(&popover_select_very_simple_list, &scrolled_window_invalid_symlinks); - } - e => panic!("Not existent {}", e), - }); -} - -pub fn connect_all_except_oldest(gui_data: &GuiData) { - let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); - let notebook_main = gui_data.notebook_main.clone(); - - let scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone(); - let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_finder.clone(); - let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone(); - let popover_select_duplicate = gui_data.popover_select_duplicate.clone(); - 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, - 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, - 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, - ColumnsSimilarImages::Name as i32, - ); - } - e => panic!("Not existent {}", e), - }); -} -pub fn connect_all_except_newest(gui_data: &GuiData) { - let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); - let notebook_main = gui_data.notebook_main.clone(); - - let scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone(); - let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_finder.clone(); - let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone(); - let popover_select_duplicate = gui_data.popover_select_duplicate.clone(); - 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, - 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, - 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, - ColumnsSimilarImages::Name as i32, - ); - } - e => panic!("Not existent {}", e), - }); -} -pub fn connect_one_newest(gui_data: &GuiData) { - let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); - let notebook_main = gui_data.notebook_main.clone(); - - let scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone(); - let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_finder.clone(); - let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone(); - let popover_select_duplicate = gui_data.popover_select_duplicate.clone(); - 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, - 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, - 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, - ColumnsSimilarImages::Name as i32, - ); - } - e => panic!("Not existent {}", e), - }); -} -pub fn connect_one_oldest(gui_data: &GuiData) { - let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); - let notebook_main = gui_data.notebook_main.clone(); - - let scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone(); - let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_finder.clone(); - let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone(); - let popover_select_duplicate = gui_data.popover_select_duplicate.clone(); - 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, - 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, - 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, - ColumnsSimilarImages::Name as i32, - ); - } - e => panic!("Not existent {}", e), - }); -} - -pub fn connect_select_custom(gui_data: &GuiData) { - let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); - let notebook_main = gui_data.notebook_main.clone(); - - let gui_data = gui_data.clone(); - let second_gui_data = gui_data.clone(); - let scrolled_window_main_empty_folder_finder = gui_data.scrolled_window_main_empty_folder_finder.clone(); - let scrolled_window_big_files_finder = gui_data.scrolled_window_big_files_finder.clone(); - let scrolled_window_main_empty_files_finder = gui_data.scrolled_window_main_empty_files_finder.clone(); - let scrolled_window_main_temporary_files_finder = gui_data.scrolled_window_main_temporary_files_finder.clone(); - let scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone(); - let scrolled_window_zeroed_files_finder = gui_data.scrolled_window_zeroed_files_finder.clone(); - let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_finder.clone(); - let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone(); - let popover_select_duplicate = gui_data.popover_select_duplicate.clone(); - let popover_select_simple_list = gui_data.popover_select_simple_list.clone(); - let buttons_popover_simple_list_select_custom = gui_data.buttons_popover_simple_list_select_custom.clone(); - let buttons_popover_duplicate_select_custom = gui_data.buttons_popover_duplicate_select_custom.clone(); - buttons_popover_duplicate_select_custom.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_select_custom( - &popover_select_duplicate, - &gui_data, - &scrolled_window_duplicate_finder, - Some(ColumnsDuplicates::Color as i32), - ColumnsDuplicates::Name as i32, - ColumnsDuplicates::Path as i32, - ); - } - "notebook_main_same_music_finder" => { - popover_select_custom( - &popover_select_duplicate, - &gui_data, - &scrolled_window_same_music_finder, - Some(ColumnsSameMusic::Color as i32), - ColumnsSameMusic::Name as i32, - ColumnsSameMusic::Path as i32, - ); - } - "notebook_main_similar_images_finder_label" => { - popover_select_custom( - &popover_select_duplicate, - &gui_data, - &scrolled_window_similar_images_finder, - Some(ColumnsSimilarImages::Color as i32), - ColumnsSimilarImages::Name as i32, - ColumnsSimilarImages::Path as i32, - ); - } - e => panic!("Not existent {}", e), - }); - - let gui_data = second_gui_data; - let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); - let notebook_main = gui_data.notebook_main.clone(); - buttons_popover_simple_list_select_custom.connect_clicked(move |_| match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() { - "scrolled_window_main_empty_folder_finder" => { - popover_select_custom( - &popover_select_simple_list, - &gui_data, - &scrolled_window_main_empty_folder_finder, - None, - ColumnsEmptyFolders::Name as i32, - ColumnsEmptyFolders::Path as i32, - ); - } - "scrolled_window_main_empty_files_finder" => { - popover_select_custom(&popover_select_simple_list, &gui_data, &scrolled_window_main_empty_files_finder, None, ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32); - } - "scrolled_window_main_temporary_files_finder" => { - popover_select_custom( - &popover_select_simple_list, - &gui_data, - &scrolled_window_main_temporary_files_finder, - None, - ColumnsTemporaryFiles::Name as i32, - ColumnsTemporaryFiles::Path as i32, - ); - } - "notebook_main_zeroed_files_finder" => { - popover_select_custom(&popover_select_simple_list, &gui_data, &scrolled_window_zeroed_files_finder, None, ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32); - } - "notebook_big_main_file_finder" => { - popover_select_custom(&popover_select_simple_list, &gui_data, &scrolled_window_big_files_finder, None, ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32); - } - e => panic!("Not existent {}", e), - }); -} -pub fn connect_unselect_custom(gui_data: &GuiData) { - let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); - let notebook_main = gui_data.notebook_main.clone(); - - let gui_data = gui_data.clone(); - let second_gui_data = gui_data.clone(); - let scrolled_window_main_empty_folder_finder = gui_data.scrolled_window_main_empty_folder_finder.clone(); - let scrolled_window_big_files_finder = gui_data.scrolled_window_big_files_finder.clone(); - let scrolled_window_main_empty_files_finder = gui_data.scrolled_window_main_empty_files_finder.clone(); - let scrolled_window_main_temporary_files_finder = gui_data.scrolled_window_main_temporary_files_finder.clone(); - let scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone(); - let scrolled_window_zeroed_files_finder = gui_data.scrolled_window_zeroed_files_finder.clone(); - let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_finder.clone(); - let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone(); - let popover_select_duplicate = gui_data.popover_select_duplicate.clone(); - let popover_select_simple_list = gui_data.popover_select_simple_list.clone(); - let buttons_popover_simple_list_unselect_custom = gui_data.buttons_popover_simple_list_unselect_custom.clone(); - let buttons_popover_duplicate_unselect_custom = gui_data.buttons_popover_duplicate_unselect_custom.clone(); - buttons_popover_duplicate_unselect_custom.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_unselect_custom( - &popover_select_duplicate, - &gui_data, - &scrolled_window_duplicate_finder, - Some(ColumnsDuplicates::Color as i32), - ColumnsDuplicates::Name as i32, - ColumnsDuplicates::Path as i32, - ); - } - "notebook_main_same_music_finder" => { - popover_unselect_custom( - &popover_select_duplicate, - &gui_data, - &scrolled_window_same_music_finder, - Some(ColumnsSameMusic::Color as i32), - ColumnsSameMusic::Name as i32, - ColumnsSameMusic::Path as i32, - ); - } - "notebook_main_similar_images_finder_label" => { - popover_unselect_custom( - &popover_select_duplicate, - &gui_data, - &scrolled_window_similar_images_finder, - Some(ColumnsSimilarImages::Color as i32), - ColumnsSimilarImages::Name as i32, - ColumnsSimilarImages::Path as i32, - ); - } - e => panic!("Not existent {}", e), - }); - - let gui_data = second_gui_data; - let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); - let notebook_main = gui_data.notebook_main.clone(); - buttons_popover_simple_list_unselect_custom.connect_clicked(move |_| match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() { - "scrolled_window_main_empty_folder_finder" => { - popover_unselect_custom( - &popover_select_simple_list, - &gui_data, - &scrolled_window_main_empty_folder_finder, - None, - ColumnsEmptyFolders::Name as i32, - ColumnsEmptyFolders::Path as i32, - ); - } - "scrolled_window_main_empty_files_finder" => { - popover_unselect_custom(&popover_select_simple_list, &gui_data, &scrolled_window_main_empty_files_finder, None, ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32); - } - "scrolled_window_main_temporary_files_finder" => { - popover_unselect_custom( - &popover_select_simple_list, - &gui_data, - &scrolled_window_main_temporary_files_finder, - None, - ColumnsTemporaryFiles::Name as i32, - ColumnsTemporaryFiles::Path as i32, - ); - } - "notebook_main_zeroed_files_finder" => { - popover_unselect_custom(&popover_select_simple_list, &gui_data, &scrolled_window_zeroed_files_finder, None, ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32); - } - "notebook_big_main_file_finder" => { - popover_unselect_custom(&popover_select_simple_list, &gui_data, &scrolled_window_big_files_finder, None, ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32); - } - e => panic!("Not existent {}", e), + let vec_popover_objects = popover_objects.clone(); + buttons_popover_reverse.connect_clicked(move |_| { + let object_popover = find_name(notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap(), &vec_popover_objects).unwrap(); + popover_reverse(&popover_select, &object_popover.scrolled_windows); + }); + + let popover_select = gui_data.popover_select.clone(); + let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); + let buttons_popover_select_all_except_oldest = gui_data.buttons_popover_select_all_except_oldest.clone(); + let notebook_main = gui_data.notebook_main.clone(); + let vec_popover_objects = popover_objects.clone(); + buttons_popover_select_all_except_oldest.connect_clicked(move |_| { + let object_popover = find_name(notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap(), &vec_popover_objects).unwrap(); + popover_all_except_oldest( + &popover_select, + &object_popover.scrolled_windows, + object_popover.column_color.unwrap(), + object_popover.column_modification_as_secs.unwrap(), + object_popover.column_name.unwrap(), + ); + }); + + let popover_select = gui_data.popover_select.clone(); + let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); + let buttons_popover_select_all_except_newest = gui_data.buttons_popover_select_all_except_newest.clone(); + let notebook_main = gui_data.notebook_main.clone(); + let vec_popover_objects = popover_objects.clone(); + buttons_popover_select_all_except_newest.connect_clicked(move |_| { + let object_popover = find_name(notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap(), &vec_popover_objects).unwrap(); + popover_all_except_newest( + &popover_select, + &object_popover.scrolled_windows, + object_popover.column_color.unwrap(), + object_popover.column_modification_as_secs.unwrap(), + object_popover.column_name.unwrap(), + ); + }); + + let popover_select = gui_data.popover_select.clone(); + let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); + let buttons_popover_select_one_oldest = gui_data.buttons_popover_select_one_oldest.clone(); + let notebook_main = gui_data.notebook_main.clone(); + let vec_popover_objects = popover_objects.clone(); + buttons_popover_select_one_oldest.connect_clicked(move |_| { + let object_popover = find_name(notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap(), &vec_popover_objects).unwrap(); + popover_one_oldest( + &popover_select, + &object_popover.scrolled_windows, + object_popover.column_color.unwrap(), + object_popover.column_modification_as_secs.unwrap(), + object_popover.column_name.unwrap(), + ); + }); + + let popover_select = gui_data.popover_select.clone(); + let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); + let buttons_popover_select_one_newest = gui_data.buttons_popover_select_one_newest.clone(); + let notebook_main = gui_data.notebook_main.clone(); + let vec_popover_objects = popover_objects.clone(); + buttons_popover_select_one_newest.connect_clicked(move |_| { + let object_popover = find_name(notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap(), &vec_popover_objects).unwrap(); + popover_one_newest( + &popover_select, + &object_popover.scrolled_windows, + object_popover.column_color.unwrap(), + object_popover.column_modification_as_secs.unwrap(), + object_popover.column_name.unwrap(), + ); + }); + + let popover_select = gui_data.popover_select.clone(); + let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); + let buttons_popover_select_custom = gui_data.buttons_popover_select_custom.clone(); + let notebook_main = gui_data.notebook_main.clone(); + let vec_popover_objects = popover_objects.clone(); + let gui_data_clone = gui_data.clone(); + buttons_popover_select_custom.connect_clicked(move |_| { + let object_popover = find_name(notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap(), &vec_popover_objects).unwrap(); + popover_select_custom( + &popover_select, + &gui_data_clone, + &object_popover.scrolled_windows, + object_popover.column_color, + object_popover.column_name.unwrap(), + object_popover.column_path.unwrap(), + ); + }); + + let popover_select = gui_data.popover_select.clone(); + let notebook_main_children_names = gui_data.notebook_main_children_names.clone(); + let buttons_popover_unselect_custom = gui_data.buttons_popover_unselect_custom.clone(); + let notebook_main = gui_data.notebook_main.clone(); + let vec_popover_objects = popover_objects; //.clone(); + let gui_data_clone = gui_data.clone(); + buttons_popover_unselect_custom.connect_clicked(move |_| { + let object_popover = find_name(notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap(), &vec_popover_objects).unwrap(); + popover_unselect_custom( + &popover_select, + &gui_data_clone, + &object_popover.scrolled_windows, + object_popover.column_color, + object_popover.column_name.unwrap(), + object_popover.column_path.unwrap(), + ); }); } diff --git a/czkawka_gui/src/gui_data.rs b/czkawka_gui/src/gui_data.rs index c1b8458..112ed85 100644 --- a/czkawka_gui/src/gui_data.rs +++ b/czkawka_gui/src/gui_data.rs @@ -69,33 +69,28 @@ pub struct GuiData { pub buttons_remove_excluded_directory: gtk::Button, // Buttons search popover buttons - pub buttons_popover_duplicate_select_all: gtk::Button, - pub buttons_popover_duplicate_unselect_all: gtk::Button, - pub buttons_popover_duplicate_reverse: gtk::Button, - pub buttons_popover_duplicate_select_all_except_oldest: gtk::Button, - pub buttons_popover_duplicate_select_all_except_newest: gtk::Button, - pub buttons_popover_duplicate_select_one_oldest: gtk::Button, - pub buttons_popover_duplicate_select_one_newest: gtk::Button, - pub buttons_popover_duplicate_select_custom: gtk::Button, - pub buttons_popover_duplicate_unselect_custom: gtk::Button, + pub buttons_popover_select_all: gtk::Button, + pub buttons_popover_unselect_all: gtk::Button, + pub buttons_popover_reverse: gtk::Button, + pub buttons_popover_select_all_except_oldest: gtk::Button, + pub buttons_popover_select_all_except_newest: gtk::Button, + pub buttons_popover_select_one_oldest: gtk::Button, + pub buttons_popover_select_one_newest: gtk::Button, + pub buttons_popover_select_custom: gtk::Button, + pub buttons_popover_unselect_custom: gtk::Button, + pub buttons_popover_select_all_images_except_biggest: gtk::Button, + pub buttons_popover_select_all_images_except_smallest: gtk::Button, - pub buttons_popover_simple_list_select_all: gtk::Button, - pub buttons_popover_simple_list_unselect_all: gtk::Button, - pub buttons_popover_simple_list_reverse: gtk::Button, - pub buttons_popover_simple_list_select_custom: gtk::Button, - pub buttons_popover_simple_list_unselect_custom: gtk::Button, - - pub buttons_popover_very_simple_list_select_all: gtk::Button, - pub buttons_popover_very_simple_list_unselect_all: gtk::Button, - pub buttons_popover_very_simple_list_reverse: gtk::Button, + pub separator_select_image_size: gtk::Separator, + pub separator_select_reverse: gtk::Separator, + pub separator_select_date: gtk::Separator, + pub separator_select_custom: gtk::Separator, pub buttons_popover_right_click_open_file: gtk::Button, pub buttons_popover_right_click_open_folder: gtk::Button, //// Popovers - pub popover_select_duplicate: gtk::Popover, - pub popover_select_simple_list: gtk::Popover, - pub popover_select_very_simple_list: gtk::Popover, + pub popover_select: gtk::Popover, pub popover_right_click: gtk::Popover, //// Check Buttons @@ -287,33 +282,28 @@ impl GuiData { let buttons_remove_excluded_directory: gtk::Button = builder.get_object("buttons_remove_excluded_directory").unwrap(); // Buttons search popover buttons - let buttons_popover_duplicate_select_all: gtk::Button = builder.get_object("buttons_popover_duplicate_select_all").unwrap(); - let buttons_popover_duplicate_unselect_all: gtk::Button = builder.get_object("buttons_popover_duplicate_unselect_all").unwrap(); - let buttons_popover_duplicate_reverse: gtk::Button = builder.get_object("buttons_popover_duplicate_reverse").unwrap(); - let buttons_popover_duplicate_select_all_except_oldest: gtk::Button = builder.get_object("buttons_popover_duplicate_select_all_except_oldest").unwrap(); - let buttons_popover_duplicate_select_all_except_newest: gtk::Button = builder.get_object("buttons_popover_duplicate_select_all_except_newest").unwrap(); - let buttons_popover_duplicate_select_one_oldest: gtk::Button = builder.get_object("buttons_popover_duplicate_select_one_oldest").unwrap(); - let buttons_popover_duplicate_select_one_newest: gtk::Button = builder.get_object("buttons_popover_duplicate_select_one_newest").unwrap(); - let buttons_popover_duplicate_select_custom: gtk::Button = builder.get_object("buttons_popover_duplicate_select_custom").unwrap(); - let buttons_popover_duplicate_unselect_custom: gtk::Button = builder.get_object("buttons_popover_duplicate_unselect_custom").unwrap(); + let buttons_popover_select_all: gtk::Button = builder.get_object("buttons_popover_select_all").unwrap(); + let buttons_popover_unselect_all: gtk::Button = builder.get_object("buttons_popover_unselect_all").unwrap(); + let buttons_popover_reverse: gtk::Button = builder.get_object("buttons_popover_reverse").unwrap(); + let buttons_popover_select_all_except_oldest: gtk::Button = builder.get_object("buttons_popover_select_all_except_oldest").unwrap(); + let buttons_popover_select_all_except_newest: gtk::Button = builder.get_object("buttons_popover_select_all_except_newest").unwrap(); + let buttons_popover_select_one_oldest: gtk::Button = builder.get_object("buttons_popover_select_one_oldest").unwrap(); + let buttons_popover_select_one_newest: gtk::Button = builder.get_object("buttons_popover_select_one_newest").unwrap(); + let buttons_popover_select_custom: gtk::Button = builder.get_object("buttons_popover_select_custom").unwrap(); + let buttons_popover_unselect_custom: gtk::Button = builder.get_object("buttons_popover_unselect_custom").unwrap(); + let buttons_popover_select_all_images_except_biggest: gtk::Button = builder.get_object("buttons_popover_select_all_images_except_biggest").unwrap(); + let buttons_popover_select_all_images_except_smallest: gtk::Button = builder.get_object("buttons_popover_select_all_images_except_smallest").unwrap(); - let buttons_popover_simple_list_select_all: gtk::Button = builder.get_object("buttons_popover_simple_list_select_all").unwrap(); - let buttons_popover_simple_list_unselect_all: gtk::Button = builder.get_object("buttons_popover_simple_list_unselect_all").unwrap(); - let buttons_popover_simple_list_reverse: gtk::Button = builder.get_object("buttons_popover_simple_list_reverse").unwrap(); - let buttons_popover_simple_list_select_custom: gtk::Button = builder.get_object("buttons_popover_simple_list_select_custom").unwrap(); - let buttons_popover_simple_list_unselect_custom: gtk::Button = builder.get_object("buttons_popover_simple_list_unselect_custom").unwrap(); - - let buttons_popover_very_simple_list_select_all: gtk::Button = builder.get_object("buttons_popover_very_simple_list_select_all").unwrap(); - let buttons_popover_very_simple_list_unselect_all: gtk::Button = builder.get_object("buttons_popover_very_simple_list_unselect_all").unwrap(); - let buttons_popover_very_simple_list_reverse: gtk::Button = builder.get_object("buttons_popover_very_simple_list_reverse").unwrap(); + let separator_select_image_size: gtk::Separator = builder.get_object("separator_select_image_size").unwrap(); + let separator_select_reverse: gtk::Separator = builder.get_object("separator_select_reverse").unwrap(); + let separator_select_date: gtk::Separator = builder.get_object("separator_select_date").unwrap(); + let separator_select_custom: gtk::Separator = builder.get_object("separator_select_custom").unwrap(); let buttons_popover_right_click_open_file: gtk::Button = builder.get_object("buttons_popover_right_click_open_file").unwrap(); let buttons_popover_right_click_open_folder: gtk::Button = builder.get_object("buttons_popover_right_click_open_folder").unwrap(); //// Popovers - let popover_select_duplicate: gtk::Popover = builder.get_object("popover_select_duplicate").unwrap(); - let popover_select_simple_list: gtk::Popover = builder.get_object("popover_select_simple_list").unwrap(); - let popover_select_very_simple_list: gtk::Popover = builder.get_object("popover_select_very_simple_list").unwrap(); + let popover_select: gtk::Popover = builder.get_object("popover_select").unwrap(); let popover_right_click: gtk::Popover = builder.get_object("popover_right_click").unwrap(); //// Check Buttons @@ -442,28 +432,24 @@ impl GuiData { buttons_remove_included_directory, buttons_add_excluded_directory, buttons_remove_excluded_directory, - buttons_popover_duplicate_select_all, - buttons_popover_duplicate_unselect_all, - buttons_popover_duplicate_reverse, - buttons_popover_duplicate_select_all_except_oldest, - buttons_popover_duplicate_select_all_except_newest, - buttons_popover_duplicate_select_one_oldest, - buttons_popover_duplicate_select_one_newest, - buttons_popover_duplicate_select_custom, - buttons_popover_duplicate_unselect_custom, - buttons_popover_simple_list_select_all, - buttons_popover_simple_list_unselect_all, - buttons_popover_simple_list_reverse, - buttons_popover_simple_list_select_custom, - buttons_popover_simple_list_unselect_custom, - buttons_popover_very_simple_list_select_all, - buttons_popover_very_simple_list_unselect_all, - buttons_popover_very_simple_list_reverse, + buttons_popover_select_all, + buttons_popover_unselect_all, + buttons_popover_reverse, + buttons_popover_select_all_except_oldest, + buttons_popover_select_all_except_newest, + buttons_popover_select_one_oldest, + buttons_popover_select_one_newest, + buttons_popover_select_custom, + buttons_popover_unselect_custom, + buttons_popover_select_all_images_except_biggest, + buttons_popover_select_all_images_except_smallest, + separator_select_image_size, + separator_select_reverse, + separator_select_date, + separator_select_custom, buttons_popover_right_click_open_file, buttons_popover_right_click_open_folder, - popover_select_duplicate, - popover_select_simple_list, - popover_select_very_simple_list, + popover_select, popover_right_click, check_button_recursive, check_button_music_title, diff --git a/czkawka_gui/src/help_functions.rs b/czkawka_gui/src/help_functions.rs index fb9cff4..cc7b4b4 100644 --- a/czkawka_gui/src/help_functions.rs +++ b/czkawka_gui/src/help_functions.rs @@ -65,6 +65,7 @@ pub enum ColumnsTemporaryFiles { pub enum ColumnsSimilarImages { Similarity = 0, Size, + SizeAsBytes, Dimensions, Name, Path, @@ -75,12 +76,14 @@ pub enum ColumnsSimilarImages { } pub enum ColumnsZeroedFiles { Size = 0, + SizeAsBytes, Name, Path, Modification, } pub enum ColumnsSameMusic { Size = 0, + SizeAsBytes, Name, Path, Title, diff --git a/czkawka_gui/src/initialize_gui.rs b/czkawka_gui/src/initialize_gui.rs index 1821882..3d15499 100644 --- a/czkawka_gui/src/initialize_gui.rs +++ b/czkawka_gui/src/initialize_gui.rs @@ -135,9 +135,10 @@ pub fn initialize_gui(gui_data: &GuiData) { { image_preview_similar_images.hide(); - let col_types: [glib::types::Type; 9] = [ + let col_types: [glib::types::Type; 10] = [ glib::types::Type::String, glib::types::Type::String, + glib::types::Type::U64, glib::types::Type::String, glib::types::Type::String, glib::types::Type::String, @@ -235,7 +236,7 @@ pub fn initialize_gui(gui_data: &GuiData) { } // Zeroed Files { - let col_types: [glib::types::Type; 4] = [glib::types::Type::String, glib::types::Type::String, glib::types::Type::String, glib::types::Type::String]; + let col_types: [glib::types::Type; 5] = [glib::types::Type::String, glib::types::Type::U64, glib::types::Type::String, glib::types::Type::String, glib::types::Type::String]; let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store); @@ -249,10 +250,11 @@ pub fn initialize_gui(gui_data: &GuiData) { scrolled_window_zeroed_files_finder.add(&tree_view); scrolled_window_zeroed_files_finder.show_all(); } - // Same Files + // Same Music { - let col_types: [glib::types::Type; 12] = [ + let col_types: [glib::types::Type; 13] = [ glib::types::Type::String, + glib::types::Type::U64, glib::types::Type::String, glib::types::Type::String, glib::types::Type::String,