diff --git a/czkawka_core/src/empty_folder.rs b/czkawka_core/src/empty_folder.rs
index e1d8632..4b3e714 100644
--- a/czkawka_core/src/empty_folder.rs
+++ b/czkawka_core/src/empty_folder.rs
@@ -298,8 +298,7 @@ impl SaveResults for EmptyFolder {
if !self.empty_folder_list.is_empty() {
file.write_all(b"-------------------------------------------------Empty folder list-------------------------------------------------\n").unwrap();
- file.write_all(("Found ".to_string() + self.information.number_of_empty_folders.to_string().as_str() + " empty folders\n").as_bytes())
- .unwrap();
+ file.write_all(("Found ".to_string() + self.information.number_of_empty_folders.to_string().as_str() + " empty folders\n").as_bytes()).unwrap();
for name in self.empty_folder_list.keys() {
file.write_all((name.clone() + "\n").as_bytes()).unwrap();
}
diff --git a/czkawka_gui/Cargo.toml b/czkawka_gui/Cargo.toml
index 14bdc5a..2133c59 100644
--- a/czkawka_gui/Cargo.toml
+++ b/czkawka_gui/Cargo.toml
@@ -8,8 +8,6 @@ license = "MIT"
homepage = "https://github.com/qarmin/czkawka"
repository = "https://github.com/qarmin/czkawka"
-# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
-
[dependencies]
czkawka_core = { path = "../czkawka_core" }
gdk = "0.13.2"
@@ -23,5 +21,5 @@ chrono = "0.4"
[dependencies.gtk]
version = "0.9.2"
default-features = false # just in case
-features = ["v3_18"]
+features = ["v3_24"]
diff --git a/czkawka_gui/czkawka.glade b/czkawka_gui/czkawka.glade
index b4a4c98..e759658 100644
--- a/czkawka_gui/czkawka.glade
+++ b/czkawka_gui/czkawka.glade
@@ -1270,4 +1270,105 @@ Author: RafaĆ Mikrut
+
diff --git a/czkawka_gui/src/main.rs b/czkawka_gui/src/main.rs
index 06113ae..f69f040 100644
--- a/czkawka_gui/src/main.rs
+++ b/czkawka_gui/src/main.rs
@@ -6,6 +6,7 @@ use humansize::{file_size_opts as options, FileSize};
extern crate gtk;
use crate::help_functions::*;
use chrono::NaiveDateTime;
+use czkawka_core::common_traits::SaveResults;
use czkawka_core::duplicate::CheckingMethod;
use czkawka_core::empty_folder::EmptyFolder;
use duplicate::DuplicateFinder;
@@ -16,7 +17,6 @@ use std::collections::HashMap;
use std::rc::Rc;
use std::time::UNIX_EPOCH;
use std::{env, fs, process};
-use czkawka_core::common_traits::SaveResults;
fn main() {
// Printing version
@@ -89,15 +89,17 @@ fn main() {
let buttons_add_excluded_directory: gtk::Button = builder.get_object("buttons_add_excluded_directory").unwrap();
let buttons_remove_excluded_directory: gtk::Button = builder.get_object("buttons_remove_excluded_directory").unwrap();
- // Not used buttons for now
- buttons_stop.hide();
- buttons_resume.hide();
- buttons_pause.hide();
- buttons_select.hide();
+ // 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();
//// Popovers
- // let popover_select: gtk::Popover = builder.get_object("popover_select").unwrap();
- // let popover_select2: gtk::PopoverMenu = builder.get_object("popover_select2").unwrap();
+ let popover_select: gtk::Popover = builder.get_object("popover_select").unwrap();
//// Check Buttons
let check_button_recursive: gtk::CheckButton = builder.get_object("check_button_recursive").unwrap();
@@ -139,6 +141,10 @@ fn main() {
buttons_search.show();
buttons_save.hide();
buttons_delete.hide();
+ buttons_stop.hide();
+ buttons_resume.hide();
+ buttons_pause.hide();
+ buttons_select.hide();
// Set Main ScrolledWindow Treeviews
{
@@ -538,9 +544,9 @@ fn main() {
}
// Delete button
{
+ let scrolled_window_duplicate_finder = scrolled_window_duplicate_finder.clone();
let notebook_chooser_tool_children_names = notebook_chooser_tool_children_names.clone();
let notebook_chooser_tool = notebook_chooser_tool.clone();
- let text_view_errors = text_view_errors.clone();
buttons_delete.connect_clicked(move |_| match notebook_chooser_tool_children_names.get(notebook_chooser_tool.get_current_page().unwrap() as usize).unwrap().as_str() {
"notebook_duplicate_finder_label" => {
let tree_view = scrolled_window_duplicate_finder.get_children().get(0).unwrap().clone().downcast::().unwrap();
@@ -599,22 +605,13 @@ fn main() {
{
let notebook_chooser_tool_children_names = notebook_chooser_tool_children_names.clone();
let notebook_chooser_tool = notebook_chooser_tool.clone();
- buttons_select.connect_clicked(move |_| match notebook_chooser_tool_children_names.get(notebook_chooser_tool.get_current_page().unwrap() as usize).unwrap().as_str() {
+ let buttons_select_clone = buttons_select.clone();
+ let popover_select = popover_select.clone();
+ buttons_select_clone.connect_clicked(move |_| match notebook_chooser_tool_children_names.get(notebook_chooser_tool.get_current_page().unwrap() as usize).unwrap().as_str() {
"notebook_duplicate_finder_label" => {
- // let popover_select = gtk::PopoverMenu::new();
- // // popover_select.popup();
- // popover_select.show_all();
- println!("Printed");
- // let popover_menu = gtk::PopoverMenu::new();
- // let button_all_except_newest = gtk::Button::with_label("All except newest");
- // let button_all_except_oldest = gtk::Button::with_label("All except oldest");
- // let button_only_newest = gtk::Button::with_label("Only newest");
- // let button_only_oldest= gtk::Button::with_label("Only oldest");
- // popover_menu.set_child_position(&button_all_except_newest,0);
- // popover_menu.set_child_position(&button_all_except_oldest,1);
- // popover_menu.set_child_position(&button_only_newest,2);
- // popover_menu.set_child_position(&button_only_oldest,3);
- // popover_menu.popup();
+ // Only popup popup
+ popover_select.set_relative_to(Some(&buttons_select));
+ popover_select.popup();
}
"scrolled_window_empty_folder_finder" => {
// Do nothing
@@ -637,9 +634,7 @@ fn main() {
{
buttons_save.hide();
*shared_buttons.borrow_mut().get_mut("duplicate").unwrap().get_mut("save").unwrap() = false;
-
}
-
}
"scrolled_window_empty_folder_finder" => {
let file_name = "results_empty_folder.txt";
@@ -650,15 +645,42 @@ fn main() {
entry_info.set_text(format!("Saved results to file {}", file_name).as_str());
// Set state
{
- buttons_save.hide();
- *shared_buttons.borrow_mut().get_mut("empty_folder").unwrap().get_mut("save").unwrap() = false;
-
+ buttons_save.hide();
+ *shared_buttons.borrow_mut().get_mut("empty_folder").unwrap().get_mut("save").unwrap() = false;
}
}
e => panic!("Not existent {}", e),
});
}
}
+ // Popover Buttons
+ {
+ // Select all button
+ {
+ let scrolled_window_duplicate_finder = scrolled_window_duplicate_finder.clone();
+ let popover_select = popover_select.clone();
+ buttons_popover_select_all.connect_clicked(move |_| {
+ let tree_view = scrolled_window_duplicate_finder.get_children().get(0).unwrap().clone().downcast::().unwrap();
+ let selection = tree_view.get_selection();
+
+ selection.select_all();
+ popover_select.popdown();
+ });
+ }
+
+ // Unselect all button
+ {
+ // let scrolled_window_duplicate_finder = scrolled_window_duplicate_finder.clone();
+ // let popover_select = popover_select.clone();
+ buttons_popover_unselect_all.connect_clicked(move |_| {
+ let tree_view = scrolled_window_duplicate_finder.get_children().get(0).unwrap().clone().downcast::().unwrap();
+ let selection = tree_view.get_selection();
+
+ selection.unselect_all();
+ popover_select.popdown();
+ });
+ }
+ }
// Upper Notepad
{
// Add included directory