From b91a115eacf0d3cdfbe50d2e6c2c19ae4eb69ab6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mikrut?= Date: Tue, 29 Sep 2020 20:19:36 +0200 Subject: [PATCH] Fixes missing multiple values in excluded and included directories Added support for recursive button --- czkawka_gui/czkawka.glade | 4 +- czkawka_gui/src/help_functions.rs | 17 ++++- czkawka_gui/src/main.rs | 105 +++++++++++++++++++----------- 3 files changed, 83 insertions(+), 43 deletions(-) diff --git a/czkawka_gui/czkawka.glade b/czkawka_gui/czkawka.glade index 4bfd775..8efdc98 100644 --- a/czkawka_gui/czkawka.glade +++ b/czkawka_gui/czkawka.glade @@ -309,7 +309,7 @@ Author: Rafał Mikrut - + Recursive True True @@ -557,7 +557,7 @@ Author: Rafał Mikrut True True - */.git,*/node_modules,/proc/*,/dev/*,*/lost+found + */.git,*/node_modules,*/lost+found True diff --git a/czkawka_gui/src/help_functions.rs b/czkawka_gui/src/help_functions.rs index 35683ec..bbf2a39 100644 --- a/czkawka_gui/src/help_functions.rs +++ b/czkawka_gui/src/help_functions.rs @@ -102,13 +102,24 @@ pub fn create_tree_view_directories(tree_view_directories: &mut gtk::TreeView) { pub fn get_string_from_list_store(scrolled_window: >k::ScrolledWindow) -> String { let tree_view: gtk::TreeView = scrolled_window.get_children().get(0).unwrap().clone().downcast::().unwrap(); let list_store: gtk::ListStore = tree_view.get_model().unwrap().downcast::().unwrap(); + let mut first: bool = true; + let mut return_string: String = "".to_string(); let tree_iter = match list_store.get_iter_first() { Some(t) => t, - None => return "".to_string(), + None => return return_string, }; - - list_store.get_value(&tree_iter, 0).get::().unwrap().unwrap() + loop { + if !first { + return_string += ","; + } else { + first = false; + } + return_string += list_store.get_value(&tree_iter, 0).get::().unwrap().unwrap().as_str(); + if !list_store.iter_next(&tree_iter) { + return return_string; + } + } } pub fn print_text_messages_to_text_view(text_messages: &Messages, text_view: >k::TextView) { let mut messages: String = String::from(""); diff --git a/czkawka_gui/src/main.rs b/czkawka_gui/src/main.rs index 615417e..03eeddb 100644 --- a/czkawka_gui/src/main.rs +++ b/czkawka_gui/src/main.rs @@ -89,6 +89,9 @@ fn main() { buttons_pause.hide(); buttons_select.hide(); + //// Check Buttons + let check_button_recursive: gtk::CheckButton = builder.get_object("check_button_recursive").unwrap(); + //// Notebooks let notebook_chooser_tool: gtk::Notebook = builder.get_object("notebook_chooser_tool").unwrap(); let mut notebook_chooser_tool_children_names: Vec = Vec::new(); @@ -122,8 +125,38 @@ fn main() { buttons_save.hide(); buttons_delete.hide(); - // Set treeview for - {} + // Set Main ScrolledWindow Treeviews + { + // Duplicate Files + { + let col_types: [glib::types::Type; 4] = [glib::types::Type::String, glib::types::Type::String, glib::types::Type::String, glib::types::Type::String]; + let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); + + let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store); + + tree_view.get_selection().set_mode(SelectionMode::Multiple); + tree_view.get_selection().set_select_function(Some(Box::new(select_function_3column))); + + create_tree_view_duplicates(&mut tree_view); + + scrolled_window_duplicate_finder.add(&tree_view); + scrolled_window_duplicate_finder.show_all(); + } + // Empty Folders + { + let col_types: [glib::types::Type; 4] = [glib::types::Type::String, glib::types::Type::String, glib::types::Type::String, glib::types::Type::String]; + let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); + + let mut tree_view: gtk::TreeView = TreeView::with_model(&list_store); + + tree_view.get_selection().set_mode(SelectionMode::Multiple); + + create_tree_view_empty_folders(&mut tree_view); + + scrolled_window_empty_folder_finder.add(&tree_view); + scrolled_window_empty_folder_finder.show_all(); + } + } // Set Included Directory { @@ -155,6 +188,13 @@ fn main() { create_tree_view_directories(&mut tree_view_excluded_directory); + let col_indices = [0, 1]; + + for i in ["/proc/", "/dev/"].iter() { + let values: [&dyn ToValue; 2] = [&i, &(MAIN_ROW_COLOR.to_string())]; + list_store.set(&list_store.append(), &col_indices, &values); + } + scrolled_window_excluded_directories.add(&tree_view_excluded_directory); scrolled_window_excluded_directories.show_all(); } @@ -258,6 +298,7 @@ fn main() { { df.set_included_directory(get_string_from_list_store(&scrolled_window_included_directories)); df.set_excluded_directory(get_string_from_list_store(&scrolled_window_excluded_directories)); + df.set_recursive_search(check_button_recursive.get_active()); df.set_excluded_items(entry_excluded_items.get_text().as_str().to_string()); df.set_allowed_extensions(entry_allowed_extensions.get_text().as_str().to_string()); df.set_min_file_size(match entry_duplicate_minimal_size.get_text().as_str().parse::() { @@ -295,19 +336,18 @@ fn main() { // Create GUI { - // Remove scrolled window from before - BUG - when doing it when view is scrolled, then scroll button disappears - for i in &scrolled_window_duplicate_finder.get_children() { - scrolled_window_duplicate_finder.remove(i); - } - - let col_types: [glib::types::Type; 4] = [glib::types::Type::String, glib::types::Type::String, glib::types::Type::String, glib::types::Type::String]; - let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); - - let mut tree_view_duplicate_finder: gtk::TreeView = TreeView::with_model(&list_store); - - tree_view_duplicate_finder.get_selection().set_mode(SelectionMode::Multiple); - - create_tree_view_duplicates(&mut tree_view_duplicate_finder); + let list_store = scrolled_window_duplicate_finder + .get_children() + .get(0) + .unwrap() + .clone() + .downcast::() + .unwrap() + .get_model() + .unwrap() + .downcast::() + .unwrap(); + list_store.clear(); let col_indices = [0, 1, 2, 3]; @@ -367,12 +407,6 @@ fn main() { } } - let tree_selection = tree_view_duplicate_finder.get_selection(); - tree_selection.set_select_function(Some(Box::new(select_function_3column))); - - scrolled_window_duplicate_finder.add(&tree_view_duplicate_finder); - scrolled_window_duplicate_finder.show_all(); - print_text_messages_to_text_view(&text_messages, &text_view_errors); } @@ -411,19 +445,18 @@ fn main() { // Create GUI { - // Remove scrolled window from before - BUG - when doing it when view is scrolled, then scroll button disappears - for i in &scrolled_window_empty_folder_finder.get_children() { - scrolled_window_empty_folder_finder.remove(i); - } - - let col_types: [glib::types::Type; 4] = [glib::types::Type::String, glib::types::Type::String, glib::types::Type::String, glib::types::Type::String]; - let list_store: gtk::ListStore = gtk::ListStore::new(&col_types); - - let mut tree_view_empty_folder_finder: gtk::TreeView = TreeView::with_model(&list_store); - - tree_view_empty_folder_finder.get_selection().set_mode(SelectionMode::Multiple); - - create_tree_view_empty_folders(&mut tree_view_empty_folder_finder); + let list_store = scrolled_window_empty_folder_finder + .get_children() + .get(0) + .unwrap() + .clone() + .downcast::() + .unwrap() + .get_model() + .unwrap() + .downcast::() + .unwrap(); + list_store.clear(); let col_indices = [0, 1, 2, 3]; @@ -440,10 +473,6 @@ fn main() { ]; list_store.set(&list_store.append(), &col_indices, &values); } - - scrolled_window_empty_folder_finder.add(&tree_view_empty_folder_finder); - scrolled_window_empty_folder_finder.show_all(); - print_text_messages_to_text_view(&text_messages, &text_view_errors); }