1
0
Fork 0
mirror of synced 2024-05-05 21:13:41 +12:00

Modernize popovers code and simplify later changes (#137)

This commit is contained in:
Rafał Mikrut 2020-12-26 10:35:43 +01:00 committed by GitHub
parent 123bba381f
commit d84722aa51
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 478 additions and 776 deletions

View file

@ -218,7 +218,7 @@ Author: Rafał Mikrut
</object>
</child>
</object>
<object class="GtkPopover" id="popover_select_duplicate">
<object class="GtkPopover" id="popover_select">
<property name="can_focus">False</property>
<child>
<object class="GtkBox">
@ -226,8 +226,8 @@ Author: Rafał Mikrut
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkButton" id="buttons_popover_duplicate_select_all">
<property name="label" translatable="yes">Select All</property>
<object class="GtkButton" id="buttons_popover_select_custom">
<property name="label" translatable="yes">Select custom</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
@ -239,8 +239,8 @@ Author: Rafał Mikrut
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_duplicate_unselect_all">
<property name="label" translatable="yes">Unselect All</property>
<object class="GtkButton" id="buttons_popover_unselect_custom">
<property name="label" translatable="yes">Unselect custom</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
@ -252,7 +252,7 @@ Author: Rafał Mikrut
</packing>
</child>
<child>
<object class="GtkSeparator">
<object class="GtkSeparator" id="separator_select_custom">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
@ -263,8 +263,8 @@ Author: Rafał Mikrut
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_duplicate_reverse">
<property name="label" translatable="yes">Reverse Selection</property>
<object class="GtkButton" id="buttons_popover_select_all_images_except_biggest">
<property name="label" translatable="yes">Select all except biggest</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
@ -276,9 +276,11 @@ Author: Rafał Mikrut
</packing>
</child>
<child>
<object class="GtkSeparator">
<object class="GtkButton" id="buttons_popover_select_all_images_except_smallest">
<property name="label" translatable="yes">Select all except smallest</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
@ -287,11 +289,9 @@ Author: Rafał Mikrut
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_duplicate_select_all_except_oldest">
<property name="label" translatable="yes">Select all except oldest</property>
<object class="GtkSeparator" id="separator_select_image_size">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
@ -300,8 +300,8 @@ Author: Rafał Mikrut
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_duplicate_select_all_except_newest">
<property name="label" translatable="yes">Select all except newest</property>
<object class="GtkButton" id="buttons_popover_select_all_except_oldest">
<property name="label" translatable="yes">Select all except oldest</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
@ -313,8 +313,8 @@ Author: Rafał Mikrut
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_duplicate_select_one_oldest">
<property name="label" translatable="yes">Select one oldest</property>
<object class="GtkButton" id="buttons_popover_select_all_except_newest">
<property name="label" translatable="yes">Select all except newest</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
@ -326,8 +326,8 @@ Author: Rafał Mikrut
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_duplicate_select_one_newest">
<property name="label" translatable="yes">Select one newest</property>
<object class="GtkButton" id="buttons_popover_select_one_oldest">
<property name="label" translatable="yes">Select one oldest</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
@ -339,9 +339,11 @@ Author: Rafał Mikrut
</packing>
</child>
<child>
<object class="GtkSeparator">
<object class="GtkButton" id="buttons_popover_select_one_newest">
<property name="label" translatable="yes">Select one newest</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
@ -350,11 +352,9 @@ Author: Rafał Mikrut
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_duplicate_select_custom">
<property name="label" translatable="yes">Select custom</property>
<object class="GtkSeparator" id="separator_select_date">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
@ -363,8 +363,8 @@ Author: Rafał Mikrut
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_duplicate_unselect_custom">
<property name="label" translatable="yes">Unselect custom</property>
<object class="GtkButton" id="buttons_popover_reverse">
<property name="label" translatable="yes">Reverse Selection</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
@ -375,18 +375,19 @@ Author: Rafał Mikrut
<property name="position">11</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkPopover" id="popover_select_simple_list">
<property name="can_focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkButton" id="buttons_popover_simple_list_select_all">
<object class="GtkSeparator" id="separator_select_reverse">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">12</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_select_all">
<property name="label" translatable="yes">Select All</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
@ -395,11 +396,11 @@ Author: Rafał Mikrut
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
<property name="position">13</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_simple_list_unselect_all">
<object class="GtkButton" id="buttons_popover_unselect_all">
<property name="label" translatable="yes">Unselect All</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
@ -408,128 +409,7 @@ Author: Rafał Mikrut
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_simple_list_reverse">
<property name="label" translatable="yes">Reverse Selection</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_simple_list_select_custom">
<property name="label" translatable="yes">Select custom</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_simple_list_unselect_custom">
<property name="label" translatable="yes">Unselect custom</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkPopover" id="popover_select_very_simple_list">
<property name="can_focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkButton" id="buttons_popover_very_simple_list_select_all">
<property name="label" translatable="yes">Select All</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_very_simple_list_unselect_all">
<property name="label" translatable="yes">Unselect All</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttons_popover_very_simple_list_reverse">
<property name="label" translatable="yes">Reverse Selection</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
<property name="position">14</property>
</packing>
</child>
</object>

View file

@ -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();
}
}

View file

@ -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,

View file

@ -527,540 +527,256 @@ fn popover_unselect_custom(popover: &gtk::Popover, gui_data: &GuiData, scrolled_
}
}
#[derive(Clone)]
pub struct PopoverObject {
pub name: String,
pub available_modes: Vec<String>,
pub scrolled_windows: gtk::ScrolledWindow,
pub column_path: Option<i32>,
pub column_name: Option<i32>,
pub column_color: Option<i32>,
pub column_dimensions: Option<i32>,
pub column_size: Option<i32>,
pub column_size_as_bytes: Option<i32>,
pub column_modification_as_secs: Option<i32>,
}
pub fn find_name(name: &str, vec: &[PopoverObject]) -> Option<PopoverObject> {
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(),
);
});
}

View file

@ -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,

View file

@ -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,

View file

@ -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,