Split Gui code into multiple files (#194)
This commit is contained in:
parent
683e0f9117
commit
ff85453394
|
@ -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() {
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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 => {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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 |_| {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
|
|
39
czkawka_gui/src/gui_bottom_buttons.rs
Normal file
39
czkawka_gui/src/gui_bottom_buttons.rs
Normal 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: >k::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,
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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,
|
||||
}
|
||||
|
|
|
@ -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: >k::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,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
76
czkawka_gui/src/gui_popovers.rs
Normal file
76
czkawka_gui/src/gui_popovers.rs
Normal 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: >k::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,
|
||||
}
|
||||
}
|
||||
}
|
40
czkawka_gui/src/gui_progress_dialog.rs
Normal file
40
czkawka_gui/src/gui_progress_dialog.rs
Normal 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: >k::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,
|
||||
}
|
||||
}
|
||||
}
|
96
czkawka_gui/src/gui_upper_notepad.rs
Normal file
96
czkawka_gui/src/gui_upper_notepad.rs
Normal 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: >k::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,
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.");
|
||||
|
|
Loading…
Reference in a new issue