1
0
Fork 0
mirror of synced 2024-05-01 11:02:53 +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="scrollable">True</property>
<child>
<object class="GtkBox" id="notebook_main_duplicate_finder_label">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
@ -1409,7 +1409,7 @@ Author: Rafał Mikrut
</packing>
</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="can_focus">True</property>
<property name="shadow_type">in</property>
@ -1433,7 +1433,7 @@ Author: Rafał Mikrut
</packing>
</child>
<child>
<object class="GtkBox" id="notebook_big_main_file_finder">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
@ -1508,7 +1508,7 @@ Author: Rafał Mikrut
</packing>
</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="can_focus">True</property>
<property name="shadow_type">in</property>
@ -1532,7 +1532,7 @@ Author: Rafał Mikrut
</packing>
</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="can_focus">True</property>
<property name="shadow_type">in</property>
@ -1556,7 +1556,7 @@ Author: Rafał Mikrut
</packing>
</child>
<child>
<object class="GtkBox" id="notebook_main_similar_images_finder_label">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
@ -1774,7 +1774,7 @@ Author: Rafał Mikrut
</packing>
</child>
<child>
<object class="GtkBox" id="notebook_main_same_music_finder">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
@ -1933,7 +1933,7 @@ Author: Rafał Mikrut
</packing>
</child>
<child>
<object class="GtkBox" id="notebook_main_zeroed_files_finder">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>

View file

