1
0
Fork 0
mirror of synced 2024-05-21 21:02:52 +12:00

Use directly TreeView instead ScrolledWindow->TreeView (#190)

This commit is contained in:
Rafał Mikrut 2021-01-10 13:45:05 +01:00 committed by GitHub
parent 30bab75a5d
commit 683e0f9117
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 284 additions and 255 deletions

View file

@ -1229,7 +1229,7 @@ Author: Rafał Mikrut
<property name="tab_pos">left</property> <property name="tab_pos">left</property>
<property name="scrollable">True</property> <property name="scrollable">True</property>
<child> <child>
<object class="GtkBox" id="notebook_main_duplicate_finder_label"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
@ -1409,7 +1409,7 @@ Author: Rafał Mikrut
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkScrolledWindow" id="scrolled_window_main_empty_folder_finder"> <object class="GtkScrolledWindow" id="scrolled_window_empty_folder_finder">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="shadow_type">in</property> <property name="shadow_type">in</property>
@ -1433,7 +1433,7 @@ Author: Rafał Mikrut
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="notebook_big_main_file_finder"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
@ -1508,7 +1508,7 @@ Author: Rafał Mikrut
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkScrolledWindow" id="scrolled_window_main_empty_files_finder"> <object class="GtkScrolledWindow" id="scrolled_window_empty_files_finder">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="shadow_type">in</property> <property name="shadow_type">in</property>
@ -1532,7 +1532,7 @@ Author: Rafał Mikrut
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkScrolledWindow" id="scrolled_window_main_temporary_files_finder"> <object class="GtkScrolledWindow" id="scrolled_window_temporary_files_finder">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="shadow_type">in</property> <property name="shadow_type">in</property>
@ -1556,7 +1556,7 @@ Author: Rafał Mikrut
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="notebook_main_similar_images_finder_label"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<child> <child>
@ -1774,7 +1774,7 @@ Author: Rafał Mikrut
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="notebook_main_same_music_finder"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
@ -1933,7 +1933,7 @@ Author: Rafał Mikrut
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="notebook_main_zeroed_files_finder"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>

View file

@ -12,17 +12,17 @@ use std::fs::Metadata;
pub fn connect_button_delete(gui_data: &GuiData) { pub fn connect_button_delete(gui_data: &GuiData) {
let gui_data = gui_data.clone(); let gui_data = gui_data.clone();
let buttons_delete = gui_data.buttons_delete.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 notebook_main = gui_data.notebook_main.clone();
let window_main = gui_data.window_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 tree_view_empty_folder_finder = gui_data.main_notebook.tree_view_empty_folder_finder.clone();
let scrolled_window_big_files_finder = gui_data.scrolled_window_big_files_finder.clone(); let tree_view_big_files_finder = gui_data.main_notebook.tree_view_big_files_finder.clone();
let scrolled_window_main_empty_files_finder = gui_data.scrolled_window_main_empty_files_finder.clone(); let tree_view_empty_files_finder = gui_data.main_notebook.tree_view_empty_files_finder.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 scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone(); let tree_view_similar_images_finder = gui_data.main_notebook.tree_view_similar_images_finder.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 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 scrolled_window_invalid_symlinks = gui_data.scrolled_window_invalid_symlinks.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 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(); 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()) { match to_notebook_main_enum(notebook_main.get_current_page().unwrap()) {
NotebookMainEnum::Duplicate => { 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 => { 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 => { 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 => { 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 => { 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 => { NotebookMainEnum::SimilarImages => {
tree_remove( tree_remove(
&scrolled_window_similar_images_finder.clone(), &tree_view_similar_images_finder.clone(),
ColumnsSimilarImages::Name as i32, ColumnsSimilarImages::Name as i32,
ColumnsSimilarImages::Path as i32, ColumnsSimilarImages::Path as i32,
ColumnsSimilarImages::Color as i32, ColumnsSimilarImages::Color as i32,
@ -80,29 +80,28 @@ pub fn connect_button_delete(gui_data: &GuiData) {
image_preview_similar_images.hide(); image_preview_similar_images.hide();
} }
NotebookMainEnum::Zeroed => { 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 => { 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 => { 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: &gtk::ScrolledWindow, column_file_name: i32, column_path: i32, gui_data: &GuiData) { pub fn empty_folder_remover(tree_view: &gtk::TreeView, column_file_name: i32, column_path: i32, gui_data: &GuiData) {
let text_view_errors = gui_data.text_view_errors.clone(); 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 = tree_view.get_selection();
let (selection_rows, tree_model) = selection.get_selected_rows(); let (selection_rows, tree_model) = selection.get_selected_rows();
if selection_rows.is_empty() { if selection_rows.is_empty() {
return; return;
} }
let list_store = get_list_store(&scrolled_window); let list_store = get_list_store(&tree_view);
let mut messages: String = "".to_string(); let mut messages: String = "".to_string();
@ -176,17 +175,16 @@ pub fn empty_folder_remover(scrolled_window: &gtk::ScrolledWindow, column_file_n
selection.unselect_all(); selection.unselect_all();
} }
pub fn basic_remove(scrolled_window: &gtk::ScrolledWindow, column_file_name: i32, column_path: i32, gui_data: &GuiData) { pub fn basic_remove(tree_view: &gtk::TreeView, column_file_name: i32, column_path: i32, gui_data: &GuiData) {
let text_view_errors = gui_data.text_view_errors.clone(); 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 = tree_view.get_selection();
let (selection_rows, tree_model) = selection.get_selected_rows(); let (selection_rows, tree_model) = selection.get_selected_rows();
if selection_rows.is_empty() { if selection_rows.is_empty() {
return; return;
} }
let list_store = get_list_store(&scrolled_window); let list_store = get_list_store(&tree_view);
let mut messages: String = "".to_string(); let mut messages: String = "".to_string();
@ -208,17 +206,16 @@ pub fn basic_remove(scrolled_window: &gtk::ScrolledWindow, column_file_name: i32
} }
// Remove all occurrences - remove every element which have same path and name as even non selected ones // Remove all occurrences - remove every element which have same path and name as even non selected ones
pub fn tree_remove(scrolled_window: &gtk::ScrolledWindow, column_file_name: i32, column_path: i32, column_color: i32, gui_data: &GuiData) { pub fn tree_remove(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(); 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 = tree_view.get_selection();
let (selection_rows, tree_model) = selection.get_selected_rows(); let (selection_rows, tree_model) = selection.get_selected_rows();
if selection_rows.is_empty() { if selection_rows.is_empty() {
return; return;
} }
let list_store = get_list_store(&scrolled_window); let list_store = get_list_store(&tree_view);
let mut messages: String = "".to_string(); let mut messages: String = "".to_string();

View file

@ -36,8 +36,8 @@ pub fn connect_button_search(
) { ) {
let entry_info = gui_data.entry_info.clone(); let entry_info = gui_data.entry_info.clone();
let notebook_main = gui_data.notebook_main.clone(); let notebook_main = gui_data.notebook_main.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();
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 buttons_search_clone = gui_data.buttons_search.clone(); let buttons_search_clone = gui_data.buttons_search.clone();
let buttons_array = gui_data.buttons_array.clone(); let buttons_array = gui_data.buttons_array.clone();
let check_button_recursive = gui_data.check_button_recursive.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_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 check_button_music_year: gtk::CheckButton = gui_data.check_button_music_year.clone();
let shared_buttons = gui_data.shared_buttons.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 tree_view_empty_folder_finder = gui_data.main_notebook.tree_view_empty_folder_finder.clone();
let scrolled_window_main_empty_files_finder = gui_data.scrolled_window_main_empty_files_finder.clone(); let tree_view_empty_files_finder = gui_data.main_notebook.tree_view_empty_files_finder.clone();
let scrolled_window_big_files_finder = gui_data.scrolled_window_big_files_finder.clone(); let tree_view_big_files_finder = gui_data.main_notebook.tree_view_big_files_finder.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 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 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 scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone(); let tree_view_similar_images_finder = gui_data.main_notebook.tree_view_similar_images_finder.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 scrolled_window_invalid_symlinks = gui_data.scrolled_window_invalid_symlinks.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 text_view_errors = gui_data.text_view_errors.clone();
let dialog_progress = gui_data.dialog_progress.clone(); let dialog_progress = gui_data.dialog_progress.clone();
let label_stage = gui_data.label_stage.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(); let image_preview_similar_images = gui_data.image_preview_similar_images.clone();
buttons_search_clone.connect_clicked(move |_| { buttons_search_clone.connect_clicked(move |_| {
let included_directories = get_string_from_list_store(&scrolled_window_included_directories); let included_directories = get_string_from_list_store(&tree_view_included_directories);
let excluded_directories = get_string_from_list_store(&scrolled_window_excluded_directories); let excluded_directories = get_string_from_list_store(&tree_view_excluded_directories);
let recursive_search = check_button_recursive.get_active(); let recursive_search = check_button_recursive.get_active();
let excluded_items = entry_excluded_items.get_text().as_str().to_string(); let excluded_items = entry_excluded_items.get_text().as_str().to_string();
let allowed_extensions = entry_allowed_extensions.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(); grid_progress_stages.show_all();
dialog_progress.resize(1, 1); dialog_progress.resize(1, 1);
get_list_store(&scrolled_window_duplicate_finder).clear(); get_list_store(&tree_view_duplicate_finder).clear();
let check_method; let check_method;
if radio_button_duplicates_name.get_active() { if radio_button_duplicates_name.get_active() {
@ -152,7 +152,7 @@ pub fn connect_button_search(
grid_progress_stages.hide(); grid_progress_stages.hide();
dialog_progress.resize(1, 1); 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 glib_stop_sender = glib_stop_sender.clone();
let stop_receiver = stop_receiver.clone(); let stop_receiver = stop_receiver.clone();
@ -176,7 +176,7 @@ pub fn connect_button_search(
grid_progress_stages.hide(); grid_progress_stages.hide();
dialog_progress.resize(1, 1); 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 glib_stop_sender = glib_stop_sender.clone();
let stop_receiver = stop_receiver.clone(); let stop_receiver = stop_receiver.clone();
@ -197,7 +197,7 @@ pub fn connect_button_search(
grid_progress_stages.hide(); grid_progress_stages.hide();
dialog_progress.resize(1, 1); 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::<usize>().unwrap_or(50); let numbers_of_files_to_check = entry_big_files_number.get_text().as_str().parse::<usize>().unwrap_or(50);
@ -222,7 +222,7 @@ pub fn connect_button_search(
grid_progress_stages.hide(); grid_progress_stages.hide();
dialog_progress.resize(1, 1); 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 glib_stop_sender = glib_stop_sender.clone();
let stop_receiver = stop_receiver.clone(); let stop_receiver = stop_receiver.clone();
@ -247,7 +247,7 @@ pub fn connect_button_search(
grid_progress_stages.show_all(); grid_progress_stages.show_all();
dialog_progress.resize(1, 1); 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 glib_stop_sender = glib_stop_sender.clone();
let stop_receiver = stop_receiver.clone(); let stop_receiver = stop_receiver.clone();
@ -291,7 +291,7 @@ pub fn connect_button_search(
grid_progress_stages.show_all(); grid_progress_stages.show_all();
dialog_progress.resize(1, 1); 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 glib_stop_sender = glib_stop_sender.clone();
let stop_receiver = stop_receiver.clone(); let stop_receiver = stop_receiver.clone();
@ -315,7 +315,7 @@ pub fn connect_button_search(
grid_progress_stages.show_all(); grid_progress_stages.show_all();
dialog_progress.resize(1, 1); 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::<u64>().unwrap_or(1024); let minimal_file_size = entry_same_music_minimal_size.get_text().as_str().parse::<u64>().unwrap_or(1024);
@ -367,7 +367,7 @@ pub fn connect_button_search(
grid_progress_stages.hide(); grid_progress_stages.hide();
dialog_progress.resize(1, 1); 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 glib_stop_sender = glib_stop_sender.clone();
let stop_receiver = stop_receiver.clone(); let stop_receiver = stop_receiver.clone();

View file

@ -12,22 +12,22 @@ pub fn connect_button_symlink(gui_data: &GuiData) {
let buttons_symlink = gui_data.buttons_symlink.clone(); let buttons_symlink = gui_data.buttons_symlink.clone();
let notebook_main = gui_data.notebook_main.clone(); let notebook_main = gui_data.notebook_main.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 scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone(); let tree_view_similar_images_finder = gui_data.main_notebook.tree_view_similar_images_finder.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 image_preview_similar_images = gui_data.image_preview_similar_images.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()) { buttons_symlink.connect_clicked(move |_| match to_notebook_main_enum(notebook_main.get_current_page().unwrap()) {
NotebookMainEnum::Duplicate => { 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 => { 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 => { NotebookMainEnum::SimilarImages => {
symlink( symlink(
scrolled_window_similar_images_finder.clone(), tree_view_similar_images_finder.clone(),
ColumnsSimilarImages::Name as i32, ColumnsSimilarImages::Name as i32,
ColumnsSimilarImages::Path as i32, ColumnsSimilarImages::Path as i32,
ColumnsSimilarImages::Color as i32, ColumnsSimilarImages::Color as i32,
@ -38,12 +38,11 @@ pub fn connect_button_symlink(gui_data: &GuiData) {
e => panic!("Not existent {:?}", e), e => panic!("Not existent {:?}", e),
}); });
} }
fn symlink(scrolled_window: gtk::ScrolledWindow, column_file_name: i32, column_path: i32, column_color: i32, gui_data: &GuiData) { 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(); let text_view_errors = gui_data.text_view_errors.clone();
reset_text_view(&text_view_errors); reset_text_view(&text_view_errors);
let tree_view = get_tree_view(&scrolled_window); let list_store = get_list_store(&tree_view);
let list_store = get_list_store(&scrolled_window);
let selection = tree_view.get_selection(); let selection = tree_view.get_selection();
let (selection_rows, tree_model) = selection.get_selected_rows(); let (selection_rows, tree_model) = selection.get_selected_rows();

View file

@ -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 buttons_search = gui_data.buttons_search.clone();
let notebook_main = gui_data.notebook_main.clone(); let notebook_main = gui_data.notebook_main.clone();
let entry_info = gui_data.entry_info.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 tree_view_empty_folder_finder = gui_data.main_notebook.tree_view_empty_folder_finder.clone();
let scrolled_window_main_empty_files_finder = gui_data.scrolled_window_main_empty_files_finder.clone(); let tree_view_empty_files_finder = gui_data.main_notebook.tree_view_empty_files_finder.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 scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_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 buttons_array = gui_data.buttons_array.clone();
let text_view_errors = gui_data.text_view_errors.clone(); let text_view_errors = gui_data.text_view_errors.clone();
let shared_duplication_state = gui_data.shared_duplication_state.clone(); let shared_duplication_state = gui_data.shared_duplication_state.clone();
let shared_buttons = gui_data.shared_buttons.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_folders_state = gui_data.shared_empty_folders_state.clone();
let shared_empty_files_state = gui_data.shared_empty_files_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 tree_view_big_files_finder = gui_data.main_notebook.tree_view_big_files_finder.clone();
let scrolled_window_invalid_symlinks = gui_data.scrolled_window_invalid_symlinks.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_big_files_state = gui_data.shared_big_files_state.clone();
let shared_same_invalid_symlinks = gui_data.shared_same_invalid_symlinks.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_temporary_files_state = gui_data.shared_temporary_files_state.clone();
let shared_similar_images_state = gui_data.shared_similar_images_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 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 shared_same_music_state = gui_data.shared_same_music_state.clone();
let buttons_names = gui_data.buttons_names.clone(); let buttons_names = gui_data.buttons_names.clone();
let dialog_progress = gui_data.dialog_progress.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 // 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]; 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 // 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]; let col_indices = [0, 1, 2];
@ -258,7 +258,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI // 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]; let col_indices = [0, 1, 2];
@ -302,7 +302,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI // 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]; 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 // 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]; let col_indices = [0, 1, 2];
@ -397,7 +397,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI // 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]; 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 // 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]; 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 // 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]; 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 // 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]; let col_indices = [0, 1, 2, 3, 4];

View file

@ -9,22 +9,19 @@ use gtk::TreeIter;
// File length variable allows users to choose duplicates which have shorter file name // 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. // e.g. 'tar.gz' will be selected instead 'tar.gz (copy)' etc.
fn popover_select_all(popover: &gtk::Popover, scrolled_window: &gtk::ScrolledWindow) { fn popover_select_all(popover: &gtk::Popover, tree_view: &gtk::TreeView) {
let tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection(); let selection = tree_view.get_selection();
selection.select_all(); selection.select_all();
popover.popdown(); popover.popdown();
} }
fn popover_unselect_all(popover: &gtk::Popover, scrolled_window: &gtk::ScrolledWindow) { fn popover_unselect_all(popover: &gtk::Popover, tree_view: &gtk::TreeView) {
let tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection(); let selection = tree_view.get_selection();
selection.unselect_all(); selection.unselect_all();
popover.popdown(); popover.popdown();
} }
fn popover_reverse(popover: &gtk::Popover, scrolled_window: &gtk::ScrolledWindow) { fn popover_reverse(popover: &gtk::Popover, tree_view: &gtk::TreeView) {
let tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection(); let selection = tree_view.get_selection();
let (vector_tree_path, tree_model) = selection.get_selected_rows(); let (vector_tree_path, tree_model) = selection.get_selected_rows();
@ -57,8 +54,7 @@ fn popover_reverse(popover: &gtk::Popover, scrolled_window: &gtk::ScrolledWindow
popover.popdown(); popover.popdown();
} }
fn popover_all_except_oldest(popover: &gtk::Popover, scrolled_window: &gtk::ScrolledWindow, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) { fn popover_all_except_oldest(popover: &gtk::Popover, tree_view: &gtk::TreeView, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) {
let tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection(); let selection = tree_view.get_selection();
let tree_model = tree_view.get_model().unwrap(); let tree_model = tree_view.get_model().unwrap();
@ -116,8 +112,7 @@ fn popover_all_except_oldest(popover: &gtk::Popover, scrolled_window: &gtk::Scro
popover.popdown(); popover.popdown();
} }
fn popover_all_except_newest(popover: &gtk::Popover, scrolled_window: &gtk::ScrolledWindow, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) { fn popover_all_except_newest(popover: &gtk::Popover, tree_view: &gtk::TreeView, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) {
let tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection(); let selection = tree_view.get_selection();
let tree_model = tree_view.get_model().unwrap(); let tree_model = tree_view.get_model().unwrap();
@ -175,8 +170,7 @@ fn popover_all_except_newest(popover: &gtk::Popover, scrolled_window: &gtk::Scro
popover.popdown(); popover.popdown();
} }
fn popover_one_oldest(popover: &gtk::Popover, scrolled_window: &gtk::ScrolledWindow, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) { fn popover_one_oldest(popover: &gtk::Popover, tree_view: &gtk::TreeView, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) {
let tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection(); let selection = tree_view.get_selection();
let tree_model = tree_view.get_model().unwrap(); let tree_model = tree_view.get_model().unwrap();
@ -234,8 +228,7 @@ fn popover_one_oldest(popover: &gtk::Popover, scrolled_window: &gtk::ScrolledWin
popover.popdown(); popover.popdown();
} }
fn popover_one_newest(popover: &gtk::Popover, scrolled_window: &gtk::ScrolledWindow, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) { fn popover_one_newest(popover: &gtk::Popover, tree_view: &gtk::TreeView, column_color: i32, column_modification_as_secs: i32, column_file_name: i32) {
let tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection(); let selection = tree_view.get_selection();
let tree_model = tree_view.get_model().unwrap(); let tree_model = tree_view.get_model().unwrap();
@ -293,7 +286,7 @@ fn popover_one_newest(popover: &gtk::Popover, scrolled_window: &gtk::ScrolledWin
popover.popdown(); popover.popdown();
} }
fn popover_select_custom(popover: &gtk::Popover, gui_data: &GuiData, scrolled_window: &gtk::ScrolledWindow, column_color: Option<i32>, column_file_name: i32, column_path: i32) { fn popover_select_custom(popover: &gtk::Popover, gui_data: &GuiData, tree_view: &gtk::TreeView, column_color: Option<i32>, column_file_name: i32, column_path: i32) {
popover.popdown(); popover.popdown();
let wildcard: String; let wildcard: String;
@ -367,7 +360,6 @@ fn popover_select_custom(popover: &gtk::Popover, gui_data: &GuiData, scrolled_wi
if !wildcard.is_empty() { if !wildcard.is_empty() {
let wildcard = wildcard.trim(); let wildcard = wildcard.trim();
let tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection(); let selection = tree_view.get_selection();
let tree_model = tree_view.get_model().unwrap(); let tree_model = tree_view.get_model().unwrap();
@ -410,7 +402,7 @@ fn popover_select_custom(popover: &gtk::Popover, gui_data: &GuiData, scrolled_wi
} }
} }
} }
fn popover_unselect_custom(popover: &gtk::Popover, gui_data: &GuiData, scrolled_window: &gtk::ScrolledWindow, column_color: Option<i32>, column_file_name: i32, column_path: i32) { fn popover_unselect_custom(popover: &gtk::Popover, gui_data: &GuiData, tree_view: &gtk::TreeView, column_color: Option<i32>, column_file_name: i32, column_path: i32) {
popover.popdown(); popover.popdown();
let wildcard: String; let wildcard: String;
@ -482,7 +474,6 @@ fn popover_unselect_custom(popover: &gtk::Popover, gui_data: &GuiData, scrolled_
if !wildcard.is_empty() { if !wildcard.is_empty() {
let wildcard = wildcard.trim(); let wildcard = wildcard.trim();
let tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection(); let selection = tree_view.get_selection();
let tree_model = tree_view.get_model().unwrap(); let tree_model = tree_view.get_model().unwrap();
@ -526,8 +517,7 @@ fn popover_unselect_custom(popover: &gtk::Popover, gui_data: &GuiData, scrolled_
} }
} }
fn popover_all_except_biggest(popover: &gtk::Popover, scrolled_window: &gtk::ScrolledWindow, column_color: i32, column_size_as_bytes: i32, column_dimensions: i32) { fn popover_all_except_biggest(popover: &gtk::Popover, tree_view: &gtk::TreeView, column_color: i32, column_size_as_bytes: i32, column_dimensions: i32) {
let tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection(); let selection = tree_view.get_selection();
let tree_model = tree_view.get_model().unwrap(); let tree_model = tree_view.get_model().unwrap();
@ -588,8 +578,7 @@ fn popover_all_except_biggest(popover: &gtk::Popover, scrolled_window: &gtk::Scr
popover.popdown(); popover.popdown();
} }
fn popover_all_except_smallest(popover: &gtk::Popover, scrolled_window: &gtk::ScrolledWindow, column_color: i32, column_size_as_bytes: i32, column_dimensions: i32) { fn popover_all_except_smallest(popover: &gtk::Popover, tree_view: &gtk::TreeView, column_color: i32, column_size_as_bytes: i32, column_dimensions: i32) {
let tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection(); let selection = tree_view.get_selection();
let tree_model = tree_view.get_model().unwrap(); let tree_model = tree_view.get_model().unwrap();
@ -655,7 +644,7 @@ fn popover_all_except_smallest(popover: &gtk::Popover, scrolled_window: &gtk::Sc
pub struct PopoverObject { pub struct PopoverObject {
pub notebook_type: NotebookMainEnum, pub notebook_type: NotebookMainEnum,
pub available_modes: Vec<String>, pub available_modes: Vec<String>,
pub scrolled_windows: gtk::ScrolledWindow, pub tree_view: gtk::TreeView,
pub column_path: Option<i32>, pub column_path: Option<i32>,
pub column_name: Option<i32>, pub column_name: Option<i32>,
pub column_color: Option<i32>, pub column_color: Option<i32>,
@ -679,7 +668,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
PopoverObject { PopoverObject {
notebook_type: NotebookMainEnum::Duplicate, notebook_type: NotebookMainEnum::Duplicate,
available_modes: vec!["all", "reverse", "custom", "date"].iter().map(|e| e.to_string()).collect(), 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_path: Some(ColumnsDuplicates::Path as i32),
column_name: Some(ColumnsDuplicates::Name as i32), column_name: Some(ColumnsDuplicates::Name as i32),
column_color: Some(ColumnsDuplicates::Color as i32), column_color: Some(ColumnsDuplicates::Color as i32),
@ -691,7 +680,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
PopoverObject { PopoverObject {
notebook_type: NotebookMainEnum::SameMusic, notebook_type: NotebookMainEnum::SameMusic,
available_modes: vec!["all", "reverse", "custom", "date"].iter().map(|e| e.to_string()).collect(), 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_path: Some(ColumnsSameMusic::Path as i32),
column_name: Some(ColumnsSameMusic::Name as i32), column_name: Some(ColumnsSameMusic::Name as i32),
column_color: Some(ColumnsSameMusic::Color as i32), column_color: Some(ColumnsSameMusic::Color as i32),
@ -703,7 +692,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
PopoverObject { PopoverObject {
notebook_type: NotebookMainEnum::SimilarImages, notebook_type: NotebookMainEnum::SimilarImages,
available_modes: vec!["all", "reverse", "custom", "date"].iter().map(|e| e.to_string()).collect(), 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_path: Some(ColumnsSimilarImages::Path as i32),
column_name: Some(ColumnsSimilarImages::Name as i32), column_name: Some(ColumnsSimilarImages::Name as i32),
column_color: Some(ColumnsSimilarImages::Color as i32), column_color: Some(ColumnsSimilarImages::Color as i32),
@ -715,7 +704,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
PopoverObject { PopoverObject {
notebook_type: NotebookMainEnum::EmptyDirectories, notebook_type: NotebookMainEnum::EmptyDirectories,
available_modes: vec!["all", "reverse", "custom"].iter().map(|e| e.to_string()).collect(), 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_path: Some(ColumnsEmptyFolders::Path as i32),
column_name: Some(ColumnsEmptyFolders::Name as i32), column_name: Some(ColumnsEmptyFolders::Name as i32),
column_color: None, column_color: None,
@ -727,7 +716,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
PopoverObject { PopoverObject {
notebook_type: NotebookMainEnum::EmptyFiles, notebook_type: NotebookMainEnum::EmptyFiles,
available_modes: vec!["all", "reverse", "custom"].iter().map(|e| e.to_string()).collect(), 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_path: Some(ColumnsEmptyFiles::Path as i32),
column_name: Some(ColumnsEmptyFiles::Name as i32), column_name: Some(ColumnsEmptyFiles::Name as i32),
column_color: None, column_color: None,
@ -739,7 +728,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
PopoverObject { PopoverObject {
notebook_type: NotebookMainEnum::Temporary, notebook_type: NotebookMainEnum::Temporary,
available_modes: vec!["all", "reverse", "custom"].iter().map(|e| e.to_string()).collect(), 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_path: Some(ColumnsTemporaryFiles::Path as i32),
column_name: Some(ColumnsTemporaryFiles::Name as i32), column_name: Some(ColumnsTemporaryFiles::Name as i32),
column_color: None, column_color: None,
@ -751,7 +740,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
PopoverObject { PopoverObject {
notebook_type: NotebookMainEnum::BigFiles, notebook_type: NotebookMainEnum::BigFiles,
available_modes: vec!["all", "reverse", "custom"].iter().map(|e| e.to_string()).collect(), 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_path: Some(ColumnsBigFiles::Path as i32),
column_name: Some(ColumnsBigFiles::Name as i32), column_name: Some(ColumnsBigFiles::Name as i32),
column_color: None, column_color: None,
@ -763,7 +752,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
PopoverObject { PopoverObject {
notebook_type: NotebookMainEnum::Zeroed, notebook_type: NotebookMainEnum::Zeroed,
available_modes: vec!["all", "reverse", "custom"].iter().map(|e| e.to_string()).collect(), 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_path: Some(ColumnsZeroedFiles::Path as i32),
column_name: Some(ColumnsZeroedFiles::Name as i32), column_name: Some(ColumnsZeroedFiles::Name as i32),
column_color: None, column_color: None,
@ -780,7 +769,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
let vec_popover_objects = popover_objects.clone(); let vec_popover_objects = popover_objects.clone();
buttons_popover_select_all.connect_clicked(move |_| { 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(); 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(); 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(); let vec_popover_objects = popover_objects.clone();
buttons_popover_unselect_all.connect_clicked(move |_| { 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(); 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(); 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(); let vec_popover_objects = popover_objects.clone();
buttons_popover_reverse.connect_clicked(move |_| { 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(); 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(); 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(); let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
popover_all_except_oldest( popover_all_except_oldest(
&popover_select, &popover_select,
&object_popover.scrolled_windows, &object_popover.tree_view,
object_popover.column_color.unwrap(), object_popover.column_color.unwrap(),
object_popover.column_modification_as_secs.unwrap(), object_popover.column_modification_as_secs.unwrap(),
object_popover.column_name.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(); let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
popover_all_except_newest( popover_all_except_newest(
&popover_select, &popover_select,
&object_popover.scrolled_windows, &object_popover.tree_view,
object_popover.column_color.unwrap(), object_popover.column_color.unwrap(),
object_popover.column_modification_as_secs.unwrap(), object_popover.column_modification_as_secs.unwrap(),
object_popover.column_name.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(); let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
popover_one_oldest( popover_one_oldest(
&popover_select, &popover_select,
&object_popover.scrolled_windows, &object_popover.tree_view,
object_popover.column_color.unwrap(), object_popover.column_color.unwrap(),
object_popover.column_modification_as_secs.unwrap(), object_popover.column_modification_as_secs.unwrap(),
object_popover.column_name.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(); let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
popover_one_newest( popover_one_newest(
&popover_select, &popover_select,
&object_popover.scrolled_windows, &object_popover.tree_view,
object_popover.column_color.unwrap(), object_popover.column_color.unwrap(),
object_popover.column_modification_as_secs.unwrap(), object_popover.column_modification_as_secs.unwrap(),
object_popover.column_name.unwrap(), object_popover.column_name.unwrap(),
@ -871,7 +860,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
popover_select_custom( popover_select_custom(
&popover_select, &popover_select,
&gui_data_clone, &gui_data_clone,
&object_popover.scrolled_windows, &object_popover.tree_view,
object_popover.column_color, object_popover.column_color,
object_popover.column_name.unwrap(), object_popover.column_name.unwrap(),
object_popover.column_path.unwrap(), object_popover.column_path.unwrap(),
@ -888,7 +877,7 @@ pub fn connect_popovers(gui_data: &GuiData) {
popover_unselect_custom( popover_unselect_custom(
&popover_select, &popover_select,
&gui_data_clone, &gui_data_clone,
&object_popover.scrolled_windows, &object_popover.tree_view,
object_popover.column_color, object_popover.column_color,
object_popover.column_name.unwrap(), object_popover.column_name.unwrap(),
object_popover.column_path.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(); let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
popover_all_except_biggest( popover_all_except_biggest(
&popover_select, &popover_select,
&object_popover.scrolled_windows, &object_popover.tree_view,
object_popover.column_color.unwrap(), object_popover.column_color.unwrap(),
object_popover.column_size_as_bytes.unwrap(), object_popover.column_size_as_bytes.unwrap(),
object_popover.column_dimensions.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(); let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
popover_all_except_smallest( popover_all_except_smallest(
&popover_select, &popover_select,
&object_popover.scrolled_windows, &object_popover.tree_view,
object_popover.column_color.unwrap(), object_popover.column_color.unwrap(),
object_popover.column_size_as_bytes.unwrap(), object_popover.column_size_as_bytes.unwrap(),
object_popover.column_dimensions.unwrap(), object_popover.column_dimensions.unwrap(),

View file

@ -1,6 +1,6 @@
extern crate gtk; extern crate gtk;
use crate::gui_data::GuiData; 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::*; use gtk::prelude::*;
#[cfg(target_family = "windows")] #[cfg(target_family = "windows")]
@ -9,7 +9,7 @@ use czkawka_core::common::Common;
pub fn connect_selection_of_directories(gui_data: &GuiData) { pub fn connect_selection_of_directories(gui_data: &GuiData) {
// Add manually directory // 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 window_main = gui_data.window_main.clone();
let buttons_manual_add_directory = gui_data.buttons_manual_add_directory.clone(); let buttons_manual_add_directory = gui_data.buttons_manual_add_directory.clone();
buttons_manual_add_directory.connect_clicked(move |_| { 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(); let text = Common::normalize_windows_path(text).to_string_lossy().to_string();
if !text.is_empty() { 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]; let col_indices = [0];
@ -47,7 +47,7 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
} }
// Add manually excluded directory // 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 window_main = gui_data.window_main.clone();
let buttons_manual_add_excluded_directory = gui_data.buttons_manual_add_excluded_directory.clone(); let buttons_manual_add_excluded_directory = gui_data.buttons_manual_add_excluded_directory.clone();
buttons_manual_add_excluded_directory.connect_clicked(move |_| { 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(); let text = Common::normalize_windows_path(text).to_string_lossy().to_string();
if !text.is_empty() { 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]; let col_indices = [0];
@ -90,7 +90,7 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
} }
// Add included directory // 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 window_main = gui_data.window_main.clone();
let buttons_add_included_directory = gui_data.buttons_add_included_directory.clone(); let buttons_add_included_directory = gui_data.buttons_add_included_directory.clone();
buttons_add_included_directory.connect_clicked(move |_| { 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 { if response_type == gtk::ResponseType::Ok {
let folder = chooser.get_filenames(); 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]; let col_indices = [0];
for file_entry in &folder { for file_entry in &folder {
@ -119,7 +119,7 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
} }
// Add excluded directory // 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 window_main = gui_data.window_main.clone();
let buttons_add_excluded_directory = gui_data.buttons_add_excluded_directory.clone(); let buttons_add_excluded_directory = gui_data.buttons_add_excluded_directory.clone();
buttons_add_excluded_directory.connect_clicked(move |_| { 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 { if response_type == gtk::ResponseType::Ok {
let folder = chooser.get_filenames(); 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]; let col_indices = [0];
@ -150,11 +150,10 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
// Remove Excluded Folder // Remove Excluded Folder
{ {
let buttons_remove_excluded_directory = gui_data.buttons_remove_excluded_directory.clone(); 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 |_| { buttons_remove_excluded_directory.connect_clicked(move |_| {
let tree_view = get_tree_view(&scrolled_window_excluded_directories); let list_store = get_list_store(&tree_view_excluded_directories);
let list_store = get_list_store(&scrolled_window_excluded_directories); let selection = tree_view_excluded_directories.get_selection();
let selection = tree_view.get_selection();
let (vec_tree_path, _tree_model) = selection.get_selected_rows(); 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 // Remove Included Folder
{ {
let buttons_remove_included_directory = gui_data.buttons_remove_included_directory.clone(); 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 |_| { buttons_remove_included_directory.connect_clicked(move |_| {
let tree_view = get_tree_view(&scrolled_window_included_directories); let list_store = get_list_store(&tree_view_included_directories);
let list_store = get_list_store(&scrolled_window_included_directories); let selection = tree_view_included_directories.get_selection();
let selection = tree_view.get_selection();
let (vec_tree_path, _tree_model) = selection.get_selected_rows(); let (vec_tree_path, _tree_model) = selection.get_selected_rows();

View file

@ -1,4 +1,5 @@
extern crate gtk; extern crate gtk;
use crate::gui_main_notebook::GUIMainNotebook;
use crate::notebook_enums::*; use crate::notebook_enums::*;
use crossbeam_channel::unbounded; use crossbeam_channel::unbounded;
use czkawka_core::big_file::BigFile; use czkawka_core::big_file::BigFile;
@ -11,7 +12,7 @@ use czkawka_core::similar_images::SimilarImages;
use czkawka_core::temporary::Temporary; use czkawka_core::temporary::Temporary;
use czkawka_core::zeroed::ZeroedFiles; use czkawka_core::zeroed::ZeroedFiles;
use gtk::prelude::*; use gtk::prelude::*;
use gtk::{Builder, Button}; use gtk::{Builder, Button, TreeView};
use std::cell::RefCell; use std::cell::RefCell;
use std::collections::HashMap; use std::collections::HashMap;
use std::rc::Rc; use std::rc::Rc;
@ -25,6 +26,8 @@ pub struct GuiData {
// Windows // Windows
pub window_main: gtk::Window, pub window_main: gtk::Window,
pub main_notebook: GUIMainNotebook,
// States // States
pub buttons_labels: [String; 5], pub buttons_labels: [String; 5],
@ -132,21 +135,14 @@ pub struct GuiData {
pub scrolled_window_errors: gtk::ScrolledWindow, pub scrolled_window_errors: gtk::ScrolledWindow,
//// Scrolled windows //// 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 // Upper notebook
pub scrolled_window_included_directories: gtk::ScrolledWindow, pub scrolled_window_included_directories: gtk::ScrolledWindow,
pub scrolled_window_excluded_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 //// Dialog State - dialog with progress state, which allows to stop task
pub dialog_progress: gtk::Dialog, pub dialog_progress: gtk::Dialog,
@ -190,6 +186,8 @@ impl GuiData {
window_main.show_all(); window_main.show_all();
window_main.set_title("Czkawka"); window_main.set_title("Czkawka");
let main_notebook = GUIMainNotebook::create_from_builder(&builder);
//////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////
//// States //// States
let buttons_labels = ["search".to_string(), "select".to_string(), "delete".to_string(), "save".to_string(), "symlink".to_string()]; 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 //// Scrolled windows
// Main notebook // 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 // Upper notebook
let scrolled_window_included_directories: gtk::ScrolledWindow = builder.get_object("scrolled_window_included_directories").unwrap(); 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 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 //// Dialog State - dialog with progress state, which allows to stop task
let dialog_progress: gtk::Dialog = builder.get_object("dialog_progress").unwrap(); let dialog_progress: gtk::Dialog = builder.get_object("dialog_progress").unwrap();
dialog_progress.set_title("Czkawka"); dialog_progress.set_title("Czkawka");
@ -381,6 +373,7 @@ impl GuiData {
glade_src, glade_src,
builder, builder,
window_main, window_main,
main_notebook,
buttons_labels, buttons_labels,
shared_buttons, shared_buttons,
shared_upper_notebooks, shared_upper_notebooks,
@ -454,17 +447,10 @@ impl GuiData {
entry_info, entry_info,
text_view_errors, text_view_errors,
scrolled_window_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_included_directories,
scrolled_window_excluded_directories, scrolled_window_excluded_directories,
tree_view_included_directories,
tree_view_excluded_directories,
dialog_progress, dialog_progress,
progress_bar_current_stage, progress_bar_current_stage,
progress_bar_all_stages, progress_bar_all_stages,

View file

@ -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: &gtk::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,
}
}
}

View file

@ -10,7 +10,7 @@ use czkawka_core::similar_images::{SimilarImages, Similarity};
use czkawka_core::temporary::Temporary; use czkawka_core::temporary::Temporary;
use czkawka_core::zeroed::ZeroedFiles; use czkawka_core::zeroed::ZeroedFiles;
use gtk::prelude::*; use gtk::prelude::*;
use gtk::{ListStore, TextView, TreeView}; use gtk::{ListStore, TextView};
use std::collections::HashMap; use std::collections::HashMap;
use std::path::Path; 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 MAIN_ROW_COLOR: &str = "#f4f434"; // TEST
//pub const HEADER_ROW_COLOR: &str = "#010101"; // TEST //pub const HEADER_ROW_COLOR: &str = "#010101"; // TEST
pub fn get_string_from_list_store(scrolled_window: &gtk::ScrolledWindow) -> String { pub fn get_string_from_list_store(tree_view: &gtk::TreeView) -> String {
let list_store: gtk::ListStore = get_list_store(&scrolled_window); let list_store: gtk::ListStore = get_list_store(&tree_view);
let mut first: bool = true; let mut first: bool = true;
let mut return_string: String = "".to_string(); 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: &gtk::ScrolledWindow) -> ListStore { pub fn get_list_store(tree_view: &gtk::TreeView) -> ListStore {
let list_store = scrolled_window.get_children().get(0).unwrap().clone().downcast::<gtk::TreeView>().unwrap().get_model().unwrap().downcast::<gtk::ListStore>().unwrap(); tree_view.get_model().unwrap().downcast::<gtk::ListStore>().unwrap()
list_store
}
pub fn get_tree_view(scrolled_window: &gtk::ScrolledWindow) -> TreeView {
let tree_view = scrolled_window.get_children().get(0).unwrap().clone().downcast::<gtk::TreeView>().unwrap();
tree_view
} }
pub fn get_dialog_box_child(dialog: &gtk::Dialog) -> gtk::Box { pub fn get_dialog_box_child(dialog: &gtk::Dialog) -> gtk::Box {
dialog.get_children()[0].clone().downcast::<gtk::Box>().unwrap() dialog.get_children()[0].clone().downcast::<gtk::Box>().unwrap()

View file

@ -12,7 +12,7 @@ use std::cmp::Ordering;
use std::fs; use std::fs;
use std::path::Path; use std::path::Path;
pub fn initialize_gui(gui_data: &GuiData) { pub fn initialize_gui(gui_data: &mut GuiData) {
//// Setup default look(duplicate finder) //// Setup default look(duplicate finder)
{ {
let buttons_search = gui_data.buttons_search.clone(); 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_delete = gui_data.buttons_delete.clone();
let buttons_select = gui_data.buttons_select.clone(); let buttons_select = gui_data.buttons_select.clone();
let buttons_symlink = gui_data.buttons_symlink.clone(); let buttons_symlink = gui_data.buttons_symlink.clone();
let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone(); let scrolled_window_duplicate_finder = gui_data.main_notebook.scrolled_window_duplicate_finder.clone();
let scrolled_window_main_empty_folder_finder = gui_data.scrolled_window_main_empty_folder_finder.clone(); let scrolled_window_empty_folder_finder = gui_data.main_notebook.scrolled_window_empty_folder_finder.clone();
let scrolled_window_main_empty_files_finder = gui_data.scrolled_window_main_empty_files_finder.clone(); let scrolled_window_empty_files_finder = gui_data.main_notebook.scrolled_window_empty_files_finder.clone();
let scrolled_window_main_temporary_files_finder = gui_data.scrolled_window_main_temporary_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.scrolled_window_big_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.scrolled_window_similar_images_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.scrolled_window_same_music_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.scrolled_window_invalid_symlinks.clone(); let scrolled_window_invalid_symlinks = gui_data.main_notebook.scrolled_window_invalid_symlinks.clone();
let scrolled_window_zeroed_files_finder = gui_data.scrolled_window_zeroed_files_finder.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_included_directories = gui_data.scrolled_window_included_directories.clone();
let scrolled_window_excluded_directories = gui_data.scrolled_window_excluded_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 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 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(); 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()); // println!("{}", e.get_button());
gtk::Inhibit(false) 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.add(&tree_view);
scrolled_window_duplicate_finder.show_all(); scrolled_window_duplicate_finder.show_all();
let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
let gui_data = gui_data.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() { if let Some(button_number) = e.get_keycode() {
// Handle delete button // Handle delete button
if button_number == 119 { 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) 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); tree_view.connect_button_press_event(opening_double_click_function_empty_folders);
scrolled_window_main_empty_folder_finder.add(&tree_view); gui_data.main_notebook.tree_view_empty_folder_finder = tree_view.clone();
scrolled_window_main_empty_folder_finder.show_all(); 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(); 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() { if let Some(button_number) = e.get_keycode() {
// Handle delete button // Handle delete button
if button_number == 119 { 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) 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); tree_view.connect_button_press_event(opening_double_click_function_empty_files);
scrolled_window_main_empty_files_finder.add(&tree_view); gui_data.main_notebook.tree_view_empty_files_finder = tree_view.clone();
scrolled_window_main_empty_files_finder.show_all(); 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(); 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() { if let Some(button_number) = e.get_keycode() {
// Handle delete button // Handle delete button
if button_number == 119 { 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) 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); tree_view.connect_button_press_event(opening_double_click_function_temporary_files);
scrolled_window_main_temporary_files_finder.add(&tree_view); gui_data.main_notebook.tree_view_temporary_files_finder = tree_view.clone();
scrolled_window_main_temporary_files_finder.show_all(); 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(); 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() { if let Some(button_number) = e.get_keycode() {
// Handle delete button // Handle delete button
if button_number == 119 { 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) 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); 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.add(&tree_view);
scrolled_window_big_files_finder.show_all(); 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(); 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() { if let Some(button_number) = e.get_keycode() {
// Handle delete button // Handle delete button
if button_number == 119 { 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) gtk::Inhibit(false)
@ -303,22 +305,16 @@ pub fn initialize_gui(gui_data: &GuiData) {
gtk::Inhibit(false) 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.add(&tree_view);
scrolled_window_similar_images_finder.show_all(); 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(); 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() { if let Some(button_number) = e.get_keycode() {
// Handle delete button // Handle delete button
if button_number == 119 { if button_number == 119 {
tree_remove( tree_remove(&tree_view, ColumnsSimilarImages::Name as i32, ColumnsSimilarImages::Path as i32, ColumnsSimilarImages::Color as i32, &gui_data);
&scrolled_window_similar_images_finder,
ColumnsSimilarImages::Name as i32,
ColumnsSimilarImages::Path as i32,
ColumnsSimilarImages::Color as i32,
&gui_data,
);
image_preview_similar_images_clone.hide(); 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); 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.add(&tree_view);
scrolled_window_zeroed_files_finder.show_all(); 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(); 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() { if let Some(button_number) = e.get_keycode() {
// Handle delete button // Handle delete button
if button_number == 119 { 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) 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); 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.add(&tree_view);
scrolled_window_same_music_finder.show_all(); 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(); 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() { if let Some(button_number) = e.get_keycode() {
// Handle delete button // Handle delete button
if button_number == 119 { 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) 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); 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.add(&tree_view);
scrolled_window_invalid_symlinks.show_all(); scrolled_window_invalid_symlinks.show_all();
let scrolled_window_invalid_symlinks = gui_data.scrolled_window_invalid_symlinks.clone();
let gui_data = gui_data.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() { if let Some(button_number) = e.get_keycode() {
// Handle delete button // Handle delete button
if button_number == 119 { 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) gtk::Inhibit(false)
@ -437,15 +433,15 @@ pub fn initialize_gui(gui_data: &GuiData) {
create_tree_view_directories(&mut tree_view); 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.add(&tree_view);
scrolled_window_included_directories.show_all(); 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() { if let Some(button_number) = e.get_keycode() {
// Handle delete button // Handle delete button
if button_number == 119 { if button_number == 119 {
let tree_view = get_tree_view(&scrolled_window_included_directories); let list_store = get_list_store(&tree_view);
let list_store = get_list_store(&scrolled_window_included_directories);
let selection = tree_view.get_selection(); let selection = tree_view.get_selection();
let (vec_tree_path, _tree_model) = selection.get_selected_rows(); 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); 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.add(&tree_view);
scrolled_window_excluded_directories.show_all(); 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() { if let Some(button_number) = e.get_keycode() {
// Handle delete button // Handle delete button
if button_number == 119 { if button_number == 119 {
let tree_view = get_tree_view(&scrolled_window_excluded_directories); let list_store = get_list_store(&tree_view);
let list_store = get_list_store(&scrolled_window_excluded_directories);
let selection = tree_view.get_selection(); let selection = tree_view.get_selection();
let (vec_tree_path, _tree_model) = selection.get_selected_rows(); let (vec_tree_path, _tree_model) = selection.get_selected_rows();

View file

@ -17,6 +17,7 @@ mod connect_settings;
mod create_tree_view; mod create_tree_view;
mod double_click_opening; mod double_click_opening;
mod gui_data; mod gui_data;
mod gui_main_notebook;
mod help_functions; mod help_functions;
mod initialize_gui; mod initialize_gui;
mod notebook_enums; mod notebook_enums;
@ -63,7 +64,7 @@ fn main() {
gtk::init().expect("Failed to initialize GTK."); 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 // Used for getting data from thread
let (glib_stop_sender, glib_stop_receiver) = glib::MainContext::channel(glib::PRIORITY_DEFAULT); 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<zeroed::ProgressData>, futures::channel::mpsc::Receiver<zeroed::ProgressData>) = futures::channel::mpsc::channel(20); let (futures_sender_zeroed, futures_receiver_zeroed): (futures::channel::mpsc::Sender<zeroed::ProgressData>, futures::channel::mpsc::Receiver<zeroed::ProgressData>) = futures::channel::mpsc::channel(20);
let (futures_sender_invalid_symlinks, futures_receiver_invalid_symlinks): (futures::channel::mpsc::Sender<invalid_symlinks::ProgressData>, futures::channel::mpsc::Receiver<invalid_symlinks::ProgressData>) = futures::channel::mpsc::channel(20); let (futures_sender_invalid_symlinks, futures_receiver_invalid_symlinks): (futures::channel::mpsc::Sender<invalid_symlinks::ProgressData>, futures::channel::mpsc::Receiver<invalid_symlinks::ProgressData>) = 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 reset_configuration(&gui_data, false); // Fallback for invalid loading setting project
load_configuration(&gui_data, false); load_configuration(&gui_data, false);

View file

@ -42,8 +42,8 @@ pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) {
//// Included Directories //// Included Directories
data_to_save.push("--included_directories:".to_string()); data_to_save.push("--included_directories:".to_string());
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 list_store = get_list_store(&scrolled_window_included_directories); let list_store = get_list_store(&tree_view_included_directories);
if let Some(iter) = list_store.get_iter_first() { if let Some(iter) = list_store.get_iter_first() {
loop { loop {
data_to_save.push(list_store.get_value(&iter, ColumnsDirectory::Path as i32).get::<String>().unwrap().unwrap()); data_to_save.push(list_store.get_value(&iter, ColumnsDirectory::Path as i32).get::<String>().unwrap().unwrap());
@ -55,8 +55,8 @@ pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) {
//// Excluded Directories //// Excluded Directories
data_to_save.push("--excluded_directories:".to_string()); data_to_save.push("--excluded_directories:".to_string());
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 list_store = get_list_store(&scrolled_window_excluded_directories); let list_store = get_list_store(&tree_view_excluded_directories);
if let Some(iter) = list_store.get_iter_first() { if let Some(iter) = list_store.get_iter_first() {
loop { loop {
data_to_save.push(list_store.get_value(&iter, ColumnsDirectory::Path as i32).get::<String>().unwrap().unwrap()); data_to_save.push(list_store.get_value(&iter, ColumnsDirectory::Path as i32).get::<String>().unwrap().unwrap());
@ -323,8 +323,8 @@ pub fn load_configuration(gui_data: &GuiData, manual_execution: bool) {
// Setting data // Setting data
if manual_execution || loading_at_start { if manual_execution || loading_at_start {
//// Included Directories //// Included Directories
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 list_store = get_list_store(&scrolled_window_included_directories); let list_store = get_list_store(&tree_view_included_directories);
list_store.clear(); list_store.clear();
let col_indices = [0]; let col_indices = [0];
@ -335,8 +335,8 @@ pub fn load_configuration(gui_data: &GuiData, manual_execution: bool) {
} }
//// Exclude Directories //// Exclude Directories
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 list_store = get_list_store(&scrolled_window_excluded_directories); let list_store = get_list_store(&tree_view_excluded_directories);
list_store.clear(); list_store.clear();
let col_indices = [0]; 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); gui_data.check_button_settings_show_text_view.set_active(bottom_text_panel);
if !bottom_text_panel { if !bottom_text_panel {
gui_data.scrolled_window_errors.hide(); gui_data.text_view_errors.hide();
} else { } else {
gui_data.scrolled_window_errors.show(); gui_data.text_view_errors.show();
} }
} else { } else {
gui_data.check_button_settings_load_at_start.set_active(false); 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 // Resetting included directories
{ {
let col_indices = [0]; let col_indices = [0];
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 list_store = get_list_store(&scrolled_window_included_directories); let list_store = get_list_store(&tree_view_included_directories);
list_store.clear(); list_store.clear();
let current_dir: String = match env::current_dir() { 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 // Resetting excluded directories
{ {
let col_indices = [0]; let col_indices = [0];
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 list_store = get_list_store(&scrolled_window_excluded_directories); let list_store = get_list_store(&tree_view_excluded_directories);
list_store.clear(); list_store.clear();
if cfg!(target_family = "unix") { if cfg!(target_family = "unix") {
for i in ["/proc", "/dev", "/sys", "/run", "/snap"].iter() { for i in ["/proc", "/dev", "/sys", "/run", "/snap"].iter() {