From 683e0f9117f983f8aba973294abdd044558eec18 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mikrut?=
<41945903+qarmin@users.noreply.github.com>
Date: Sun, 10 Jan 2021 13:45:05 +0100
Subject: [PATCH] Use directly TreeView instead ScrolledWindow->TreeView (#190)
---
czkawka_gui/czkawka.glade | 16 +--
czkawka_gui/src/connect_button_delete.rs | 51 ++++-----
czkawka_gui/src/connect_button_search.rs | 44 ++++----
czkawka_gui/src/connect_button_symlink.rs | 17 ++-
czkawka_gui/src/connect_compute_results.rs | 36 +++---
czkawka_gui/src/connect_popovers.rs | 73 +++++-------
.../src/connect_selection_of_directories.rs | 32 +++---
czkawka_gui/src/gui_data.rs | 44 +++-----
czkawka_gui/src/gui_main_notebook.rs | 70 ++++++++++++
czkawka_gui/src/help_functions.rs | 17 +--
czkawka_gui/src/initialize_gui.rs | 106 +++++++++---------
czkawka_gui/src/main.rs | 5 +-
czkawka_gui/src/saving_loading.rs | 28 ++---
13 files changed, 284 insertions(+), 255 deletions(-)
create mode 100644 czkawka_gui/src/gui_main_notebook.rs
diff --git a/czkawka_gui/czkawka.glade b/czkawka_gui/czkawka.glade
index 32ff569..026c0ab 100644
--- a/czkawka_gui/czkawka.glade
+++ b/czkawka_gui/czkawka.glade
@@ -1229,7 +1229,7 @@ Author: Rafał Mikrut
left
True
-
-
+
True
True
in
@@ -1433,7 +1433,7 @@ Author: Rafał Mikrut
-
+
True
False
vertical
@@ -1508,7 +1508,7 @@ Author: Rafał Mikrut
-
+
True
True
in
@@ -1532,7 +1532,7 @@ Author: Rafał Mikrut
-
+
True
True
in
@@ -1556,7 +1556,7 @@ Author: Rafał Mikrut
-
+
True
False
@@ -1774,7 +1774,7 @@ Author: Rafał Mikrut
-
+
True
False
vertical
@@ -1933,7 +1933,7 @@ Author: Rafał Mikrut
-
+
True
False
vertical
diff --git a/czkawka_gui/src/connect_button_delete.rs b/czkawka_gui/src/connect_button_delete.rs
index fb726f9..c3c494e 100644
--- a/czkawka_gui/src/connect_button_delete.rs
+++ b/czkawka_gui/src/connect_button_delete.rs
@@ -12,17 +12,17 @@ use std::fs::Metadata;
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 tree_view_duplicate_finder = gui_data.main_notebook.tree_view_duplicate_finder.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();
- 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_invalid_symlinks = gui_data.scrolled_window_invalid_symlinks.clone();
+ let tree_view_empty_folder_finder = gui_data.main_notebook.tree_view_empty_folder_finder.clone();
+ let tree_view_big_files_finder = gui_data.main_notebook.tree_view_big_files_finder.clone();
+ let tree_view_empty_files_finder = gui_data.main_notebook.tree_view_empty_files_finder.clone();
+ let tree_view_temporary_files_finder = gui_data.main_notebook.tree_view_temporary_files_finder.clone();
+ let tree_view_similar_images_finder = gui_data.main_notebook.tree_view_similar_images_finder.clone();
+ let tree_view_zeroed_files_finder = gui_data.main_notebook.tree_view_zeroed_files_finder.clone();
+ let tree_view_same_music_finder = gui_data.main_notebook.tree_view_same_music_finder.clone();
+ let tree_view_invalid_symlinks = gui_data.main_notebook.tree_view_invalid_symlinks.clone();
let check_button_settings_confirm_deletion = gui_data.check_button_settings_confirm_deletion.clone();
let image_preview_similar_images = gui_data.image_preview_similar_images.clone();
@@ -55,23 +55,23 @@ pub fn connect_button_delete(gui_data: &GuiData) {
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);
+ tree_remove(&tree_view_duplicate_finder.clone(), ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, ColumnsDuplicates::Color as i32, &gui_data);
}
NotebookMainEnum::EmptyDirectories => {
- empty_folder_remover(&scrolled_window_main_empty_folder_finder.clone(), ColumnsEmptyFolders::Name as i32, ColumnsEmptyFolders::Path as i32, &gui_data);
+ empty_folder_remover(&tree_view_empty_folder_finder.clone(), ColumnsEmptyFolders::Name as i32, ColumnsEmptyFolders::Path as i32, &gui_data);
}
NotebookMainEnum::EmptyFiles => {
- basic_remove(&scrolled_window_main_empty_files_finder.clone(), ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32, &gui_data);
+ basic_remove(&tree_view_empty_files_finder.clone(), ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32, &gui_data);
}
NotebookMainEnum::Temporary => {
- basic_remove(&scrolled_window_main_temporary_files_finder.clone(), ColumnsTemporaryFiles::Name as i32, ColumnsTemporaryFiles::Path as i32, &gui_data);
+ basic_remove(&tree_view_temporary_files_finder.clone(), ColumnsTemporaryFiles::Name as i32, ColumnsTemporaryFiles::Path as i32, &gui_data);
}
NotebookMainEnum::BigFiles => {
- basic_remove(&scrolled_window_big_files_finder.clone(), ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, &gui_data);
+ basic_remove(&tree_view_big_files_finder.clone(), ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, &gui_data);
}
NotebookMainEnum::SimilarImages => {
tree_remove(
- &scrolled_window_similar_images_finder.clone(),
+ &tree_view_similar_images_finder.clone(),
ColumnsSimilarImages::Name as i32,
ColumnsSimilarImages::Path as i32,
ColumnsSimilarImages::Color as i32,
@@ -80,29 +80,28 @@ pub fn connect_button_delete(gui_data: &GuiData) {
image_preview_similar_images.hide();
}
NotebookMainEnum::Zeroed => {
- basic_remove(&scrolled_window_zeroed_files_finder.clone(), ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, &gui_data);
+ basic_remove(&tree_view_zeroed_files_finder.clone(), ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, &gui_data);
}
NotebookMainEnum::SameMusic => {
- tree_remove(&scrolled_window_same_music_finder.clone(), ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, ColumnsSameMusic::Color as i32, &gui_data);
+ tree_remove(&tree_view_same_music_finder.clone(), ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, ColumnsSameMusic::Color as i32, &gui_data);
}
NotebookMainEnum::Symlinks => {
- basic_remove(&scrolled_window_invalid_symlinks.clone(), ColumnsInvalidSymlinks::Name as i32, ColumnsInvalidSymlinks::Path as i32, &gui_data);
+ basic_remove(&tree_view_invalid_symlinks.clone(), ColumnsInvalidSymlinks::Name as i32, ColumnsInvalidSymlinks::Path as i32, &gui_data);
}
}
});
}
-pub fn empty_folder_remover(scrolled_window: >k::ScrolledWindow, column_file_name: i32, column_path: i32, gui_data: &GuiData) {
+pub fn empty_folder_remover(tree_view: >k::TreeView, column_file_name: i32, column_path: i32, gui_data: &GuiData) {
let text_view_errors = gui_data.text_view_errors.clone();
- let tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection();
let (selection_rows, tree_model) = selection.get_selected_rows();
if selection_rows.is_empty() {
return;
}
- let list_store = get_list_store(&scrolled_window);
+ let list_store = get_list_store(&tree_view);
let mut messages: String = "".to_string();
@@ -176,17 +175,16 @@ pub fn empty_folder_remover(scrolled_window: >k::ScrolledWindow, column_file_n
selection.unselect_all();
}
-pub fn basic_remove(scrolled_window: >k::ScrolledWindow, column_file_name: i32, column_path: i32, gui_data: &GuiData) {
+pub fn basic_remove(tree_view: >k::TreeView, column_file_name: i32, column_path: i32, gui_data: &GuiData) {
let text_view_errors = gui_data.text_view_errors.clone();
- let tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection();
let (selection_rows, tree_model) = selection.get_selected_rows();
if selection_rows.is_empty() {
return;
}
- let list_store = get_list_store(&scrolled_window);
+ let list_store = get_list_store(&tree_view);
let mut messages: String = "".to_string();
@@ -208,17 +206,16 @@ 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) {
+pub fn tree_remove(tree_view: >k::TreeView, column_file_name: i32, column_path: i32, column_color: i32, gui_data: &GuiData) {
let text_view_errors = gui_data.text_view_errors.clone();
- let tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection();
let (selection_rows, tree_model) = selection.get_selected_rows();
if selection_rows.is_empty() {
return;
}
- let list_store = get_list_store(&scrolled_window);
+ let list_store = get_list_store(&tree_view);
let mut messages: String = "".to_string();
diff --git a/czkawka_gui/src/connect_button_search.rs b/czkawka_gui/src/connect_button_search.rs
index 4d14e4b..5e5994a 100644
--- a/czkawka_gui/src/connect_button_search.rs
+++ b/czkawka_gui/src/connect_button_search.rs
@@ -36,8 +36,8 @@ pub fn connect_button_search(
) {
let entry_info = gui_data.entry_info.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();
+ let tree_view_included_directories = gui_data.tree_view_included_directories.clone();
+ let tree_view_excluded_directories = gui_data.tree_view_excluded_directories.clone();
let buttons_search_clone = gui_data.buttons_search.clone();
let buttons_array = gui_data.buttons_array.clone();
let check_button_recursive = gui_data.check_button_recursive.clone();
@@ -65,15 +65,15 @@ pub fn connect_button_search(
let check_button_music_album_artist: gtk::CheckButton = gui_data.check_button_music_album_artist.clone();
let check_button_music_year: gtk::CheckButton = gui_data.check_button_music_year.clone();
let shared_buttons = gui_data.shared_buttons.clone();
- let scrolled_window_main_empty_folder_finder = gui_data.scrolled_window_main_empty_folder_finder.clone();
- let scrolled_window_main_empty_files_finder = gui_data.scrolled_window_main_empty_files_finder.clone();
- let scrolled_window_big_files_finder = gui_data.scrolled_window_big_files_finder.clone();
- let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
- let scrolled_window_main_temporary_files_finder = gui_data.scrolled_window_main_temporary_files_finder.clone();
- let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_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_invalid_symlinks = gui_data.scrolled_window_invalid_symlinks.clone();
+ let tree_view_empty_folder_finder = gui_data.main_notebook.tree_view_empty_folder_finder.clone();
+ let tree_view_empty_files_finder = gui_data.main_notebook.tree_view_empty_files_finder.clone();
+ let tree_view_big_files_finder = gui_data.main_notebook.tree_view_big_files_finder.clone();
+ let tree_view_duplicate_finder = gui_data.main_notebook.tree_view_duplicate_finder.clone();
+ let tree_view_temporary_files_finder = gui_data.main_notebook.tree_view_temporary_files_finder.clone();
+ let tree_view_same_music_finder = gui_data.main_notebook.tree_view_same_music_finder.clone();
+ let tree_view_similar_images_finder = gui_data.main_notebook.tree_view_similar_images_finder.clone();
+ let tree_view_zeroed_files_finder = gui_data.main_notebook.tree_view_zeroed_files_finder.clone();
+ let tree_view_invalid_symlinks = gui_data.main_notebook.tree_view_invalid_symlinks.clone();
let text_view_errors = gui_data.text_view_errors.clone();
let dialog_progress = gui_data.dialog_progress.clone();
let label_stage = gui_data.label_stage.clone();
@@ -83,8 +83,8 @@ pub fn connect_button_search(
let image_preview_similar_images = gui_data.image_preview_similar_images.clone();
buttons_search_clone.connect_clicked(move |_| {
- let included_directories = get_string_from_list_store(&scrolled_window_included_directories);
- let excluded_directories = get_string_from_list_store(&scrolled_window_excluded_directories);
+ let included_directories = get_string_from_list_store(&tree_view_included_directories);
+ let excluded_directories = get_string_from_list_store(&tree_view_excluded_directories);
let recursive_search = check_button_recursive.get_active();
let excluded_items = entry_excluded_items.get_text().as_str().to_string();
let allowed_extensions = entry_allowed_extensions.get_text().as_str().to_string();
@@ -113,7 +113,7 @@ pub fn connect_button_search(
grid_progress_stages.show_all();
dialog_progress.resize(1, 1);
- get_list_store(&scrolled_window_duplicate_finder).clear();
+ get_list_store(&tree_view_duplicate_finder).clear();
let check_method;
if radio_button_duplicates_name.get_active() {
@@ -152,7 +152,7 @@ pub fn connect_button_search(
grid_progress_stages.hide();
dialog_progress.resize(1, 1);
- get_list_store(&scrolled_window_main_empty_files_finder).clear();
+ get_list_store(&tree_view_empty_files_finder).clear();
let glib_stop_sender = glib_stop_sender.clone();
let stop_receiver = stop_receiver.clone();
@@ -176,7 +176,7 @@ pub fn connect_button_search(
grid_progress_stages.hide();
dialog_progress.resize(1, 1);
- get_list_store(&scrolled_window_main_empty_folder_finder).clear();
+ get_list_store(&tree_view_empty_folder_finder).clear();
let glib_stop_sender = glib_stop_sender.clone();
let stop_receiver = stop_receiver.clone();
@@ -197,7 +197,7 @@ pub fn connect_button_search(
grid_progress_stages.hide();
dialog_progress.resize(1, 1);
- get_list_store(&scrolled_window_big_files_finder).clear();
+ get_list_store(&tree_view_big_files_finder).clear();
let numbers_of_files_to_check = entry_big_files_number.get_text().as_str().parse::().unwrap_or(50);
@@ -222,7 +222,7 @@ pub fn connect_button_search(
grid_progress_stages.hide();
dialog_progress.resize(1, 1);
- get_list_store(&scrolled_window_main_temporary_files_finder).clear();
+ get_list_store(&tree_view_temporary_files_finder).clear();
let glib_stop_sender = glib_stop_sender.clone();
let stop_receiver = stop_receiver.clone();
@@ -247,7 +247,7 @@ pub fn connect_button_search(
grid_progress_stages.show_all();
dialog_progress.resize(1, 1);
- get_list_store(&scrolled_window_similar_images_finder).clear();
+ get_list_store(&tree_view_similar_images_finder).clear();
let glib_stop_sender = glib_stop_sender.clone();
let stop_receiver = stop_receiver.clone();
@@ -291,7 +291,7 @@ pub fn connect_button_search(
grid_progress_stages.show_all();
dialog_progress.resize(1, 1);
- get_list_store(&scrolled_window_zeroed_files_finder).clear();
+ get_list_store(&tree_view_zeroed_files_finder).clear();
let glib_stop_sender = glib_stop_sender.clone();
let stop_receiver = stop_receiver.clone();
@@ -315,7 +315,7 @@ pub fn connect_button_search(
grid_progress_stages.show_all();
dialog_progress.resize(1, 1);
- get_list_store(&scrolled_window_same_music_finder).clear();
+ get_list_store(&tree_view_same_music_finder).clear();
let minimal_file_size = entry_same_music_minimal_size.get_text().as_str().parse::().unwrap_or(1024);
@@ -367,7 +367,7 @@ pub fn connect_button_search(
grid_progress_stages.hide();
dialog_progress.resize(1, 1);
- get_list_store(&scrolled_window_invalid_symlinks).clear();
+ get_list_store(&tree_view_invalid_symlinks).clear();
let glib_stop_sender = glib_stop_sender.clone();
let stop_receiver = stop_receiver.clone();
diff --git a/czkawka_gui/src/connect_button_symlink.rs b/czkawka_gui/src/connect_button_symlink.rs
index 7aa50cc..196fdbf 100644
--- a/czkawka_gui/src/connect_button_symlink.rs
+++ b/czkawka_gui/src/connect_button_symlink.rs
@@ -12,22 +12,22 @@ 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 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();
- let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_finder.clone();
+ let tree_view_duplicate_finder = gui_data.main_notebook.tree_view_duplicate_finder.clone();
+ let tree_view_similar_images_finder = gui_data.main_notebook.tree_view_similar_images_finder.clone();
+ let tree_view_same_music_finder = gui_data.main_notebook.tree_view_same_music_finder.clone();
let image_preview_similar_images = gui_data.image_preview_similar_images.clone();
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);
+ symlink(tree_view_duplicate_finder.clone(), ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, ColumnsDuplicates::Color as i32, &gui_data);
}
NotebookMainEnum::SameMusic => {
- symlink(scrolled_window_same_music_finder.clone(), ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, ColumnsSameMusic::Color as i32, &gui_data);
+ symlink(tree_view_same_music_finder.clone(), ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, ColumnsSameMusic::Color as i32, &gui_data);
}
NotebookMainEnum::SimilarImages => {
symlink(
- scrolled_window_similar_images_finder.clone(),
+ tree_view_similar_images_finder.clone(),
ColumnsSimilarImages::Name as i32,
ColumnsSimilarImages::Path as i32,
ColumnsSimilarImages::Color as i32,
@@ -38,12 +38,11 @@ pub fn connect_button_symlink(gui_data: &GuiData) {
e => panic!("Not existent {:?}", e),
});
}
-fn symlink(scrolled_window: gtk::ScrolledWindow, column_file_name: i32, column_path: i32, column_color: i32, gui_data: &GuiData) {
+fn symlink(tree_view: gtk::TreeView, column_file_name: i32, column_path: i32, column_color: i32, gui_data: &GuiData) {
let text_view_errors = gui_data.text_view_errors.clone();
reset_text_view(&text_view_errors);
- let tree_view = get_tree_view(&scrolled_window);
- let list_store = get_list_store(&scrolled_window);
+ let list_store = get_list_store(&tree_view);
let selection = tree_view.get_selection();
let (selection_rows, tree_model) = selection.get_selected_rows();
diff --git a/czkawka_gui/src/connect_compute_results.rs b/czkawka_gui/src/connect_compute_results.rs
index 5d31b6a..e4ad460 100644
--- a/czkawka_gui/src/connect_compute_results.rs
+++ b/czkawka_gui/src/connect_compute_results.rs
@@ -14,26 +14,26 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
let buttons_search = gui_data.buttons_search.clone();
let notebook_main = gui_data.notebook_main.clone();
let entry_info = gui_data.entry_info.clone();
- let scrolled_window_main_empty_folder_finder = gui_data.scrolled_window_main_empty_folder_finder.clone();
- let scrolled_window_main_empty_files_finder = gui_data.scrolled_window_main_empty_files_finder.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();
+ let tree_view_empty_folder_finder = gui_data.main_notebook.tree_view_empty_folder_finder.clone();
+ let tree_view_empty_files_finder = gui_data.main_notebook.tree_view_empty_files_finder.clone();
+ let tree_view_duplicate_finder = gui_data.main_notebook.tree_view_duplicate_finder.clone();
+ let tree_view_similar_images_finder = gui_data.main_notebook.tree_view_similar_images_finder.clone();
let buttons_array = gui_data.buttons_array.clone();
let text_view_errors = gui_data.text_view_errors.clone();
let shared_duplication_state = gui_data.shared_duplication_state.clone();
let shared_buttons = gui_data.shared_buttons.clone();
- let scrolled_window_zeroed_files_finder = gui_data.scrolled_window_zeroed_files_finder.clone();
+ let tree_view_zeroed_files_finder = gui_data.main_notebook.tree_view_zeroed_files_finder.clone();
let shared_empty_folders_state = gui_data.shared_empty_folders_state.clone();
let shared_empty_files_state = gui_data.shared_empty_files_state.clone();
- let scrolled_window_big_files_finder = gui_data.scrolled_window_big_files_finder.clone();
- let scrolled_window_invalid_symlinks = gui_data.scrolled_window_invalid_symlinks.clone();
+ let tree_view_big_files_finder = gui_data.main_notebook.tree_view_big_files_finder.clone();
+ let tree_view_invalid_symlinks = gui_data.main_notebook.tree_view_invalid_symlinks.clone();
let shared_big_files_state = gui_data.shared_big_files_state.clone();
let shared_same_invalid_symlinks = gui_data.shared_same_invalid_symlinks.clone();
- let scrolled_window_main_temporary_files_finder = gui_data.scrolled_window_main_temporary_files_finder.clone();
+ let tree_view_temporary_files_finder = gui_data.main_notebook.tree_view_temporary_files_finder.clone();
let shared_temporary_files_state = gui_data.shared_temporary_files_state.clone();
let shared_similar_images_state = gui_data.shared_similar_images_state.clone();
let shared_zeroed_files_state = gui_data.shared_zeroed_files_state.clone();
- let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_finder.clone();
+ let tree_view_same_music_finder = gui_data.main_notebook.tree_view_same_music_finder.clone();
let shared_same_music_state = gui_data.shared_same_music_state.clone();
let buttons_names = gui_data.buttons_names.clone();
let dialog_progress = gui_data.dialog_progress.clone();
@@ -86,7 +86,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
- let list_store = get_list_store(&scrolled_window_duplicate_finder);
+ let list_store = get_list_store(&tree_view_duplicate_finder);
let col_indices = [0, 1, 2, 3, 4, 5];
@@ -214,7 +214,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
- let list_store = get_list_store(&scrolled_window_main_empty_folder_finder);
+ let list_store = get_list_store(&tree_view_empty_folder_finder);
let col_indices = [0, 1, 2];
@@ -258,7 +258,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
- let list_store = get_list_store(&scrolled_window_main_empty_files_finder);
+ let list_store = get_list_store(&tree_view_empty_files_finder);
let col_indices = [0, 1, 2];
@@ -302,7 +302,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
- let list_store = get_list_store(&scrolled_window_big_files_finder);
+ let list_store = get_list_store(&tree_view_big_files_finder);
let col_indices = [0, 1, 2, 3];
@@ -353,7 +353,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
- let list_store = get_list_store(&scrolled_window_main_temporary_files_finder);
+ let list_store = get_list_store(&tree_view_temporary_files_finder);
let col_indices = [0, 1, 2];
@@ -397,7 +397,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
- let list_store = get_list_store(&scrolled_window_similar_images_finder);
+ let list_store = get_list_store(&tree_view_similar_images_finder);
let col_indices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
@@ -473,7 +473,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
- let list_store = get_list_store(&scrolled_window_zeroed_files_finder);
+ let list_store = get_list_store(&tree_view_zeroed_files_finder);
let col_indices = [0, 1, 2, 3, 4];
@@ -523,7 +523,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
- let list_store = get_list_store(&scrolled_window_same_music_finder);
+ let list_store = get_list_store(&tree_view_same_music_finder);
let col_indices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
@@ -626,7 +626,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
- let list_store = get_list_store(&scrolled_window_invalid_symlinks);
+ let list_store = get_list_store(&tree_view_invalid_symlinks);
let col_indices = [0, 1, 2, 3, 4];
diff --git a/czkawka_gui/src/connect_popovers.rs b/czkawka_gui/src/connect_popovers.rs
index cf929c1..cbf7532 100644
--- a/czkawka_gui/src/connect_popovers.rs
+++ b/czkawka_gui/src/connect_popovers.rs
@@ -9,22 +9,19 @@ use gtk::TreeIter;
// File length variable allows users to choose duplicates which have shorter file name
// e.g. 'tar.gz' will be selected instead 'tar.gz (copy)' etc.
-fn popover_select_all(popover: >k::Popover, scrolled_window: >k::ScrolledWindow) {
- let tree_view = get_tree_view(&scrolled_window);
+fn popover_select_all(popover: >k::Popover, tree_view: >k::TreeView) {
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);
+fn popover_unselect_all(popover: >k::Popover, tree_view: >k::TreeView) {
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);
+fn popover_reverse(popover: >k::Popover, tree_view: >k::TreeView) {
let selection = tree_view.get_selection();
let (vector_tree_path, tree_model) = selection.get_selected_rows();
@@ -57,8 +54,7 @@ fn popover_reverse(popover: >k::Popover, scrolled_window: >k::ScrolledWindow
popover.popdown();
}
-fn popover_all_except_oldest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) {
- let tree_view = get_tree_view(&scrolled_window);
+fn popover_all_except_oldest(popover: >k::Popover, tree_view: >k::TreeView, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) {
let selection = tree_view.get_selection();
let tree_model = tree_view.get_model().unwrap();
@@ -116,8 +112,7 @@ fn popover_all_except_oldest(popover: >k::Popover, scrolled_window: >k::Scro
popover.popdown();
}
-fn popover_all_except_newest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) {
- let tree_view = get_tree_view(&scrolled_window);
+fn popover_all_except_newest(popover: >k::Popover, tree_view: >k::TreeView, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) {
let selection = tree_view.get_selection();
let tree_model = tree_view.get_model().unwrap();
@@ -175,8 +170,7 @@ fn popover_all_except_newest(popover: >k::Popover, scrolled_window: >k::Scro
popover.popdown();
}
-fn popover_one_oldest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) {
- let tree_view = get_tree_view(&scrolled_window);
+fn popover_one_oldest(popover: >k::Popover, tree_view: >k::TreeView, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) {
let selection = tree_view.get_selection();
let tree_model = tree_view.get_model().unwrap();
@@ -234,8 +228,7 @@ fn popover_one_oldest(popover: >k::Popover, scrolled_window: >k::ScrolledWin
popover.popdown();
}
-fn popover_one_newest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) {
- let tree_view = get_tree_view(&scrolled_window);
+fn popover_one_newest(popover: >k::Popover, tree_view: >k::TreeView, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) {
let selection = tree_view.get_selection();
let tree_model = tree_view.get_model().unwrap();
@@ -293,7 +286,7 @@ fn popover_one_newest(popover: >k::Popover, scrolled_window: >k::ScrolledWin
popover.popdown();
}
-fn popover_select_custom(popover: >k::Popover, gui_data: &GuiData, scrolled_window: >k::ScrolledWindow, column_color: Option, column_file_name: i32, column_path: i32) {
+fn popover_select_custom(popover: >k::Popover, gui_data: &GuiData, tree_view: >k::TreeView, column_color: Option, column_file_name: i32, column_path: i32) {
popover.popdown();
let wildcard: String;
@@ -367,7 +360,6 @@ fn popover_select_custom(popover: >k::Popover, gui_data: &GuiData, scrolled_wi
if !wildcard.is_empty() {
let wildcard = wildcard.trim();
- let tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection();
let tree_model = tree_view.get_model().unwrap();
@@ -410,7 +402,7 @@ fn popover_select_custom(popover: >k::Popover, gui_data: &GuiData, scrolled_wi
}
}
}
-fn popover_unselect_custom(popover: >k::Popover, gui_data: &GuiData, scrolled_window: >k::ScrolledWindow, column_color: Option, column_file_name: i32, column_path: i32) {
+fn popover_unselect_custom(popover: >k::Popover, gui_data: &GuiData, tree_view: >k::TreeView, column_color: Option, column_file_name: i32, column_path: i32) {
popover.popdown();
let wildcard: String;
@@ -482,7 +474,6 @@ fn popover_unselect_custom(popover: >k::Popover, gui_data: &GuiData, scrolled_
if !wildcard.is_empty() {
let wildcard = wildcard.trim();
- let tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection();
let tree_model = tree_view.get_model().unwrap();
@@ -526,8 +517,7 @@ fn popover_unselect_custom(popover: >k::Popover, gui_data: &GuiData, scrolled_
}
}
-fn popover_all_except_biggest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_size_as_bytes: i32, column_dimensions: i32) {
- let tree_view = get_tree_view(&scrolled_window);
+fn popover_all_except_biggest(popover: >k::Popover, tree_view: >k::TreeView, column_color: i32, column_size_as_bytes: i32, column_dimensions: i32) {
let selection = tree_view.get_selection();
let tree_model = tree_view.get_model().unwrap();
@@ -588,8 +578,7 @@ fn popover_all_except_biggest(popover: >k::Popover, scrolled_window: >k::Scr
popover.popdown();
}
-fn popover_all_except_smallest(popover: >k::Popover, scrolled_window: >k::ScrolledWindow, column_color: i32, column_size_as_bytes: i32, column_dimensions: i32) {
- let tree_view = get_tree_view(&scrolled_window);
+fn popover_all_except_smallest(popover: >k::Popover, tree_view: >k::TreeView, column_color: i32, column_size_as_bytes: i32, column_dimensions: i32) {
let selection = tree_view.get_selection();
let tree_model = tree_view.get_model().unwrap();
@@ -655,7 +644,7 @@ fn popover_all_except_smallest(popover: >k::Popover, scrolled_window: >k::Sc
pub struct PopoverObject {
pub notebook_type: NotebookMainEnum,
pub available_modes: Vec,
- pub scrolled_windows: gtk::ScrolledWindow,
+ pub tree_view: gtk::TreeView,
pub column_path: Option,
pub column_name: Option,
pub column_color: Option,
@@ -679,7 +668,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
PopoverObject {
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(),
+ tree_view: gui_data.main_notebook.tree_view_duplicate_finder.clone(),
column_path: Some(ColumnsDuplicates::Path as i32),
column_name: Some(ColumnsDuplicates::Name as i32),
column_color: Some(ColumnsDuplicates::Color as i32),
@@ -691,7 +680,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
PopoverObject {
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(),
+ tree_view: gui_data.main_notebook.tree_view_same_music_finder.clone(),
column_path: Some(ColumnsSameMusic::Path as i32),
column_name: Some(ColumnsSameMusic::Name as i32),
column_color: Some(ColumnsSameMusic::Color as i32),
@@ -703,7 +692,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
PopoverObject {
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(),
+ tree_view: gui_data.main_notebook.tree_view_similar_images_finder.clone(),
column_path: Some(ColumnsSimilarImages::Path as i32),
column_name: Some(ColumnsSimilarImages::Name as i32),
column_color: Some(ColumnsSimilarImages::Color as i32),
@@ -715,7 +704,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
PopoverObject {
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(),
+ tree_view: gui_data.main_notebook.tree_view_empty_folder_finder.clone(),
column_path: Some(ColumnsEmptyFolders::Path as i32),
column_name: Some(ColumnsEmptyFolders::Name as i32),
column_color: None,
@@ -727,7 +716,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
PopoverObject {
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(),
+ tree_view: gui_data.main_notebook.tree_view_empty_files_finder.clone(),
column_path: Some(ColumnsEmptyFiles::Path as i32),
column_name: Some(ColumnsEmptyFiles::Name as i32),
column_color: None,
@@ -739,7 +728,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
PopoverObject {
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(),
+ tree_view: gui_data.main_notebook.tree_view_temporary_files_finder.clone(),
column_path: Some(ColumnsTemporaryFiles::Path as i32),
column_name: Some(ColumnsTemporaryFiles::Name as i32),
column_color: None,
@@ -751,7 +740,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
PopoverObject {
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(),
+ tree_view: gui_data.main_notebook.tree_view_big_files_finder.clone(),
column_path: Some(ColumnsBigFiles::Path as i32),
column_name: Some(ColumnsBigFiles::Name as i32),
column_color: None,
@@ -763,7 +752,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
PopoverObject {
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(),
+ tree_view: gui_data.main_notebook.tree_view_zeroed_files_finder.clone(),
column_path: Some(ColumnsZeroedFiles::Path as i32),
column_name: Some(ColumnsZeroedFiles::Name as i32),
column_color: None,
@@ -780,7 +769,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
let vec_popover_objects = popover_objects.clone();
buttons_popover_select_all.connect_clicked(move |_| {
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);
+ popover_select_all(&popover_select, &object_popover.tree_view);
});
let popover_select = gui_data.popover_select.clone();
@@ -789,7 +778,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
let vec_popover_objects = popover_objects.clone();
buttons_popover_unselect_all.connect_clicked(move |_| {
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);
+ popover_unselect_all(&popover_select, &object_popover.tree_view);
});
let popover_select = gui_data.popover_select.clone();
@@ -798,7 +787,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
let vec_popover_objects = popover_objects.clone();
buttons_popover_reverse.connect_clicked(move |_| {
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);
+ popover_reverse(&popover_select, &object_popover.tree_view);
});
let popover_select = gui_data.popover_select.clone();
@@ -809,7 +798,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
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,
+ &object_popover.tree_view,
object_popover.column_color.unwrap(),
object_popover.column_modification_as_secs.unwrap(),
object_popover.column_name.unwrap(),
@@ -824,7 +813,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
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,
+ &object_popover.tree_view,
object_popover.column_color.unwrap(),
object_popover.column_modification_as_secs.unwrap(),
object_popover.column_name.unwrap(),
@@ -839,7 +828,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
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,
+ &object_popover.tree_view,
object_popover.column_color.unwrap(),
object_popover.column_modification_as_secs.unwrap(),
object_popover.column_name.unwrap(),
@@ -854,7 +843,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
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,
+ &object_popover.tree_view,
object_popover.column_color.unwrap(),
object_popover.column_modification_as_secs.unwrap(),
object_popover.column_name.unwrap(),
@@ -871,7 +860,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
popover_select_custom(
&popover_select,
&gui_data_clone,
- &object_popover.scrolled_windows,
+ &object_popover.tree_view,
object_popover.column_color,
object_popover.column_name.unwrap(),
object_popover.column_path.unwrap(),
@@ -888,7 +877,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
popover_unselect_custom(
&popover_select,
&gui_data_clone,
- &object_popover.scrolled_windows,
+ &object_popover.tree_view,
object_popover.column_color,
object_popover.column_name.unwrap(),
object_popover.column_path.unwrap(),
@@ -903,7 +892,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
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,
+ &object_popover.tree_view,
object_popover.column_color.unwrap(),
object_popover.column_size_as_bytes.unwrap(),
object_popover.column_dimensions.unwrap(),
@@ -918,7 +907,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
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,
+ &object_popover.tree_view,
object_popover.column_color.unwrap(),
object_popover.column_size_as_bytes.unwrap(),
object_popover.column_dimensions.unwrap(),
diff --git a/czkawka_gui/src/connect_selection_of_directories.rs b/czkawka_gui/src/connect_selection_of_directories.rs
index 3d04546..4fd7236 100644
--- a/czkawka_gui/src/connect_selection_of_directories.rs
+++ b/czkawka_gui/src/connect_selection_of_directories.rs
@@ -1,6 +1,6 @@
extern crate gtk;
use crate::gui_data::GuiData;
-use crate::help_functions::{get_list_store, get_tree_view};
+use crate::help_functions::get_list_store;
use gtk::prelude::*;
#[cfg(target_family = "windows")]
@@ -9,7 +9,7 @@ use czkawka_core::common::Common;
pub fn connect_selection_of_directories(gui_data: &GuiData) {
// Add manually directory
{
- let scrolled_window_included_directories = gui_data.scrolled_window_included_directories.clone();
+ let tree_view_included_directories = gui_data.tree_view_included_directories.clone();
let window_main = gui_data.window_main.clone();
let buttons_manual_add_directory = gui_data.buttons_manual_add_directory.clone();
buttons_manual_add_directory.connect_clicked(move |_| {
@@ -31,7 +31,7 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
let text = Common::normalize_windows_path(text).to_string_lossy().to_string();
if !text.is_empty() {
- let list_store = get_list_store(&scrolled_window_included_directories);
+ let list_store = get_list_store(&tree_view_included_directories);
let col_indices = [0];
@@ -47,7 +47,7 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
}
// Add manually excluded directory
{
- let scrolled_window_excluded_directories = gui_data.scrolled_window_excluded_directories.clone();
+ let tree_view_excluded_directories = gui_data.tree_view_excluded_directories.clone();
let window_main = gui_data.window_main.clone();
let buttons_manual_add_excluded_directory = gui_data.buttons_manual_add_excluded_directory.clone();
buttons_manual_add_excluded_directory.connect_clicked(move |_| {
@@ -74,7 +74,7 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
let text = Common::normalize_windows_path(text).to_string_lossy().to_string();
if !text.is_empty() {
- let list_store = get_list_store(&scrolled_window_excluded_directories);
+ let list_store = get_list_store(&tree_view_excluded_directories);
let col_indices = [0];
@@ -90,7 +90,7 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
}
// Add included directory
{
- let scrolled_window_included_directories = gui_data.scrolled_window_included_directories.clone();
+ let tree_view_included_directories = gui_data.tree_view_included_directories.clone();
let window_main = gui_data.window_main.clone();
let buttons_add_included_directory = gui_data.buttons_add_included_directory.clone();
buttons_add_included_directory.connect_clicked(move |_| {
@@ -106,7 +106,7 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
if response_type == gtk::ResponseType::Ok {
let folder = chooser.get_filenames();
- let list_store = get_list_store(&scrolled_window_included_directories);
+ let list_store = get_list_store(&tree_view_included_directories);
let col_indices = [0];
for file_entry in &folder {
@@ -119,7 +119,7 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
}
// Add excluded directory
{
- let scrolled_window_excluded_directories = gui_data.scrolled_window_excluded_directories.clone();
+ let tree_view_excluded_directories = gui_data.tree_view_excluded_directories.clone();
let window_main = gui_data.window_main.clone();
let buttons_add_excluded_directory = gui_data.buttons_add_excluded_directory.clone();
buttons_add_excluded_directory.connect_clicked(move |_| {
@@ -135,7 +135,7 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
if response_type == gtk::ResponseType::Ok {
let folder = chooser.get_filenames();
- let list_store = get_list_store(&scrolled_window_excluded_directories);
+ let list_store = get_list_store(&tree_view_excluded_directories);
let col_indices = [0];
@@ -150,11 +150,10 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
// Remove Excluded Folder
{
let buttons_remove_excluded_directory = gui_data.buttons_remove_excluded_directory.clone();
- let scrolled_window_excluded_directories = gui_data.scrolled_window_excluded_directories.clone();
+ let tree_view_excluded_directories = gui_data.tree_view_excluded_directories.clone();
buttons_remove_excluded_directory.connect_clicked(move |_| {
- let tree_view = get_tree_view(&scrolled_window_excluded_directories);
- let list_store = get_list_store(&scrolled_window_excluded_directories);
- let selection = tree_view.get_selection();
+ let list_store = get_list_store(&tree_view_excluded_directories);
+ let selection = tree_view_excluded_directories.get_selection();
let (vec_tree_path, _tree_model) = selection.get_selected_rows();
@@ -166,11 +165,10 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
// Remove Included Folder
{
let buttons_remove_included_directory = gui_data.buttons_remove_included_directory.clone();
- let scrolled_window_included_directories = gui_data.scrolled_window_included_directories.clone();
+ let tree_view_included_directories = gui_data.tree_view_included_directories.clone();
buttons_remove_included_directory.connect_clicked(move |_| {
- let tree_view = get_tree_view(&scrolled_window_included_directories);
- let list_store = get_list_store(&scrolled_window_included_directories);
- let selection = tree_view.get_selection();
+ let list_store = get_list_store(&tree_view_included_directories);
+ let selection = tree_view_included_directories.get_selection();
let (vec_tree_path, _tree_model) = selection.get_selected_rows();
diff --git a/czkawka_gui/src/gui_data.rs b/czkawka_gui/src/gui_data.rs
index fc14caf..78dd1ff 100644
--- a/czkawka_gui/src/gui_data.rs
+++ b/czkawka_gui/src/gui_data.rs
@@ -1,4 +1,5 @@
extern crate gtk;
+use crate::gui_main_notebook::GUIMainNotebook;
use crate::notebook_enums::*;
use crossbeam_channel::unbounded;
use czkawka_core::big_file::BigFile;
@@ -11,7 +12,7 @@ use czkawka_core::similar_images::SimilarImages;
use czkawka_core::temporary::Temporary;
use czkawka_core::zeroed::ZeroedFiles;
use gtk::prelude::*;
-use gtk::{Builder, Button};
+use gtk::{Builder, Button, TreeView};
use std::cell::RefCell;
use std::collections::HashMap;
use std::rc::Rc;
@@ -25,6 +26,8 @@ pub struct GuiData {
// Windows
pub window_main: gtk::Window,
+ pub main_notebook: GUIMainNotebook,
+
// States
pub buttons_labels: [String; 5],
@@ -132,21 +135,14 @@ pub struct GuiData {
pub scrolled_window_errors: gtk::ScrolledWindow,
//// Scrolled windows
- // Main notebook
- pub scrolled_window_duplicate_finder: gtk::ScrolledWindow,
- pub scrolled_window_main_empty_folder_finder: gtk::ScrolledWindow,
- pub scrolled_window_main_empty_files_finder: gtk::ScrolledWindow,
- pub scrolled_window_main_temporary_files_finder: gtk::ScrolledWindow,
- pub scrolled_window_big_files_finder: gtk::ScrolledWindow,
- pub scrolled_window_similar_images_finder: gtk::ScrolledWindow,
- pub scrolled_window_zeroed_files_finder: gtk::ScrolledWindow,
- pub scrolled_window_same_music_finder: gtk::ScrolledWindow,
- pub scrolled_window_invalid_symlinks: gtk::ScrolledWindow,
// Upper notebook
pub scrolled_window_included_directories: gtk::ScrolledWindow,
pub scrolled_window_excluded_directories: gtk::ScrolledWindow,
+ pub tree_view_included_directories: gtk::TreeView,
+ pub tree_view_excluded_directories: gtk::TreeView,
+
//// Dialog State - dialog with progress state, which allows to stop task
pub dialog_progress: gtk::Dialog,
@@ -190,6 +186,8 @@ impl GuiData {
window_main.show_all();
window_main.set_title("Czkawka");
+ let main_notebook = GUIMainNotebook::create_from_builder(&builder);
+
////////////////////////////////////////////////////////////////////////////////////////////////
//// States
let buttons_labels = ["search".to_string(), "select".to_string(), "delete".to_string(), "save".to_string(), "symlink".to_string()];
@@ -330,20 +328,14 @@ impl GuiData {
//// Scrolled windows
// Main notebook
- let scrolled_window_duplicate_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_duplicate_finder").unwrap();
- let scrolled_window_main_empty_folder_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_main_empty_folder_finder").unwrap();
- let scrolled_window_main_empty_files_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_main_empty_files_finder").unwrap();
- let scrolled_window_main_temporary_files_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_main_temporary_files_finder").unwrap();
- let scrolled_window_big_files_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_big_files_finder").unwrap();
- let scrolled_window_similar_images_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_similar_images_finder").unwrap();
- let scrolled_window_zeroed_files_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_zeroed_files_finder").unwrap();
- let scrolled_window_same_music_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_same_music_finder").unwrap();
- let scrolled_window_invalid_symlinks: gtk::ScrolledWindow = builder.get_object("scrolled_window_invalid_symlinks").unwrap();
// Upper notebook
let scrolled_window_included_directories: gtk::ScrolledWindow = builder.get_object("scrolled_window_included_directories").unwrap();
let scrolled_window_excluded_directories: gtk::ScrolledWindow = builder.get_object("scrolled_window_excluded_directories").unwrap();
+ let tree_view_included_directories: gtk::TreeView = TreeView::new();
+ let tree_view_excluded_directories: gtk::TreeView = TreeView::new();
+
//// Dialog State - dialog with progress state, which allows to stop task
let dialog_progress: gtk::Dialog = builder.get_object("dialog_progress").unwrap();
dialog_progress.set_title("Czkawka");
@@ -381,6 +373,7 @@ impl GuiData {
glade_src,
builder,
window_main,
+ main_notebook,
buttons_labels,
shared_buttons,
shared_upper_notebooks,
@@ -454,17 +447,10 @@ impl GuiData {
entry_info,
text_view_errors,
scrolled_window_errors,
- scrolled_window_duplicate_finder,
- scrolled_window_main_empty_folder_finder,
- scrolled_window_main_empty_files_finder,
- scrolled_window_main_temporary_files_finder,
- scrolled_window_big_files_finder,
- scrolled_window_similar_images_finder,
- scrolled_window_zeroed_files_finder,
- scrolled_window_same_music_finder,
- scrolled_window_invalid_symlinks,
scrolled_window_included_directories,
scrolled_window_excluded_directories,
+ tree_view_included_directories,
+ tree_view_excluded_directories,
dialog_progress,
progress_bar_current_stage,
progress_bar_all_stages,
diff --git a/czkawka_gui/src/gui_main_notebook.rs b/czkawka_gui/src/gui_main_notebook.rs
new file mode 100644
index 0000000..56d7863
--- /dev/null
+++ b/czkawka_gui/src/gui_main_notebook.rs
@@ -0,0 +1,70 @@
+use gtk::prelude::*;
+use gtk::TreeView;
+
+#[derive(Clone)]
+pub struct GUIMainNotebook {
+ pub scrolled_window_duplicate_finder: gtk::ScrolledWindow,
+ pub scrolled_window_empty_folder_finder: gtk::ScrolledWindow,
+ pub scrolled_window_empty_files_finder: gtk::ScrolledWindow,
+ pub scrolled_window_temporary_files_finder: gtk::ScrolledWindow,
+ pub scrolled_window_big_files_finder: gtk::ScrolledWindow,
+ pub scrolled_window_similar_images_finder: gtk::ScrolledWindow,
+ pub scrolled_window_zeroed_files_finder: gtk::ScrolledWindow,
+ pub scrolled_window_same_music_finder: gtk::ScrolledWindow,
+ pub scrolled_window_invalid_symlinks: gtk::ScrolledWindow,
+
+ pub tree_view_duplicate_finder: gtk::TreeView,
+ pub tree_view_empty_folder_finder: gtk::TreeView,
+ pub tree_view_empty_files_finder: gtk::TreeView,
+ pub tree_view_temporary_files_finder: gtk::TreeView,
+ pub tree_view_big_files_finder: gtk::TreeView,
+ pub tree_view_similar_images_finder: gtk::TreeView,
+ pub tree_view_zeroed_files_finder: gtk::TreeView,
+ pub tree_view_same_music_finder: gtk::TreeView,
+ pub tree_view_invalid_symlinks: gtk::TreeView,
+}
+
+impl GUIMainNotebook {
+ pub fn create_from_builder(builder: >k::Builder) -> Self {
+ let scrolled_window_duplicate_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_duplicate_finder").unwrap();
+ let scrolled_window_empty_folder_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_empty_folder_finder").unwrap();
+ let scrolled_window_empty_files_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_empty_files_finder").unwrap();
+ let scrolled_window_temporary_files_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_temporary_files_finder").unwrap();
+ let scrolled_window_big_files_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_big_files_finder").unwrap();
+ let scrolled_window_similar_images_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_similar_images_finder").unwrap();
+ let scrolled_window_zeroed_files_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_zeroed_files_finder").unwrap();
+ let scrolled_window_same_music_finder: gtk::ScrolledWindow = builder.get_object("scrolled_window_same_music_finder").unwrap();
+ let scrolled_window_invalid_symlinks: gtk::ScrolledWindow = builder.get_object("scrolled_window_invalid_symlinks").unwrap();
+
+ let tree_view_duplicate_finder: gtk::TreeView = TreeView::new();
+ let tree_view_empty_folder_finder: gtk::TreeView = TreeView::new();
+ let tree_view_empty_files_finder: gtk::TreeView = TreeView::new();
+ let tree_view_temporary_files_finder: gtk::TreeView = TreeView::new();
+ let tree_view_big_files_finder: gtk::TreeView = TreeView::new();
+ let tree_view_similar_images_finder: gtk::TreeView = TreeView::new();
+ let tree_view_zeroed_files_finder: gtk::TreeView = TreeView::new();
+ let tree_view_same_music_finder: gtk::TreeView = TreeView::new();
+ let tree_view_invalid_symlinks: gtk::TreeView = TreeView::new();
+
+ Self {
+ scrolled_window_duplicate_finder,
+ scrolled_window_empty_folder_finder,
+ scrolled_window_empty_files_finder,
+ scrolled_window_temporary_files_finder,
+ scrolled_window_big_files_finder,
+ scrolled_window_similar_images_finder,
+ scrolled_window_zeroed_files_finder,
+ scrolled_window_same_music_finder,
+ scrolled_window_invalid_symlinks,
+ tree_view_duplicate_finder,
+ tree_view_empty_folder_finder,
+ tree_view_empty_files_finder,
+ tree_view_temporary_files_finder,
+ tree_view_big_files_finder,
+ tree_view_similar_images_finder,
+ tree_view_zeroed_files_finder,
+ tree_view_same_music_finder,
+ tree_view_invalid_symlinks,
+ }
+ }
+}
diff --git a/czkawka_gui/src/help_functions.rs b/czkawka_gui/src/help_functions.rs
index f055f59..f2528d8 100644
--- a/czkawka_gui/src/help_functions.rs
+++ b/czkawka_gui/src/help_functions.rs
@@ -10,7 +10,7 @@ use czkawka_core::similar_images::{SimilarImages, Similarity};
use czkawka_core::temporary::Temporary;
use czkawka_core::zeroed::ZeroedFiles;
use gtk::prelude::*;
-use gtk::{ListStore, TextView, TreeView};
+use gtk::{ListStore, TextView};
use std::collections::HashMap;
use std::path::Path;
@@ -110,8 +110,8 @@ pub const HEADER_ROW_COLOR: &str = "#272727";
//pub const MAIN_ROW_COLOR: &str = "#f4f434"; // TEST
//pub const HEADER_ROW_COLOR: &str = "#010101"; // TEST
-pub fn get_string_from_list_store(scrolled_window: >k::ScrolledWindow) -> String {
- let list_store: gtk::ListStore = get_list_store(&scrolled_window);
+pub fn get_string_from_list_store(tree_view: >k::TreeView) -> String {
+ let list_store: gtk::ListStore = get_list_store(&tree_view);
let mut first: bool = true;
let mut return_string: String = "".to_string();
@@ -263,15 +263,8 @@ pub fn get_text_from_invalid_symlink_cause(error: &invalid_symlinks::ErrorType)
}
}
-pub fn get_list_store(scrolled_window: >k::ScrolledWindow) -> ListStore {
- let list_store = scrolled_window.get_children().get(0).unwrap().clone().downcast::().unwrap().get_model().unwrap().downcast::().unwrap();
-
- list_store
-}
-pub fn get_tree_view(scrolled_window: >k::ScrolledWindow) -> TreeView {
- let tree_view = scrolled_window.get_children().get(0).unwrap().clone().downcast::().unwrap();
-
- tree_view
+pub fn get_list_store(tree_view: >k::TreeView) -> ListStore {
+ tree_view.get_model().unwrap().downcast::().unwrap()
}
pub fn get_dialog_box_child(dialog: >k::Dialog) -> gtk::Box {
dialog.get_children()[0].clone().downcast::().unwrap()
diff --git a/czkawka_gui/src/initialize_gui.rs b/czkawka_gui/src/initialize_gui.rs
index 89bee18..a2361e6 100644
--- a/czkawka_gui/src/initialize_gui.rs
+++ b/czkawka_gui/src/initialize_gui.rs
@@ -12,7 +12,7 @@ use std::cmp::Ordering;
use std::fs;
use std::path::Path;
-pub fn initialize_gui(gui_data: &GuiData) {
+pub fn initialize_gui(gui_data: &mut GuiData) {
//// Setup default look(duplicate finder)
{
let buttons_search = gui_data.buttons_search.clone();
@@ -20,17 +20,18 @@ pub fn initialize_gui(gui_data: &GuiData) {
let buttons_delete = gui_data.buttons_delete.clone();
let buttons_select = gui_data.buttons_select.clone();
let buttons_symlink = gui_data.buttons_symlink.clone();
- let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
- let scrolled_window_main_empty_folder_finder = gui_data.scrolled_window_main_empty_folder_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_big_files_finder = gui_data.scrolled_window_big_files_finder.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_invalid_symlinks = gui_data.scrolled_window_invalid_symlinks.clone();
- let scrolled_window_zeroed_files_finder = gui_data.scrolled_window_zeroed_files_finder.clone();
+ let scrolled_window_duplicate_finder = gui_data.main_notebook.scrolled_window_duplicate_finder.clone();
+ let scrolled_window_empty_folder_finder = gui_data.main_notebook.scrolled_window_empty_folder_finder.clone();
+ let scrolled_window_empty_files_finder = gui_data.main_notebook.scrolled_window_empty_files_finder.clone();
+ let scrolled_window_temporary_files_finder = gui_data.main_notebook.scrolled_window_temporary_files_finder.clone();
+ let scrolled_window_big_files_finder = gui_data.main_notebook.scrolled_window_big_files_finder.clone();
+ let scrolled_window_similar_images_finder = gui_data.main_notebook.scrolled_window_similar_images_finder.clone();
+ let scrolled_window_same_music_finder = gui_data.main_notebook.scrolled_window_same_music_finder.clone();
+ let scrolled_window_invalid_symlinks = gui_data.main_notebook.scrolled_window_invalid_symlinks.clone();
+ let scrolled_window_zeroed_files_finder = gui_data.main_notebook.scrolled_window_zeroed_files_finder.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();
+
let image_preview_similar_images = gui_data.image_preview_similar_images.clone();
let check_button_settings_show_preview_similar_images = gui_data.check_button_settings_show_preview_similar_images.clone();
let text_view_errors = gui_data.text_view_errors.clone();
@@ -69,16 +70,17 @@ pub fn initialize_gui(gui_data: &GuiData) {
// println!("{}", e.get_button());
gtk::Inhibit(false)
});
+
+ gui_data.main_notebook.tree_view_duplicate_finder = tree_view.clone();
scrolled_window_duplicate_finder.add(&tree_view);
scrolled_window_duplicate_finder.show_all();
- let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
let gui_data = gui_data.clone();
- tree_view.connect_key_release_event(move |_tree_view, e| {
+ tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
- tree_remove(&scrolled_window_duplicate_finder, ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, ColumnsDuplicates::Color as i32, &gui_data);
+ tree_remove(&tree_view, ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, ColumnsDuplicates::Color as i32, &gui_data);
}
}
gtk::Inhibit(false)
@@ -97,16 +99,16 @@ pub fn initialize_gui(gui_data: &GuiData) {
tree_view.connect_button_press_event(opening_double_click_function_empty_folders);
- scrolled_window_main_empty_folder_finder.add(&tree_view);
- scrolled_window_main_empty_folder_finder.show_all();
+ gui_data.main_notebook.tree_view_empty_folder_finder = tree_view.clone();
+ scrolled_window_empty_folder_finder.add(&tree_view);
+ scrolled_window_empty_folder_finder.show_all();
- let scrolled_window_main_empty_folder_finder = gui_data.scrolled_window_main_empty_folder_finder.clone();
let gui_data = gui_data.clone();
- tree_view.connect_key_release_event(move |_tree_view, e| {
+ tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
- empty_folder_remover(&scrolled_window_main_empty_folder_finder, ColumnsEmptyFolders::Name as i32, ColumnsEmptyFolders::Path as i32, &gui_data);
+ empty_folder_remover(&tree_view, ColumnsEmptyFolders::Name as i32, ColumnsEmptyFolders::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
@@ -125,16 +127,16 @@ pub fn initialize_gui(gui_data: &GuiData) {
tree_view.connect_button_press_event(opening_double_click_function_empty_files);
- scrolled_window_main_empty_files_finder.add(&tree_view);
- scrolled_window_main_empty_files_finder.show_all();
+ gui_data.main_notebook.tree_view_empty_files_finder = tree_view.clone();
+ scrolled_window_empty_files_finder.add(&tree_view);
+ scrolled_window_empty_files_finder.show_all();
- let scrolled_window_main_empty_files_finder = gui_data.scrolled_window_main_empty_files_finder.clone();
let gui_data = gui_data.clone();
- tree_view.connect_key_release_event(move |_tree_view, e| {
+ tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
- basic_remove(&scrolled_window_main_empty_files_finder, ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32, &gui_data);
+ basic_remove(&tree_view, ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
@@ -153,16 +155,16 @@ pub fn initialize_gui(gui_data: &GuiData) {
tree_view.connect_button_press_event(opening_double_click_function_temporary_files);
- scrolled_window_main_temporary_files_finder.add(&tree_view);
- scrolled_window_main_temporary_files_finder.show_all();
+ gui_data.main_notebook.tree_view_temporary_files_finder = tree_view.clone();
+ scrolled_window_temporary_files_finder.add(&tree_view);
+ scrolled_window_temporary_files_finder.show_all();
- let scrolled_window_main_temporary_files_finder = gui_data.scrolled_window_main_temporary_files_finder.clone();
let gui_data = gui_data.clone();
- tree_view.connect_key_release_event(move |_tree_view, e| {
+ tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
- basic_remove(&scrolled_window_main_temporary_files_finder, ColumnsTemporaryFiles::Name as i32, ColumnsTemporaryFiles::Path as i32, &gui_data);
+ basic_remove(&tree_view, ColumnsTemporaryFiles::Name as i32, ColumnsTemporaryFiles::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
@@ -181,16 +183,16 @@ pub fn initialize_gui(gui_data: &GuiData) {
tree_view.connect_button_press_event(opening_double_click_function_big_files);
+ gui_data.main_notebook.tree_view_big_files_finder = tree_view.clone();
scrolled_window_big_files_finder.add(&tree_view);
scrolled_window_big_files_finder.show_all();
- let scrolled_window_big_files_finder = gui_data.scrolled_window_big_files_finder.clone();
let gui_data = gui_data.clone();
- tree_view.connect_key_release_event(move |_tree_view, e| {
+ tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
- basic_remove(&scrolled_window_big_files_finder, ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, &gui_data);
+ basic_remove(&tree_view, ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
@@ -303,22 +305,16 @@ pub fn initialize_gui(gui_data: &GuiData) {
gtk::Inhibit(false)
});
+ gui_data.main_notebook.tree_view_similar_images_finder = tree_view.clone();
scrolled_window_similar_images_finder.add(&tree_view);
scrolled_window_similar_images_finder.show_all();
- let scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone();
let gui_data = gui_data.clone();
- tree_view.connect_key_release_event(move |_tree_view, e| {
+ tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
- tree_remove(
- &scrolled_window_similar_images_finder,
- ColumnsSimilarImages::Name as i32,
- ColumnsSimilarImages::Path as i32,
- ColumnsSimilarImages::Color as i32,
- &gui_data,
- );
+ tree_remove(&tree_view, ColumnsSimilarImages::Name as i32, ColumnsSimilarImages::Path as i32, ColumnsSimilarImages::Color as i32, &gui_data);
image_preview_similar_images_clone.hide();
}
}
@@ -338,16 +334,16 @@ pub fn initialize_gui(gui_data: &GuiData) {
tree_view.connect_button_press_event(opening_double_click_function_zeroed_files);
+ gui_data.main_notebook.tree_view_zeroed_files_finder = tree_view.clone();
scrolled_window_zeroed_files_finder.add(&tree_view);
scrolled_window_zeroed_files_finder.show_all();
- let scrolled_window_zeroed_files_finder = gui_data.scrolled_window_zeroed_files_finder.clone();
let gui_data = gui_data.clone();
- tree_view.connect_key_release_event(move |_tree_view, e| {
+ tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
- basic_remove(&scrolled_window_zeroed_files_finder, ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, &gui_data);
+ basic_remove(&tree_view, ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
@@ -381,16 +377,16 @@ pub fn initialize_gui(gui_data: &GuiData) {
tree_view.connect_button_press_event(opening_double_click_function_same_music);
+ gui_data.main_notebook.tree_view_same_music_finder = tree_view.clone();
scrolled_window_same_music_finder.add(&tree_view);
scrolled_window_same_music_finder.show_all();
- let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_finder.clone();
let gui_data = gui_data.clone();
- tree_view.connect_key_release_event(move |_tree_view, e| {
+ tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
- tree_remove(&scrolled_window_same_music_finder, ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, ColumnsSameMusic::Color as i32, &gui_data);
+ tree_remove(&tree_view, ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, ColumnsSameMusic::Color as i32, &gui_data);
}
}
gtk::Inhibit(false)
@@ -409,16 +405,16 @@ pub fn initialize_gui(gui_data: &GuiData) {
tree_view.connect_button_press_event(opening_double_click_function_invalid_symlinks);
+ gui_data.main_notebook.tree_view_invalid_symlinks = tree_view.clone();
scrolled_window_invalid_symlinks.add(&tree_view);
scrolled_window_invalid_symlinks.show_all();
- let scrolled_window_invalid_symlinks = gui_data.scrolled_window_invalid_symlinks.clone();
let gui_data = gui_data.clone();
- tree_view.connect_key_release_event(move |_tree_view, e| {
+ tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
- basic_remove(&scrolled_window_invalid_symlinks, ColumnsInvalidSymlinks::Name as i32, ColumnsInvalidSymlinks::Path as i32, &gui_data);
+ basic_remove(&tree_view, ColumnsInvalidSymlinks::Name as i32, ColumnsInvalidSymlinks::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
@@ -437,15 +433,15 @@ pub fn initialize_gui(gui_data: &GuiData) {
create_tree_view_directories(&mut tree_view);
+ gui_data.tree_view_included_directories = tree_view.clone();
scrolled_window_included_directories.add(&tree_view);
scrolled_window_included_directories.show_all();
- tree_view.connect_key_release_event(move |_tree_view, e| {
+ tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
- let tree_view = get_tree_view(&scrolled_window_included_directories);
- let list_store = get_list_store(&scrolled_window_included_directories);
+ let list_store = get_list_store(&tree_view);
let selection = tree_view.get_selection();
let (vec_tree_path, _tree_model) = selection.get_selected_rows();
@@ -469,15 +465,15 @@ pub fn initialize_gui(gui_data: &GuiData) {
create_tree_view_directories(&mut tree_view);
+ gui_data.tree_view_excluded_directories = tree_view.clone();
scrolled_window_excluded_directories.add(&tree_view);
scrolled_window_excluded_directories.show_all();
- tree_view.connect_key_release_event(move |_tree_view, e| {
+ tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
- let tree_view = get_tree_view(&scrolled_window_excluded_directories);
- let list_store = get_list_store(&scrolled_window_excluded_directories);
+ let list_store = get_list_store(&tree_view);
let selection = tree_view.get_selection();
let (vec_tree_path, _tree_model) = selection.get_selected_rows();
diff --git a/czkawka_gui/src/main.rs b/czkawka_gui/src/main.rs
index df4eccc..737b712 100644
--- a/czkawka_gui/src/main.rs
+++ b/czkawka_gui/src/main.rs
@@ -17,6 +17,7 @@ mod connect_settings;
mod create_tree_view;
mod double_click_opening;
mod gui_data;
+mod gui_main_notebook;
mod help_functions;
mod initialize_gui;
mod notebook_enums;
@@ -63,7 +64,7 @@ fn main() {
gtk::init().expect("Failed to initialize GTK.");
- let gui_data: GuiData = GuiData::new();
+ let mut gui_data: GuiData = GuiData::new();
// Used for getting data from thread
let (glib_stop_sender, glib_stop_receiver) = glib::MainContext::channel(glib::PRIORITY_DEFAULT);
@@ -79,7 +80,7 @@ fn main() {
let (futures_sender_zeroed, futures_receiver_zeroed): (futures::channel::mpsc::Sender, futures::channel::mpsc::Receiver) = futures::channel::mpsc::channel(20);
let (futures_sender_invalid_symlinks, futures_receiver_invalid_symlinks): (futures::channel::mpsc::Sender, futures::channel::mpsc::Receiver) = futures::channel::mpsc::channel(20);
- initialize_gui(&gui_data);
+ initialize_gui(&mut gui_data);
reset_configuration(&gui_data, false); // Fallback for invalid loading setting project
load_configuration(&gui_data, false);
diff --git a/czkawka_gui/src/saving_loading.rs b/czkawka_gui/src/saving_loading.rs
index 6bbaf46..9ac86ff 100644
--- a/czkawka_gui/src/saving_loading.rs
+++ b/czkawka_gui/src/saving_loading.rs
@@ -42,8 +42,8 @@ pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) {
//// Included Directories
data_to_save.push("--included_directories:".to_string());
- let scrolled_window_included_directories = gui_data.scrolled_window_included_directories.clone();
- let list_store = get_list_store(&scrolled_window_included_directories);
+ let tree_view_included_directories = gui_data.tree_view_included_directories.clone();
+ let list_store = get_list_store(&tree_view_included_directories);
if let Some(iter) = list_store.get_iter_first() {
loop {
data_to_save.push(list_store.get_value(&iter, ColumnsDirectory::Path as i32).get::().unwrap().unwrap());
@@ -55,8 +55,8 @@ pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) {
//// Excluded Directories
data_to_save.push("--excluded_directories:".to_string());
- let scrolled_window_excluded_directories = gui_data.scrolled_window_excluded_directories.clone();
- let list_store = get_list_store(&scrolled_window_excluded_directories);
+ let tree_view_excluded_directories = gui_data.tree_view_excluded_directories.clone();
+ let list_store = get_list_store(&tree_view_excluded_directories);
if let Some(iter) = list_store.get_iter_first() {
loop {
data_to_save.push(list_store.get_value(&iter, ColumnsDirectory::Path as i32).get::().unwrap().unwrap());
@@ -323,8 +323,8 @@ pub fn load_configuration(gui_data: &GuiData, manual_execution: bool) {
// Setting data
if manual_execution || loading_at_start {
//// Included Directories
- let scrolled_window_included_directories = gui_data.scrolled_window_included_directories.clone();
- let list_store = get_list_store(&scrolled_window_included_directories);
+ let tree_view_included_directories = gui_data.tree_view_included_directories.clone();
+ let list_store = get_list_store(&tree_view_included_directories);
list_store.clear();
let col_indices = [0];
@@ -335,8 +335,8 @@ pub fn load_configuration(gui_data: &GuiData, manual_execution: bool) {
}
//// Exclude Directories
- let scrolled_window_excluded_directories = gui_data.scrolled_window_excluded_directories.clone();
- let list_store = get_list_store(&scrolled_window_excluded_directories);
+ let tree_view_excluded_directories = gui_data.tree_view_excluded_directories.clone();
+ let list_store = get_list_store(&tree_view_excluded_directories);
list_store.clear();
let col_indices = [0];
@@ -362,9 +362,9 @@ pub fn load_configuration(gui_data: &GuiData, manual_execution: bool) {
gui_data.check_button_settings_show_text_view.set_active(bottom_text_panel);
if !bottom_text_panel {
- gui_data.scrolled_window_errors.hide();
+ gui_data.text_view_errors.hide();
} else {
- gui_data.scrolled_window_errors.show();
+ gui_data.text_view_errors.show();
}
} else {
gui_data.check_button_settings_load_at_start.set_active(false);
@@ -387,8 +387,8 @@ pub fn reset_configuration(gui_data: &GuiData, manual_clearing: bool) {
// Resetting included directories
{
let col_indices = [0];
- let scrolled_window_included_directories = gui_data.scrolled_window_included_directories.clone();
- let list_store = get_list_store(&scrolled_window_included_directories);
+ let tree_view_included_directories = gui_data.tree_view_included_directories.clone();
+ let list_store = get_list_store(&tree_view_included_directories);
list_store.clear();
let current_dir: String = match env::current_dir() {
@@ -412,8 +412,8 @@ pub fn reset_configuration(gui_data: &GuiData, manual_clearing: bool) {
// Resetting excluded directories
{
let col_indices = [0];
- let scrolled_window_excluded_directories = gui_data.scrolled_window_excluded_directories.clone();
- let list_store = get_list_store(&scrolled_window_excluded_directories);
+ let tree_view_excluded_directories = gui_data.tree_view_excluded_directories.clone();
+ let list_store = get_list_store(&tree_view_excluded_directories);
list_store.clear();
if cfg!(target_family = "unix") {
for i in ["/proc", "/dev", "/sys", "/run", "/snap"].iter() {