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 False vertical @@ -1409,7 +1409,7 @@ Author: Rafał Mikrut - + 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() {