1
0
Fork 0
mirror of synced 2024-05-01 11:02:53 +12:00

Split Gui code into multiple files (#194)

This commit is contained in:
Rafał Mikrut 2021-01-10 20:12:08 +01:00 committed by GitHub
parent 683e0f9117
commit ff85453394
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 538 additions and 511 deletions

View file

@ -11,9 +11,9 @@ 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 buttons_delete = gui_data.bottom_buttons.buttons_delete.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.main_notebook.notebook_main.clone();
let window_main = gui_data.window_main.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();
@ -23,8 +23,8 @@ pub fn connect_button_delete(gui_data: &GuiData) {
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();
let check_button_settings_confirm_deletion = gui_data.upper_notebook.check_button_settings_confirm_deletion.clone();
let image_preview_similar_images = gui_data.main_notebook.image_preview_similar_images.clone();
buttons_delete.connect_clicked(move |_| {
if check_button_settings_confirm_deletion.get_active() {

View file

@ -6,7 +6,7 @@ use gtk::prelude::*;
pub fn connect_button_save(gui_data: &GuiData) {
let gui_data = gui_data.clone();
let buttons_save = gui_data.buttons_save.clone();
let buttons_save = gui_data.bottom_buttons.buttons_save.clone();
let shared_duplication_state = gui_data.shared_duplication_state.clone();
let shared_empty_folders_state = gui_data.shared_empty_folders_state.clone();
let shared_big_files_state = gui_data.shared_big_files_state.clone();
@ -16,7 +16,7 @@ pub fn connect_button_save(gui_data: &GuiData) {
let shared_same_music_state = gui_data.shared_same_music_state.clone();
let shared_zeroed_files_state = gui_data.shared_zeroed_files_state.clone();
let shared_same_invalid_symlinks = gui_data.shared_same_invalid_symlinks.clone();
let notebook_main = gui_data.notebook_main.clone();
let notebook_main = gui_data.main_notebook.notebook_main.clone();
buttons_save.connect_clicked(move |_| {
let file_name;
@ -72,7 +72,7 @@ pub fn connect_button_save(gui_data: &GuiData) {
}
fn post_save_things(file_name: &str, type_of_tab: &NotebookMainEnum, gui_data: &GuiData) {
let entry_info = gui_data.entry_info.clone();
let buttons_save = gui_data.buttons_save.clone();
let buttons_save = gui_data.bottom_buttons.buttons_save.clone();
let shared_buttons = gui_data.shared_buttons.clone();
entry_info.set_text(format!("Saved results to file {}", file_name).as_str());

View file

@ -35,35 +35,35 @@ pub fn connect_button_search(
futures_sender_invalid_symlinks: futures::channel::mpsc::Sender<invalid_symlinks::ProgressData>,
) {
let entry_info = gui_data.entry_info.clone();
let notebook_main = gui_data.notebook_main.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();
let entry_excluded_items = gui_data.entry_excluded_items.clone();
let entry_same_music_minimal_size = gui_data.entry_same_music_minimal_size.clone();
let entry_allowed_extensions = gui_data.entry_allowed_extensions.clone();
let buttons_names = gui_data.buttons_names.clone();
let radio_button_duplicates_name = gui_data.radio_button_duplicates_name.clone();
let radio_button_duplicates_size = gui_data.radio_button_duplicates_size.clone();
let radio_button_duplicates_hashmb = gui_data.radio_button_duplicates_hashmb.clone();
let radio_button_duplicates_hash = gui_data.radio_button_duplicates_hash.clone();
let radio_button_similar_images_minimal = gui_data.radio_button_similar_images_minimal.clone();
let radio_button_similar_images_very_small = gui_data.radio_button_similar_images_very_small.clone();
let radio_button_similar_images_small = gui_data.radio_button_similar_images_small.clone();
let radio_button_similar_images_medium = gui_data.radio_button_similar_images_medium.clone();
let radio_button_similar_images_high = gui_data.radio_button_similar_images_high.clone();
let radio_button_similar_images_very_high = gui_data.radio_button_similar_images_very_high.clone();
let entry_duplicate_minimal_size = gui_data.entry_duplicate_minimal_size.clone();
let notebook_main = gui_data.main_notebook.notebook_main.clone();
let tree_view_included_directories = gui_data.upper_notebook.tree_view_included_directories.clone();
let tree_view_excluded_directories = gui_data.upper_notebook.tree_view_excluded_directories.clone();
let buttons_search_clone = gui_data.bottom_buttons.buttons_search.clone();
let buttons_array = gui_data.bottom_buttons.buttons_array.clone();
let check_button_recursive = gui_data.upper_notebook.check_button_recursive.clone();
let entry_excluded_items = gui_data.upper_notebook.entry_excluded_items.clone();
let entry_same_music_minimal_size = gui_data.main_notebook.entry_same_music_minimal_size.clone();
let entry_allowed_extensions = gui_data.upper_notebook.entry_allowed_extensions.clone();
let buttons_names = gui_data.bottom_buttons.buttons_names.clone();
let radio_button_duplicates_name = gui_data.main_notebook.radio_button_duplicates_name.clone();
let radio_button_duplicates_size = gui_data.main_notebook.radio_button_duplicates_size.clone();
let radio_button_duplicates_hashmb = gui_data.main_notebook.radio_button_duplicates_hashmb.clone();
let radio_button_duplicates_hash = gui_data.main_notebook.radio_button_duplicates_hash.clone();
let radio_button_similar_images_minimal = gui_data.main_notebook.radio_button_similar_images_minimal.clone();
let radio_button_similar_images_very_small = gui_data.main_notebook.radio_button_similar_images_very_small.clone();
let radio_button_similar_images_small = gui_data.main_notebook.radio_button_similar_images_small.clone();
let radio_button_similar_images_medium = gui_data.main_notebook.radio_button_similar_images_medium.clone();
let radio_button_similar_images_high = gui_data.main_notebook.radio_button_similar_images_high.clone();
let radio_button_similar_images_very_high = gui_data.main_notebook.radio_button_similar_images_very_high.clone();
let entry_duplicate_minimal_size = gui_data.main_notebook.entry_duplicate_minimal_size.clone();
let stop_receiver = gui_data.stop_receiver.clone();
let entry_big_files_number = gui_data.entry_big_files_number.clone();
let entry_similar_images_minimal_size = gui_data.entry_similar_images_minimal_size.clone();
let check_button_music_title: gtk::CheckButton = gui_data.check_button_music_title.clone();
let check_button_music_artist: gtk::CheckButton = gui_data.check_button_music_artist.clone();
let check_button_music_album_title: gtk::CheckButton = gui_data.check_button_music_album_title.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 entry_big_files_number = gui_data.main_notebook.entry_big_files_number.clone();
let entry_similar_images_minimal_size = gui_data.main_notebook.entry_similar_images_minimal_size.clone();
let check_button_music_title: gtk::CheckButton = gui_data.main_notebook.check_button_music_title.clone();
let check_button_music_artist: gtk::CheckButton = gui_data.main_notebook.check_button_music_artist.clone();
let check_button_music_album_title: gtk::CheckButton = gui_data.main_notebook.check_button_music_album_title.clone();
let check_button_music_album_artist: gtk::CheckButton = gui_data.main_notebook.check_button_music_album_artist.clone();
let check_button_music_year: gtk::CheckButton = gui_data.main_notebook.check_button_music_year.clone();
let shared_buttons = gui_data.shared_buttons.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();
@ -75,12 +75,12 @@ pub fn connect_button_search(
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();
let grid_progress_stages = gui_data.grid_progress_stages.clone();
let progress_bar_current_stage = gui_data.progress_bar_current_stage.clone();
let progress_bar_all_stages = gui_data.progress_bar_all_stages.clone();
let image_preview_similar_images = gui_data.image_preview_similar_images.clone();
let dialog_progress = gui_data.progress_dialog.dialog_progress.clone();
let label_stage = gui_data.progress_dialog.label_stage.clone();
let grid_progress_stages = gui_data.progress_dialog.grid_progress_stages.clone();
let progress_bar_current_stage = gui_data.progress_dialog.progress_bar_current_stage.clone();
let progress_bar_all_stages = gui_data.progress_dialog.progress_bar_all_stages.clone();
let image_preview_similar_images = gui_data.main_notebook.image_preview_similar_images.clone();
buttons_search_clone.connect_clicked(move |_| {
let included_directories = get_string_from_list_store(&tree_view_included_directories);

View file

@ -32,10 +32,10 @@ pub fn connect_button_select(gui_data: &GuiData) {
}
let gui_data = gui_data.clone();
let notebook_main = gui_data.notebook_main.clone();
let buttons_select_clone = gui_data.buttons_select.clone();
let popover_select = gui_data.popover_select.clone();
let buttons_select = gui_data.buttons_select.clone();
let notebook_main = gui_data.main_notebook.notebook_main.clone();
let buttons_select_clone = gui_data.bottom_buttons.buttons_select.clone();
let popover_select = gui_data.popovers.popover_select.clone();
let buttons_select = gui_data.bottom_buttons.buttons_select.clone();
buttons_select_clone.connect_clicked(move |_| {
show_required_popovers(&gui_data, &to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &hashmap);
@ -45,22 +45,22 @@ pub fn connect_button_select(gui_data: &GuiData) {
}
fn show_required_popovers(gui_data: &GuiData, current_mode: &NotebookMainEnum, hashmap: &HashMap<NotebookMainEnum, Vec<&str>>) {
let buttons_popover_select_all = gui_data.buttons_popover_select_all.clone();
let buttons_popover_unselect_all = gui_data.buttons_popover_unselect_all.clone();
let buttons_popover_reverse = gui_data.buttons_popover_reverse.clone();
let buttons_popover_select_all_except_oldest = gui_data.buttons_popover_select_all_except_oldest.clone();
let buttons_popover_select_all_except_newest = gui_data.buttons_popover_select_all_except_newest.clone();
let buttons_popover_select_one_oldest = gui_data.buttons_popover_select_one_oldest.clone();
let buttons_popover_select_one_newest = gui_data.buttons_popover_select_one_newest.clone();
let buttons_popover_select_custom = gui_data.buttons_popover_select_custom.clone();
let buttons_popover_unselect_custom = gui_data.buttons_popover_unselect_custom.clone();
let buttons_popover_select_all_images_except_biggest = gui_data.buttons_popover_select_all_images_except_biggest.clone();
let buttons_popover_select_all_images_except_smallest = gui_data.buttons_popover_select_all_images_except_smallest.clone();
let buttons_popover_select_all = gui_data.popovers.buttons_popover_select_all.clone();
let buttons_popover_unselect_all = gui_data.popovers.buttons_popover_unselect_all.clone();
let buttons_popover_reverse = gui_data.popovers.buttons_popover_reverse.clone();
let buttons_popover_select_all_except_oldest = gui_data.popovers.buttons_popover_select_all_except_oldest.clone();
let buttons_popover_select_all_except_newest = gui_data.popovers.buttons_popover_select_all_except_newest.clone();
let buttons_popover_select_one_oldest = gui_data.popovers.buttons_popover_select_one_oldest.clone();
let buttons_popover_select_one_newest = gui_data.popovers.buttons_popover_select_one_newest.clone();
let buttons_popover_select_custom = gui_data.popovers.buttons_popover_select_custom.clone();
let buttons_popover_unselect_custom = gui_data.popovers.buttons_popover_unselect_custom.clone();
let buttons_popover_select_all_images_except_biggest = gui_data.popovers.buttons_popover_select_all_images_except_biggest.clone();
let buttons_popover_select_all_images_except_smallest = gui_data.popovers.buttons_popover_select_all_images_except_smallest.clone();
let separator_select_custom = gui_data.separator_select_custom.clone();
let separator_select_date = gui_data.separator_select_date.clone();
let separator_select_image_size = gui_data.separator_select_image_size.clone();
let separator_select_reverse = gui_data.separator_select_reverse.clone();
let separator_select_custom = gui_data.popovers.separator_select_custom.clone();
let separator_select_date = gui_data.popovers.separator_select_date.clone();
let separator_select_image_size = gui_data.popovers.separator_select_image_size.clone();
let separator_select_reverse = gui_data.popovers.separator_select_reverse.clone();
let vec = hashmap.get(current_mode).unwrap();

View file

@ -3,7 +3,7 @@ use crate::gui_data::GuiData;
use gtk::prelude::*;
pub fn connect_button_stop(gui_data: &GuiData) {
let button_stop_in_dialog = gui_data.button_stop_in_dialog.clone();
let button_stop_in_dialog = gui_data.progress_dialog.button_stop_in_dialog.clone();
let stop_sender = gui_data.stop_sender.clone();
button_stop_in_dialog.connect_clicked(move |_| {
stop_sender.send(()).unwrap();

View file

@ -9,14 +9,14 @@ use std::fs;
pub fn connect_button_symlink(gui_data: &GuiData) {
let gui_data = gui_data.clone();
let buttons_symlink = gui_data.buttons_symlink.clone();
let notebook_main = gui_data.notebook_main.clone();
let buttons_symlink = gui_data.bottom_buttons.buttons_symlink.clone();
let notebook_main = gui_data.main_notebook.notebook_main.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();
let image_preview_similar_images = gui_data.main_notebook.image_preview_similar_images.clone();
buttons_symlink.connect_clicked(move |_| match to_notebook_main_enum(notebook_main.get_current_page().unwrap()) {
NotebookMainEnum::Duplicate => {

View file

@ -11,14 +11,14 @@ use glib::Receiver;
use gtk::prelude::*;
pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<Message>) {
let buttons_search = gui_data.buttons_search.clone();
let notebook_main = gui_data.notebook_main.clone();
let buttons_search = gui_data.bottom_buttons.buttons_search.clone();
let notebook_main = gui_data.main_notebook.notebook_main.clone();
let entry_info = gui_data.entry_info.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 buttons_array = gui_data.bottom_buttons.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();
@ -35,8 +35,8 @@ pub fn connect_compute_results(gui_data: &GuiData, glib_stop_receiver: Receiver<
let shared_zeroed_files_state = gui_data.shared_zeroed_files_state.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();
let buttons_names = gui_data.bottom_buttons.buttons_names.clone();
let dialog_progress = gui_data.progress_dialog.dialog_progress.clone();
glib_stop_receiver.attach(None, move |msg| {
buttons_search.show();

View file

@ -3,8 +3,8 @@ use crate::gui_data::GuiData;
use gtk::prelude::*;
pub fn connect_hide_text_view_errors(gui_data: &GuiData) {
let check_button_settings_show_text_view = gui_data.check_button_settings_show_text_view.clone();
let buttons_show_errors = gui_data.buttons_show_errors.clone();
let check_button_settings_show_text_view = gui_data.upper_notebook.check_button_settings_show_text_view.clone();
let buttons_show_errors = gui_data.bottom_buttons.buttons_show_errors.clone();
let scrolled_window_errors = gui_data.scrolled_window_errors.clone();
buttons_show_errors.connect_clicked(move |_| {

View file

@ -6,11 +6,11 @@ use gtk::prelude::*;
pub fn connect_notebook_tabs(gui_data: &GuiData) {
let shared_buttons = gui_data.shared_buttons.clone();
let buttons_array = gui_data.buttons_array.clone();
let notebook_main_clone = gui_data.notebook_main.clone();
let buttons_names = gui_data.buttons_names.clone();
let buttons_array = gui_data.bottom_buttons.buttons_array.clone();
let notebook_main_clone = gui_data.main_notebook.notebook_main.clone();
let buttons_names = gui_data.bottom_buttons.buttons_names.clone();
let shared_upper_notebooks = gui_data.shared_upper_notebooks.clone();
let notebook_upper = gui_data.notebook_upper.clone();
let notebook_upper = gui_data.upper_notebook.notebook_upper.clone();
notebook_main_clone.connect_switch_page(move |_, _, number| {
let current_tab_in_main_notebook = to_notebook_main_enum(number);

View file

@ -763,36 +763,36 @@ pub fn connect_popovers(gui_data: &GuiData) {
},
];
let popover_select = gui_data.popover_select.clone();
let buttons_popover_select_all = gui_data.buttons_popover_select_all.clone();
let notebook_main = gui_data.notebook_main.clone();
let popover_select = gui_data.popovers.popover_select.clone();
let buttons_popover_select_all = gui_data.popovers.buttons_popover_select_all.clone();
let notebook_main = gui_data.main_notebook.notebook_main.clone();
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.tree_view);
});
let popover_select = gui_data.popover_select.clone();
let buttons_popover_unselect_all = gui_data.buttons_popover_unselect_all.clone();
let notebook_main = gui_data.notebook_main.clone();
let popover_select = gui_data.popovers.popover_select.clone();
let buttons_popover_unselect_all = gui_data.popovers.buttons_popover_unselect_all.clone();
let notebook_main = gui_data.main_notebook.notebook_main.clone();
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.tree_view);
});
let popover_select = gui_data.popover_select.clone();
let buttons_popover_reverse = gui_data.buttons_popover_reverse.clone();
let notebook_main = gui_data.notebook_main.clone();
let popover_select = gui_data.popovers.popover_select.clone();
let buttons_popover_reverse = gui_data.popovers.buttons_popover_reverse.clone();
let notebook_main = gui_data.main_notebook.notebook_main.clone();
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.tree_view);
});
let popover_select = gui_data.popover_select.clone();
let buttons_popover_select_all_except_oldest = gui_data.buttons_popover_select_all_except_oldest.clone();
let notebook_main = gui_data.notebook_main.clone();
let popover_select = gui_data.popovers.popover_select.clone();
let buttons_popover_select_all_except_oldest = gui_data.popovers.buttons_popover_select_all_except_oldest.clone();
let notebook_main = gui_data.main_notebook.notebook_main.clone();
let vec_popover_objects = popover_objects.clone();
buttons_popover_select_all_except_oldest.connect_clicked(move |_| {
let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
@ -805,9 +805,9 @@ pub fn connect_popovers(gui_data: &GuiData) {
);
});
let popover_select = gui_data.popover_select.clone();
let buttons_popover_select_all_except_newest = gui_data.buttons_popover_select_all_except_newest.clone();
let notebook_main = gui_data.notebook_main.clone();
let popover_select = gui_data.popovers.popover_select.clone();
let buttons_popover_select_all_except_newest = gui_data.popovers.buttons_popover_select_all_except_newest.clone();
let notebook_main = gui_data.main_notebook.notebook_main.clone();
let vec_popover_objects = popover_objects.clone();
buttons_popover_select_all_except_newest.connect_clicked(move |_| {
let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
@ -820,9 +820,9 @@ pub fn connect_popovers(gui_data: &GuiData) {
);
});
let popover_select = gui_data.popover_select.clone();
let buttons_popover_select_one_oldest = gui_data.buttons_popover_select_one_oldest.clone();
let notebook_main = gui_data.notebook_main.clone();
let popover_select = gui_data.popovers.popover_select.clone();
let buttons_popover_select_one_oldest = gui_data.popovers.buttons_popover_select_one_oldest.clone();
let notebook_main = gui_data.main_notebook.notebook_main.clone();
let vec_popover_objects = popover_objects.clone();
buttons_popover_select_one_oldest.connect_clicked(move |_| {
let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
@ -835,9 +835,9 @@ pub fn connect_popovers(gui_data: &GuiData) {
);
});
let popover_select = gui_data.popover_select.clone();
let buttons_popover_select_one_newest = gui_data.buttons_popover_select_one_newest.clone();
let notebook_main = gui_data.notebook_main.clone();
let popover_select = gui_data.popovers.popover_select.clone();
let buttons_popover_select_one_newest = gui_data.popovers.buttons_popover_select_one_newest.clone();
let notebook_main = gui_data.main_notebook.notebook_main.clone();
let vec_popover_objects = popover_objects.clone();
buttons_popover_select_one_newest.connect_clicked(move |_| {
let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
@ -850,9 +850,9 @@ pub fn connect_popovers(gui_data: &GuiData) {
);
});
let popover_select = gui_data.popover_select.clone();
let buttons_popover_select_custom = gui_data.buttons_popover_select_custom.clone();
let notebook_main = gui_data.notebook_main.clone();
let popover_select = gui_data.popovers.popover_select.clone();
let buttons_popover_select_custom = gui_data.popovers.buttons_popover_select_custom.clone();
let notebook_main = gui_data.main_notebook.notebook_main.clone();
let vec_popover_objects = popover_objects.clone();
let gui_data_clone = gui_data.clone();
buttons_popover_select_custom.connect_clicked(move |_| {
@ -867,9 +867,9 @@ pub fn connect_popovers(gui_data: &GuiData) {
);
});
let popover_select = gui_data.popover_select.clone();
let buttons_popover_unselect_custom = gui_data.buttons_popover_unselect_custom.clone();
let notebook_main = gui_data.notebook_main.clone();
let popover_select = gui_data.popovers.popover_select.clone();
let buttons_popover_unselect_custom = gui_data.popovers.buttons_popover_unselect_custom.clone();
let notebook_main = gui_data.main_notebook.notebook_main.clone();
let vec_popover_objects = popover_objects.clone();
let gui_data_clone = gui_data.clone();
buttons_popover_unselect_custom.connect_clicked(move |_| {
@ -884,9 +884,9 @@ pub fn connect_popovers(gui_data: &GuiData) {
);
});
let popover_select = gui_data.popover_select.clone();
let buttons_popover_select_all_images_except_biggest = gui_data.buttons_popover_select_all_images_except_biggest.clone();
let notebook_main = gui_data.notebook_main.clone();
let popover_select = gui_data.popovers.popover_select.clone();
let buttons_popover_select_all_images_except_biggest = gui_data.popovers.buttons_popover_select_all_images_except_biggest.clone();
let notebook_main = gui_data.main_notebook.notebook_main.clone();
let vec_popover_objects = popover_objects.clone();
buttons_popover_select_all_images_except_biggest.connect_clicked(move |_| {
let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();
@ -899,9 +899,9 @@ pub fn connect_popovers(gui_data: &GuiData) {
);
});
let popover_select = gui_data.popover_select.clone();
let buttons_popover_select_all_images_except_smallest = gui_data.buttons_popover_select_all_images_except_smallest.clone();
let notebook_main = gui_data.notebook_main.clone();
let popover_select = gui_data.popovers.popover_select.clone();
let buttons_popover_select_all_images_except_smallest = gui_data.popovers.buttons_popover_select_all_images_except_smallest.clone();
let notebook_main = gui_data.main_notebook.notebook_main.clone();
let vec_popover_objects = popover_objects; //.clone();
buttons_popover_select_all_images_except_smallest.connect_clicked(move |_| {
let object_popover = find_name(&to_notebook_main_enum(notebook_main.get_current_page().unwrap()), &vec_popover_objects).unwrap();

View file

@ -22,10 +22,10 @@ pub fn connect_progress_window(
{
// Duplicate Files
let label_stage = gui_data.label_stage.clone();
let progress_bar_current_stage = gui_data.progress_bar_current_stage.clone();
let progress_bar_all_stages = gui_data.progress_bar_all_stages.clone();
let grid_progress_stages = gui_data.grid_progress_stages.clone();
let label_stage = gui_data.progress_dialog.label_stage.clone();
let progress_bar_current_stage = gui_data.progress_dialog.progress_bar_current_stage.clone();
let progress_bar_all_stages = gui_data.progress_dialog.progress_bar_all_stages.clone();
let grid_progress_stages = gui_data.progress_dialog.grid_progress_stages.clone();
let future = async move {
while let Some(item) = futures_receiver_duplicate_files.next().await {
match item.checking_method {
@ -90,7 +90,7 @@ pub fn connect_progress_window(
}
{
// Empty Files
let label_stage = gui_data.label_stage.clone();
let label_stage = gui_data.progress_dialog.label_stage.clone();
let future = async move {
while let Some(item) = futures_receiver_empty_files.next().await {
label_stage.set_text(format!("Scanned {} files", item.files_checked).as_str());
@ -100,7 +100,7 @@ pub fn connect_progress_window(
}
{
// Empty Folder
let label_stage = gui_data.label_stage.clone();
let label_stage = gui_data.progress_dialog.label_stage.clone();
let future = async move {
while let Some(item) = futures_receiver_empty_folder.next().await {
label_stage.set_text(format!("Scanned {} folders", item.folders_checked).as_str());
@ -110,7 +110,7 @@ pub fn connect_progress_window(
}
{
// Big Files
let label_stage = gui_data.label_stage.clone();
let label_stage = gui_data.progress_dialog.label_stage.clone();
let future = async move {
while let Some(item) = futures_receiver_big_files.next().await {
label_stage.set_text(format!("Scanned {} files", item.files_checked).as_str());
@ -120,9 +120,9 @@ pub fn connect_progress_window(
}
{
// Same Music
let label_stage = gui_data.label_stage.clone();
let progress_bar_current_stage = gui_data.progress_bar_current_stage.clone();
let progress_bar_all_stages = gui_data.progress_bar_all_stages.clone();
let label_stage = gui_data.progress_dialog.label_stage.clone();
let progress_bar_current_stage = gui_data.progress_dialog.progress_bar_current_stage.clone();
let progress_bar_all_stages = gui_data.progress_dialog.progress_bar_all_stages.clone();
let future = async move {
while let Some(item) = futures_receiver_same_music.next().await {
match item.current_stage {
@ -161,9 +161,9 @@ pub fn connect_progress_window(
}
{
// Similar Images
let label_stage = gui_data.label_stage.clone();
let progress_bar_current_stage = gui_data.progress_bar_current_stage.clone();
let progress_bar_all_stages = gui_data.progress_bar_all_stages.clone();
let label_stage = gui_data.progress_dialog.label_stage.clone();
let progress_bar_current_stage = gui_data.progress_dialog.progress_bar_current_stage.clone();
let progress_bar_all_stages = gui_data.progress_dialog.progress_bar_all_stages.clone();
let future = async move {
while let Some(item) = futures_receiver_similar_images.next().await {
match item.current_stage {
@ -192,7 +192,7 @@ pub fn connect_progress_window(
}
{
// Temporary
let label_stage = gui_data.label_stage.clone();
let label_stage = gui_data.progress_dialog.label_stage.clone();
let future = async move {
while let Some(item) = futures_receiver_temporary.next().await {
label_stage.set_text(format!("Scanned {} files", item.files_checked).as_str());
@ -202,9 +202,9 @@ pub fn connect_progress_window(
}
{
// Zeroed Files
let label_stage = gui_data.label_stage.clone();
let progress_bar_current_stage = gui_data.progress_bar_current_stage.clone();
let progress_bar_all_stages = gui_data.progress_bar_all_stages.clone();
let label_stage = gui_data.progress_dialog.label_stage.clone();
let progress_bar_current_stage = gui_data.progress_dialog.progress_bar_current_stage.clone();
let progress_bar_all_stages = gui_data.progress_dialog.progress_bar_all_stages.clone();
let future = async move {
while let Some(item) = futures_receiver_zeroed.next().await {
match item.current_stage {
@ -233,7 +233,7 @@ pub fn connect_progress_window(
}
{
// Invalid Symlinks
let label_stage = gui_data.label_stage.clone();
let label_stage = gui_data.progress_dialog.label_stage.clone();
let future = async move {
while let Some(item) = futures_receiver_invalid_symlinks.next().await {
label_stage.set_text(format!("Scanned {} files", item.files_checked).as_str());

View file

@ -9,9 +9,9 @@ use czkawka_core::common::Common;
pub fn connect_selection_of_directories(gui_data: &GuiData) {
// Add manually directory
{
let tree_view_included_directories = gui_data.tree_view_included_directories.clone();
let tree_view_included_directories = gui_data.upper_notebook.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();
let buttons_manual_add_directory = gui_data.upper_notebook.buttons_manual_add_directory.clone();
buttons_manual_add_directory.connect_clicked(move |_| {
let dialog_manual_add_directory = gtk::Dialog::with_buttons(Some("Add directory manually"), Some(&window_main), gtk::DialogFlags::MODAL, &[("Ok", gtk::ResponseType::Ok), ("Close", gtk::ResponseType::Cancel)]);
let entry: gtk::Entry = gtk::Entry::new();
@ -47,9 +47,9 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
}
// Add manually excluded directory
{
let tree_view_excluded_directories = gui_data.tree_view_excluded_directories.clone();
let tree_view_excluded_directories = gui_data.upper_notebook.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();
let buttons_manual_add_excluded_directory = gui_data.upper_notebook.buttons_manual_add_excluded_directory.clone();
buttons_manual_add_excluded_directory.connect_clicked(move |_| {
let dialog_manual_add_directory = gtk::Dialog::with_buttons(
Some("Add excluded directory manually"),
@ -90,9 +90,9 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
}
// Add included directory
{
let tree_view_included_directories = gui_data.tree_view_included_directories.clone();
let tree_view_included_directories = gui_data.upper_notebook.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();
let buttons_add_included_directory = gui_data.upper_notebook.buttons_add_included_directory.clone();
buttons_add_included_directory.connect_clicked(move |_| {
let chooser = gtk::FileChooserDialog::with_buttons(
Some("Folders to include"),
@ -119,9 +119,9 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
}
// Add excluded directory
{
let tree_view_excluded_directories = gui_data.tree_view_excluded_directories.clone();
let tree_view_excluded_directories = gui_data.upper_notebook.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();
let buttons_add_excluded_directory = gui_data.upper_notebook.buttons_add_excluded_directory.clone();
buttons_add_excluded_directory.connect_clicked(move |_| {
let chooser = gtk::FileChooserDialog::with_buttons(
Some("Folders to exclude"),
@ -149,8 +149,8 @@ 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 tree_view_excluded_directories = gui_data.tree_view_excluded_directories.clone();
let buttons_remove_excluded_directory = gui_data.upper_notebook.buttons_remove_excluded_directory.clone();
let tree_view_excluded_directories = gui_data.upper_notebook.tree_view_excluded_directories.clone();
buttons_remove_excluded_directory.connect_clicked(move |_| {
let list_store = get_list_store(&tree_view_excluded_directories);
let selection = tree_view_excluded_directories.get_selection();
@ -164,8 +164,8 @@ 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 tree_view_included_directories = gui_data.tree_view_included_directories.clone();
let buttons_remove_included_directory = gui_data.upper_notebook.buttons_remove_included_directory.clone();
let tree_view_included_directories = gui_data.upper_notebook.tree_view_included_directories.clone();
buttons_remove_included_directory.connect_clicked(move |_| {
let list_store = get_list_store(&tree_view_included_directories);
let selection = tree_view_included_directories.get_selection();

View file

@ -7,7 +7,7 @@ pub fn connect_settings(gui_data: &GuiData) {
// Connect save configuration button
{
let gui_data = gui_data.clone();
let button_settings_save_configuration = gui_data.button_settings_save_configuration.clone();
let button_settings_save_configuration = gui_data.upper_notebook.button_settings_save_configuration.clone();
button_settings_save_configuration.connect_clicked(move |_| {
save_configuration(&gui_data, true);
});
@ -15,7 +15,7 @@ pub fn connect_settings(gui_data: &GuiData) {
// Connect load configuration button
{
let gui_data = gui_data.clone();
let button_settings_load_configuration = gui_data.button_settings_load_configuration.clone();
let button_settings_load_configuration = gui_data.upper_notebook.button_settings_load_configuration.clone();
button_settings_load_configuration.connect_clicked(move |_| {
load_configuration(&gui_data, true);
});
@ -23,7 +23,7 @@ pub fn connect_settings(gui_data: &GuiData) {
// Connect reset configuration button
{
let gui_data = gui_data.clone();
let button_settings_reset_configuration = gui_data.button_settings_reset_configuration.clone();
let button_settings_reset_configuration = gui_data.upper_notebook.button_settings_reset_configuration.clone();
button_settings_reset_configuration.connect_clicked(move |_| {
reset_configuration(&gui_data, true);
});

View file

@ -0,0 +1,39 @@
use gtk::prelude::*;
use gtk::Button;
#[derive(Clone)]
pub struct GUIBottomButtons {
pub buttons_search: gtk::Button,
pub buttons_select: gtk::Button,
pub buttons_delete: gtk::Button,
pub buttons_save: gtk::Button,
pub buttons_symlink: gtk::Button,
pub buttons_show_errors: gtk::Button,
pub buttons_names: [String; 5],
pub buttons_array: [Button; 5],
}
impl GUIBottomButtons {
pub fn create_from_builder(builder: &gtk::Builder) -> Self {
let buttons_search: gtk::Button = builder.get_object("buttons_search").unwrap();
let buttons_select: gtk::Button = builder.get_object("buttons_select").unwrap();
let buttons_delete: gtk::Button = builder.get_object("buttons_delete").unwrap();
let buttons_save: gtk::Button = builder.get_object("buttons_save").unwrap();
let buttons_symlink: gtk::Button = builder.get_object("buttons_symlink").unwrap();
let buttons_show_errors: gtk::Button = builder.get_object("buttons_show_errors").unwrap();
let buttons_names = ["search".to_string(), "select".to_string(), "delete".to_string(), "save".to_string(), "symlink".to_string()];
let buttons_array = [buttons_search.clone(), buttons_select.clone(), buttons_delete.clone(), buttons_save.clone(), buttons_symlink.clone()];
Self {
buttons_search,
buttons_select,
buttons_delete,
buttons_save,
buttons_symlink,
buttons_show_errors,
buttons_names,
buttons_array,
}
}
}

View file

@ -1,5 +1,9 @@
extern crate gtk;
use crate::gui_bottom_buttons::GUIBottomButtons;
use crate::gui_main_notebook::GUIMainNotebook;
use crate::gui_popovers::GUIPopovers;
use crate::gui_progress_dialog::GUIProgressDialog;
use crate::gui_upper_notepad::GUIUpperNotebook;
use crate::notebook_enums::*;
use crossbeam_channel::unbounded;
use czkawka_core::big_file::BigFile;
@ -12,7 +16,7 @@ use czkawka_core::similar_images::SimilarImages;
use czkawka_core::temporary::Temporary;
use czkawka_core::zeroed::ZeroedFiles;
use gtk::prelude::*;
use gtk::{Builder, Button, TreeView};
use gtk::Builder;
use std::cell::RefCell;
use std::collections::HashMap;
use std::rc::Rc;
@ -27,9 +31,10 @@ pub struct GuiData {
pub window_main: gtk::Window,
pub main_notebook: GUIMainNotebook,
// States
pub buttons_labels: [String; 5],
pub upper_notebook: GUIUpperNotebook,
pub popovers: GUIPopovers,
pub bottom_buttons: GUIBottomButtons,
pub progress_dialog: GUIProgressDialog,
// Buttons state
pub shared_buttons: Rc<RefCell<HashMap<NotebookMainEnum, HashMap<String, bool>>>>,
@ -48,128 +53,13 @@ pub struct GuiData {
pub shared_same_music_state: Rc<RefCell<SameMusic>>,
pub shared_same_invalid_symlinks: Rc<RefCell<InvalidSymlinks>>,
//// GUI Entry
pub entry_similar_images_minimal_size: gtk::Entry,
pub entry_duplicate_minimal_size: gtk::Entry,
pub entry_allowed_extensions: gtk::Entry,
pub entry_excluded_items: gtk::Entry,
pub entry_big_files_number: gtk::Entry,
pub entry_same_music_minimal_size: gtk::Entry,
//// GUI Buttons
pub buttons_search: gtk::Button,
pub buttons_select: gtk::Button,
pub buttons_delete: gtk::Button,
pub buttons_save: gtk::Button,
pub buttons_symlink: gtk::Button,
pub buttons_show_errors: gtk::Button,
pub buttons_names: [String; 5],
pub buttons_array: [Button; 5],
pub buttons_manual_add_directory: gtk::Button,
pub buttons_add_included_directory: gtk::Button,
pub buttons_remove_included_directory: gtk::Button,
pub buttons_manual_add_excluded_directory: gtk::Button,
pub buttons_add_excluded_directory: gtk::Button,
pub buttons_remove_excluded_directory: gtk::Button,
// Buttons search popover buttons
pub buttons_popover_select_all: gtk::Button,
pub buttons_popover_unselect_all: gtk::Button,
pub buttons_popover_reverse: gtk::Button,
pub buttons_popover_select_all_except_oldest: gtk::Button,
pub buttons_popover_select_all_except_newest: gtk::Button,
pub buttons_popover_select_one_oldest: gtk::Button,
pub buttons_popover_select_one_newest: gtk::Button,
pub buttons_popover_select_custom: gtk::Button,
pub buttons_popover_unselect_custom: gtk::Button,
pub buttons_popover_select_all_images_except_biggest: gtk::Button,
pub buttons_popover_select_all_images_except_smallest: gtk::Button,
pub separator_select_image_size: gtk::Separator,
pub separator_select_reverse: gtk::Separator,
pub separator_select_date: gtk::Separator,
pub separator_select_custom: gtk::Separator,
pub buttons_popover_right_click_open_file: gtk::Button,
pub buttons_popover_right_click_open_folder: gtk::Button,
//// Popovers
pub popover_select: gtk::Popover,
pub popover_right_click: gtk::Popover,
//// Check Buttons
pub check_button_recursive: gtk::CheckButton,
pub check_button_music_title: gtk::CheckButton,
pub check_button_music_artist: gtk::CheckButton,
pub check_button_music_album_title: gtk::CheckButton,
pub check_button_music_album_artist: gtk::CheckButton,
pub check_button_music_year: gtk::CheckButton,
//// Radio Buttons
// Duplicates
pub radio_button_duplicates_name: gtk::RadioButton,
pub radio_button_duplicates_size: gtk::RadioButton,
pub radio_button_duplicates_hashmb: gtk::RadioButton,
pub radio_button_duplicates_hash: gtk::RadioButton,
pub radio_button_similar_images_minimal: gtk::RadioButton,
pub radio_button_similar_images_very_small: gtk::RadioButton,
pub radio_button_similar_images_small: gtk::RadioButton,
pub radio_button_similar_images_medium: gtk::RadioButton,
pub radio_button_similar_images_high: gtk::RadioButton,
pub radio_button_similar_images_very_high: gtk::RadioButton,
//// Notebooks
pub notebook_main: gtk::Notebook,
pub notebook_upper: gtk::Notebook,
pub notebook_upper_children_names: Vec<String>,
//// Entry
pub entry_info: gtk::Entry, // To show default
pub entry_info: gtk::Entry,
//// Bottom
pub text_view_errors: gtk::TextView,
pub scrolled_window_errors: gtk::ScrolledWindow,
//// Scrolled windows
// 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,
pub progress_bar_current_stage: gtk::ProgressBar,
pub progress_bar_all_stages: gtk::ProgressBar,
pub label_stage: gtk::Label,
pub grid_progress_stages: gtk::Grid,
pub button_stop_in_dialog: gtk::Button,
//// Similar Images
pub image_preview_similar_images: gtk::Image,
//// Settings
pub check_button_settings_save_at_exit: gtk::CheckButton,
pub check_button_settings_load_at_start: gtk::CheckButton,
pub check_button_settings_confirm_deletion: gtk::CheckButton,
pub check_button_settings_show_preview_similar_images: gtk::CheckButton,
pub check_button_settings_show_text_view: gtk::CheckButton,
pub button_settings_save_configuration: gtk::Button,
pub button_settings_load_configuration: gtk::Button,
pub button_settings_reset_configuration: gtk::Button,
//// Threads
// Used for sending stop signal to thread
pub stop_sender: crossbeam_channel::Sender<()>,
pub stop_receiver: crossbeam_channel::Receiver<()>,
@ -187,23 +77,24 @@ impl GuiData {
window_main.set_title("Czkawka");
let main_notebook = GUIMainNotebook::create_from_builder(&builder);
let upper_notebook = GUIUpperNotebook::create_from_builder(&builder);
let popovers = GUIPopovers::create_from_builder(&builder);
let bottom_buttons = GUIBottomButtons::create_from_builder(&builder);
let progress_dialog = GUIProgressDialog::create_from_builder(&builder);
////////////////////////////////////////////////////////////////////////////////////////////////
//// States
let buttons_labels = ["search".to_string(), "select".to_string(), "delete".to_string(), "save".to_string(), "symlink".to_string()];
// Buttons State - to remember existence of different buttons on pages
let shared_buttons: Rc<RefCell<_>> = Rc::new(RefCell::new(HashMap::<NotebookMainEnum, HashMap<String, bool>>::new()));
// Show by default only search button
for i in get_all_main_tabs().iter() {
let mut temp_hashmap: HashMap<String, bool> = Default::default();
for j in buttons_labels.iter() {
if *j == "search" {
temp_hashmap.insert(j.to_string(), true);
for button_name in bottom_buttons.buttons_names.iter() {
if *button_name == "search" {
temp_hashmap.insert(button_name.to_string(), true);
} else {
temp_hashmap.insert(j.to_string(), false);
temp_hashmap.insert(button_name.to_string(), false);
}
}
shared_buttons.borrow_mut().insert(i.clone(), temp_hashmap);
@ -234,91 +125,6 @@ impl GuiData {
let shared_same_music_state: Rc<RefCell<_>> = Rc::new(RefCell::new(SameMusic::new()));
let shared_same_invalid_symlinks: Rc<RefCell<_>> = Rc::new(RefCell::new(InvalidSymlinks::new()));
////////////////////////////////////////////////////////////////////////////////////////////////
//// GUI Entry
let entry_similar_images_minimal_size: gtk::Entry = builder.get_object("entry_similar_images_minimal_size").unwrap();
let entry_duplicate_minimal_size: gtk::Entry = builder.get_object("entry_duplicate_minimal_size").unwrap();
let entry_allowed_extensions: gtk::Entry = builder.get_object("entry_allowed_extensions").unwrap();
let entry_excluded_items: gtk::Entry = builder.get_object("entry_excluded_items").unwrap();
let entry_big_files_number: gtk::Entry = builder.get_object("entry_big_files_number").unwrap();
let entry_same_music_minimal_size: gtk::Entry = builder.get_object("entry_same_music_minimal_size").unwrap();
//// GUI Buttons
let buttons_search: gtk::Button = builder.get_object("buttons_search").unwrap();
let buttons_select: gtk::Button = builder.get_object("buttons_select").unwrap();
let buttons_delete: gtk::Button = builder.get_object("buttons_delete").unwrap();
let buttons_save: gtk::Button = builder.get_object("buttons_save").unwrap();
let buttons_symlink: gtk::Button = builder.get_object("buttons_symlink").unwrap();
let buttons_show_errors: gtk::Button = builder.get_object("buttons_show_errors").unwrap();
let buttons_names = ["search".to_string(), "select".to_string(), "delete".to_string(), "save".to_string(), "symlink".to_string()];
let buttons_array = [buttons_search.clone(), buttons_select.clone(), buttons_delete.clone(), buttons_save.clone(), buttons_symlink.clone()];
let buttons_manual_add_directory: gtk::Button = builder.get_object("buttons_manual_add_directory").unwrap();
let buttons_add_included_directory: gtk::Button = builder.get_object("buttons_add_included_directory").unwrap();
let buttons_remove_included_directory: gtk::Button = builder.get_object("buttons_remove_included_directory").unwrap();
let buttons_manual_add_excluded_directory: gtk::Button = builder.get_object("buttons_manual_add_excluded_directory").unwrap();
let buttons_add_excluded_directory: gtk::Button = builder.get_object("buttons_add_excluded_directory").unwrap();
let buttons_remove_excluded_directory: gtk::Button = builder.get_object("buttons_remove_excluded_directory").unwrap();
// Buttons search popover buttons
let buttons_popover_select_all: gtk::Button = builder.get_object("buttons_popover_select_all").unwrap();
let buttons_popover_unselect_all: gtk::Button = builder.get_object("buttons_popover_unselect_all").unwrap();
let buttons_popover_reverse: gtk::Button = builder.get_object("buttons_popover_reverse").unwrap();
let buttons_popover_select_all_except_oldest: gtk::Button = builder.get_object("buttons_popover_select_all_except_oldest").unwrap();
let buttons_popover_select_all_except_newest: gtk::Button = builder.get_object("buttons_popover_select_all_except_newest").unwrap();
let buttons_popover_select_one_oldest: gtk::Button = builder.get_object("buttons_popover_select_one_oldest").unwrap();
let buttons_popover_select_one_newest: gtk::Button = builder.get_object("buttons_popover_select_one_newest").unwrap();
let buttons_popover_select_custom: gtk::Button = builder.get_object("buttons_popover_select_custom").unwrap();
let buttons_popover_unselect_custom: gtk::Button = builder.get_object("buttons_popover_unselect_custom").unwrap();
let buttons_popover_select_all_images_except_biggest: gtk::Button = builder.get_object("buttons_popover_select_all_images_except_biggest").unwrap();
let buttons_popover_select_all_images_except_smallest: gtk::Button = builder.get_object("buttons_popover_select_all_images_except_smallest").unwrap();
let separator_select_image_size: gtk::Separator = builder.get_object("separator_select_image_size").unwrap();
let separator_select_reverse: gtk::Separator = builder.get_object("separator_select_reverse").unwrap();
let separator_select_date: gtk::Separator = builder.get_object("separator_select_date").unwrap();
let separator_select_custom: gtk::Separator = builder.get_object("separator_select_custom").unwrap();
let buttons_popover_right_click_open_file: gtk::Button = builder.get_object("buttons_popover_right_click_open_file").unwrap();
let buttons_popover_right_click_open_folder: gtk::Button = builder.get_object("buttons_popover_right_click_open_folder").unwrap();
//// Popovers
let popover_select: gtk::Popover = builder.get_object("popover_select").unwrap();
let popover_right_click: gtk::Popover = builder.get_object("popover_right_click").unwrap();
//// Check Buttons
let check_button_recursive: gtk::CheckButton = builder.get_object("check_button_recursive").unwrap();
let check_button_music_title: gtk::CheckButton = builder.get_object("check_button_music_title").unwrap();
let check_button_music_artist: gtk::CheckButton = builder.get_object("check_button_music_artist").unwrap();
let check_button_music_album_title: gtk::CheckButton = builder.get_object("check_button_music_album_title").unwrap();
let check_button_music_album_artist: gtk::CheckButton = builder.get_object("check_button_music_album_artist").unwrap();
let check_button_music_year: gtk::CheckButton = builder.get_object("check_button_music_year").unwrap();
//// Radio Buttons
let radio_button_duplicates_name: gtk::RadioButton = builder.get_object("radio_button_duplicates_name").unwrap();
let radio_button_duplicates_size: gtk::RadioButton = builder.get_object("radio_button_duplicates_size").unwrap();
let radio_button_duplicates_hashmb: gtk::RadioButton = builder.get_object("radio_button_duplicates_hashmb").unwrap();
let radio_button_duplicates_hash: gtk::RadioButton = builder.get_object("radio_button_duplicates_hash").unwrap();
let radio_button_similar_images_minimal: gtk::RadioButton = builder.get_object("radio_button_similar_images_minimal").unwrap();
let radio_button_similar_images_very_small: gtk::RadioButton = builder.get_object("radio_button_similar_images_very_small").unwrap();
let radio_button_similar_images_small: gtk::RadioButton = builder.get_object("radio_button_similar_images_small").unwrap();
let radio_button_similar_images_medium: gtk::RadioButton = builder.get_object("radio_button_similar_images_medium").unwrap();
let radio_button_similar_images_high: gtk::RadioButton = builder.get_object("radio_button_similar_images_high").unwrap();
let radio_button_similar_images_very_high: gtk::RadioButton = builder.get_object("radio_button_similar_images_very_high").unwrap();
//// Notebooks
let notebook_main: gtk::Notebook = builder.get_object("notebook_main").unwrap();
let notebook_upper: gtk::Notebook = builder.get_object("notebook_upper").unwrap();
let mut notebook_upper_children_names: Vec<String> = Vec::new();
for i in notebook_upper.get_children() {
notebook_upper_children_names.push(i.get_buildable_name().unwrap().to_string());
}
//// Entry
let entry_info: gtk::Entry = builder.get_object("entry_info").unwrap();
@ -326,46 +132,6 @@ impl GuiData {
let text_view_errors: gtk::TextView = builder.get_object("text_view_errors").unwrap();
let scrolled_window_errors: gtk::ScrolledWindow = builder.get_object("scrolled_window_errors").unwrap();
//// Scrolled windows
// Main notebook
// 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");
let progress_bar_current_stage: gtk::ProgressBar = builder.get_object("progress_bar_current_stage").unwrap();
let progress_bar_all_stages: gtk::ProgressBar = builder.get_object("progress_bar_all_stages").unwrap();
let label_stage: gtk::Label = builder.get_object("label_stage").unwrap();
let grid_progress_stages: gtk::Grid = builder.get_object("grid_progress_stages").unwrap();
let button_stop_in_dialog: gtk::Button = builder.get_object("button_stop_in_dialog").unwrap();
//// Similar Images
let image_preview_similar_images: gtk::Image = builder.get_object("image_preview_similar_images").unwrap();
//// Settings
let check_button_settings_save_at_exit: gtk::CheckButton = builder.get_object("check_button_settings_save_at_exit").unwrap();
let check_button_settings_load_at_start: gtk::CheckButton = builder.get_object("check_button_settings_load_at_start").unwrap();
let check_button_settings_confirm_deletion: gtk::CheckButton = builder.get_object("check_button_settings_confirm_deletion").unwrap();
let check_button_settings_show_preview_similar_images: gtk::CheckButton = builder.get_object("check_button_settings_show_preview_similar_images").unwrap();
let check_button_settings_show_text_view: gtk::CheckButton = builder.get_object("check_button_settings_show_text_view").unwrap();
let button_settings_save_configuration: gtk::Button = builder.get_object("button_settings_save_configuration").unwrap();
let button_settings_load_configuration: gtk::Button = builder.get_object("button_settings_load_configuration").unwrap();
let button_settings_reset_configuration: gtk::Button = builder.get_object("button_settings_reset_configuration").unwrap();
//// Threads
// Types of messages to send to main thread where gui can be draw.
// Used for sending stop signal to thread
let (stop_sender, stop_receiver): (crossbeam_channel::Sender<()>, crossbeam_channel::Receiver<()>) = unbounded();
@ -374,7 +140,10 @@ impl GuiData {
builder,
window_main,
main_notebook,
buttons_labels,
upper_notebook,
popovers,
bottom_buttons,
progress_dialog,
shared_buttons,
shared_upper_notebooks,
shared_duplication_state,
@ -386,86 +155,9 @@ impl GuiData {
shared_zeroed_files_state,
shared_same_music_state,
shared_same_invalid_symlinks,
entry_similar_images_minimal_size,
entry_duplicate_minimal_size,
entry_allowed_extensions,
entry_excluded_items,
entry_big_files_number,
entry_same_music_minimal_size,
buttons_search,
buttons_select,
buttons_delete,
buttons_save,
buttons_symlink,
buttons_show_errors,
buttons_names,
buttons_array,
buttons_manual_add_directory,
buttons_add_included_directory,
buttons_remove_included_directory,
buttons_manual_add_excluded_directory,
buttons_add_excluded_directory,
buttons_remove_excluded_directory,
buttons_popover_select_all,
buttons_popover_unselect_all,
buttons_popover_reverse,
buttons_popover_select_all_except_oldest,
buttons_popover_select_all_except_newest,
buttons_popover_select_one_oldest,
buttons_popover_select_one_newest,
buttons_popover_select_custom,
buttons_popover_unselect_custom,
buttons_popover_select_all_images_except_biggest,
buttons_popover_select_all_images_except_smallest,
separator_select_image_size,
separator_select_reverse,
separator_select_date,
separator_select_custom,
buttons_popover_right_click_open_file,
buttons_popover_right_click_open_folder,
popover_select,
popover_right_click,
check_button_recursive,
check_button_music_title,
check_button_music_artist,
check_button_music_album_title,
check_button_music_album_artist,
check_button_music_year,
radio_button_duplicates_name,
radio_button_duplicates_size,
radio_button_duplicates_hashmb,
radio_button_duplicates_hash,
radio_button_similar_images_minimal,
radio_button_similar_images_very_small,
radio_button_similar_images_small,
radio_button_similar_images_medium,
radio_button_similar_images_high,
radio_button_similar_images_very_high,
notebook_main,
notebook_upper,
notebook_upper_children_names,
entry_info,
text_view_errors,
scrolled_window_errors,
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,
label_stage,
grid_progress_stages,
button_stop_in_dialog,
image_preview_similar_images,
check_button_settings_save_at_exit,
check_button_settings_load_at_start,
check_button_settings_confirm_deletion,
check_button_settings_show_preview_similar_images,
check_button_settings_show_text_view,
button_settings_save_configuration,
button_settings_load_configuration,
button_settings_reset_configuration,
stop_sender,
stop_receiver,
}

View file

@ -3,6 +3,8 @@ use gtk::TreeView;
#[derive(Clone)]
pub struct GUIMainNotebook {
pub notebook_main: gtk::Notebook,
pub scrolled_window_duplicate_finder: gtk::ScrolledWindow,
pub scrolled_window_empty_folder_finder: gtk::ScrolledWindow,
pub scrolled_window_empty_files_finder: gtk::ScrolledWindow,
@ -22,10 +24,40 @@ pub struct GUIMainNotebook {
pub tree_view_zeroed_files_finder: gtk::TreeView,
pub tree_view_same_music_finder: gtk::TreeView,
pub tree_view_invalid_symlinks: gtk::TreeView,
pub entry_similar_images_minimal_size: gtk::Entry,
pub entry_duplicate_minimal_size: gtk::Entry,
pub entry_big_files_number: gtk::Entry,
pub entry_same_music_minimal_size: gtk::Entry,
//// Check Buttons
pub check_button_music_title: gtk::CheckButton,
pub check_button_music_artist: gtk::CheckButton,
pub check_button_music_album_title: gtk::CheckButton,
pub check_button_music_album_artist: gtk::CheckButton,
pub check_button_music_year: gtk::CheckButton,
//// Radio Buttons
// Duplicates
pub radio_button_duplicates_name: gtk::RadioButton,
pub radio_button_duplicates_size: gtk::RadioButton,
pub radio_button_duplicates_hashmb: gtk::RadioButton,
pub radio_button_duplicates_hash: gtk::RadioButton,
pub radio_button_similar_images_minimal: gtk::RadioButton,
pub radio_button_similar_images_very_small: gtk::RadioButton,
pub radio_button_similar_images_small: gtk::RadioButton,
pub radio_button_similar_images_medium: gtk::RadioButton,
pub radio_button_similar_images_high: gtk::RadioButton,
pub radio_button_similar_images_very_high: gtk::RadioButton,
pub image_preview_similar_images: gtk::Image,
}
impl GUIMainNotebook {
pub fn create_from_builder(builder: &gtk::Builder) -> Self {
let notebook_main: gtk::Notebook = builder.get_object("notebook_main").unwrap();
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();
@ -46,7 +78,35 @@ impl GUIMainNotebook {
let tree_view_same_music_finder: gtk::TreeView = TreeView::new();
let tree_view_invalid_symlinks: gtk::TreeView = TreeView::new();
let entry_similar_images_minimal_size: gtk::Entry = builder.get_object("entry_similar_images_minimal_size").unwrap();
let entry_duplicate_minimal_size: gtk::Entry = builder.get_object("entry_duplicate_minimal_size").unwrap();
let entry_big_files_number: gtk::Entry = builder.get_object("entry_big_files_number").unwrap();
let entry_same_music_minimal_size: gtk::Entry = builder.get_object("entry_same_music_minimal_size").unwrap();
//// Check Buttons
let check_button_music_title: gtk::CheckButton = builder.get_object("check_button_music_title").unwrap();
let check_button_music_artist: gtk::CheckButton = builder.get_object("check_button_music_artist").unwrap();
let check_button_music_album_title: gtk::CheckButton = builder.get_object("check_button_music_album_title").unwrap();
let check_button_music_album_artist: gtk::CheckButton = builder.get_object("check_button_music_album_artist").unwrap();
let check_button_music_year: gtk::CheckButton = builder.get_object("check_button_music_year").unwrap();
//// Radio Buttons
let radio_button_duplicates_name: gtk::RadioButton = builder.get_object("radio_button_duplicates_name").unwrap();
let radio_button_duplicates_size: gtk::RadioButton = builder.get_object("radio_button_duplicates_size").unwrap();
let radio_button_duplicates_hashmb: gtk::RadioButton = builder.get_object("radio_button_duplicates_hashmb").unwrap();
let radio_button_duplicates_hash: gtk::RadioButton = builder.get_object("radio_button_duplicates_hash").unwrap();
let radio_button_similar_images_minimal: gtk::RadioButton = builder.get_object("radio_button_similar_images_minimal").unwrap();
let radio_button_similar_images_very_small: gtk::RadioButton = builder.get_object("radio_button_similar_images_very_small").unwrap();
let radio_button_similar_images_small: gtk::RadioButton = builder.get_object("radio_button_similar_images_small").unwrap();
let radio_button_similar_images_medium: gtk::RadioButton = builder.get_object("radio_button_similar_images_medium").unwrap();
let radio_button_similar_images_high: gtk::RadioButton = builder.get_object("radio_button_similar_images_high").unwrap();
let radio_button_similar_images_very_high: gtk::RadioButton = builder.get_object("radio_button_similar_images_very_high").unwrap();
let image_preview_similar_images: gtk::Image = builder.get_object("image_preview_similar_images").unwrap();
Self {
notebook_main,
scrolled_window_duplicate_finder,
scrolled_window_empty_folder_finder,
scrolled_window_empty_files_finder,
@ -65,6 +125,26 @@ impl GUIMainNotebook {
tree_view_zeroed_files_finder,
tree_view_same_music_finder,
tree_view_invalid_symlinks,
entry_similar_images_minimal_size,
entry_duplicate_minimal_size,
entry_big_files_number,
entry_same_music_minimal_size,
check_button_music_title,
check_button_music_artist,
check_button_music_album_title,
check_button_music_album_artist,
check_button_music_year,
radio_button_duplicates_name,
radio_button_duplicates_size,
radio_button_duplicates_hashmb,
radio_button_duplicates_hash,
radio_button_similar_images_minimal,
radio_button_similar_images_very_small,
radio_button_similar_images_small,
radio_button_similar_images_medium,
radio_button_similar_images_high,
radio_button_similar_images_very_high,
image_preview_similar_images,
}
}
}

View file

@ -0,0 +1,76 @@
use gtk::prelude::*;
#[derive(Clone)]
pub struct GUIPopovers {
pub buttons_popover_select_all: gtk::Button,
pub buttons_popover_unselect_all: gtk::Button,
pub buttons_popover_reverse: gtk::Button,
pub buttons_popover_select_all_except_oldest: gtk::Button,
pub buttons_popover_select_all_except_newest: gtk::Button,
pub buttons_popover_select_one_oldest: gtk::Button,
pub buttons_popover_select_one_newest: gtk::Button,
pub buttons_popover_select_custom: gtk::Button,
pub buttons_popover_unselect_custom: gtk::Button,
pub buttons_popover_select_all_images_except_biggest: gtk::Button,
pub buttons_popover_select_all_images_except_smallest: gtk::Button,
pub separator_select_image_size: gtk::Separator,
pub separator_select_reverse: gtk::Separator,
pub separator_select_date: gtk::Separator,
pub separator_select_custom: gtk::Separator,
pub buttons_popover_right_click_open_file: gtk::Button,
pub buttons_popover_right_click_open_folder: gtk::Button,
pub popover_select: gtk::Popover,
pub popover_right_click: gtk::Popover,
}
impl GUIPopovers {
pub fn create_from_builder(builder: &gtk::Builder) -> Self {
let buttons_popover_select_all: gtk::Button = builder.get_object("buttons_popover_select_all").unwrap();
let buttons_popover_unselect_all: gtk::Button = builder.get_object("buttons_popover_unselect_all").unwrap();
let buttons_popover_reverse: gtk::Button = builder.get_object("buttons_popover_reverse").unwrap();
let buttons_popover_select_all_except_oldest: gtk::Button = builder.get_object("buttons_popover_select_all_except_oldest").unwrap();
let buttons_popover_select_all_except_newest: gtk::Button = builder.get_object("buttons_popover_select_all_except_newest").unwrap();
let buttons_popover_select_one_oldest: gtk::Button = builder.get_object("buttons_popover_select_one_oldest").unwrap();
let buttons_popover_select_one_newest: gtk::Button = builder.get_object("buttons_popover_select_one_newest").unwrap();
let buttons_popover_select_custom: gtk::Button = builder.get_object("buttons_popover_select_custom").unwrap();
let buttons_popover_unselect_custom: gtk::Button = builder.get_object("buttons_popover_unselect_custom").unwrap();
let buttons_popover_select_all_images_except_biggest: gtk::Button = builder.get_object("buttons_popover_select_all_images_except_biggest").unwrap();
let buttons_popover_select_all_images_except_smallest: gtk::Button = builder.get_object("buttons_popover_select_all_images_except_smallest").unwrap();
let separator_select_image_size: gtk::Separator = builder.get_object("separator_select_image_size").unwrap();
let separator_select_reverse: gtk::Separator = builder.get_object("separator_select_reverse").unwrap();
let separator_select_date: gtk::Separator = builder.get_object("separator_select_date").unwrap();
let separator_select_custom: gtk::Separator = builder.get_object("separator_select_custom").unwrap();
let buttons_popover_right_click_open_file: gtk::Button = builder.get_object("buttons_popover_right_click_open_file").unwrap();
let buttons_popover_right_click_open_folder: gtk::Button = builder.get_object("buttons_popover_right_click_open_folder").unwrap();
let popover_select: gtk::Popover = builder.get_object("popover_select").unwrap();
let popover_right_click: gtk::Popover = builder.get_object("popover_right_click").unwrap();
Self {
buttons_popover_select_all,
buttons_popover_unselect_all,
buttons_popover_reverse,
buttons_popover_select_all_except_oldest,
buttons_popover_select_all_except_newest,
buttons_popover_select_one_oldest,
buttons_popover_select_one_newest,
buttons_popover_select_custom,
buttons_popover_unselect_custom,
buttons_popover_select_all_images_except_biggest,
buttons_popover_select_all_images_except_smallest,
separator_select_image_size,
separator_select_reverse,
separator_select_date,
separator_select_custom,
buttons_popover_right_click_open_file,
buttons_popover_right_click_open_folder,
popover_select,
popover_right_click,
}
}
}

View file

@ -0,0 +1,40 @@
use gtk::prelude::*;
#[derive(Clone)]
pub struct GUIProgressDialog {
pub dialog_progress: gtk::Dialog,
pub progress_bar_current_stage: gtk::ProgressBar,
pub progress_bar_all_stages: gtk::ProgressBar,
pub label_stage: gtk::Label,
pub grid_progress_stages: gtk::Grid,
pub button_stop_in_dialog: gtk::Button,
}
impl GUIProgressDialog {
pub fn create_from_builder(builder: &gtk::Builder) -> Self {
let dialog_progress: gtk::Dialog = builder.get_object("dialog_progress").unwrap();
dialog_progress.set_title("Czkawka");
let progress_bar_current_stage: gtk::ProgressBar = builder.get_object("progress_bar_current_stage").unwrap();
let progress_bar_all_stages: gtk::ProgressBar = builder.get_object("progress_bar_all_stages").unwrap();
let label_stage: gtk::Label = builder.get_object("label_stage").unwrap();
let grid_progress_stages: gtk::Grid = builder.get_object("grid_progress_stages").unwrap();
let button_stop_in_dialog: gtk::Button = builder.get_object("button_stop_in_dialog").unwrap();
Self {
dialog_progress,
progress_bar_current_stage,
progress_bar_all_stages,
label_stage,
grid_progress_stages,
button_stop_in_dialog,
}
}
}

View file

@ -0,0 +1,96 @@
use gtk::prelude::*;
use gtk::TreeView;
#[derive(Clone)]
pub struct GUIUpperNotebook {
pub notebook_upper: gtk::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,
pub entry_excluded_items: gtk::Entry,
pub entry_allowed_extensions: gtk::Entry,
//// Settings
pub check_button_settings_save_at_exit: gtk::CheckButton,
pub check_button_settings_load_at_start: gtk::CheckButton,
pub check_button_settings_confirm_deletion: gtk::CheckButton,
pub check_button_settings_show_preview_similar_images: gtk::CheckButton,
pub check_button_settings_show_text_view: gtk::CheckButton,
pub button_settings_save_configuration: gtk::Button,
pub button_settings_load_configuration: gtk::Button,
pub button_settings_reset_configuration: gtk::Button,
pub check_button_recursive: gtk::CheckButton,
pub buttons_manual_add_directory: gtk::Button,
pub buttons_add_included_directory: gtk::Button,
pub buttons_remove_included_directory: gtk::Button,
pub buttons_manual_add_excluded_directory: gtk::Button,
pub buttons_add_excluded_directory: gtk::Button,
pub buttons_remove_excluded_directory: gtk::Button,
}
impl GUIUpperNotebook {
pub fn create_from_builder(builder: &gtk::Builder) -> Self {
let notebook_upper: gtk::Notebook = builder.get_object("notebook_upper").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 tree_view_included_directories: gtk::TreeView = TreeView::new();
let tree_view_excluded_directories: gtk::TreeView = TreeView::new();
let entry_allowed_extensions: gtk::Entry = builder.get_object("entry_allowed_extensions").unwrap();
let entry_excluded_items: gtk::Entry = builder.get_object("entry_excluded_items").unwrap();
//// Settings
let check_button_settings_save_at_exit: gtk::CheckButton = builder.get_object("check_button_settings_save_at_exit").unwrap();
let check_button_settings_load_at_start: gtk::CheckButton = builder.get_object("check_button_settings_load_at_start").unwrap();
let check_button_settings_confirm_deletion: gtk::CheckButton = builder.get_object("check_button_settings_confirm_deletion").unwrap();
let check_button_settings_show_preview_similar_images: gtk::CheckButton = builder.get_object("check_button_settings_show_preview_similar_images").unwrap();
let check_button_settings_show_text_view: gtk::CheckButton = builder.get_object("check_button_settings_show_text_view").unwrap();
let button_settings_save_configuration: gtk::Button = builder.get_object("button_settings_save_configuration").unwrap();
let button_settings_load_configuration: gtk::Button = builder.get_object("button_settings_load_configuration").unwrap();
let button_settings_reset_configuration: gtk::Button = builder.get_object("button_settings_reset_configuration").unwrap();
let check_button_recursive: gtk::CheckButton = builder.get_object("check_button_recursive").unwrap();
let buttons_manual_add_directory: gtk::Button = builder.get_object("buttons_manual_add_directory").unwrap();
let buttons_add_included_directory: gtk::Button = builder.get_object("buttons_add_included_directory").unwrap();
let buttons_remove_included_directory: gtk::Button = builder.get_object("buttons_remove_included_directory").unwrap();
let buttons_manual_add_excluded_directory: gtk::Button = builder.get_object("buttons_manual_add_excluded_directory").unwrap();
let buttons_add_excluded_directory: gtk::Button = builder.get_object("buttons_add_excluded_directory").unwrap();
let buttons_remove_excluded_directory: gtk::Button = builder.get_object("buttons_remove_excluded_directory").unwrap();
Self {
notebook_upper,
scrolled_window_included_directories,
scrolled_window_excluded_directories,
tree_view_included_directories,
tree_view_excluded_directories,
entry_excluded_items,
entry_allowed_extensions,
check_button_settings_save_at_exit,
check_button_settings_load_at_start,
check_button_settings_confirm_deletion,
check_button_settings_show_preview_similar_images,
check_button_settings_show_text_view,
button_settings_save_configuration,
button_settings_load_configuration,
button_settings_reset_configuration,
check_button_recursive,
buttons_manual_add_directory,
buttons_add_included_directory,
buttons_remove_included_directory,
buttons_manual_add_excluded_directory,
buttons_add_excluded_directory,
buttons_remove_excluded_directory,
}
}
}

View file

@ -15,11 +15,11 @@ use std::path::Path;
pub fn initialize_gui(gui_data: &mut GuiData) {
//// Setup default look(duplicate finder)
{
let buttons_search = gui_data.buttons_search.clone();
let buttons_save = gui_data.buttons_save.clone();
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 buttons_search = gui_data.bottom_buttons.buttons_search.clone();
let buttons_save = gui_data.bottom_buttons.buttons_save.clone();
let buttons_delete = gui_data.bottom_buttons.buttons_delete.clone();
let buttons_select = gui_data.bottom_buttons.buttons_select.clone();
let buttons_symlink = gui_data.bottom_buttons.buttons_symlink.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();
@ -29,11 +29,11 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
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 scrolled_window_included_directories = gui_data.upper_notebook.scrolled_window_included_directories.clone();
let scrolled_window_excluded_directories = gui_data.upper_notebook.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 image_preview_similar_images = gui_data.main_notebook.image_preview_similar_images.clone();
let check_button_settings_show_preview_similar_images = gui_data.upper_notebook.check_button_settings_show_preview_similar_images.clone();
let text_view_errors = gui_data.text_view_errors.clone();
// Disable and show buttons
@ -433,7 +433,7 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
create_tree_view_directories(&mut tree_view);
gui_data.tree_view_included_directories = tree_view.clone();
gui_data.upper_notebook.tree_view_included_directories = tree_view.clone();
scrolled_window_included_directories.add(&tree_view);
scrolled_window_included_directories.show_all();
@ -465,7 +465,7 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
create_tree_view_directories(&mut tree_view);
gui_data.tree_view_excluded_directories = tree_view.clone();
gui_data.upper_notebook.tree_view_excluded_directories = tree_view.clone();
scrolled_window_excluded_directories.add(&tree_view);
scrolled_window_excluded_directories.show_all();

View file

@ -16,8 +16,12 @@ mod connect_selection_of_directories;
mod connect_settings;
mod create_tree_view;
mod double_click_opening;
mod gui_bottom_buttons;
mod gui_data;
mod gui_main_notebook;
mod gui_popovers;
mod gui_progress_dialog;
mod gui_upper_notepad;
mod help_functions;
mod initialize_gui;
mod notebook_enums;

View file

@ -13,7 +13,7 @@ use std::{env, fs};
const SAVE_FILE_NAME: &str = "czkawka_gui_config.txt";
pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) {
let check_button_settings_save_at_exit = gui_data.check_button_settings_save_at_exit.clone();
let check_button_settings_save_at_exit = gui_data.upper_notebook.check_button_settings_save_at_exit.clone();
let text_view_errors = gui_data.text_view_errors.clone();
reset_text_view(&text_view_errors);
@ -42,7 +42,7 @@ pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) {
//// Included Directories
data_to_save.push("--included_directories:".to_string());
let tree_view_included_directories = gui_data.tree_view_included_directories.clone();
let tree_view_included_directories = gui_data.upper_notebook.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 {
@ -55,7 +55,7 @@ pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) {
//// Excluded Directories
data_to_save.push("--excluded_directories:".to_string());
let tree_view_excluded_directories = gui_data.tree_view_excluded_directories.clone();
let tree_view_excluded_directories = gui_data.upper_notebook.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 {
@ -69,7 +69,7 @@ pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) {
{
//// Excluded Items
data_to_save.push("--excluded_items:".to_string());
let entry_excluded_items = gui_data.entry_excluded_items.clone();
let entry_excluded_items = gui_data.upper_notebook.entry_excluded_items.clone();
for item in entry_excluded_items.get_text().split(',') {
if item.trim().is_empty() {
continue;
@ -79,7 +79,7 @@ pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) {
//// Allowed extensions
data_to_save.push("--allowed_extensions:".to_string());
let entry_allowed_extensions = gui_data.entry_allowed_extensions.clone();
let entry_allowed_extensions = gui_data.upper_notebook.entry_allowed_extensions.clone();
for extension in entry_allowed_extensions.get_text().split(',') {
if extension.trim().is_empty() {
continue;
@ -89,27 +89,27 @@ pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) {
//// Save at exit
data_to_save.push("--save_at_exit:".to_string());
let check_button_settings_save_at_exit = gui_data.check_button_settings_save_at_exit.clone();
let check_button_settings_save_at_exit = gui_data.upper_notebook.check_button_settings_save_at_exit.clone();
data_to_save.push(check_button_settings_save_at_exit.get_active().to_string());
//// Load at start
data_to_save.push("--load_at_start:".to_string());
let check_button_settings_load_at_start = gui_data.check_button_settings_load_at_start.clone();
let check_button_settings_load_at_start = gui_data.upper_notebook.check_button_settings_load_at_start.clone();
data_to_save.push(check_button_settings_load_at_start.get_active().to_string());
//// Confirm deletion of files
data_to_save.push("--confirm_deletion:".to_string());
let check_button_settings_confirm_deletion = gui_data.check_button_settings_confirm_deletion.clone();
let check_button_settings_confirm_deletion = gui_data.upper_notebook.check_button_settings_confirm_deletion.clone();
data_to_save.push(check_button_settings_confirm_deletion.get_active().to_string());
//// Show image previews in similar images
data_to_save.push("--show_previews:".to_string());
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.upper_notebook.check_button_settings_show_preview_similar_images.clone();
data_to_save.push(check_button_settings_show_preview_similar_images.get_active().to_string());
//// Show bottom text panel with errors
data_to_save.push("--bottom_text_panel:".to_string());
let check_button_settings_show_text_view = gui_data.check_button_settings_show_text_view.clone();
let check_button_settings_show_text_view = gui_data.upper_notebook.check_button_settings_show_text_view.clone();
data_to_save.push(check_button_settings_show_text_view.get_active().to_string());
}
@ -323,7 +323,7 @@ pub fn load_configuration(gui_data: &GuiData, manual_execution: bool) {
// Setting data
if manual_execution || loading_at_start {
//// Included Directories
let tree_view_included_directories = gui_data.tree_view_included_directories.clone();
let tree_view_included_directories = gui_data.upper_notebook.tree_view_included_directories.clone();
let list_store = get_list_store(&tree_view_included_directories);
list_store.clear();
@ -335,7 +335,7 @@ pub fn load_configuration(gui_data: &GuiData, manual_execution: bool) {
}
//// Exclude Directories
let tree_view_excluded_directories = gui_data.tree_view_excluded_directories.clone();
let tree_view_excluded_directories = gui_data.upper_notebook.tree_view_excluded_directories.clone();
let list_store = get_list_store(&tree_view_excluded_directories);
list_store.clear();
@ -347,27 +347,27 @@ pub fn load_configuration(gui_data: &GuiData, manual_execution: bool) {
}
//// Excluded Items
let entry_excluded_items = gui_data.entry_excluded_items.clone();
let entry_excluded_items = gui_data.upper_notebook.entry_excluded_items.clone();
entry_excluded_items.set_text(excluded_items.iter().map(|e| e.to_string() + ",").collect::<String>().as_str());
//// Allowed extensions
let entry_allowed_extensions = gui_data.entry_allowed_extensions.clone();
let entry_allowed_extensions = gui_data.upper_notebook.entry_allowed_extensions.clone();
entry_allowed_extensions.set_text(allowed_extensions.iter().map(|e| e.to_string() + ",").collect::<String>().as_str());
//// Buttons
gui_data.check_button_settings_load_at_start.set_active(loading_at_start);
gui_data.check_button_settings_save_at_exit.set_active(saving_at_exit);
gui_data.check_button_settings_confirm_deletion.set_active(confirm_deletion);
gui_data.check_button_settings_show_preview_similar_images.set_active(show_previews);
gui_data.upper_notebook.check_button_settings_load_at_start.set_active(loading_at_start);
gui_data.upper_notebook.check_button_settings_save_at_exit.set_active(saving_at_exit);
gui_data.upper_notebook.check_button_settings_confirm_deletion.set_active(confirm_deletion);
gui_data.upper_notebook.check_button_settings_show_preview_similar_images.set_active(show_previews);
gui_data.check_button_settings_show_text_view.set_active(bottom_text_panel);
gui_data.upper_notebook.check_button_settings_show_text_view.set_active(bottom_text_panel);
if !bottom_text_panel {
gui_data.text_view_errors.hide();
} else {
gui_data.text_view_errors.show();
}
} else {
gui_data.check_button_settings_load_at_start.set_active(false);
gui_data.upper_notebook.check_button_settings_load_at_start.set_active(false);
}
if manual_execution {
@ -387,7 +387,7 @@ pub fn reset_configuration(gui_data: &GuiData, manual_clearing: bool) {
// Resetting included directories
{
let col_indices = [0];
let tree_view_included_directories = gui_data.tree_view_included_directories.clone();
let tree_view_included_directories = gui_data.upper_notebook.tree_view_included_directories.clone();
let list_store = get_list_store(&tree_view_included_directories);
list_store.clear();
@ -412,7 +412,7 @@ pub fn reset_configuration(gui_data: &GuiData, manual_clearing: bool) {
// Resetting excluded directories
{
let col_indices = [0];
let tree_view_excluded_directories = gui_data.tree_view_excluded_directories.clone();
let tree_view_excluded_directories = gui_data.upper_notebook.tree_view_excluded_directories.clone();
let list_store = get_list_store(&tree_view_excluded_directories);
list_store.clear();
if cfg!(target_family = "unix") {
@ -424,7 +424,7 @@ pub fn reset_configuration(gui_data: &GuiData, manual_clearing: bool) {
}
// Resetting excluded items
{
let entry_excluded_items = gui_data.entry_excluded_items.clone();
let entry_excluded_items = gui_data.upper_notebook.entry_excluded_items.clone();
if cfg!(target_family = "unix") {
entry_excluded_items.set_text("*/.git/*,*/node_modules/*,*/lost+found/*,*/Trash/*,*/.Trash-*/*,*/snap/*,/home/*/.cache/*");
}
@ -434,17 +434,17 @@ pub fn reset_configuration(gui_data: &GuiData, manual_clearing: bool) {
}
// Resetting allowed extensions
{
let entry_allowed_extensions = gui_data.entry_allowed_extensions.clone();
let entry_allowed_extensions = gui_data.upper_notebook.entry_allowed_extensions.clone();
entry_allowed_extensions.set_text("");
}
// Set settings
{
gui_data.check_button_settings_save_at_exit.set_active(true);
gui_data.check_button_settings_load_at_start.set_active(true);
gui_data.check_button_settings_confirm_deletion.set_active(true);
gui_data.check_button_settings_show_preview_similar_images.set_active(true);
gui_data.check_button_settings_show_text_view.set_active(true);
gui_data.upper_notebook.check_button_settings_save_at_exit.set_active(true);
gui_data.upper_notebook.check_button_settings_load_at_start.set_active(true);
gui_data.upper_notebook.check_button_settings_confirm_deletion.set_active(true);
gui_data.upper_notebook.check_button_settings_show_preview_similar_images.set_active(true);
gui_data.upper_notebook.check_button_settings_show_text_view.set_active(true);
}
if manual_clearing {
add_text_to_text_view(&text_view_errors, "Current configuration was cleared.");