Modernize notebook handling (#189)
This commit is contained in:
parent
9975605f75
commit
30bab75a5d
|
@ -1,6 +1,7 @@
|
|||
extern crate gtk;
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
use crate::notebook_enums::*;
|
||||
use gtk::prelude::*;
|
||||
use std::collections::BTreeMap;
|
||||
use std::fs;
|
||||
|
@ -12,7 +13,6 @@ pub fn connect_button_delete(gui_data: &GuiData) {
|
|||
let gui_data = gui_data.clone();
|
||||
let buttons_delete = gui_data.buttons_delete.clone();
|
||||
let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
|
||||
let notebook_main_children_names = gui_data.notebook_main_children_names.clone();
|
||||
let notebook_main = gui_data.notebook_main.clone();
|
||||
let window_main = gui_data.window_main.clone();
|
||||
let scrolled_window_main_empty_folder_finder = gui_data.scrolled_window_main_empty_folder_finder.clone();
|
||||
|
@ -53,23 +53,23 @@ pub fn connect_button_delete(gui_data: &GuiData) {
|
|||
confirmation_dialog_delete.close();
|
||||
}
|
||||
|
||||
match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() {
|
||||
"notebook_main_duplicate_finder_label" => {
|
||||
match to_notebook_main_enum(notebook_main.get_current_page().unwrap()) {
|
||||
NotebookMainEnum::Duplicate => {
|
||||
tree_remove(&scrolled_window_duplicate_finder.clone(), ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, ColumnsDuplicates::Color as i32, &gui_data);
|
||||
}
|
||||
"scrolled_window_main_empty_folder_finder" => {
|
||||
NotebookMainEnum::EmptyDirectories => {
|
||||
empty_folder_remover(&scrolled_window_main_empty_folder_finder.clone(), ColumnsEmptyFolders::Name as i32, ColumnsEmptyFolders::Path as i32, &gui_data);
|
||||
}
|
||||
"scrolled_window_main_empty_files_finder" => {
|
||||
NotebookMainEnum::EmptyFiles => {
|
||||
basic_remove(&scrolled_window_main_empty_files_finder.clone(), ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32, &gui_data);
|
||||
}
|
||||
"scrolled_window_main_temporary_files_finder" => {
|
||||
NotebookMainEnum::Temporary => {
|
||||
basic_remove(&scrolled_window_main_temporary_files_finder.clone(), ColumnsTemporaryFiles::Name as i32, ColumnsTemporaryFiles::Path as i32, &gui_data);
|
||||
}
|
||||
"notebook_big_main_file_finder" => {
|
||||
NotebookMainEnum::BigFiles => {
|
||||
basic_remove(&scrolled_window_big_files_finder.clone(), ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, &gui_data);
|
||||
}
|
||||
"notebook_main_similar_images_finder_label" => {
|
||||
NotebookMainEnum::SimilarImages => {
|
||||
tree_remove(
|
||||
&scrolled_window_similar_images_finder.clone(),
|
||||
ColumnsSimilarImages::Name as i32,
|
||||
|
@ -77,19 +77,17 @@ pub fn connect_button_delete(gui_data: &GuiData) {
|
|||
ColumnsSimilarImages::Color as i32,
|
||||
&gui_data,
|
||||
);
|
||||
// let list_store = get_list_store(&scrolled_window_similar_images_finder);
|
||||
image_preview_similar_images.hide();
|
||||
}
|
||||
"notebook_main_zeroed_files_finder" => {
|
||||
NotebookMainEnum::Zeroed => {
|
||||
basic_remove(&scrolled_window_zeroed_files_finder.clone(), ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, &gui_data);
|
||||
}
|
||||
"notebook_main_same_music_finder" => {
|
||||
NotebookMainEnum::SameMusic => {
|
||||
tree_remove(&scrolled_window_same_music_finder.clone(), ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, ColumnsSameMusic::Color as i32, &gui_data);
|
||||
}
|
||||
"scrolled_window_invalid_symlinks" => {
|
||||
NotebookMainEnum::Symlinks => {
|
||||
basic_remove(&scrolled_window_invalid_symlinks.clone(), ColumnsInvalidSymlinks::Name as i32, ColumnsInvalidSymlinks::Path as i32, &gui_data);
|
||||
}
|
||||
e => panic!("Not existent {}", e),
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -106,8 +104,6 @@ pub fn empty_folder_remover(scrolled_window: >k::ScrolledWindow, column_file_n
|
|||
}
|
||||
let list_store = get_list_store(&scrolled_window);
|
||||
|
||||
// let new_tree_model = TreeModel::new(); // TODO - maybe create new model when inserting a new data, because this seems to be not optimal when using thousands of rows
|
||||
|
||||
let mut messages: String = "".to_string();
|
||||
|
||||
// Must be deleted from end to start, because when deleting entries, TreePath(and also TreeIter) will points to invalid data
|
||||
|
@ -192,8 +188,6 @@ pub fn basic_remove(scrolled_window: >k::ScrolledWindow, column_file_name: i32
|
|||
}
|
||||
let list_store = get_list_store(&scrolled_window);
|
||||
|
||||
// let new_tree_model = TreeModel::new(); // TODO - maybe create new model when inserting a new data, because this seems to be not optimal when using thousands of rows
|
||||
|
||||
let mut messages: String = "".to_string();
|
||||
|
||||
// Must be deleted from end to start, because when deleting entries, TreePath(and also TreeIter) will points to invalid data
|
||||
|
@ -214,7 +208,6 @@ pub fn basic_remove(scrolled_window: >k::ScrolledWindow, column_file_name: i32
|
|||
}
|
||||
|
||||
// Remove all occurrences - remove every element which have same path and name as even non selected ones
|
||||
//
|
||||
pub fn tree_remove(scrolled_window: >k::ScrolledWindow, column_file_name: i32, column_path: i32, column_color: i32, gui_data: &GuiData) {
|
||||
let text_view_errors = gui_data.text_view_errors.clone();
|
||||
|
||||
|
@ -227,8 +220,6 @@ pub fn tree_remove(scrolled_window: >k::ScrolledWindow, column_file_name: i32,
|
|||
}
|
||||
let list_store = get_list_store(&scrolled_window);
|
||||
|
||||
// let new_tree_model = TreeModel::new(); // TODO - maybe create new model when inserting a new data, because this seems to be not optimal when using thousands of rows
|
||||
|
||||
let mut messages: String = "".to_string();
|
||||
|
||||
let mut vec_path_to_delete: Vec<(String, String)> = Vec::new();
|
||||
|
@ -243,7 +234,6 @@ pub fn tree_remove(scrolled_window: >k::ScrolledWindow, column_file_name: i32,
|
|||
|
||||
map_with_path_to_delete.entry(path.clone()).or_insert_with(Vec::new);
|
||||
map_with_path_to_delete.get_mut(path.as_str()).unwrap().push(file_name);
|
||||
// vec_path_to_delete.push((path, file_name));
|
||||
}
|
||||
|
||||
// Delete duplicated entries, and remove real files
|
||||
|
@ -267,14 +257,14 @@ pub fn tree_remove(scrolled_window: >k::ScrolledWindow, column_file_name: i32,
|
|||
let mut vec_tree_path_to_delete: Vec<gtk::TreePath> = Vec::new();
|
||||
let mut current_iter = first_iter;
|
||||
if tree_model.get_value(¤t_iter, column_color).get::<String>().unwrap().unwrap() != HEADER_ROW_COLOR {
|
||||
panic!(); // First element should be header
|
||||
panic!("First deleted element, should be a header"); // First element should be header
|
||||
};
|
||||
|
||||
let mut next_iter;
|
||||
let mut next_next_iter;
|
||||
'main: loop {
|
||||
if tree_model.get_value(¤t_iter, column_color).get::<String>().unwrap().unwrap() != HEADER_ROW_COLOR {
|
||||
panic!(); // First element should be header
|
||||
panic!("First deleted element, should be a header"); // First element should be header
|
||||
};
|
||||
|
||||
next_iter = current_iter.clone();
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
extern crate gtk;
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::notebook_enums::*;
|
||||
use czkawka_core::common_traits::SaveResults;
|
||||
use gtk::prelude::*;
|
||||
|
||||
|
@ -15,76 +16,61 @@ pub fn connect_button_save(gui_data: &GuiData) {
|
|||
let shared_same_music_state = gui_data.shared_same_music_state.clone();
|
||||
let shared_zeroed_files_state = gui_data.shared_zeroed_files_state.clone();
|
||||
let shared_same_invalid_symlinks = gui_data.shared_same_invalid_symlinks.clone();
|
||||
let notebook_main_children_names = gui_data.notebook_main_children_names.clone();
|
||||
let notebook_main = gui_data.notebook_main.clone();
|
||||
buttons_save.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" => {
|
||||
let file_name = "results_duplicates.txt";
|
||||
buttons_save.connect_clicked(move |_| {
|
||||
let file_name;
|
||||
|
||||
shared_duplication_state.borrow_mut().save_results_to_file(file_name);
|
||||
match to_notebook_main_enum(notebook_main.get_current_page().unwrap()) {
|
||||
NotebookMainEnum::Duplicate => {
|
||||
file_name = "results_duplicates.txt";
|
||||
|
||||
post_save_things(file_name, "duplicate", &gui_data);
|
||||
shared_duplication_state.borrow_mut().save_results_to_file(file_name);
|
||||
}
|
||||
NotebookMainEnum::EmptyDirectories => {
|
||||
file_name = "results_empty_folder.txt";
|
||||
|
||||
shared_empty_folders_state.borrow_mut().save_results_to_file(file_name);
|
||||
}
|
||||
NotebookMainEnum::EmptyFiles => {
|
||||
file_name = "results_empty_files.txt";
|
||||
|
||||
shared_empty_files_state.borrow_mut().save_results_to_file(file_name);
|
||||
}
|
||||
NotebookMainEnum::Temporary => {
|
||||
file_name = "results_temporary_files.txt";
|
||||
|
||||
shared_temporary_files_state.borrow_mut().save_results_to_file(file_name);
|
||||
}
|
||||
NotebookMainEnum::BigFiles => {
|
||||
file_name = "results_big_files.txt";
|
||||
|
||||
shared_big_files_state.borrow_mut().save_results_to_file(file_name);
|
||||
}
|
||||
NotebookMainEnum::SimilarImages => {
|
||||
file_name = "results_similar_images.txt";
|
||||
|
||||
shared_similar_images_state.borrow_mut().save_results_to_file(file_name);
|
||||
}
|
||||
NotebookMainEnum::Zeroed => {
|
||||
file_name = "results_zeroed_files.txt";
|
||||
|
||||
shared_zeroed_files_state.borrow_mut().save_results_to_file(file_name);
|
||||
}
|
||||
NotebookMainEnum::SameMusic => {
|
||||
file_name = "results_same_music.txt";
|
||||
|
||||
shared_same_music_state.borrow_mut().save_results_to_file(file_name);
|
||||
}
|
||||
NotebookMainEnum::Symlinks => {
|
||||
file_name = "results_invalid_symlinks.txt";
|
||||
|
||||
shared_same_invalid_symlinks.borrow_mut().save_results_to_file(file_name);
|
||||
}
|
||||
}
|
||||
"scrolled_window_main_empty_folder_finder" => {
|
||||
let file_name = "results_empty_folder.txt";
|
||||
|
||||
shared_empty_folders_state.borrow_mut().save_results_to_file(file_name);
|
||||
|
||||
post_save_things(file_name, "empty_folder", &gui_data);
|
||||
}
|
||||
"scrolled_window_main_empty_files_finder" => {
|
||||
let file_name = "results_empty_files.txt";
|
||||
|
||||
shared_empty_files_state.borrow_mut().save_results_to_file(file_name);
|
||||
|
||||
post_save_things(file_name, "empty_file", &gui_data);
|
||||
}
|
||||
"scrolled_window_main_temporary_files_finder" => {
|
||||
let file_name = "results_temporary_files.txt";
|
||||
|
||||
shared_temporary_files_state.borrow_mut().save_results_to_file(file_name);
|
||||
|
||||
post_save_things(file_name, "temporary_file", &gui_data);
|
||||
}
|
||||
"notebook_big_main_file_finder" => {
|
||||
let file_name = "results_big_files.txt";
|
||||
|
||||
shared_big_files_state.borrow_mut().save_results_to_file(file_name);
|
||||
|
||||
post_save_things(file_name, "big_file", &gui_data);
|
||||
}
|
||||
"notebook_main_similar_images_finder_label" => {
|
||||
let file_name = "results_similar_images.txt";
|
||||
|
||||
shared_similar_images_state.borrow_mut().save_results_to_file(file_name);
|
||||
|
||||
post_save_things(file_name, "similar_images", &gui_data);
|
||||
}
|
||||
"notebook_main_zeroed_files_finder" => {
|
||||
let file_name = "results_zeroed_files.txt";
|
||||
|
||||
shared_zeroed_files_state.borrow_mut().save_results_to_file(file_name);
|
||||
|
||||
post_save_things(file_name, "zeroed_files", &gui_data);
|
||||
}
|
||||
"notebook_main_same_music_finder" => {
|
||||
let file_name = "results_same_music.txt";
|
||||
|
||||
shared_same_music_state.borrow_mut().save_results_to_file(file_name);
|
||||
|
||||
post_save_things(file_name, "same_music", &gui_data);
|
||||
}
|
||||
"scrolled_window_invalid_symlinks" => {
|
||||
let file_name = "results_invalid_symlinks.txt";
|
||||
|
||||
shared_same_invalid_symlinks.borrow_mut().save_results_to_file(file_name);
|
||||
|
||||
post_save_things(file_name, "invalid_symlinks", &gui_data);
|
||||
}
|
||||
e => panic!("Not existent {}", e),
|
||||
post_save_things(file_name, &to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &gui_data);
|
||||
});
|
||||
}
|
||||
fn post_save_things(file_name: &str, type_of_tab: &str, gui_data: &GuiData) {
|
||||
fn post_save_things(file_name: &str, type_of_tab: &NotebookMainEnum, gui_data: &GuiData) {
|
||||
let entry_info = gui_data.entry_info.clone();
|
||||
let buttons_save = gui_data.buttons_save.clone();
|
||||
let shared_buttons = gui_data.shared_buttons.clone();
|
||||
|
|
|
@ -3,6 +3,7 @@ use czkawka_core::*;
|
|||
extern crate gtk;
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
use crate::notebook_enums::*;
|
||||
use czkawka_core::big_file::BigFile;
|
||||
use czkawka_core::duplicate::DuplicateFinder;
|
||||
use czkawka_core::empty_files::EmptyFiles;
|
||||
|
@ -34,7 +35,6 @@ pub fn connect_button_search(
|
|||
futures_sender_invalid_symlinks: futures::channel::mpsc::Sender<invalid_symlinks::ProgressData>,
|
||||
) {
|
||||
let entry_info = gui_data.entry_info.clone();
|
||||
let notebook_main_children_names = gui_data.notebook_main_children_names.clone();
|
||||
let notebook_main = gui_data.notebook_main.clone();
|
||||
let scrolled_window_included_directories = gui_data.scrolled_window_included_directories.clone();
|
||||
let scrolled_window_excluded_directories = gui_data.scrolled_window_excluded_directories.clone();
|
||||
|
@ -107,8 +107,8 @@ pub fn connect_button_search(
|
|||
|
||||
reset_text_view(&text_view_errors);
|
||||
|
||||
match notebook_main_children_names.get(notebook_main.get_current_page().unwrap() as usize).unwrap().as_str() {
|
||||
"notebook_main_duplicate_finder_label" => {
|
||||
match to_notebook_main_enum(notebook_main.get_current_page().unwrap()) {
|
||||
NotebookMainEnum::Duplicate => {
|
||||
label_stage.show();
|
||||
grid_progress_stages.show_all();
|
||||
dialog_progress.resize(1, 1);
|
||||
|
@ -147,7 +147,7 @@ pub fn connect_button_search(
|
|||
let _ = glib_stop_sender.send(Message::Duplicates(df));
|
||||
});
|
||||
}
|
||||
"scrolled_window_main_empty_files_finder" => {
|
||||
NotebookMainEnum::EmptyFiles => {
|
||||
label_stage.show();
|
||||
grid_progress_stages.hide();
|
||||
dialog_progress.resize(1, 1);
|
||||
|
@ -171,7 +171,7 @@ pub fn connect_button_search(
|
|||
let _ = glib_stop_sender.send(Message::EmptyFiles(vf));
|
||||
});
|
||||
}
|
||||
"scrolled_window_main_empty_folder_finder" => {
|
||||
NotebookMainEnum::EmptyDirectories => {
|
||||
label_stage.show();
|
||||
grid_progress_stages.hide();
|
||||
dialog_progress.resize(1, 1);
|
||||
|
@ -192,7 +192,7 @@ pub fn connect_button_search(
|
|||
let _ = glib_stop_sender.send(Message::EmptyFolders(ef));
|
||||
});
|
||||
}
|
||||
"notebook_big_main_file_finder" => {
|
||||
NotebookMainEnum::BigFiles => {
|
||||
label_stage.show();
|
||||
grid_progress_stages.hide();
|
||||
dialog_progress.resize(1, 1);
|
||||
|
@ -217,7 +217,7 @@ pub fn connect_button_search(
|
|||
let _ = glib_stop_sender.send(Message::BigFiles(bf));
|
||||
});
|
||||
}
|
||||
"scrolled_window_main_temporary_files_finder" => {
|
||||
NotebookMainEnum::Temporary => {
|
||||
label_stage.show();
|
||||
grid_progress_stages.hide();
|
||||
dialog_progress.resize(1, 1);
|
||||
|
@ -240,7 +240,7 @@ pub fn connect_button_search(
|
|||
let _ = glib_stop_sender.send(Message::Temporary(tf));
|
||||
});
|
||||
}
|
||||
"notebook_main_similar_images_finder_label" => {
|
||||
NotebookMainEnum::SimilarImages => {
|
||||
image_preview_similar_images.hide();
|
||||
|
||||
label_stage.show();
|
||||
|
@ -286,7 +286,7 @@ pub fn connect_button_search(
|
|||
let _ = glib_stop_sender.send(Message::SimilarImages(sf));
|
||||
});
|
||||
}
|
||||
"notebook_main_zeroed_files_finder" => {
|
||||
NotebookMainEnum::Zeroed => {
|
||||
label_stage.show();
|
||||
grid_progress_stages.show_all();
|
||||
dialog_progress.resize(1, 1);
|
||||
|
@ -310,7 +310,7 @@ pub fn connect_button_search(
|
|||
let _ = glib_stop_sender.send(Message::ZeroedFiles(zf));
|
||||
});
|
||||
}
|
||||
"notebook_main_same_music_finder" => {
|
||||
NotebookMainEnum::SameMusic => {
|
||||
label_stage.show();
|
||||
grid_progress_stages.show_all();
|
||||
dialog_progress.resize(1, 1);
|
||||
|
@ -357,12 +357,12 @@ pub fn connect_button_search(
|
|||
});
|
||||
} else {
|
||||
notebook_main.set_sensitive(true);
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("same_music").unwrap(), &buttons_array, &buttons_names);
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SameMusic).unwrap(), &buttons_array, &buttons_names);
|
||||
entry_info.set_text("ERROR: You must select at least one checkbox with music searching types.");
|
||||
show_dialog.store(false, Ordering::Relaxed);
|
||||
}
|
||||
}
|
||||
"scrolled_window_invalid_symlinks" => {
|
||||
NotebookMainEnum::Symlinks => {
|
||||
label_stage.show();
|
||||
grid_progress_stages.hide();
|
||||
dialog_progress.resize(1, 1);
|
||||
|
@ -384,7 +384,6 @@ pub fn connect_button_search(
|
|||
let _ = glib_stop_sender.send(Message::InvalidSymlinks(isf));
|
||||
});
|
||||
}
|
||||
e => panic!("Not existent {}", e),
|
||||
}
|
||||
|
||||
// Show progress dialog
|
||||
|
|
|
@ -1,72 +1,50 @@
|
|||
extern crate gtk;
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::notebook_enums::*;
|
||||
use gtk::prelude::*;
|
||||
use std::collections::HashMap;
|
||||
// TODO Replace `all`, `image_size` etc. with this
|
||||
// pub enum PopoverType {
|
||||
// All,
|
||||
// ImageSize,
|
||||
// Reverse,
|
||||
// Custom,
|
||||
// Date,
|
||||
// }
|
||||
|
||||
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();
|
||||
let mut hashmap: HashMap<NotebookMainEnum, 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"]);
|
||||
{
|
||||
// Remember to update connect_popovers file, because this data are connected to each others
|
||||
hashmap.insert(NotebookMainEnum::SimilarImages, vec!["all", "image_size", "reverse", "custom", "date"]);
|
||||
hashmap.insert(NotebookMainEnum::Duplicate, vec!["all", "reverse", "custom", "date"]);
|
||||
hashmap.insert(NotebookMainEnum::SameMusic, 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"]);
|
||||
hashmap.insert(NotebookMainEnum::EmptyFiles, vec!["all", "reverse", "custom"]);
|
||||
hashmap.insert(NotebookMainEnum::EmptyDirectories, vec!["all", "reverse", "custom"]);
|
||||
hashmap.insert(NotebookMainEnum::BigFiles, vec!["all", "reverse", "custom"]);
|
||||
hashmap.insert(NotebookMainEnum::Symlinks, vec!["all", "reverse", "custom"]);
|
||||
hashmap.insert(NotebookMainEnum::Zeroed, vec!["all", "reverse", "custom"]);
|
||||
hashmap.insert(NotebookMainEnum::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 = gui_data.popover_select.clone();
|
||||
let buttons_select = gui_data.buttons_select.clone();
|
||||
|
||||
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),
|
||||
}
|
||||
show_required_popovers(&gui_data, current_mode, &hashmap);
|
||||
show_required_popovers(&gui_data, &to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &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>>) {
|
||||
fn show_required_popovers(gui_data: &GuiData, current_mode: &NotebookMainEnum, hashmap: &HashMap<NotebookMainEnum, 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();
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
extern crate gtk;
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
use crate::notebook_enums::*;
|
||||
use gtk::prelude::*;
|
||||
use gtk::{TreeIter, TreePath};
|
||||
use std::fs;
|
||||
|
@ -10,7 +11,6 @@ pub fn connect_button_symlink(gui_data: &GuiData) {
|
|||
|
||||
let buttons_symlink = gui_data.buttons_symlink.clone();
|
||||
let notebook_main = gui_data.notebook_main.clone();
|
||||
let notebook_main_children_names = gui_data.notebook_main_children_names.clone();
|
||||
|
||||
let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
|
||||
let scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone();
|
||||
|
@ -18,14 +18,14 @@ pub fn connect_button_symlink(gui_data: &GuiData) {
|
|||
|
||||
let image_preview_similar_images = gui_data.image_preview_similar_images.clone();
|
||||
|
||||
buttons_symlink.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" => {
|
||||
buttons_symlink.connect_clicked(move |_| match to_notebook_main_enum(notebook_main.get_current_page().unwrap()) {
|
||||
NotebookMainEnum::Duplicate => {
|
||||
symlink(scrolled_window_duplicate_finder.clone(), ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, ColumnsDuplicates::Color as i32, &gui_data);
|
||||
}
|
||||
"notebook_main_same_music_finder" => {
|
||||
NotebookMainEnum::SameMusic => {
|
||||
symlink(scrolled_window_same_music_finder.clone(), ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, ColumnsSameMusic::Color as i32, &gui_data);
|
||||
}
|
||||
"notebook_main_similar_images_finder_label" => {
|
||||
NotebookMainEnum::SimilarImages => {
|
||||
symlink(
|
||||
scrolled_window_similar_images_finder.clone(),
|
||||
ColumnsSimilarImages::Name as i32,
|
||||
|
@ -35,7 +35,7 @@ pub fn connect_button_symlink(gui_data: &GuiData) {
|
|||
);
|
||||
image_preview_similar_images.hide();
|
||||
}
|
||||
e => panic!("Not existent {}", e),
|
||||
e => panic!("Not existent {:?}", e),
|
||||
});
|
||||
}
|
||||
fn symlink(scrolled_window: gtk::ScrolledWindow, column_file_name: i32, column_path: i32, column_color: i32, gui_data: &GuiData) {
|
||||
|
|
|
@ -3,6 +3,7 @@ use humansize::{file_size_opts as options, FileSize};
|
|||
extern crate gtk;
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
use crate::notebook_enums::*;
|
||||
use chrono::NaiveDateTime;
|
||||
use czkawka_core::duplicate::CheckingMethod;
|
||||
use czkawka_core::same_music::MusicSimilarity;
|
||||
|
@ -186,17 +187,17 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
|
|||
*shared_duplication_state.borrow_mut() = df;
|
||||
|
||||
if duplicates_number > 0 {
|
||||
*shared_buttons.borrow_mut().get_mut("duplicate").unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("duplicate").unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("duplicate").unwrap().get_mut("select").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("duplicate").unwrap().get_mut("symlink").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Duplicate).unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Duplicate).unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Duplicate).unwrap().get_mut("select").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Duplicate).unwrap().get_mut("symlink").unwrap() = true;
|
||||
} else {
|
||||
*shared_buttons.borrow_mut().get_mut("duplicate").unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("duplicate").unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("duplicate").unwrap().get_mut("select").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("duplicate").unwrap().get_mut("symlink").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Duplicate).unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Duplicate).unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Duplicate).unwrap().get_mut("select").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Duplicate).unwrap().get_mut("symlink").unwrap() = false;
|
||||
}
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("duplicate").unwrap(), &buttons_array, &buttons_names);
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Duplicate).unwrap(), &buttons_array, &buttons_names);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -232,15 +233,15 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
|
|||
*shared_empty_folders_state.borrow_mut() = ef;
|
||||
|
||||
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;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::EmptyDirectories).unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::EmptyDirectories).unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::EmptyDirectories).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;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::EmptyDirectories).unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::EmptyDirectories).unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::EmptyDirectories).unwrap().get_mut("select").unwrap() = false;
|
||||
}
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("empty_folder").unwrap(), &buttons_array, &buttons_names);
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::EmptyDirectories).unwrap(), &buttons_array, &buttons_names);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -276,15 +277,15 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
|
|||
*shared_empty_files_state.borrow_mut() = vf;
|
||||
|
||||
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;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::EmptyFiles).unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::EmptyFiles).unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::EmptyFiles).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;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::EmptyFiles).unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::EmptyFiles).unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::EmptyFiles).unwrap().get_mut("select").unwrap() = false;
|
||||
}
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("empty_file").unwrap(), &buttons_array, &buttons_names);
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::EmptyFiles).unwrap(), &buttons_array, &buttons_names);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -327,15 +328,15 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
|
|||
*shared_big_files_state.borrow_mut() = bf;
|
||||
|
||||
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;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::BigFiles).unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::BigFiles).unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::BigFiles).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;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::BigFiles).unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::BigFiles).unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::BigFiles).unwrap().get_mut("select").unwrap() = false;
|
||||
}
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("big_file").unwrap(), &buttons_array, &buttons_names);
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::BigFiles).unwrap(), &buttons_array, &buttons_names);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -371,15 +372,15 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
|
|||
*shared_temporary_files_state.borrow_mut() = tf;
|
||||
|
||||
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;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Temporary).unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Temporary).unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Temporary).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;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Temporary).unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Temporary).unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Temporary).unwrap().get_mut("select").unwrap() = false;
|
||||
}
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("temporary_file").unwrap(), &buttons_array, &buttons_names);
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Temporary).unwrap(), &buttons_array, &buttons_names);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -445,17 +446,17 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
|
|||
*shared_similar_images_state.borrow_mut() = sf;
|
||||
|
||||
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;
|
||||
*shared_buttons.borrow_mut().get_mut("similar_images").unwrap().get_mut("symlink").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SimilarImages).unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SimilarImages).unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SimilarImages).unwrap().get_mut("select").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SimilarImages).unwrap().get_mut("symlink").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;
|
||||
*shared_buttons.borrow_mut().get_mut("similar_images").unwrap().get_mut("symlink").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SimilarImages).unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SimilarImages).unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SimilarImages).unwrap().get_mut("select").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SimilarImages).unwrap().get_mut("symlink").unwrap() = false;
|
||||
}
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("similar_images").unwrap(), &buttons_array, &buttons_names);
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SimilarImages).unwrap(), &buttons_array, &buttons_names);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -497,15 +498,15 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
|
|||
*shared_zeroed_files_state.borrow_mut() = zf;
|
||||
|
||||
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;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Zeroed).unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Zeroed).unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Zeroed).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;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Zeroed).unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Zeroed).unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Zeroed).unwrap().get_mut("select").unwrap() = false;
|
||||
}
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("zeroed_files").unwrap(), &buttons_array, &buttons_names);
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Zeroed).unwrap(), &buttons_array, &buttons_names);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -598,17 +599,17 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
|
|||
*shared_same_music_state.borrow_mut() = mf;
|
||||
|
||||
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;
|
||||
*shared_buttons.borrow_mut().get_mut("same_music").unwrap().get_mut("symlink").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SameMusic).unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SameMusic).unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SameMusic).unwrap().get_mut("select").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SameMusic).unwrap().get_mut("symlink").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;
|
||||
*shared_buttons.borrow_mut().get_mut("same_music").unwrap().get_mut("symlink").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SameMusic).unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SameMusic).unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SameMusic).unwrap().get_mut("select").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SameMusic).unwrap().get_mut("symlink").unwrap() = false;
|
||||
}
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("same_music").unwrap(), &buttons_array, &buttons_names);
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::SameMusic).unwrap(), &buttons_array, &buttons_names);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -650,15 +651,15 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
|
|||
*shared_same_invalid_symlinks.borrow_mut() = ifs;
|
||||
|
||||
if invalid_symlinks > 0 {
|
||||
*shared_buttons.borrow_mut().get_mut("invalid_symlinks").unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("invalid_symlinks").unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut("invalid_symlinks").unwrap().get_mut("select").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Symlinks).unwrap().get_mut("save").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Symlinks).unwrap().get_mut("delete").unwrap() = true;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Symlinks).unwrap().get_mut("select").unwrap() = true;
|
||||
} else {
|
||||
*shared_buttons.borrow_mut().get_mut("invalid_symlinks").unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("invalid_symlinks").unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut("invalid_symlinks").unwrap().get_mut("select").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Symlinks).unwrap().get_mut("save").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Symlinks).unwrap().get_mut("delete").unwrap() = false;
|
||||
*shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Symlinks).unwrap().get_mut("select").unwrap() = false;
|
||||
}
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut("invalid_symlinks").unwrap(), &buttons_array, &buttons_names);
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut(&NotebookMainEnum::Symlinks).unwrap(), &buttons_array, &buttons_names);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,61 +1,27 @@
|
|||
extern crate gtk;
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
use crate::notebook_enums::*;
|
||||
use gtk::prelude::*;
|
||||
use std::collections::HashMap;
|
||||
|
||||
pub fn connect_notebook_tabs(gui_data: &GuiData) {
|
||||
let shared_buttons = gui_data.shared_buttons.clone();
|
||||
let buttons_array = gui_data.buttons_array.clone();
|
||||
let notebook_main_children_names = gui_data.notebook_main_children_names.clone();
|
||||
let notebook_main_clone = gui_data.notebook_main.clone();
|
||||
let buttons_names = gui_data.buttons_names.clone();
|
||||
let upper_notebooks_labels = gui_data.upper_notebooks_labels.clone();
|
||||
let shared_upper_notebooks = gui_data.shared_upper_notebooks.clone();
|
||||
let notebook_upper = gui_data.notebook_upper.clone();
|
||||
let notebook_upper_children_names = gui_data.notebook_upper_children_names.clone();
|
||||
|
||||
// TODO Remove this because disabling it doesn't works
|
||||
// Remove on Windows last tab(Invalid symlinks) because is not available
|
||||
// if cfg!(target_family = "windows") {
|
||||
// for (index, widget) in notebook_main_clone.get_children().iter().enumerate() {
|
||||
// if widget.get_buildable_name() == Some("scrolled_window_invalid_symlinks".to_string()) {
|
||||
// notebook_main_clone.remove_page(Some(index as u32));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
notebook_main_clone.connect_switch_page(move |_, _, number| {
|
||||
let page: &str;
|
||||
match notebook_main_children_names.get(number as usize).unwrap().as_str() {
|
||||
"notebook_main_duplicate_finder_label" => page = "duplicate",
|
||||
"scrolled_window_main_empty_folder_finder" => page = "empty_folder",
|
||||
"scrolled_window_main_empty_files_finder" => page = "empty_file",
|
||||
"scrolled_window_main_temporary_files_finder" => page = "temporary_file",
|
||||
"notebook_big_main_file_finder" => page = "big_file",
|
||||
"notebook_main_similar_images_finder_label" => page = "similar_images",
|
||||
"notebook_main_zeroed_files_finder" => page = "zeroed_files",
|
||||
"notebook_main_same_music_finder" => page = "same_music",
|
||||
"scrolled_window_invalid_symlinks" => page = "invalid_symlinks",
|
||||
e => {
|
||||
panic!("Not existent page {}", e);
|
||||
}
|
||||
};
|
||||
let current_tab_in_main_notebook = to_notebook_main_enum(number);
|
||||
|
||||
// Buttons
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut(page).unwrap(), &buttons_array, &buttons_names);
|
||||
set_buttons(&mut *shared_buttons.borrow_mut().get_mut(¤t_tab_in_main_notebook).unwrap(), &buttons_array, &buttons_names);
|
||||
|
||||
// Upper notebook
|
||||
{
|
||||
let mut hashmap: HashMap<&str, &str> = Default::default();
|
||||
hashmap.insert("notebook_upper_included_directories", "included_directories");
|
||||
hashmap.insert("notebook_upper_excluded_directories", "excluded_directories");
|
||||
hashmap.insert("notebook_upper_excluded_items", "excluded_items");
|
||||
hashmap.insert("notebook_upper_allowed_extensions", "allowed_extensions");
|
||||
hashmap.insert("notebook_upper_settings", "settings");
|
||||
|
||||
for tab in ¬ebook_upper_children_names {
|
||||
let name = hashmap.get(tab.as_str()).unwrap().to_string();
|
||||
let index = upper_notebooks_labels.iter().position(|x| *x == name).unwrap();
|
||||
if *shared_upper_notebooks.borrow_mut().get_mut(page).unwrap().get_mut(&name).unwrap() {
|
||||
for (index, upper_tab) in get_all_upper_tabs().iter().enumerate() {
|
||||
if *shared_upper_notebooks.borrow_mut().get_mut(¤t_tab_in_main_notebook).unwrap().get_mut(upper_tab).unwrap() {
|
||||
notebook_upper.get_children().get(index).unwrap().show();
|
||||
} else {
|
||||
notebook_upper.get_children().get(index).unwrap().hide();
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
extern crate gtk;
|
||||
use crate::gui_data::GuiData;
|
||||
use crate::help_functions::*;
|
||||
use crate::notebook_enums::*;
|
||||
use czkawka_core::common::Common;
|
||||
use gtk::prelude::*;
|
||||
use gtk::TreeIter;
|
||||
|
@ -652,7 +653,7 @@ fn popover_all_except_smallest(popover: >k::Popover, scrolled_window: >k::Sc
|
|||
|
||||
#[derive(Clone)]
|
||||
pub struct PopoverObject {
|
||||
pub name: String,
|
||||
pub notebook_type: NotebookMainEnum,
|
||||
pub available_modes: Vec<String>,
|
||||
pub scrolled_windows: gtk::ScrolledWindow,
|
||||
pub column_path: Option<i32>,
|
||||
|
@ -664,9 +665,9 @@ pub struct PopoverObject {
|
|||
pub column_modification_as_secs: Option<i32>,
|
||||
}
|
||||
|
||||
pub fn find_name(name: &str, vec: &[PopoverObject]) -> Option<PopoverObject> {
|
||||
pub fn find_name(notebook_type: &NotebookMainEnum, vec: &[PopoverObject]) -> Option<PopoverObject> {
|
||||
for e in vec {
|
||||
if e.name == *name {
|
||||
if e.notebook_type == *notebook_type {
|
||||
return Some(e.clone());
|
||||
}
|
||||
}
|
||||
|
@ -676,7 +677,7 @@ pub fn find_name(name: &str, vec: &[PopoverObject]) -> Option<PopoverObject> {
|
|||
pub fn connect_popovers(gui_data: &GuiData) {
|
||||
let popover_objects = vec![
|
||||
PopoverObject {
|
||||
name: "notebook_main_duplicate_finder_label".to_string(),
|
||||
notebook_type: NotebookMainEnum::Duplicate,
|
||||
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),
|
||||
|
@ -688,7 +689,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
|
|||
column_modification_as_secs: Some(ColumnsDuplicates::ModificationAsSecs as i32),
|
||||
},
|
||||
PopoverObject {
|
||||
name: "notebook_main_same_music_finder".to_string(),
|
||||
notebook_type: NotebookMainEnum::SameMusic,
|
||||
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),
|
||||
|
@ -700,7 +701,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
|
|||
column_modification_as_secs: Some(ColumnsSameMusic::ModificationAsSecs as i32),
|
||||
},
|
||||
PopoverObject {
|
||||
name: "notebook_main_similar_images_finder_label".to_string(),
|
||||
notebook_type: NotebookMainEnum::SimilarImages,
|
||||
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),
|
||||
|
@ -712,7 +713,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
|
|||
column_modification_as_secs: Some(ColumnsSimilarImages::ModificationAsSecs as i32),
|
||||
},
|
||||
PopoverObject {
|
||||
name: "scrolled_window_main_empty_folder_finder".to_string(),
|
||||
notebook_type: NotebookMainEnum::EmptyDirectories,
|
||||
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),
|
||||
|
@ -724,7 +725,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
|
|||
column_modification_as_secs: None,
|
||||
},
|
||||
PopoverObject {
|
||||
name: "scrolled_window_main_empty_files_finder".to_string(),
|
||||
notebook_type: NotebookMainEnum::EmptyFiles,
|
||||
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),
|
||||
|
@ -736,7 +737,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
|
|||
column_modification_as_secs: None,
|
||||
},
|
||||
PopoverObject {
|
||||
name: "scrolled_window_main_temporary_files_finder".to_string(),
|
||||
notebook_type: NotebookMainEnum::Temporary,
|
||||
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),
|
||||
|
@ -748,7 +749,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
|
|||
column_modification_as_secs: None,
|
||||
},
|
||||
PopoverObject {
|
||||
name: "notebook_big_main_file_finder".to_string(),
|
||||
notebook_type: NotebookMainEnum::BigFiles,
|
||||
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),
|
||||
|
@ -760,7 +761,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
|
|||
column_modification_as_secs: None,
|
||||
},
|
||||
PopoverObject {
|
||||
name: "notebook_main_zeroed_files_finder".to_string(),
|
||||
notebook_type: NotebookMainEnum::Zeroed,
|
||||
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),
|
||||
|
@ -774,42 +775,38 @@ pub fn connect_popovers(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 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();
|
||||
let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().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();
|
||||
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();
|
||||
let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().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();
|
||||
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();
|
||||
let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().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();
|
||||
let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
|
||||
popover_all_except_oldest(
|
||||
&popover_select,
|
||||
&object_popover.scrolled_windows,
|
||||
|
@ -820,12 +817,11 @@ pub fn connect_popovers(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_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();
|
||||
let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
|
||||
popover_all_except_newest(
|
||||
&popover_select,
|
||||
&object_popover.scrolled_windows,
|
||||
|
@ -836,12 +832,11 @@ pub fn connect_popovers(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_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();
|
||||
let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
|
||||
popover_one_oldest(
|
||||
&popover_select,
|
||||
&object_popover.scrolled_windows,
|
||||
|
@ -852,12 +847,11 @@ pub fn connect_popovers(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_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();
|
||||
let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
|
||||
popover_one_newest(
|
||||
&popover_select,
|
||||
&object_popover.scrolled_windows,
|
||||
|
@ -868,13 +862,12 @@ pub fn connect_popovers(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_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();
|
||||
let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
|
||||
popover_select_custom(
|
||||
&popover_select,
|
||||
&gui_data_clone,
|
||||
|
@ -886,13 +879,12 @@ pub fn connect_popovers(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_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();
|
||||
let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
|
||||
popover_unselect_custom(
|
||||
&popover_select,
|
||||
&gui_data_clone,
|
||||
|
@ -904,12 +896,11 @@ pub fn connect_popovers(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_images_except_biggest = gui_data.buttons_popover_select_all_images_except_biggest.clone();
|
||||
let notebook_main = gui_data.notebook_main.clone();
|
||||
let vec_popover_objects = popover_objects.clone();
|
||||
buttons_popover_select_all_images_except_biggest.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();
|
||||
let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
|
||||
popover_all_except_biggest(
|
||||
&popover_select,
|
||||
&object_popover.scrolled_windows,
|
||||
|
@ -920,12 +911,11 @@ pub fn connect_popovers(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_images_except_smallest = gui_data.buttons_popover_select_all_images_except_smallest.clone();
|
||||
let notebook_main = gui_data.notebook_main.clone();
|
||||
let vec_popover_objects = popover_objects; //.clone();
|
||||
buttons_popover_select_all_images_except_smallest.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();
|
||||
let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
|
||||
popover_all_except_smallest(
|
||||
&popover_select,
|
||||
&object_popover.scrolled_windows,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
extern crate gtk;
|
||||
use crate::notebook_enums::*;
|
||||
use crossbeam_channel::unbounded;
|
||||
use czkawka_core::big_file::BigFile;
|
||||
use czkawka_core::duplicate::DuplicateFinder;
|
||||
|
@ -25,15 +26,13 @@ pub struct GuiData {
|
|||
pub window_main: gtk::Window,
|
||||
|
||||
// States
|
||||
pub main_notebooks_labels: [String; 9],
|
||||
pub upper_notebooks_labels: [String; 5],
|
||||
pub buttons_labels: [String; 5],
|
||||
|
||||
// Buttons state
|
||||
pub shared_buttons: Rc<RefCell<HashMap<String, HashMap<String, bool>>>>,
|
||||
pub shared_buttons: Rc<RefCell<HashMap<NotebookMainEnum, HashMap<String, bool>>>>,
|
||||
|
||||
// Upper Notebook state
|
||||
pub shared_upper_notebooks: Rc<RefCell<HashMap<String, HashMap<String, bool>>>>,
|
||||
pub shared_upper_notebooks: Rc<RefCell<HashMap<NotebookMainEnum, HashMap<NotebookUpperEnum, bool>>>>,
|
||||
|
||||
// State of search results
|
||||
pub shared_duplication_state: Rc<RefCell<DuplicateFinder>>,
|
||||
|
@ -123,7 +122,6 @@ pub struct GuiData {
|
|||
pub notebook_main: gtk::Notebook,
|
||||
pub notebook_upper: gtk::Notebook,
|
||||
|
||||
pub notebook_main_children_names: Vec<String>,
|
||||
pub notebook_upper_children_names: Vec<String>,
|
||||
|
||||
//// Entry
|
||||
|
@ -194,33 +192,14 @@ impl GuiData {
|
|||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//// States
|
||||
let main_notebooks_labels = [
|
||||
"duplicate".to_string(),
|
||||
"empty_folder".to_string(),
|
||||
"empty_file".to_string(),
|
||||
"temporary_file".to_string(),
|
||||
"big_file".to_string(),
|
||||
"similar_images".to_string(),
|
||||
"zeroed_files".to_string(),
|
||||
"same_music".to_string(),
|
||||
"invalid_symlinks".to_string(),
|
||||
];
|
||||
let upper_notebooks_labels = [
|
||||
"included_directories".to_string(),
|
||||
"excluded_directories".to_string(),
|
||||
"excluded_items".to_string(),
|
||||
"allowed_extensions".to_string(),
|
||||
"settings".to_string(),
|
||||
];
|
||||
let buttons_labels = ["search".to_string(), "select".to_string(), "delete".to_string(), "save".to_string(), "symlink".to_string()];
|
||||
|
||||
// Buttons State - to remember existence of different buttons on pages
|
||||
|
||||
let shared_buttons: Rc<RefCell<_>> = Rc::new(RefCell::new(HashMap::<String, HashMap<String, bool>>::new()));
|
||||
shared_buttons.borrow_mut().clear();
|
||||
let shared_buttons: Rc<RefCell<_>> = Rc::new(RefCell::new(HashMap::<NotebookMainEnum, HashMap<String, bool>>::new()));
|
||||
|
||||
// Show by default only search button
|
||||
for i in main_notebooks_labels.iter() {
|
||||
for i in get_all_main_tabs().iter() {
|
||||
let mut temp_hashmap: HashMap<String, bool> = Default::default();
|
||||
for j in buttons_labels.iter() {
|
||||
if *j == "search" {
|
||||
|
@ -229,21 +208,21 @@ impl GuiData {
|
|||
temp_hashmap.insert(j.to_string(), false);
|
||||
}
|
||||
}
|
||||
shared_buttons.borrow_mut().insert(i.to_string(), temp_hashmap);
|
||||
shared_buttons.borrow_mut().insert(i.clone(), temp_hashmap);
|
||||
}
|
||||
|
||||
// Upper Notebook state
|
||||
let shared_upper_notebooks: Rc<RefCell<_>> = Rc::new(RefCell::new(HashMap::<String, HashMap<String, bool>>::new()));
|
||||
let shared_upper_notebooks: Rc<RefCell<_>> = Rc::new(RefCell::new(HashMap::<NotebookMainEnum, HashMap<NotebookUpperEnum, bool>>::new()));
|
||||
|
||||
for i in main_notebooks_labels.iter() {
|
||||
let mut temp_hashmap: HashMap<String, bool> = Default::default();
|
||||
for j in upper_notebooks_labels.iter() {
|
||||
temp_hashmap.insert(j.to_string(), true);
|
||||
for i in get_all_main_tabs().iter() {
|
||||
let mut temp_hashmap: HashMap<NotebookUpperEnum, bool> = Default::default();
|
||||
for j in get_all_upper_tabs().iter() {
|
||||
temp_hashmap.insert(j.clone(), true);
|
||||
}
|
||||
shared_upper_notebooks.borrow_mut().insert(i.to_string(), temp_hashmap);
|
||||
shared_upper_notebooks.borrow_mut().insert(i.clone(), temp_hashmap);
|
||||
}
|
||||
// Some upper notebook tabs are disabled
|
||||
*shared_upper_notebooks.borrow_mut().get_mut("temporary_file").unwrap().get_mut("allowed_extensions").unwrap() = false;
|
||||
*shared_upper_notebooks.borrow_mut().get_mut(&NotebookMainEnum::Temporary).unwrap().get_mut(&NotebookUpperEnum::AllowedExtensions).unwrap() = false;
|
||||
|
||||
// State of search results
|
||||
|
||||
|
@ -336,12 +315,8 @@ impl GuiData {
|
|||
let notebook_main: gtk::Notebook = builder.get_object("notebook_main").unwrap();
|
||||
let notebook_upper: gtk::Notebook = builder.get_object("notebook_upper").unwrap();
|
||||
|
||||
let mut notebook_main_children_names: Vec<String> = Vec::new();
|
||||
let mut notebook_upper_children_names: Vec<String> = Vec::new();
|
||||
|
||||
for i in notebook_main.get_children() {
|
||||
notebook_main_children_names.push(i.get_buildable_name().unwrap().to_string());
|
||||
}
|
||||
for i in notebook_upper.get_children() {
|
||||
notebook_upper_children_names.push(i.get_buildable_name().unwrap().to_string());
|
||||
}
|
||||
|
@ -406,8 +381,6 @@ impl GuiData {
|
|||
glade_src,
|
||||
builder,
|
||||
window_main,
|
||||
main_notebooks_labels,
|
||||
upper_notebooks_labels,
|
||||
buttons_labels,
|
||||
shared_buttons,
|
||||
shared_upper_notebooks,
|
||||
|
@ -477,7 +450,6 @@ impl GuiData {
|
|||
radio_button_similar_images_very_high,
|
||||
notebook_main,
|
||||
notebook_upper,
|
||||
notebook_main_children_names,
|
||||
notebook_upper_children_names,
|
||||
entry_info,
|
||||
text_view_errors,
|
||||
|
|
|
@ -222,13 +222,7 @@ pub fn select_function_similar_images(_tree_selection: >k::TreeSelection, tree
|
|||
pub fn set_buttons(hashmap: &mut HashMap<String, bool>, buttons_array: &[gtk::Button], button_names: &[String]) {
|
||||
for (index, button) in buttons_array.iter().enumerate() {
|
||||
if *hashmap.get_mut(button_names[index].as_str()).unwrap() {
|
||||
if cfg!(target_family = "windows") {
|
||||
if button_names[index] != "symlink" {
|
||||
button.show();
|
||||
}
|
||||
} else {
|
||||
button.show();
|
||||
}
|
||||
button.show();
|
||||
} else {
|
||||
button.hide();
|
||||
}
|
||||
|
@ -286,7 +280,7 @@ pub fn get_dialog_box_child(dialog: >k::Dialog) -> gtk::Box {
|
|||
pub fn change_dimension_to_krotka(dimensions: String) -> (u64, u64) {
|
||||
#[allow(clippy::single_char_pattern)]
|
||||
let vec = dimensions.split::<&str>("x").collect::<Vec<_>>();
|
||||
assert!(vec.len() == 2); // 400x400 - should only have two elements, if have more, then something is not good
|
||||
assert_eq!(vec.len(), 2); // 400x400 - should only have two elements, if have more, then something is not good
|
||||
let number1 = vec[0].parse::<u64>().expect("Invalid data in image dimension in position 0");
|
||||
let number2 = vec[1].parse::<u64>().expect("Invalid data in image dimension in position 1");
|
||||
(number1, number2)
|
||||
|
|
|
@ -19,6 +19,7 @@ mod double_click_opening;
|
|||
mod gui_data;
|
||||
mod help_functions;
|
||||
mod initialize_gui;
|
||||
mod notebook_enums;
|
||||
mod saving_loading;
|
||||
|
||||
use czkawka_core::*;
|
||||
|
|
65
czkawka_gui/src/notebook_enums.rs
Normal file
65
czkawka_gui/src/notebook_enums.rs
Normal file
|
@ -0,0 +1,65 @@
|
|||
pub const NUMBER_OF_NOTEBOOK_MAIN_TABS: usize = 9;
|
||||
pub const NUMBER_OF_NOTEBOOK_UPPER_TABS: usize = 5;
|
||||
|
||||
// Needs to be updated when changed order of notebook tabs
|
||||
#[derive(Eq, PartialEq, Hash, Clone, Debug)]
|
||||
pub enum NotebookMainEnum {
|
||||
Duplicate = 0,
|
||||
EmptyDirectories,
|
||||
BigFiles,
|
||||
EmptyFiles,
|
||||
Temporary,
|
||||
SimilarImages,
|
||||
SameMusic,
|
||||
Zeroed,
|
||||
Symlinks,
|
||||
}
|
||||
pub fn to_notebook_main_enum(notebook_number: u32) -> NotebookMainEnum {
|
||||
match notebook_number {
|
||||
0 => NotebookMainEnum::Duplicate,
|
||||
1 => NotebookMainEnum::EmptyDirectories,
|
||||
2 => NotebookMainEnum::BigFiles,
|
||||
3 => NotebookMainEnum::EmptyFiles,
|
||||
4 => NotebookMainEnum::Temporary,
|
||||
5 => NotebookMainEnum::SimilarImages,
|
||||
6 => NotebookMainEnum::SameMusic,
|
||||
7 => NotebookMainEnum::Zeroed,
|
||||
8 => NotebookMainEnum::Symlinks,
|
||||
_ => panic!("Invalid Notebook Tab"),
|
||||
}
|
||||
}
|
||||
pub fn get_all_main_tabs() -> [NotebookMainEnum; NUMBER_OF_NOTEBOOK_MAIN_TABS] {
|
||||
[
|
||||
to_notebook_main_enum(0),
|
||||
to_notebook_main_enum(1),
|
||||
to_notebook_main_enum(2),
|
||||
to_notebook_main_enum(3),
|
||||
to_notebook_main_enum(4),
|
||||
to_notebook_main_enum(5),
|
||||
to_notebook_main_enum(6),
|
||||
to_notebook_main_enum(7),
|
||||
to_notebook_main_enum(8),
|
||||
]
|
||||
}
|
||||
|
||||
#[derive(Eq, PartialEq, Hash, Clone, Debug)]
|
||||
pub enum NotebookUpperEnum {
|
||||
IncludedDirectories = 0,
|
||||
ExcludedDirectories,
|
||||
ExcludedItems,
|
||||
AllowedExtensions,
|
||||
Settings,
|
||||
}
|
||||
pub fn to_notebook_upper_enum(notebook_number: u32) -> NotebookUpperEnum {
|
||||
match notebook_number {
|
||||
0 => NotebookUpperEnum::IncludedDirectories,
|
||||
1 => NotebookUpperEnum::ExcludedDirectories,
|
||||
2 => NotebookUpperEnum::ExcludedItems,
|
||||
3 => NotebookUpperEnum::AllowedExtensions,
|
||||
4 => NotebookUpperEnum::Settings,
|
||||
_ => panic!("Invalid Upper Notebook Tab"),
|
||||
}
|
||||
}
|
||||
pub fn get_all_upper_tabs() -> [NotebookUpperEnum; NUMBER_OF_NOTEBOOK_UPPER_TABS] {
|
||||
[to_notebook_upper_enum(0), to_notebook_upper_enum(1), to_notebook_upper_enum(2), to_notebook_upper_enum(3), to_notebook_upper_enum(4)]
|
||||
}
|
Loading…
Reference in a new issue