@ -12,17 +12,17 @@ use std::fs::Metadata;
pub fn connect_button_delete(gui_data: &GuiData) {
let gui_data = gui_data.clone();
let buttons_delete = gui_data.buttons_delete.clone();
let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
let tree_view_duplicate_finder = gui_data.main_notebook.tree_view_duplicate_finder.clone();
let notebook_main = gui_data.notebook_main.clone();
let window_main = gui_data.window_main.clone();
let scrolled_window_main_empty_folder_finder = gui_data.scrolled_window_main_empty_folder_finder.clone();
let scrolled_window_big_files_finder = gui_data.scrolled_window_big_files_finder.clone();
let scrolled_window_main_empty_files_finder = gui_data.scrolled_window_main_empty_files_finder.clone();
let scrolled_window_main_temporary_files_finder = gui_data.scrolled_window_main_temporary_files_finder.clone();
let scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone();
let scrolled_window_zeroed_files_finder = gui_data.scrolled_window_zeroed_files_finder.clone();
let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_finder.clone();
let scrolled_window_invalid_symlinks = gui_data.scrolled_window_invalid_symlinks.clone();
let tree_view_empty_folder_finder = gui_data.main_notebook.tree_view_empty_folder_finder.clone();
let tree_view_big_files_finder = gui_data.main_notebook.tree_view_big_files_finder.clone();
let tree_view_empty_files_finder = gui_data.main_notebook.tree_view_empty_files_finder.clone();
let tree_view_temporary_files_finder = gui_data.main_notebook.tree_view_temporary_files_finder.clone();
let tree_view_similar_images_finder = gui_data.main_notebook.tree_view_similar_images_finder.clone();
let tree_view_zeroed_files_finder = gui_data.main_notebook.tree_view_zeroed_files_finder.clone();
let tree_view_same_music_finder = gui_data.main_notebook.tree_view_same_music_finder.clone();
let tree_view_invalid_symlinks = gui_data.main_notebook.tree_view_invalid_symlinks.clone();
let check_button_settings_confirm_deletion = gui_data.check_button_settings_confirm_deletion.clone();
let image_preview_similar_images = gui_data.image_preview_similar_images.clone();
@ -55,23 +55,23 @@ pub fn connect_button_delete(gui_data: &GuiData) {
match to_notebook_main_enum(notebook_main.get_current_page().unwrap()) {
NotebookMainEnum::Duplicate => {
tree_remove(&scrolled_window_duplicate_finder.clone(), ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, ColumnsDuplicates::Color as i32, &gui_data);
tree_remove(&tree_view_duplicate_finder.clone(), ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, ColumnsDuplicates::Color as i32, &gui_data);
}
NotebookMainEnum::EmptyDirectories => {
empty_folder_remover(&scrolled_window_main_empty_folder_finder.clone(), ColumnsEmptyFolders::Name as i32, ColumnsEmptyFolders::Path as i32, &gui_data);
empty_folder_remover(&tree_view_empty_folder_finder.clone(), ColumnsEmptyFolders::Name as i32, ColumnsEmptyFolders::Path as i32, &gui_data);
}
NotebookMainEnum::EmptyFiles => {
basic_remove(&scrolled_window_main_empty_files_finder.clone(), ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32, &gui_data);
basic_remove(&tree_view_empty_files_finder.clone(), ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32, &gui_data);
}
NotebookMainEnum::Temporary => {
basic_remove(&scrolled_window_main_temporary_files_finder.clone(), ColumnsTemporaryFiles::Name as i32, ColumnsTemporaryFiles::Path as i32, &gui_data);
basic_remove(&tree_view_temporary_files_finder.clone(), ColumnsTemporaryFiles::Name as i32, ColumnsTemporaryFiles::Path as i32, &gui_data);
}
NotebookMainEnum::BigFiles => {
basic_remove(&scrolled_window_big_files_finder.clone(), ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, &gui_data);
basic_remove(&tree_view_big_files_finder.clone(), ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, &gui_data);
}
NotebookMainEnum::SimilarImages => {
tree_remove(
&scrolled_window_similar_images_finder.clone(),
&tree_view_similar_images_finder.clone(),
ColumnsSimilarImages::Name as i32,
ColumnsSimilarImages::Path as i32,
ColumnsSimilarImages::Color as i32,
@ -80,29 +80,28 @@ pub fn connect_button_delete(gui_data: &GuiData) {
image_preview_similar_images.hide();
}
NotebookMainEnum::Zeroed => {
basic_remove(&scrolled_window_zeroed_files_finder.clone(), ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, &gui_data);
basic_remove(&tree_view_zeroed_files_finder.clone(), ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, &gui_data);
}
NotebookMainEnum::SameMusic => {
tree_remove(&scrolled_window_same_music_finder.clone(), ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, ColumnsSameMusic::Color as i32, &gui_data);
tree_remove(&tree_view_same_music_finder.clone(), ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, ColumnsSameMusic::Color as i32, &gui_data);
}
NotebookMainEnum::Symlinks => {
basic_remove(&scrolled_window_invalid_symlinks.clone(), ColumnsInvalidSymlinks::Name as i32, ColumnsInvalidSymlinks::Path as i32, &gui_data);
basic_remove(&tree_view_invalid_symlinks.clone(), ColumnsInvalidSymlinks::Name as i32, ColumnsInvalidSymlinks::Path as i32, &gui_data);
}
}
});
}
pub fn empty_folder_remover(scrolled_window: &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 tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection();
let (selection_rows, tree_model) = selection.get_selected_rows();
if selection_rows.is_empty() {
return;
}
let list_store = get_list_store(&scrolled_window);
let list_store = get_list_store(&tree_view);
let mut messages: String = "".to_string();
@ -176,17 +175,16 @@ pub fn empty_folder_remover(scrolled_window: &gtk::ScrolledWindow, column_file_n
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 tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection();
let (selection_rows, tree_model) = selection.get_selected_rows();
if selection_rows.is_empty() {
return;
}
let list_store = get_list_store(&scrolled_window);
let list_store = get_list_store(&tree_view);
let mut messages: String = "".to_string();
@ -208,17 +206,16 @@ pub fn basic_remove(scrolled_window: &gtk::ScrolledWindow, column_file_name: i32
}
// Remove all occurrences - remove every element which have same path and name as even non selected ones
pub fn tree_remove(scrolled_window: &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 tree_view = get_tree_view(&scrolled_window);
let selection = tree_view.get_selection();
let (selection_rows, tree_model) = selection.get_selected_rows();
if selection_rows.is_empty() {
return;
}
let list_store = get_list_store(&scrolled_window);
let list_store = get_list_store(&tree_view);
let mut messages: String = "".to_string();

View file

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

View file

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

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 notebook_main = gui_data.notebook_main.clone();
let entry_info = gui_data.entry_info.clone();
let scrolled_window_main_empty_folder_finder = gui_data.scrolled_window_main_empty_folder_finder.clone();
let scrolled_window_main_empty_files_finder = gui_data.scrolled_window_main_empty_files_finder.clone();
let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
let scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone();
let tree_view_empty_folder_finder = gui_data.main_notebook.tree_view_empty_folder_finder.clone();
let tree_view_empty_files_finder = gui_data.main_notebook.tree_view_empty_files_finder.clone();
let tree_view_duplicate_finder = gui_data.main_notebook.tree_view_duplicate_finder.clone();
let tree_view_similar_images_finder = gui_data.main_notebook.tree_view_similar_images_finder.clone();
let buttons_array = gui_data.buttons_array.clone();
let text_view_errors = gui_data.text_view_errors.clone();
let shared_duplication_state = gui_data.shared_duplication_state.clone();
let shared_buttons = gui_data.shared_buttons.clone();
let scrolled_window_zeroed_files_finder = gui_data.scrolled_window_zeroed_files_finder.clone();
let tree_view_zeroed_files_finder = gui_data.main_notebook.tree_view_zeroed_files_finder.clone();
let shared_empty_folders_state = gui_data.shared_empty_folders_state.clone();
let shared_empty_files_state = gui_data.shared_empty_files_state.clone();
let scrolled_window_big_files_finder = gui_data.scrolled_window_big_files_finder.clone();
let scrolled_window_invalid_symlinks = gui_data.scrolled_window_invalid_symlinks.clone();
let tree_view_big_files_finder = gui_data.main_notebook.tree_view_big_files_finder.clone();
let tree_view_invalid_symlinks = gui_data.main_notebook.tree_view_invalid_symlinks.clone();
let shared_big_files_state = gui_data.shared_big_files_state.clone();
let shared_same_invalid_symlinks = gui_data.shared_same_invalid_symlinks.clone();
let scrolled_window_main_temporary_files_finder = gui_data.scrolled_window_main_temporary_files_finder.clone();
let tree_view_temporary_files_finder = gui_data.main_notebook.tree_view_temporary_files_finder.clone();
let shared_temporary_files_state = gui_data.shared_temporary_files_state.clone();
let shared_similar_images_state = gui_data.shared_similar_images_state.clone();
let shared_zeroed_files_state = gui_data.shared_zeroed_files_state.clone();
let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_finder.clone();
let tree_view_same_music_finder = gui_data.main_notebook.tree_view_same_music_finder.clone();
let shared_same_music_state = gui_data.shared_same_music_state.clone();
let buttons_names = gui_data.buttons_names.clone();
let dialog_progress = gui_data.dialog_progress.clone();
@ -86,7 +86,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
let list_store = get_list_store(&scrolled_window_duplicate_finder);
let list_store = get_list_store(&tree_view_duplicate_finder);
let col_indices = [0, 1, 2, 3, 4, 5];
@ -214,7 +214,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
let list_store = get_list_store(&scrolled_window_main_empty_folder_finder);
let list_store = get_list_store(&tree_view_empty_folder_finder);
let col_indices = [0, 1, 2];
@ -258,7 +258,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
let list_store = get_list_store(&scrolled_window_main_empty_files_finder);
let list_store = get_list_store(&tree_view_empty_files_finder);
let col_indices = [0, 1, 2];
@ -302,7 +302,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
let list_store = get_list_store(&scrolled_window_big_files_finder);
let list_store = get_list_store(&tree_view_big_files_finder);
let col_indices = [0, 1, 2, 3];
@ -353,7 +353,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
let list_store = get_list_store(&scrolled_window_main_temporary_files_finder);
let list_store = get_list_store(&tree_view_temporary_files_finder);
let col_indices = [0, 1, 2];
@ -397,7 +397,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
let list_store = get_list_store(&scrolled_window_similar_images_finder);
let list_store = get_list_store(&tree_view_similar_images_finder);
let col_indices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
@ -473,7 +473,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
let list_store = get_list_store(&scrolled_window_zeroed_files_finder);
let list_store = get_list_store(&tree_view_zeroed_files_finder);
let col_indices = [0, 1, 2, 3, 4];
@ -523,7 +523,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
let list_store = get_list_store(&scrolled_window_same_music_finder);
let list_store = get_list_store(&tree_view_same_music_finder);
let col_indices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
@ -626,7 +626,7 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
// Create GUI
{
let list_store = get_list_store(&scrolled_window_invalid_symlinks);
let list_store = get_list_store(&tree_view_invalid_symlinks);
let col_indices = [0, 1, 2, 3, 4];

View file

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

View file

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

View file

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

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

View file

@ -12,7 +12,7 @@ use std::cmp::Ordering;
use std::fs;
use std::path::Path;
pub fn initialize_gui(gui_data: &GuiData) {
pub fn initialize_gui(gui_data: &mut GuiData) {
//// Setup default look(duplicate finder)
{
let buttons_search = gui_data.buttons_search.clone();
@ -20,17 +20,18 @@ pub fn initialize_gui(gui_data: &GuiData) {
let buttons_delete = gui_data.buttons_delete.clone();
let buttons_select = gui_data.buttons_select.clone();
let buttons_symlink = gui_data.buttons_symlink.clone();
let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
let scrolled_window_main_empty_folder_finder = gui_data.scrolled_window_main_empty_folder_finder.clone();
let scrolled_window_main_empty_files_finder = gui_data.scrolled_window_main_empty_files_finder.clone();
let scrolled_window_main_temporary_files_finder = gui_data.scrolled_window_main_temporary_files_finder.clone();
let scrolled_window_big_files_finder = gui_data.scrolled_window_big_files_finder.clone();
let scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone();
let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_finder.clone();
let scrolled_window_invalid_symlinks = gui_data.scrolled_window_invalid_symlinks.clone();
let scrolled_window_zeroed_files_finder = gui_data.scrolled_window_zeroed_files_finder.clone();
let scrolled_window_duplicate_finder = gui_data.main_notebook.scrolled_window_duplicate_finder.clone();
let scrolled_window_empty_folder_finder = gui_data.main_notebook.scrolled_window_empty_folder_finder.clone();
let scrolled_window_empty_files_finder = gui_data.main_notebook.scrolled_window_empty_files_finder.clone();
let scrolled_window_temporary_files_finder = gui_data.main_notebook.scrolled_window_temporary_files_finder.clone();
let scrolled_window_big_files_finder = gui_data.main_notebook.scrolled_window_big_files_finder.clone();
let scrolled_window_similar_images_finder = gui_data.main_notebook.scrolled_window_similar_images_finder.clone();
let scrolled_window_same_music_finder = gui_data.main_notebook.scrolled_window_same_music_finder.clone();
let scrolled_window_invalid_symlinks = gui_data.main_notebook.scrolled_window_invalid_symlinks.clone();
let scrolled_window_zeroed_files_finder = gui_data.main_notebook.scrolled_window_zeroed_files_finder.clone();
let scrolled_window_included_directories = gui_data.scrolled_window_included_directories.clone();
let scrolled_window_excluded_directories = gui_data.scrolled_window_excluded_directories.clone();
let image_preview_similar_images = gui_data.image_preview_similar_images.clone();
let check_button_settings_show_preview_similar_images = gui_data.check_button_settings_show_preview_similar_images.clone();
let text_view_errors = gui_data.text_view_errors.clone();
@ -69,16 +70,17 @@ pub fn initialize_gui(gui_data: &GuiData) {
// println!("{}", e.get_button());
gtk::Inhibit(false)
});
gui_data.main_notebook.tree_view_duplicate_finder = tree_view.clone();
scrolled_window_duplicate_finder.add(&tree_view);
scrolled_window_duplicate_finder.show_all();
let scrolled_window_duplicate_finder = gui_data.scrolled_window_duplicate_finder.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
tree_remove(&scrolled_window_duplicate_finder, ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, ColumnsDuplicates::Color as i32, &gui_data);
tree_remove(&tree_view, ColumnsDuplicates::Name as i32, ColumnsDuplicates::Path as i32, ColumnsDuplicates::Color as i32, &gui_data);
}
}
gtk::Inhibit(false)
@ -97,16 +99,16 @@ pub fn initialize_gui(gui_data: &GuiData) {
tree_view.connect_button_press_event(opening_double_click_function_empty_folders);
scrolled_window_main_empty_folder_finder.add(&tree_view);
scrolled_window_main_empty_folder_finder.show_all();
gui_data.main_notebook.tree_view_empty_folder_finder = tree_view.clone();
scrolled_window_empty_folder_finder.add(&tree_view);
scrolled_window_empty_folder_finder.show_all();
let scrolled_window_main_empty_folder_finder = gui_data.scrolled_window_main_empty_folder_finder.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
empty_folder_remover(&scrolled_window_main_empty_folder_finder, ColumnsEmptyFolders::Name as i32, ColumnsEmptyFolders::Path as i32, &gui_data);
empty_folder_remover(&tree_view, ColumnsEmptyFolders::Name as i32, ColumnsEmptyFolders::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
@ -125,16 +127,16 @@ pub fn initialize_gui(gui_data: &GuiData) {
tree_view.connect_button_press_event(opening_double_click_function_empty_files);
scrolled_window_main_empty_files_finder.add(&tree_view);
scrolled_window_main_empty_files_finder.show_all();
gui_data.main_notebook.tree_view_empty_files_finder = tree_view.clone();
scrolled_window_empty_files_finder.add(&tree_view);
scrolled_window_empty_files_finder.show_all();
let scrolled_window_main_empty_files_finder = gui_data.scrolled_window_main_empty_files_finder.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
basic_remove(&scrolled_window_main_empty_files_finder, ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32, &gui_data);
basic_remove(&tree_view, ColumnsEmptyFiles::Name as i32, ColumnsEmptyFiles::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
@ -153,16 +155,16 @@ pub fn initialize_gui(gui_data: &GuiData) {
tree_view.connect_button_press_event(opening_double_click_function_temporary_files);
scrolled_window_main_temporary_files_finder.add(&tree_view);
scrolled_window_main_temporary_files_finder.show_all();
gui_data.main_notebook.tree_view_temporary_files_finder = tree_view.clone();
scrolled_window_temporary_files_finder.add(&tree_view);
scrolled_window_temporary_files_finder.show_all();
let scrolled_window_main_temporary_files_finder = gui_data.scrolled_window_main_temporary_files_finder.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
basic_remove(&scrolled_window_main_temporary_files_finder, ColumnsTemporaryFiles::Name as i32, ColumnsTemporaryFiles::Path as i32, &gui_data);
basic_remove(&tree_view, ColumnsTemporaryFiles::Name as i32, ColumnsTemporaryFiles::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
@ -181,16 +183,16 @@ pub fn initialize_gui(gui_data: &GuiData) {
tree_view.connect_button_press_event(opening_double_click_function_big_files);
gui_data.main_notebook.tree_view_big_files_finder = tree_view.clone();
scrolled_window_big_files_finder.add(&tree_view);
scrolled_window_big_files_finder.show_all();
let scrolled_window_big_files_finder = gui_data.scrolled_window_big_files_finder.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
basic_remove(&scrolled_window_big_files_finder, ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, &gui_data);
basic_remove(&tree_view, ColumnsBigFiles::Name as i32, ColumnsBigFiles::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
@ -303,22 +305,16 @@ pub fn initialize_gui(gui_data: &GuiData) {
gtk::Inhibit(false)
});
gui_data.main_notebook.tree_view_similar_images_finder = tree_view.clone();
scrolled_window_similar_images_finder.add(&tree_view);
scrolled_window_similar_images_finder.show_all();
let scrolled_window_similar_images_finder = gui_data.scrolled_window_similar_images_finder.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
tree_remove(
&scrolled_window_similar_images_finder,
ColumnsSimilarImages::Name as i32,
ColumnsSimilarImages::Path as i32,
ColumnsSimilarImages::Color as i32,
&gui_data,
);
tree_remove(&tree_view, ColumnsSimilarImages::Name as i32, ColumnsSimilarImages::Path as i32, ColumnsSimilarImages::Color as i32, &gui_data);
image_preview_similar_images_clone.hide();
}
}
@ -338,16 +334,16 @@ pub fn initialize_gui(gui_data: &GuiData) {
tree_view.connect_button_press_event(opening_double_click_function_zeroed_files);
gui_data.main_notebook.tree_view_zeroed_files_finder = tree_view.clone();
scrolled_window_zeroed_files_finder.add(&tree_view);
scrolled_window_zeroed_files_finder.show_all();
let scrolled_window_zeroed_files_finder = gui_data.scrolled_window_zeroed_files_finder.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
basic_remove(&scrolled_window_zeroed_files_finder, ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, &gui_data);
basic_remove(&tree_view, ColumnsZeroedFiles::Name as i32, ColumnsZeroedFiles::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
@ -381,16 +377,16 @@ pub fn initialize_gui(gui_data: &GuiData) {
tree_view.connect_button_press_event(opening_double_click_function_same_music);
gui_data.main_notebook.tree_view_same_music_finder = tree_view.clone();
scrolled_window_same_music_finder.add(&tree_view);
scrolled_window_same_music_finder.show_all();
let scrolled_window_same_music_finder = gui_data.scrolled_window_same_music_finder.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
tree_remove(&scrolled_window_same_music_finder, ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, ColumnsSameMusic::Color as i32, &gui_data);
tree_remove(&tree_view, ColumnsSameMusic::Name as i32, ColumnsSameMusic::Path as i32, ColumnsSameMusic::Color as i32, &gui_data);
}
}
gtk::Inhibit(false)
@ -409,16 +405,16 @@ pub fn initialize_gui(gui_data: &GuiData) {
tree_view.connect_button_press_event(opening_double_click_function_invalid_symlinks);
gui_data.main_notebook.tree_view_invalid_symlinks = tree_view.clone();
scrolled_window_invalid_symlinks.add(&tree_view);
scrolled_window_invalid_symlinks.show_all();
let scrolled_window_invalid_symlinks = gui_data.scrolled_window_invalid_symlinks.clone();
let gui_data = gui_data.clone();
tree_view.connect_key_release_event(move |_tree_view, e| {
tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
basic_remove(&scrolled_window_invalid_symlinks, ColumnsInvalidSymlinks::Name as i32, ColumnsInvalidSymlinks::Path as i32, &gui_data);
basic_remove(&tree_view, ColumnsInvalidSymlinks::Name as i32, ColumnsInvalidSymlinks::Path as i32, &gui_data);
}
}
gtk::Inhibit(false)
@ -437,15 +433,15 @@ pub fn initialize_gui(gui_data: &GuiData) {
create_tree_view_directories(&mut tree_view);
gui_data.tree_view_included_directories = tree_view.clone();
scrolled_window_included_directories.add(&tree_view);
scrolled_window_included_directories.show_all();
tree_view.connect_key_release_event(move |_tree_view, e| {
tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
let tree_view = get_tree_view(&scrolled_window_included_directories);
let list_store = get_list_store(&scrolled_window_included_directories);
let list_store = get_list_store(&tree_view);
let selection = tree_view.get_selection();
let (vec_tree_path, _tree_model) = selection.get_selected_rows();
@ -469,15 +465,15 @@ pub fn initialize_gui(gui_data: &GuiData) {
create_tree_view_directories(&mut tree_view);
gui_data.tree_view_excluded_directories = tree_view.clone();
scrolled_window_excluded_directories.add(&tree_view);
scrolled_window_excluded_directories.show_all();
tree_view.connect_key_release_event(move |_tree_view, e| {
tree_view.connect_key_release_event(move |tree_view, e| {
if let Some(button_number) = e.get_keycode() {
// Handle delete button
if button_number == 119 {
let tree_view = get_tree_view(&scrolled_window_excluded_directories);
let list_store = get_list_store(&scrolled_window_excluded_directories);
let list_store = get_list_store(&tree_view);
let selection = tree_view.get_selection();
let (vec_tree_path, _tree_model) = selection.get_selected_rows();

View file

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

View file

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