Add select for all modes (#102)
This commit is contained in:
parent
3e61544ec4
commit
88d47e49cf
|
@ -213,7 +213,6 @@ impl DuplicateFinder {
|
|||
}
|
||||
|
||||
fn check_files_name(&mut self, stop_receiver: Option<&Receiver<()>>) -> bool {
|
||||
// TODO maybe add multithreading checking files
|
||||
let start_time: SystemTime = SystemTime::now();
|
||||
let mut folders_to_check: Vec<PathBuf> = Vec::with_capacity(1024 * 2); // This should be small enough too not see to big difference and big enough to store most of paths without needing to resize vector
|
||||
|
||||
|
@ -351,7 +350,6 @@ impl DuplicateFinder {
|
|||
/// Read file length and puts it to different boxes(each for different lengths)
|
||||
/// If in box is only 1 result, then it is removed
|
||||
fn check_files_size(&mut self, stop_receiver: Option<&Receiver<()>>) -> bool {
|
||||
// TODO maybe add multithreading checking files
|
||||
let start_time: SystemTime = SystemTime::now();
|
||||
let mut folders_to_check: Vec<PathBuf> = Vec::with_capacity(1024 * 2); // This should be small enough too not see to big difference and big enough to store most of paths without needing to resize vector
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ Author: Rafał Mikrut
|
|||
<!-- interface-name Czkawka -->
|
||||
<!-- interface-description Czkawka is simple and fast app to find duplicates, empty folders etc. -->
|
||||
<!-- interface-authors Rafa\305\202 Mikrut -->
|
||||
<object class="GtkPopover" id="popover_select">
|
||||
<object class="GtkPopover" id="popover_select_duplicate">
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
|
@ -40,7 +40,7 @@ Author: Rafał Mikrut
|
|||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="buttons_popover_select_all">
|
||||
<object class="GtkButton" id="buttons_popover_duplicate_select_all">
|
||||
<property name="label" translatable="yes">Select All</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
|
@ -53,7 +53,7 @@ Author: Rafał Mikrut
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="buttons_popover_unselect_all">
|
||||
<object class="GtkButton" id="buttons_popover_duplicate_unselect_all">
|
||||
<property name="label" translatable="yes">Unselect All</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
|
@ -66,7 +66,7 @@ Author: Rafał Mikrut
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="buttons_popover_reverse">
|
||||
<object class="GtkButton" id="buttons_popover_duplicate_reverse">
|
||||
<property name="label" translatable="yes">Reverse Selection</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
|
@ -79,7 +79,7 @@ Author: Rafał Mikrut
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="buttons_popover_select_all_except_oldest">
|
||||
<object class="GtkButton" id="buttons_popover_duplicate_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>
|
||||
|
@ -92,7 +92,7 @@ Author: Rafał Mikrut
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="buttons_popover_select_all_except_newest">
|
||||
<object class="GtkButton" id="buttons_popover_duplicate_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>
|
||||
|
@ -105,7 +105,7 @@ Author: Rafał Mikrut
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="buttons_popover_select_one_oldest">
|
||||
<object class="GtkButton" id="buttons_popover_duplicate_select_one_oldest">
|
||||
<property name="label" translatable="yes">Select one oldest</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
|
@ -118,7 +118,7 @@ Author: Rafał Mikrut
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="buttons_popover_select_one_newest">
|
||||
<object class="GtkButton" id="buttons_popover_duplicate_select_one_newest">
|
||||
<property name="label" translatable="yes">Select one newest</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
|
@ -133,6 +133,55 @@ Author: Rafał Mikrut
|
|||
</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">
|
||||
<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">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="buttons_popover_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">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>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkWindow" id="window_main">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="default_width">1100</property>
|
||||
|
|
|
@ -225,11 +225,11 @@ fn basic_remove(scrolled_window: gtk::ScrolledWindow, column_file_name: i32, col
|
|||
|
||||
text_view_errors.get_buffer().unwrap().set_text(messages.as_str());
|
||||
selection.unselect_all();
|
||||
} // TODO, will replace simple remove of things
|
||||
}
|
||||
|
||||
// Remove all ocurences - remove every element which have same path and name as even non selected ones
|
||||
// Remove all occurrences - remove every element which have same path and name as even non selected ones
|
||||
//
|
||||
fn tree_remove(scrolled_window: gtk::ScrolledWindow, column_file_name: i32, column_path: i32, column_color: i32, gui_data: &GuiData, remove_all_occurences: bool, header_can_have_one_child: bool) {
|
||||
fn tree_remove(scrolled_window: gtk::ScrolledWindow, column_file_name: i32, column_path: i32, column_color: i32, gui_data: &GuiData, remove_all_occurrences: bool, header_can_have_one_child: bool) {
|
||||
let text_view_errors = gui_data.text_view_errors.clone();
|
||||
|
||||
let tree_view = scrolled_window.get_children().get(0).unwrap().clone().downcast::<gtk::TreeView>().unwrap();
|
||||
|
@ -248,12 +248,12 @@ fn tree_remove(scrolled_window: gtk::ScrolledWindow, column_file_name: i32, colu
|
|||
let mut vec_path_to_delete: Vec<(String, String)> = Vec::new();
|
||||
let mut map_with_path_to_delete: BTreeMap<String, Vec<String>> = Default::default(); // BTreeMap<Path,Vec<FileName>>
|
||||
|
||||
// Save to variable paths of files, and remove it when not removing all ocureences.
|
||||
// Save to variable paths of files, and remove it when not removing all occurrences.
|
||||
for tree_path in selection_rows.iter().rev() {
|
||||
let file_name = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), column_file_name).get::<String>().unwrap().unwrap();
|
||||
let path = tree_model.get_value(&tree_model.get_iter(tree_path).unwrap(), column_path).get::<String>().unwrap().unwrap();
|
||||
|
||||
if !remove_all_occurences {
|
||||
if !remove_all_occurrences {
|
||||
list_store.remove(&list_store.get_iter(tree_path).unwrap());
|
||||
}
|
||||
map_with_path_to_delete.entry(path.clone()).or_insert_with(Vec::new);
|
||||
|
@ -277,7 +277,7 @@ fn tree_remove(scrolled_window: gtk::ScrolledWindow, column_file_name: i32, colu
|
|||
}
|
||||
}
|
||||
|
||||
if remove_all_occurences {
|
||||
if remove_all_occurrences {
|
||||
// Must be deleted from end to start, because when deleting entries, TreePath(and also TreeIter) will points to invalid data
|
||||
for path_to_delete in vec_path_to_delete {
|
||||
let mut vec_tree_path_to_delete: Vec<gtk::TreePath> = Vec::new();
|
||||
|
@ -286,7 +286,7 @@ fn tree_remove(scrolled_window: gtk::ScrolledWindow, column_file_name: i32, colu
|
|||
Some(t) => t,
|
||||
None => break,
|
||||
};
|
||||
let mut take_child_mode = false; // When original image is searched one, we must remove all occurences of its children
|
||||
let mut take_child_mode = false; // When original image is searched one, we must remove all occurrences of its children
|
||||
let mut prepared_for_delete;
|
||||
loop {
|
||||
prepared_for_delete = false;
|
||||
|
|
|
@ -6,15 +6,18 @@ pub fn connect_button_select(gui_data: &GuiData) {
|
|||
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 = gui_data.popover_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 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" => {
|
||||
// Only popup popup
|
||||
popover_select.set_relative_to(Some(&buttons_select));
|
||||
popover_select.popup();
|
||||
"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();
|
||||
}
|
||||
"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();
|
||||
}
|
||||
// TODO add for all basic selection popup
|
||||
e => panic!("Not existent {}", e),
|
||||
});
|
||||
}
|
||||
|
|
|
@ -229,9 +229,11 @@ pub fn connect_compute_results(gui_data: &GuiData, receiver: Receiver<Message>)
|
|||
if empty_folder_number > 0 {
|
||||
*shared_buttons.borrow_mut().get_mut("empty_folder").unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("empty_folder").unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("empty_folder").unwrap().get_mut("select").unwrap() = true;
|
||||
} else {
|
||||
*shared_buttons.borrow_mut().get_mut("empty_folder").unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("empty_folder").unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("empty_folder").unwrap().get_mut("select").unwrap() = false;
|
||||
}
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("empty_folder").unwrap(), &buttons_array, &buttons_names);
|
||||
}
|
||||
|
@ -271,9 +273,11 @@ pub fn connect_compute_results(gui_data: &GuiData, receiver: Receiver<Message>)
|
|||
if empty_files_number > 0 {
|
||||
*shared_buttons.borrow_mut().get_mut("empty_file").unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("empty_file").unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("empty_file").unwrap().get_mut("select").unwrap() = true;
|
||||
} else {
|
||||
*shared_buttons.borrow_mut().get_mut("empty_file").unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("empty_file").unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("empty_file").unwrap().get_mut("select").unwrap() = false;
|
||||
}
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("empty_file").unwrap(), &buttons_array, &buttons_names);
|
||||
}
|
||||
|
@ -320,9 +324,11 @@ pub fn connect_compute_results(gui_data: &GuiData, receiver: Receiver<Message>)
|
|||
if biggest_files_number > 0 {
|
||||
*shared_buttons.borrow_mut().get_mut("big_file").unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("big_file").unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("big_file").unwrap().get_mut("select").unwrap() = true;
|
||||
} else {
|
||||
*shared_buttons.borrow_mut().get_mut("big_file").unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("big_file").unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("big_file").unwrap().get_mut("select").unwrap() = false;
|
||||
}
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("big_file").unwrap(), &buttons_array, &buttons_names);
|
||||
}
|
||||
|
@ -362,9 +368,11 @@ pub fn connect_compute_results(gui_data: &GuiData, receiver: Receiver<Message>)
|
|||
if temporary_files_number > 0 {
|
||||
*shared_buttons.borrow_mut().get_mut("temporary_file").unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("temporary_file").unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("temporary_file").unwrap().get_mut("select").unwrap() = true;
|
||||
} else {
|
||||
*shared_buttons.borrow_mut().get_mut("temporary_file").unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("temporary_file").unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("temporary_file").unwrap().get_mut("select").unwrap() = false;
|
||||
}
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("temporary_file").unwrap(), &buttons_array, &buttons_names);
|
||||
}
|
||||
|
@ -385,19 +393,20 @@ pub fn connect_compute_results(gui_data: &GuiData, receiver: Receiver<Message>)
|
|||
{
|
||||
let list_store = get_list_store(&scrolled_window_similar_images_finder);
|
||||
|
||||
let col_indices = [0, 1, 2, 3, 4, 5, 6, 7];
|
||||
let col_indices = [0, 1, 2, 3, 4, 5, 6, 7, 8];
|
||||
|
||||
let vec_struct_similar = sf.get_similar_images();
|
||||
|
||||
for vec_file_entry in vec_struct_similar.iter() {
|
||||
// Header
|
||||
let values: [&dyn ToValue; 8] = [
|
||||
let values: [&dyn ToValue; 9] = [
|
||||
&"".to_string(),
|
||||
&"".to_string(),
|
||||
&"".to_string(),
|
||||
&"".to_string(),
|
||||
&"".to_string(),
|
||||
&"".to_string(),
|
||||
&(0),
|
||||
&(HEADER_ROW_COLOR.to_string()),
|
||||
&(TEXT_COLOR.to_string()),
|
||||
];
|
||||
|
@ -406,13 +415,14 @@ pub fn connect_compute_results(gui_data: &GuiData, receiver: Receiver<Message>)
|
|||
// Meat
|
||||
for file_entry in vec_file_entry.iter() {
|
||||
let (directory, file) = split_path(&file_entry.path);
|
||||
let values: [&dyn ToValue; 8] = [
|
||||
let values: [&dyn ToValue; 9] = [
|
||||
&(get_text_from_similarity(&file_entry.similarity).to_string()),
|
||||
&file_entry.size.file_size(options::BINARY).unwrap(),
|
||||
&file_entry.dimensions,
|
||||
&file,
|
||||
&directory,
|
||||
&(NaiveDateTime::from_timestamp(file_entry.modified_date as i64, 0).to_string()),
|
||||
&(file_entry.modified_date),
|
||||
&(MAIN_ROW_COLOR.to_string()),
|
||||
&(TEXT_COLOR.to_string()),
|
||||
];
|
||||
|
@ -430,9 +440,11 @@ pub fn connect_compute_results(gui_data: &GuiData, receiver: Receiver<Message>)
|
|||
if base_images_size > 0 {
|
||||
*shared_buttons.borrow_mut().get_mut("similar_images").unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("similar_images").unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("similar_images").unwrap().get_mut("select").unwrap() = true;
|
||||
} else {
|
||||
*shared_buttons.borrow_mut().get_mut("similar_images").unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("similar_images").unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("similar_images").unwrap().get_mut("select").unwrap() = false;
|
||||
}
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("similar_images").unwrap(), &buttons_array, &buttons_names);
|
||||
}
|
||||
|
@ -477,9 +489,11 @@ pub fn connect_compute_results(gui_data: &GuiData, receiver: Receiver<Message>)
|
|||
if zeroed_files_number > 0 {
|
||||
*shared_buttons.borrow_mut().get_mut("zeroed_files").unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("zeroed_files").unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("zeroed_files").unwrap().get_mut("select").unwrap() = true;
|
||||
} else {
|
||||
*shared_buttons.borrow_mut().get_mut("zeroed_files").unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("zeroed_files").unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("zeroed_files").unwrap().get_mut("select").unwrap() = false;
|
||||
}
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("zeroed_files").unwrap(), &buttons_array, &buttons_names);
|
||||
}
|
||||
|
@ -540,7 +554,7 @@ pub fn connect_compute_results(gui_data: &GuiData, receiver: Receiver<Message>)
|
|||
false => "".to_string(),
|
||||
}),
|
||||
&"".to_string(),
|
||||
&"".to_string(),
|
||||
&(0),
|
||||
&(HEADER_ROW_COLOR.to_string()),
|
||||
&(TEXT_COLOR.to_string()),
|
||||
];
|
||||
|
@ -574,9 +588,11 @@ pub fn connect_compute_results(gui_data: &GuiData, receiver: Receiver<Message>)
|
|||
if same_music_number > 0 {
|
||||
*shared_buttons.borrow_mut().get_mut("same_music").unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("same_music").unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("same_music").unwrap().get_mut("select").unwrap() = true;
|
||||
} else {
|
||||
*shared_buttons.borrow_mut().get_mut("same_music").unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("same_music").unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("same_music").unwrap().get_mut("select").unwrap() = false;
|
||||
}
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("same_music").unwrap(), &buttons_array, &buttons_names);
|
||||
}
|
||||
|
|
|
@ -1,322 +0,0 @@
|
|||
extern crate gtk;
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
use gtk::prelude::*;
|
||||
use gtk::TreeIter;
|
||||
|
||||
pub fn connect_popover_duplicate(gui_data: &GuiData) {
|
||||
// Select all button
|
||||
{
|
||||
let buttons_popover_select_all = gui_data.buttons_popover_select_all.clone();
|
||||
let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
|
||||
let popover_select = gui_data.popover_select.clone();
|
||||
buttons_popover_select_all.connect_clicked(move |_| {
|
||||
let tree_view = get_tree_view(&scrolled_window_duplicate_finder);
|
||||
let selection = tree_view.get_selection();
|
||||
|
||||
selection.select_all();
|
||||
popover_select.popdown();
|
||||
});
|
||||
}
|
||||
|
||||
// Unselect all button
|
||||
{
|
||||
let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
|
||||
let buttons_popover_unselect_all = gui_data.buttons_popover_unselect_all.clone();
|
||||
let popover_select = gui_data.popover_select.clone();
|
||||
buttons_popover_unselect_all.connect_clicked(move |_| {
|
||||
let tree_view = get_tree_view(&scrolled_window_duplicate_finder);
|
||||
let selection = tree_view.get_selection();
|
||||
|
||||
selection.unselect_all();
|
||||
popover_select.popdown();
|
||||
});
|
||||
}
|
||||
|
||||
// Reverse selection
|
||||
{
|
||||
let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
|
||||
let popover_select = gui_data.popover_select.clone();
|
||||
let buttons_popover_reverse = gui_data.buttons_popover_reverse.clone();
|
||||
buttons_popover_reverse.connect_clicked(move |_| {
|
||||
let tree_view = get_tree_view(&scrolled_window_duplicate_finder);
|
||||
let selection = tree_view.get_selection();
|
||||
|
||||
let (vector_tree_path, tree_model) = selection.get_selected_rows();
|
||||
|
||||
if vector_tree_path.is_empty() {
|
||||
selection.select_all();
|
||||
} else {
|
||||
let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records
|
||||
|
||||
let mut current_path_index = 0;
|
||||
let mut tree_iter_selected: TreeIter;
|
||||
loop {
|
||||
if current_path_index >= vector_tree_path.len() {
|
||||
selection.select_iter(&tree_iter_all);
|
||||
} else {
|
||||
tree_iter_selected = tree_model.get_iter(vector_tree_path.get(current_path_index).unwrap()).unwrap();
|
||||
if tree_model.get_path(&tree_iter_all).unwrap() == tree_model.get_path(&tree_iter_selected).unwrap() {
|
||||
selection.unselect_iter(&tree_iter_selected);
|
||||
current_path_index += 1;
|
||||
} else {
|
||||
selection.select_iter(&tree_iter_all);
|
||||
}
|
||||
}
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
popover_select.popdown();
|
||||
});
|
||||
}
|
||||
|
||||
// All except oldest
|
||||
{
|
||||
let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
|
||||
let popover_select = gui_data.popover_select.clone();
|
||||
let buttons_popover_select_all_except_oldest = gui_data.buttons_popover_select_all_except_oldest.clone();
|
||||
buttons_popover_select_all_except_oldest.connect_clicked(move |_| {
|
||||
let tree_view = get_tree_view(&scrolled_window_duplicate_finder);
|
||||
let selection = tree_view.get_selection();
|
||||
let tree_model = tree_view.get_model().unwrap();
|
||||
|
||||
let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records
|
||||
|
||||
let mut end: bool = false;
|
||||
|
||||
loop {
|
||||
let mut tree_iter_array: Vec<TreeIter> = Vec::new();
|
||||
let mut oldest_index: Option<usize> = None;
|
||||
let mut current_index: usize = 0;
|
||||
let mut oldest_modification_time: u64 = u64::max_value();
|
||||
|
||||
loop {
|
||||
let color = tree_model.get_value(&tree_iter_all, ColumnsDuplicates::Color as i32).get::<String>().unwrap().unwrap();
|
||||
if color == HEADER_ROW_COLOR {
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
end = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
tree_iter_array.push(tree_iter_all.clone());
|
||||
let modification = tree_model.get_value(&tree_iter_all, ColumnsDuplicates::ModificationAsSecs as i32).get::<u64>().unwrap().unwrap();
|
||||
if modification < oldest_modification_time {
|
||||
oldest_modification_time = modification;
|
||||
oldest_index = Some(current_index);
|
||||
}
|
||||
|
||||
current_index += 1;
|
||||
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
end = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if oldest_index == None {
|
||||
continue;
|
||||
}
|
||||
for (index, tree_iter) in tree_iter_array.iter().enumerate() {
|
||||
if index != oldest_index.unwrap() {
|
||||
selection.select_iter(tree_iter);
|
||||
} else {
|
||||
selection.unselect_iter(tree_iter);
|
||||
}
|
||||
}
|
||||
|
||||
if end {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
popover_select.popdown();
|
||||
});
|
||||
}
|
||||
|
||||
// All except newest
|
||||
{
|
||||
let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
|
||||
let popover_select = gui_data.popover_select.clone();
|
||||
let buttons_popover_select_all_except_newest = gui_data.buttons_popover_select_all_except_newest.clone();
|
||||
buttons_popover_select_all_except_newest.connect_clicked(move |_| {
|
||||
let tree_view = get_tree_view(&scrolled_window_duplicate_finder);
|
||||
let selection = tree_view.get_selection();
|
||||
let tree_model = tree_view.get_model().unwrap();
|
||||
|
||||
let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records
|
||||
|
||||
let mut end: bool = false;
|
||||
|
||||
loop {
|
||||
let mut tree_iter_array: Vec<TreeIter> = Vec::new();
|
||||
let mut newest_index: Option<usize> = None;
|
||||
let mut current_index: usize = 0;
|
||||
let mut newest_modification_time: u64 = 0;
|
||||
|
||||
loop {
|
||||
let color = tree_model.get_value(&tree_iter_all, ColumnsDuplicates::Color as i32).get::<String>().unwrap().unwrap();
|
||||
if color == HEADER_ROW_COLOR {
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
end = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
tree_iter_array.push(tree_iter_all.clone());
|
||||
let modification = tree_model.get_value(&tree_iter_all, ColumnsDuplicates::ModificationAsSecs as i32).get::<u64>().unwrap().unwrap();
|
||||
if modification > newest_modification_time {
|
||||
newest_modification_time = modification;
|
||||
newest_index = Some(current_index);
|
||||
}
|
||||
|
||||
current_index += 1;
|
||||
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
end = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if newest_index == None {
|
||||
continue;
|
||||
}
|
||||
for (index, tree_iter) in tree_iter_array.iter().enumerate() {
|
||||
if index != newest_index.unwrap() {
|
||||
selection.select_iter(tree_iter);
|
||||
} else {
|
||||
selection.unselect_iter(tree_iter);
|
||||
}
|
||||
}
|
||||
|
||||
if end {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
popover_select.popdown();
|
||||
});
|
||||
}
|
||||
|
||||
// All one oldest
|
||||
{
|
||||
let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
|
||||
let popover_select = gui_data.popover_select.clone();
|
||||
let buttons_popover_select_one_oldest = gui_data.buttons_popover_select_one_oldest.clone();
|
||||
buttons_popover_select_one_oldest.connect_clicked(move |_| {
|
||||
let tree_view = get_tree_view(&scrolled_window_duplicate_finder);
|
||||
let selection = tree_view.get_selection();
|
||||
let tree_model = tree_view.get_model().unwrap();
|
||||
|
||||
let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records
|
||||
|
||||
let mut end: bool = false;
|
||||
|
||||
loop {
|
||||
let mut tree_iter_array: Vec<TreeIter> = Vec::new();
|
||||
let mut oldest_index: Option<usize> = None;
|
||||
let mut current_index: usize = 0;
|
||||
let mut oldest_modification_time: u64 = u64::max_value();
|
||||
|
||||
loop {
|
||||
let color = tree_model.get_value(&tree_iter_all, ColumnsDuplicates::Color as i32).get::<String>().unwrap().unwrap();
|
||||
if color == HEADER_ROW_COLOR {
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
end = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
tree_iter_array.push(tree_iter_all.clone());
|
||||
let modification = tree_model.get_value(&tree_iter_all, ColumnsDuplicates::ModificationAsSecs as i32).get::<u64>().unwrap().unwrap();
|
||||
if modification < oldest_modification_time {
|
||||
oldest_modification_time = modification;
|
||||
oldest_index = Some(current_index);
|
||||
}
|
||||
|
||||
current_index += 1;
|
||||
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
end = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if oldest_index == None {
|
||||
continue;
|
||||
}
|
||||
for (index, tree_iter) in tree_iter_array.iter().enumerate() {
|
||||
if index == oldest_index.unwrap() {
|
||||
selection.select_iter(tree_iter);
|
||||
} else {
|
||||
selection.unselect_iter(tree_iter);
|
||||
}
|
||||
}
|
||||
|
||||
if end {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
popover_select.popdown();
|
||||
});
|
||||
}
|
||||
// All one newest
|
||||
{
|
||||
let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
|
||||
let buttons_popover_select_one_newest = gui_data.buttons_popover_select_one_newest.clone();
|
||||
let popover_select = gui_data.popover_select.clone();
|
||||
buttons_popover_select_one_newest.connect_clicked(move |_| {
|
||||
let tree_view = get_tree_view(&scrolled_window_duplicate_finder);
|
||||
let selection = tree_view.get_selection();
|
||||
let tree_model = tree_view.get_model().unwrap();
|
||||
|
||||
let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records
|
||||
|
||||
let mut end: bool = false;
|
||||
|
||||
loop {
|
||||
let mut tree_iter_array: Vec<TreeIter> = Vec::new();
|
||||
let mut newest_index: Option<usize> = None;
|
||||
let mut current_index: usize = 0;
|
||||
let mut newest_modification_time: u64 = 0;
|
||||
|
||||
loop {
|
||||
let color = tree_model.get_value(&tree_iter_all, ColumnsDuplicates::Color as i32).get::<String>().unwrap().unwrap();
|
||||
if color == HEADER_ROW_COLOR {
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
end = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
tree_iter_array.push(tree_iter_all.clone());
|
||||
let modification = tree_model.get_value(&tree_iter_all, ColumnsDuplicates::ModificationAsSecs as i32).get::<u64>().unwrap().unwrap();
|
||||
if modification > newest_modification_time {
|
||||
newest_modification_time = modification;
|
||||
newest_index = Some(current_index);
|
||||
}
|
||||
|
||||
current_index += 1;
|
||||
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
end = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if newest_index == None {
|
||||
continue;
|
||||
}
|
||||
for (index, tree_iter) in tree_iter_array.iter().enumerate() {
|
||||
if index == newest_index.unwrap() {
|
||||
selection.select_iter(tree_iter);
|
||||
} else {
|
||||
selection.unselect_iter(tree_iter);
|
||||
}
|
||||
}
|
||||
|
||||
if end {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
popover_select.popdown();
|
||||
});
|
||||
}
|
||||
}
|
524
czkawka_gui/src/connect_popovers.rs
Normal file
524
czkawka_gui/src/connect_popovers.rs
Normal file
|
@ -0,0 +1,524 @@
|
|||
extern crate gtk;
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
use gtk::prelude::*;
|
||||
use gtk::TreeIter;
|
||||
|
||||
fn popover_select_all(popover: >k::Popover, scrolled_window: >k::ScrolledWindow) {
|
||||
let tree_view = get_tree_view(&scrolled_window);
|
||||
let selection = tree_view.get_selection();
|
||||
|
||||
selection.select_all();
|
||||
popover.popdown();
|
||||
}
|
||||
fn popover_unselect_all(popover: >k::Popover, scrolled_window: >k::ScrolledWindow) {
|
||||
let tree_view = get_tree_view(&scrolled_window);
|
||||
let selection = tree_view.get_selection();
|
||||
|
||||
selection.unselect_all();
|
||||
popover.popdown();
|
||||
}
|
||||
fn popover_reverse(popover: >k::Popover, scrolled_window: >k::ScrolledWindow) {
|
||||
let tree_view = get_tree_view(&scrolled_window);
|
||||
let selection = tree_view.get_selection();
|
||||
|
||||
let (vector_tree_path, tree_model) = selection.get_selected_rows();
|
||||
|
||||
if vector_tree_path.is_empty() {
|
||||
selection.select_all();
|
||||
} else {
|
||||
let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records
|
||||
|
||||
let mut current_path_index = 0;
|
||||
let mut tree_iter_selected: TreeIter;
|
||||
loop {
|
||||
if current_path_index >= vector_tree_path.len() {
|
||||
selection.select_iter(&tree_iter_all);
|
||||
} else {
|
||||
tree_iter_selected = tree_model.get_iter(vector_tree_path.get(current_path_index).unwrap()).unwrap();
|
||||
if tree_model.get_path(&tree_iter_all).unwrap() == tree_model.get_path(&tree_iter_selected).unwrap() {
|
||||
selection.unselect_iter(&tree_iter_selected);
|
||||
current_path_index += 1;
|
||||
} else {
|
||||
selection.select_iter(&tree_iter_all);
|
||||
}
|
||||
}
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
popover.popdown();
|
||||
}
|
||||
|
||||
fn popover_all_except_oldest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_modification_as_secs: i32) {
|
||||
let tree_view = get_tree_view(&scrolled_window);
|
||||
let selection = tree_view.get_selection();
|
||||
let tree_model = tree_view.get_model().unwrap();
|
||||
|
||||
let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records
|
||||
|
||||
let mut end: bool = false;
|
||||
|
||||
loop {
|
||||
let mut tree_iter_array: Vec<TreeIter> = Vec::new();
|
||||
let mut oldest_index: Option<usize> = None;
|
||||
let mut current_index: usize = 0;
|
||||
let mut oldest_modification_time: u64 = u64::max_value();
|
||||
|
||||
loop {
|
||||
let color = tree_model.get_value(&tree_iter_all, column_color).get::<String>().unwrap().unwrap();
|
||||
if color == HEADER_ROW_COLOR {
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
end = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
tree_iter_array.push(tree_iter_all.clone());
|
||||
let modification = tree_model.get_value(&tree_iter_all, column_modification_as_secs).get::<u64>().unwrap().unwrap();
|
||||
if modification < oldest_modification_time {
|
||||
oldest_modification_time = modification;
|
||||
oldest_index = Some(current_index);
|
||||
}
|
||||
|
||||
current_index += 1;
|
||||
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
end = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if oldest_index == None {
|
||||
continue;
|
||||
}
|
||||
for (index, tree_iter) in tree_iter_array.iter().enumerate() {
|
||||
if index != oldest_index.unwrap() {
|
||||
selection.select_iter(tree_iter);
|
||||
} else {
|
||||
selection.unselect_iter(tree_iter);
|
||||
}
|
||||
}
|
||||
|
||||
if end {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
popover.popdown();
|
||||
}
|
||||
fn popover_all_except_newest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_modification_as_secs: i32) {
|
||||
let tree_view = get_tree_view(&scrolled_window);
|
||||
let selection = tree_view.get_selection();
|
||||
let tree_model = tree_view.get_model().unwrap();
|
||||
|
||||
let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records
|
||||
|
||||
let mut end: bool = false;
|
||||
|
||||
loop {
|
||||
let mut tree_iter_array: Vec<TreeIter> = Vec::new();
|
||||
let mut newest_index: Option<usize> = None;
|
||||
let mut current_index: usize = 0;
|
||||
let mut newest_modification_time: u64 = 0;
|
||||
|
||||
loop {
|
||||
let color = tree_model.get_value(&tree_iter_all, column_color).get::<String>().unwrap().unwrap();
|
||||
if color == HEADER_ROW_COLOR {
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
end = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
tree_iter_array.push(tree_iter_all.clone());
|
||||
let modification = tree_model.get_value(&tree_iter_all, column_modification_as_secs).get::<u64>().unwrap().unwrap();
|
||||
if modification > newest_modification_time {
|
||||
newest_modification_time = modification;
|
||||
newest_index = Some(current_index);
|
||||
}
|
||||
|
||||
current_index += 1;
|
||||
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
end = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if newest_index == None {
|
||||
continue;
|
||||
}
|
||||
for (index, tree_iter) in tree_iter_array.iter().enumerate() {
|
||||
if index != newest_index.unwrap() {
|
||||
selection.select_iter(tree_iter);
|
||||
} else {
|
||||
selection.unselect_iter(tree_iter);
|
||||
}
|
||||
}
|
||||
|
||||
if end {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
popover.popdown();
|
||||
}
|
||||
fn popover_one_oldest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_modification_as_secs: i32) {
|
||||
let tree_view = get_tree_view(&scrolled_window);
|
||||
let selection = tree_view.get_selection();
|
||||
let tree_model = tree_view.get_model().unwrap();
|
||||
|
||||
let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records
|
||||
|
||||
let mut end: bool = false;
|
||||
|
||||
loop {
|
||||
let mut tree_iter_array: Vec<TreeIter> = Vec::new();
|
||||
let mut oldest_index: Option<usize> = None;
|
||||
let mut current_index: usize = 0;
|
||||
let mut oldest_modification_time: u64 = u64::max_value();
|
||||
|
||||
loop {
|
||||
let color = tree_model.get_value(&tree_iter_all, column_color).get::<String>().unwrap().unwrap();
|
||||
if color == HEADER_ROW_COLOR {
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
end = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
tree_iter_array.push(tree_iter_all.clone());
|
||||
let modification = tree_model.get_value(&tree_iter_all, column_modification_as_secs).get::<u64>().unwrap().unwrap();
|
||||
if modification < oldest_modification_time {
|
||||
oldest_modification_time = modification;
|
||||
oldest_index = Some(current_index);
|
||||
}
|
||||
|
||||
current_index += 1;
|
||||
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
end = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if oldest_index == None {
|
||||
continue;
|
||||
}
|
||||
for (index, tree_iter) in tree_iter_array.iter().enumerate() {
|
||||
if index == oldest_index.unwrap() {
|
||||
selection.select_iter(tree_iter);
|
||||
} else {
|
||||
selection.unselect_iter(tree_iter);
|
||||
}
|
||||
}
|
||||
|
||||
if end {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
popover.popdown();
|
||||
}
|
||||
fn popover_one_newest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_modification_as_secs: i32) {
|
||||
let tree_view = get_tree_view(&scrolled_window);
|
||||
let selection = tree_view.get_selection();
|
||||
let tree_model = tree_view.get_model().unwrap();
|
||||
|
||||
let tree_iter_all = tree_model.get_iter_first().unwrap(); // Never should be available button where there is no available records
|
||||
|
||||
let mut end: bool = false;
|
||||
|
||||
loop {
|
||||
let mut tree_iter_array: Vec<TreeIter> = Vec::new();
|
||||
let mut newest_index: Option<usize> = None;
|
||||
let mut current_index: usize = 0;
|
||||
let mut newest_modification_time: u64 = 0;
|
||||
|
||||
loop {
|
||||
let color = tree_model.get_value(&tree_iter_all, column_color).get::<String>().unwrap().unwrap();
|
||||
if color == HEADER_ROW_COLOR {
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
end = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
tree_iter_array.push(tree_iter_all.clone());
|
||||
let modification = tree_model.get_value(&tree_iter_all, column_modification_as_secs).get::<u64>().unwrap().unwrap();
|
||||
if modification > newest_modification_time {
|
||||
newest_modification_time = modification;
|
||||
newest_index = Some(current_index);
|
||||
}
|
||||
|
||||
current_index += 1;
|
||||
|
||||
if !tree_model.iter_next(&tree_iter_all) {
|
||||
end = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if newest_index == None {
|
||||
continue;
|
||||
}
|
||||
for (index, tree_iter) in tree_iter_array.iter().enumerate() {
|
||||
if index == newest_index.unwrap() {
|
||||
selection.select_iter(tree_iter);
|
||||
} else {
|
||||
selection.unselect_iter(tree_iter);
|
||||
}
|
||||
}
|
||||
|
||||
if end {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
popover.popdown();
|
||||
}
|
||||
|
||||
pub fn connect_popovers(gui_data: &GuiData) {
|
||||
connect_select_all(&gui_data);
|
||||
connect_unselect_all(&gui_data);
|
||||
connect_reverse(&gui_data);
|
||||
|
||||
connect_all_except_oldest(&gui_data);
|
||||
connect_all_except_newest(&gui_data);
|
||||
connect_one_oldest(&gui_data);
|
||||
connect_one_newest(&gui_data);
|
||||
}
|
||||
pub fn connect_select_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 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_all = gui_data.buttons_popover_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 notebook_main_children_names = gui_data.notebook_main_children_names.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),
|
||||
});
|
||||
}
|
||||
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 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_all = gui_data.buttons_popover_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),
|
||||
});
|
||||
}
|
||||
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 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_reverse = gui_data.buttons_popover_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),
|
||||
});
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
"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);
|
||||
}
|
||||
"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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
"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);
|
||||
}
|
||||
"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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
"notebook_main_same_music_finder" => {
|
||||
popover_one_newest(&popover_select_duplicate, &scrolled_window_same_music_finder, ColumnsSameMusic::Color as i32, ColumnsSameMusic::ModificationAsSecs 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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
"notebook_main_same_music_finder" => {
|
||||
popover_one_oldest(&popover_select_duplicate, &scrolled_window_same_music_finder, ColumnsSameMusic::Color as i32, ColumnsSameMusic::ModificationAsSecs 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);
|
||||
}
|
||||
e => panic!("Not existent {}", e),
|
||||
});
|
||||
}
|
|
@ -71,16 +71,21 @@ pub struct GuiData {
|
|||
pub buttons_remove_excluded_directory: gtk::Button,
|
||||
|
||||
// Buttons search popover buttons
|
||||
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_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_simple_list_select_all: gtk::Button,
|
||||
pub buttons_popover_simple_list_unselect_all: gtk::Button,
|
||||
pub buttons_popover_simple_list_reverse: gtk::Button,
|
||||
|
||||
//// Popovers
|
||||
pub popover_select: gtk::Popover,
|
||||
pub popover_select_duplicate: gtk::Popover,
|
||||
pub popover_select_simple_list: gtk::Popover,
|
||||
|
||||
//// Check Buttons
|
||||
pub check_button_recursive: gtk::CheckButton,
|
||||
|
@ -251,16 +256,21 @@ impl GuiData {
|
|||
let buttons_remove_excluded_directory: gtk::Button = builder.get_object("buttons_remove_excluded_directory").unwrap();
|
||||
|
||||
// Buttons search popover buttons
|
||||
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_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_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();
|
||||
|
||||
//// Popovers
|
||||
let popover_select: gtk::Popover = builder.get_object("popover_select").unwrap();
|
||||
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();
|
||||
|
||||
//// Check Buttons
|
||||
let check_button_recursive: gtk::CheckButton = builder.get_object("check_button_recursive").unwrap();
|
||||
|
@ -359,14 +369,18 @@ impl GuiData {
|
|||
buttons_remove_included_directory,
|
||||
buttons_add_excluded_directory,
|
||||
buttons_remove_excluded_directory,
|
||||
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,
|
||||
popover_select,
|
||||
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_simple_list_select_all,
|
||||
buttons_popover_simple_list_unselect_all,
|
||||
buttons_popover_simple_list_reverse,
|
||||
popover_select_duplicate,
|
||||
popover_select_simple_list,
|
||||
check_button_recursive,
|
||||
check_button_music_title,
|
||||
check_button_music_artist,
|
||||
|
|
|
@ -66,6 +66,7 @@ pub enum ColumnsSimilarImages {
|
|||
Name,
|
||||
Path,
|
||||
Modification,
|
||||
ModificationAsSecs,
|
||||
Color,
|
||||
TextColor,
|
||||
}
|
||||
|
@ -85,7 +86,7 @@ pub enum ColumnsSameMusic {
|
|||
AlbumArtist,
|
||||
Year,
|
||||
Modification,
|
||||
_ModificationAsSecs,
|
||||
ModificationAsSecs,
|
||||
Color,
|
||||
TextColor,
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ mod connect_button_select;
|
|||
mod connect_button_stop;
|
||||
mod connect_compute_results;
|
||||
mod connect_notebook_tabs;
|
||||
mod connect_popover_duplicate;
|
||||
mod connect_popovers;
|
||||
mod connect_upper_notebook;
|
||||
mod create_tree_view;
|
||||
mod double_click_opening;
|
||||
|
@ -23,7 +23,7 @@ use crate::connect_button_select::*;
|
|||
use crate::connect_button_stop::*;
|
||||
use crate::connect_compute_results::*;
|
||||
use crate::connect_notebook_tabs::*;
|
||||
use crate::connect_popover_duplicate::*;
|
||||
use crate::connect_popovers::*;
|
||||
use crate::connect_upper_notebook::*;
|
||||
use crate::gui_data::*;
|
||||
use crate::startup_configuration::*;
|
||||
|
@ -62,7 +62,7 @@ fn main() {
|
|||
connect_button_stop(&gui_data);
|
||||
connect_notebook_tabs(&gui_data);
|
||||
connect_upper_notebook(&gui_data);
|
||||
connect_popover_duplicate(&gui_data);
|
||||
connect_popovers(&gui_data);
|
||||
connect_compute_results(&gui_data, receiver);
|
||||
|
||||
// Quit the program when X in main window was clicked
|
||||
|
|
|
@ -132,14 +132,14 @@ pub fn startup_configuration(gui_data: &GuiData) {
|
|||
}
|
||||
// Similar Images
|
||||
{
|
||||
// TODO create maybe open button to support opening multiple files at once
|
||||
let col_types: [glib::types::Type; 8] = [
|
||||
let col_types: [glib::types::Type; 9] = [
|
||||
glib::types::Type::String,
|
||||
glib::types::Type::String,
|
||||
glib::types::Type::String,
|
||||
glib::types::Type::String,
|
||||
glib::types::Type::String,
|
||||
glib::types::Type::String,
|
||||
glib::types::Type::U64,
|
||||
glib::types::Type::String,
|
||||
glib::types::Type::String,
|
||||
];
|
||||
|
@ -185,7 +185,7 @@ pub fn startup_configuration(gui_data: &GuiData) {
|
|||
glib::types::Type::String,
|
||||
glib::types::Type::String,
|
||||
glib::types::Type::String,
|
||||
glib::types::Type::String,
|
||||
glib::types::Type::U64,
|
||||
glib::types::Type::String,
|
||||
glib::types::Type::String,
|
||||
];
|
||||
|
|
Loading…
Reference in a new issue