2022-01-02 09:07:20 +13:00
use czkawka_core ::common_dir_traversal ::CheckingMethod ;
2021-01-11 01:45:05 +13:00
use gtk ::prelude ::* ;
2021-11-29 23:38:38 +13:00
use gtk ::{ EventControllerKey , TreeView } ;
2021-01-11 01:45:05 +13:00
2021-12-20 02:45:10 +13:00
use czkawka_core ::similar_images ::{ get_string_from_similarity , Similarity , SIMILAR_VALUES } ;
2021-12-24 21:18:55 +13:00
use crate ::help_combo_box ::{ DUPLICATES_CHECK_METHOD_COMBO_BOX , IMAGES_HASH_SIZE_COMBO_BOX } ;
2021-12-12 04:16:14 +13:00
use crate ::notebook_enums ::{ NotebookMainEnum , NUMBER_OF_NOTEBOOK_MAIN_TABS } ;
2022-01-14 03:58:33 +13:00
use czkawka_core ::fl ;
2021-11-28 08:49:20 +13:00
2021-01-11 01:45:05 +13:00
#[ derive(Clone) ]
2021-03-28 01:14:02 +13:00
pub struct GuiMainNotebook {
2021-01-11 08:12:08 +13:00
pub notebook_main : gtk ::Notebook ,
2021-01-11 01:45:05 +13:00
pub scrolled_window_duplicate_finder : gtk ::ScrolledWindow ,
pub scrolled_window_empty_folder_finder : gtk ::ScrolledWindow ,
pub scrolled_window_empty_files_finder : gtk ::ScrolledWindow ,
pub scrolled_window_temporary_files_finder : gtk ::ScrolledWindow ,
pub scrolled_window_big_files_finder : gtk ::ScrolledWindow ,
pub scrolled_window_similar_images_finder : gtk ::ScrolledWindow ,
2021-11-23 23:10:24 +13:00
pub scrolled_window_similar_videos_finder : gtk ::ScrolledWindow ,
2021-01-11 01:45:05 +13:00
pub scrolled_window_same_music_finder : gtk ::ScrolledWindow ,
pub scrolled_window_invalid_symlinks : gtk ::ScrolledWindow ,
2021-01-13 08:06:12 +13:00
pub scrolled_window_broken_files : gtk ::ScrolledWindow ,
2021-01-11 01:45:05 +13:00
pub tree_view_duplicate_finder : gtk ::TreeView ,
pub tree_view_empty_folder_finder : gtk ::TreeView ,
pub tree_view_empty_files_finder : gtk ::TreeView ,
pub tree_view_temporary_files_finder : gtk ::TreeView ,
pub tree_view_big_files_finder : gtk ::TreeView ,
pub tree_view_similar_images_finder : gtk ::TreeView ,
2021-11-23 23:10:24 +13:00
pub tree_view_similar_videos_finder : gtk ::TreeView ,
2021-01-11 01:45:05 +13:00
pub tree_view_same_music_finder : gtk ::TreeView ,
pub tree_view_invalid_symlinks : gtk ::TreeView ,
2021-01-13 08:06:12 +13:00
pub tree_view_broken_files : gtk ::TreeView ,
2021-01-11 08:12:08 +13:00
2021-12-14 07:13:53 +13:00
// TODO, in GTK4 this can be changed to e.g. add_controller which is not 100% compatible with this - https://discourse.gnome.org/t/how-to-convert-code-to-use-eventcontrollerkey/8198/2
pub evk_tree_view_duplicate_finder : gtk ::EventControllerKey ,
2021-11-29 23:38:38 +13:00
pub evk_tree_view_empty_folder_finder : gtk ::EventControllerKey ,
pub evk_tree_view_empty_files_finder : gtk ::EventControllerKey ,
pub evk_tree_view_temporary_files_finder : gtk ::EventControllerKey ,
pub evk_tree_view_big_files_finder : gtk ::EventControllerKey ,
pub evk_tree_view_similar_images_finder : gtk ::EventControllerKey ,
pub evk_tree_view_similar_videos_finder : gtk ::EventControllerKey ,
pub evk_tree_view_same_music_finder : gtk ::EventControllerKey ,
pub evk_tree_view_invalid_symlinks : gtk ::EventControllerKey ,
pub evk_tree_view_broken_files : gtk ::EventControllerKey ,
2021-12-18 07:44:29 +13:00
// pub gc_tree_view_duplicate_finder: gtk4::GestureClick,
// pub gc_tree_view_empty_folder_finder: gtk::GestureClick,
// pub gc_tree_view_empty_files_finder: gtk::GestureClick,
// pub gc_tree_view_temporary_files_finder: gtk::GestureClick,
// pub gc_tree_view_big_files_finder: gtk::GestureClick,
// pub gc_tree_view_similar_images_finder: gtk::GestureClick,
// pub gc_tree_view_similar_videos_finder: gtk::GestureClick,
// pub gc_tree_view_same_music_finder: gtk::GestureClick,
// pub gc_tree_view_invalid_symlinks: gtk::GestureClick,
// pub gc_tree_view_broken_files: gtk::GestureClick,
2021-12-14 07:13:53 +13:00
// General
2021-08-07 09:23:11 +12:00
2021-12-14 07:13:53 +13:00
// Duplicate
pub combo_box_duplicate_check_method : gtk ::ComboBoxText ,
pub combo_box_duplicate_hash_type : gtk ::ComboBoxText ,
pub label_duplicate_check_method : gtk ::Label ,
pub label_duplicate_hash_type : gtk ::Label ,
2021-01-11 08:12:08 +13:00
2021-12-14 07:13:53 +13:00
pub image_preview_duplicates : gtk ::Image ,
2021-01-11 08:12:08 +13:00
2021-12-14 07:13:53 +13:00
// Big file
pub label_big_shown_files : gtk ::Label ,
pub entry_big_files_number : gtk ::Entry ,
2021-01-11 08:12:08 +13:00
2021-12-14 07:13:53 +13:00
// Similar Images
2021-11-23 23:10:24 +13:00
pub scale_similarity_similar_images : gtk ::Scale ,
2021-11-19 18:35:26 +13:00
2021-12-14 07:13:53 +13:00
pub label_image_resize_algorithm : gtk ::Label ,
pub label_image_hash_type : gtk ::Label ,
pub label_image_hash_size : gtk ::Label ,
2021-11-19 18:35:26 +13:00
2021-12-14 07:13:53 +13:00
pub combo_box_image_resize_algorithm : gtk ::ComboBoxText ,
pub combo_box_image_hash_algorithm : gtk ::ComboBoxText ,
pub combo_box_image_hash_size : gtk ::ComboBoxText ,
2021-12-03 03:33:06 +13:00
2021-12-09 11:08:05 +13:00
pub check_button_image_ignore_same_size : gtk ::CheckButton ,
2021-12-14 07:13:53 +13:00
pub check_button_video_ignore_same_size : gtk ::CheckButton ,
2021-12-09 11:08:05 +13:00
2021-12-29 09:20:48 +13:00
pub check_button_image_fast_compare : gtk ::CheckButton ,
2021-12-12 04:16:14 +13:00
pub label_image_similarity : gtk ::Label ,
pub label_image_similarity_max : gtk ::Label ,
2021-12-14 07:13:53 +13:00
pub image_preview_similar_images : gtk ::Image ,
pub label_similar_images_minimal_similarity : gtk ::Label ,
// Video
2021-12-12 04:16:14 +13:00
pub label_video_similarity : gtk ::Label ,
pub label_video_similarity_min : gtk ::Label ,
pub label_video_similarity_max : gtk ::Label ,
2021-12-14 07:13:53 +13:00
pub scale_similarity_similar_videos : gtk ::Scale ,
// Music
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 ,
pub check_button_music_approximate_comparison : gtk ::CheckButton ,
2021-01-11 01:45:05 +13:00
}
2021-03-28 01:14:02 +13:00
impl GuiMainNotebook {
2021-01-11 01:45:05 +13:00
pub fn create_from_builder ( builder : & gtk ::Builder ) -> Self {
2021-06-26 04:07:13 +12:00
let notebook_main : gtk ::Notebook = builder . object ( " notebook_main " ) . unwrap ( ) ;
let scrolled_window_duplicate_finder : gtk ::ScrolledWindow = builder . object ( " scrolled_window_duplicate_finder " ) . unwrap ( ) ;
let scrolled_window_empty_folder_finder : gtk ::ScrolledWindow = builder . object ( " scrolled_window_empty_folder_finder " ) . unwrap ( ) ;
let scrolled_window_empty_files_finder : gtk ::ScrolledWindow = builder . object ( " scrolled_window_empty_files_finder " ) . unwrap ( ) ;
let scrolled_window_temporary_files_finder : gtk ::ScrolledWindow = builder . object ( " scrolled_window_temporary_files_finder " ) . unwrap ( ) ;
let scrolled_window_big_files_finder : gtk ::ScrolledWindow = builder . object ( " scrolled_window_big_files_finder " ) . unwrap ( ) ;
let scrolled_window_similar_images_finder : gtk ::ScrolledWindow = builder . object ( " scrolled_window_similar_images_finder " ) . unwrap ( ) ;
2021-11-23 23:10:24 +13:00
let scrolled_window_similar_videos_finder : gtk ::ScrolledWindow = builder . object ( " scrolled_window_similar_videos_finder " ) . unwrap ( ) ;
2021-06-26 04:07:13 +12:00
let scrolled_window_same_music_finder : gtk ::ScrolledWindow = builder . object ( " scrolled_window_same_music_finder " ) . unwrap ( ) ;
let scrolled_window_invalid_symlinks : gtk ::ScrolledWindow = builder . object ( " scrolled_window_invalid_symlinks " ) . unwrap ( ) ;
let scrolled_window_broken_files : gtk ::ScrolledWindow = builder . object ( " scrolled_window_broken_files " ) . unwrap ( ) ;
2021-01-11 01:45:05 +13:00
let tree_view_duplicate_finder : gtk ::TreeView = TreeView ::new ( ) ;
2021-11-29 23:38:38 +13:00
tree_view_duplicate_finder . set_widget_name ( " PIERD " ) ;
2021-01-11 01:45:05 +13:00
let tree_view_empty_folder_finder : gtk ::TreeView = TreeView ::new ( ) ;
let tree_view_empty_files_finder : gtk ::TreeView = TreeView ::new ( ) ;
let tree_view_temporary_files_finder : gtk ::TreeView = TreeView ::new ( ) ;
let tree_view_big_files_finder : gtk ::TreeView = TreeView ::new ( ) ;
let tree_view_similar_images_finder : gtk ::TreeView = TreeView ::new ( ) ;
2021-11-23 23:10:24 +13:00
let tree_view_similar_videos_finder : gtk ::TreeView = TreeView ::new ( ) ;
2021-01-11 01:45:05 +13:00
let tree_view_same_music_finder : gtk ::TreeView = TreeView ::new ( ) ;
let tree_view_invalid_symlinks : gtk ::TreeView = TreeView ::new ( ) ;
2021-01-13 08:06:12 +13:00
let tree_view_broken_files : gtk ::TreeView = TreeView ::new ( ) ;
2021-01-11 01:45:05 +13:00
2021-11-29 23:38:38 +13:00
let evk_tree_view_duplicate_finder : gtk ::EventControllerKey = EventControllerKey ::new ( & tree_view_duplicate_finder ) ;
let evk_tree_view_empty_folder_finder : gtk ::EventControllerKey = EventControllerKey ::new ( & tree_view_empty_folder_finder ) ;
let evk_tree_view_empty_files_finder : gtk ::EventControllerKey = EventControllerKey ::new ( & tree_view_empty_files_finder ) ;
let evk_tree_view_temporary_files_finder : gtk ::EventControllerKey = EventControllerKey ::new ( & tree_view_temporary_files_finder ) ;
let evk_tree_view_big_files_finder : gtk ::EventControllerKey = EventControllerKey ::new ( & tree_view_big_files_finder ) ;
let evk_tree_view_similar_images_finder : gtk ::EventControllerKey = EventControllerKey ::new ( & tree_view_similar_images_finder ) ;
let evk_tree_view_similar_videos_finder : gtk ::EventControllerKey = EventControllerKey ::new ( & tree_view_similar_videos_finder ) ;
let evk_tree_view_same_music_finder : gtk ::EventControllerKey = EventControllerKey ::new ( & tree_view_same_music_finder ) ;
let evk_tree_view_invalid_symlinks : gtk ::EventControllerKey = EventControllerKey ::new ( & tree_view_invalid_symlinks ) ;
let evk_tree_view_broken_files : gtk ::EventControllerKey = EventControllerKey ::new ( & tree_view_broken_files ) ;
2021-12-01 23:09:47 +13:00
// TODO GTK 4
// let evk_tree_view_duplicate_finder: gtk4::EventControllerKey = EventControllerKey::new();
// tree_view_duplicate_finder.add_controller(&evk_tree_view_duplicate_finder);
// let evk_tree_view_empty_folder_finder: gtk4::EventControllerKey = EventControllerKey::new();
// tree_view_empty_folder_finder.add_controller(&evk_tree_view_empty_folder_finder);
// let evk_tree_view_empty_files_finder: gtk4::EventControllerKey = EventControllerKey::new();
// tree_view_empty_files_finder.add_controller(&evk_tree_view_empty_files_finder);
// let evk_tree_view_temporary_files_finder: gtk4::EventControllerKey = EventControllerKey::new();
// tree_view_temporary_files_finder.add_controller(&evk_tree_view_temporary_files_finder);
// let evk_tree_view_big_files_finder: gtk4::EventControllerKey = EventControllerKey::new();
// tree_view_big_files_finder.add_controller(&evk_tree_view_big_files_finder);
// let evk_tree_view_similar_images_finder: gtk4::EventControllerKey = EventControllerKey::new();
// tree_view_similar_images_finder.add_controller(&evk_tree_view_similar_images_finder);
// let evk_tree_view_similar_videos_finder: gtk4::EventControllerKey = EventControllerKey::new();
// tree_view_similar_videos_finder.add_controller(&evk_tree_view_similar_videos_finder);
// let evk_tree_view_same_music_finder: gtk4::EventControllerKey = EventControllerKey::new();
// tree_view_same_music_finder.add_controller(&evk_tree_view_same_music_finder);
// let evk_tree_view_invalid_symlinks: gtk4::EventControllerKey = EventControllerKey::new();
// tree_view_invalid_symlinks.add_controller(&evk_tree_view_invalid_symlinks);
// let evk_tree_view_broken_files: gtk4::EventControllerKey = EventControllerKey::new();
// tree_view_broken_files.add_controller(&evk_tree_view_broken_files);
2021-12-18 07:44:29 +13:00
// let gc_tree_view_duplicate_finder: gtk4::GestureClick = GestureClick::new();
// tree_view_duplicate_finder.add_controller(&gc_tree_view_duplicate_finder);
// let gc_tree_view_empty_folder_finder: gtk4::GestureClick = GestureClick::new();
// tree_view_empty_folder_finder.add_controller(&gc_tree_view_empty_folder_finder);
// let gc_tree_view_empty_files_finder: gtk4::GestureClick = GestureClick::new();
// tree_view_empty_files_finder.add_controller(&gc_tree_view_empty_files_finder);
// let gc_tree_view_temporary_files_finder: gtk4::GestureClick = GestureClick::new();
// tree_view_temporary_files_finder.add_controller(&gc_tree_view_temporary_files_finder);
// let gc_tree_view_big_files_finder: gtk4::GestureClick = GestureClick::new();
// tree_view_big_files_finder.add_controller(&gc_tree_view_big_files_finder);
// let gc_tree_view_similar_images_finder: gtk4::GestureClick = GestureClick::new();
// tree_view_similar_images_finder.add_controller(&gc_tree_view_similar_images_finder);
// let gc_tree_view_similar_videos_finder: gtk4::GestureClick = GestureClick::new();
// tree_view_similar_videos_finder.add_controller(&gc_tree_view_similar_videos_finder);
// let gc_tree_view_same_music_finder: gtk4::GestureClick = GestureClick::new();
// tree_view_same_music_finder.add_controller(&gc_tree_view_same_music_finder);
// let gc_tree_view_invalid_symlinks: gtk4::GestureClick = GestureClick::new();
// tree_view_invalid_symlinks.add_controller(&gc_tree_view_invalid_symlinks);
// let gc_tree_view_broken_files: gtk4::GestureClick = GestureClick::new();
// tree_view_broken_files.add_controller(&gc_tree_view_broken_files);
2021-12-14 07:13:53 +13:00
let combo_box_duplicate_check_method : gtk ::ComboBoxText = builder . object ( " combo_box_duplicate_check_method " ) . unwrap ( ) ;
let combo_box_duplicate_hash_type : gtk ::ComboBoxText = builder . object ( " combo_box_duplicate_hash_type " ) . unwrap ( ) ;
2021-08-07 09:23:11 +12:00
let entry_big_files_number : gtk ::Entry = builder . object ( " entry_big_files_number " ) . unwrap ( ) ;
2021-01-11 08:12:08 +13:00
//// Check Buttons
2021-06-26 04:07:13 +12:00
let check_button_music_title : gtk ::CheckButton = builder . object ( " check_button_music_title " ) . unwrap ( ) ;
let check_button_music_artist : gtk ::CheckButton = builder . object ( " check_button_music_artist " ) . unwrap ( ) ;
let check_button_music_album_title : gtk ::CheckButton = builder . object ( " check_button_music_album_title " ) . unwrap ( ) ;
let check_button_music_album_artist : gtk ::CheckButton = builder . object ( " check_button_music_album_artist " ) . unwrap ( ) ;
let check_button_music_year : gtk ::CheckButton = builder . object ( " check_button_music_year " ) . unwrap ( ) ;
2021-12-04 21:29:29 +13:00
let check_button_music_approximate_comparison : gtk ::CheckButton = builder . object ( " check_button_music_approximate_comparison " ) . unwrap ( ) ;
2021-01-11 08:12:08 +13:00
//// Radio Buttons
2021-06-26 04:07:13 +12:00
2021-11-23 23:10:24 +13:00
let scale_similarity_similar_images : gtk ::Scale = builder . object ( " scale_similarity_similar_images " ) . unwrap ( ) ;
let scale_similarity_similar_videos : gtk ::Scale = builder . object ( " scale_similarity_similar_videos " ) . unwrap ( ) ;
2021-06-26 04:07:13 +12:00
2021-12-29 09:20:48 +13:00
let check_button_image_fast_compare : gtk ::CheckButton = builder . object ( " check_button_image_fast_compare " ) . unwrap ( ) ;
2021-12-14 07:13:53 +13:00
let combo_box_image_resize_algorithm : gtk ::ComboBoxText = builder . object ( " combo_box_image_resize_algorithm " ) . unwrap ( ) ;
let combo_box_image_hash_algorithm : gtk ::ComboBoxText = builder . object ( " combo_box_image_hash_algorithm " ) . unwrap ( ) ;
let combo_box_image_hash_size : gtk ::ComboBoxText = builder . object ( " combo_box_image_hash_size " ) . unwrap ( ) ;
2021-12-03 03:33:06 +13:00
2021-12-09 11:08:05 +13:00
let check_button_image_ignore_same_size : gtk ::CheckButton = builder . object ( " check_button_image_ignore_same_size " ) . unwrap ( ) ;
2021-12-14 07:13:53 +13:00
let check_button_video_ignore_same_size : gtk ::CheckButton = builder . object ( " check_button_video_ignore_same_size " ) . unwrap ( ) ;
2021-12-09 11:08:05 +13:00
2021-12-03 03:33:06 +13:00
let label_similar_images_minimal_similarity : gtk ::Label = builder . object ( " label_similar_images_minimal_similarity " ) . unwrap ( ) ;
2021-11-19 18:35:26 +13:00
2021-12-12 04:16:14 +13:00
let label_duplicate_check_method : gtk ::Label = builder . object ( " label_duplicate_check_method " ) . unwrap ( ) ;
let label_duplicate_hash_type : gtk ::Label = builder . object ( " label_duplicate_hash_type " ) . unwrap ( ) ;
let label_big_shown_files : gtk ::Label = builder . object ( " label_big_shown_files " ) . unwrap ( ) ;
let label_image_resize_algorithm : gtk ::Label = builder . object ( " label_image_resize_algorithm " ) . unwrap ( ) ;
let label_image_hash_type : gtk ::Label = builder . object ( " label_image_hash_type " ) . unwrap ( ) ;
let label_image_hash_size : gtk ::Label = builder . object ( " label_image_hash_size " ) . unwrap ( ) ;
let label_image_similarity : gtk ::Label = builder . object ( " label_image_similarity " ) . unwrap ( ) ;
let label_image_similarity_max : gtk ::Label = builder . object ( " label_image_similarity_max " ) . unwrap ( ) ;
let label_video_similarity : gtk ::Label = builder . object ( " label_video_similarity " ) . unwrap ( ) ;
let label_video_similarity_min : gtk ::Label = builder . object ( " label_video_similarity_min " ) . unwrap ( ) ;
let label_video_similarity_max : gtk ::Label = builder . object ( " label_video_similarity_max " ) . unwrap ( ) ;
2021-06-26 04:07:13 +12:00
let image_preview_similar_images : gtk ::Image = builder . object ( " image_preview_similar_images " ) . unwrap ( ) ;
2021-08-07 20:38:10 +12:00
let image_preview_duplicates : gtk ::Image = builder . object ( " image_preview_duplicates " ) . unwrap ( ) ;
2021-01-11 08:12:08 +13:00
2021-01-11 01:45:05 +13:00
Self {
2021-01-11 08:12:08 +13:00
notebook_main ,
2021-01-11 01:45:05 +13:00
scrolled_window_duplicate_finder ,
scrolled_window_empty_folder_finder ,
scrolled_window_empty_files_finder ,
scrolled_window_temporary_files_finder ,
scrolled_window_big_files_finder ,
scrolled_window_similar_images_finder ,
2021-11-23 23:10:24 +13:00
scrolled_window_similar_videos_finder ,
2021-01-11 01:45:05 +13:00
scrolled_window_same_music_finder ,
scrolled_window_invalid_symlinks ,
2021-01-13 08:06:12 +13:00
scrolled_window_broken_files ,
2021-01-11 01:45:05 +13:00
tree_view_duplicate_finder ,
tree_view_empty_folder_finder ,
tree_view_empty_files_finder ,
tree_view_temporary_files_finder ,
tree_view_big_files_finder ,
tree_view_similar_images_finder ,
2021-11-23 23:10:24 +13:00
tree_view_similar_videos_finder ,
2021-01-11 01:45:05 +13:00
tree_view_same_music_finder ,
tree_view_invalid_symlinks ,
2021-01-13 08:06:12 +13:00
tree_view_broken_files ,
2021-11-29 23:38:38 +13:00
evk_tree_view_duplicate_finder ,
evk_tree_view_empty_folder_finder ,
evk_tree_view_empty_files_finder ,
evk_tree_view_temporary_files_finder ,
evk_tree_view_big_files_finder ,
evk_tree_view_similar_images_finder ,
evk_tree_view_similar_videos_finder ,
evk_tree_view_same_music_finder ,
evk_tree_view_invalid_symlinks ,
evk_tree_view_broken_files ,
2021-01-11 08:12:08 +13:00
entry_big_files_number ,
check_button_music_title ,
check_button_music_artist ,
check_button_music_album_title ,
check_button_music_album_artist ,
check_button_music_year ,
2021-12-04 21:29:29 +13:00
check_button_music_approximate_comparison ,
2021-11-23 23:10:24 +13:00
scale_similarity_similar_images ,
scale_similarity_similar_videos ,
2021-12-09 11:08:05 +13:00
check_button_image_ignore_same_size ,
2021-12-03 03:33:06 +13:00
label_similar_images_minimal_similarity ,
2021-12-12 04:16:14 +13:00
label_duplicate_check_method ,
label_duplicate_hash_type ,
2021-12-14 07:13:53 +13:00
combo_box_duplicate_check_method ,
2021-12-12 04:16:14 +13:00
label_big_shown_files ,
label_image_resize_algorithm ,
label_image_hash_type ,
label_image_hash_size ,
2021-12-14 07:13:53 +13:00
combo_box_image_resize_algorithm ,
combo_box_image_hash_algorithm ,
2021-12-12 04:16:14 +13:00
label_image_similarity ,
label_image_similarity_max ,
label_video_similarity ,
label_video_similarity_min ,
label_video_similarity_max ,
2021-01-11 08:12:08 +13:00
image_preview_similar_images ,
2021-08-07 20:38:10 +12:00
image_preview_duplicates ,
2021-12-14 07:13:53 +13:00
combo_box_duplicate_hash_type ,
combo_box_image_hash_size ,
check_button_video_ignore_same_size ,
2021-12-29 09:20:48 +13:00
check_button_image_fast_compare ,
2021-01-11 01:45:05 +13:00
}
}
2021-11-25 20:36:49 +13:00
pub fn get_main_tree_views ( & self ) -> [ TreeView ; NUMBER_OF_NOTEBOOK_MAIN_TABS ] {
[
self . tree_view_duplicate_finder . clone ( ) ,
self . tree_view_empty_folder_finder . clone ( ) ,
self . tree_view_big_files_finder . clone ( ) ,
self . tree_view_empty_files_finder . clone ( ) ,
self . tree_view_temporary_files_finder . clone ( ) ,
self . tree_view_similar_images_finder . clone ( ) ,
self . tree_view_similar_videos_finder . clone ( ) ,
self . tree_view_same_music_finder . clone ( ) ,
self . tree_view_invalid_symlinks . clone ( ) ,
self . tree_view_broken_files . clone ( ) ,
]
}
2021-12-12 04:16:14 +13:00
pub fn update_language ( & self ) {
self . check_button_music_title . set_label ( & fl! ( " music_title_checkbox " ) ) ;
self . check_button_music_artist . set_label ( & fl! ( " music_artist_checkbox " ) ) ;
self . check_button_music_album_title . set_label ( & fl! ( " music_album_title_checkbox " ) ) ;
self . check_button_music_album_artist . set_label ( & fl! ( " music_album_artist_checkbox " ) ) ;
self . check_button_music_year . set_label ( & fl! ( " music_year_checkbox " ) ) ;
self . check_button_music_approximate_comparison . set_label ( & fl! ( " music_comparison_checkbox " ) ) ;
2021-12-22 06:44:20 +13:00
self . check_button_music_approximate_comparison
. set_tooltip_text ( Some ( & fl! ( " music_comparison_checkbox_tooltip " ) ) ) ;
2021-12-12 04:16:14 +13:00
self . label_duplicate_check_method . set_label ( & fl! ( " main_label_check_method " ) ) ;
self . label_duplicate_hash_type . set_label ( & fl! ( " main_label_hash_type " ) ) ;
self . label_big_shown_files . set_label ( & fl! ( " main_label_shown_files " ) ) ;
self . label_image_resize_algorithm . set_label ( & fl! ( " main_label_resize_algorithm " ) ) ;
self . label_image_hash_type . set_label ( & fl! ( " main_label_hash_type " ) ) ;
self . label_image_hash_size . set_label ( & fl! ( " main_label_hash_size " ) ) ;
self . label_image_similarity . set_label ( & fl! ( " main_label_similarity " ) ) ;
self . label_image_similarity_max . set_label ( & fl! ( " core_similarity_very_high " ) ) ;
self . label_video_similarity . set_label ( & fl! ( " main_label_similarity " ) ) ;
self . label_video_similarity_min . set_label ( & fl! ( " core_similarity_minimal " ) ) ;
self . label_video_similarity_max . set_label ( & fl! ( " core_similarity_very_high " ) ) ;
2021-12-14 07:13:53 +13:00
self . label_duplicate_check_method . set_tooltip_text ( Some ( & fl! ( " duplicate_check_method_tooltip " ) ) ) ;
self . combo_box_duplicate_check_method . set_tooltip_text ( Some ( & fl! ( " duplicate_check_method_tooltip " ) ) ) ;
self . label_duplicate_hash_type . set_tooltip_text ( Some ( & fl! ( " duplicate_hash_type_tooltip " ) ) ) ;
self . combo_box_duplicate_hash_type . set_tooltip_text ( Some ( & fl! ( " duplicate_hash_type_tooltip " ) ) ) ;
self . combo_box_image_hash_size . set_tooltip_text ( Some ( & fl! ( " image_hash_size_tooltip " ) ) ) ;
self . label_image_hash_size . set_tooltip_text ( Some ( & fl! ( " image_hash_size_tooltip " ) ) ) ;
self . combo_box_image_resize_algorithm . set_tooltip_text ( Some ( & fl! ( " image_resize_filter_tooltip " ) ) ) ;
self . label_image_resize_algorithm . set_tooltip_text ( Some ( & fl! ( " image_resize_filter_tooltip " ) ) ) ;
self . combo_box_image_hash_algorithm . set_tooltip_text ( Some ( & fl! ( " image_hash_alg_tooltip " ) ) ) ;
self . label_image_hash_type . set_tooltip_text ( Some ( & fl! ( " image_hash_alg_tooltip " ) ) ) ;
2021-12-22 06:44:20 +13:00
self . check_button_image_ignore_same_size
. set_tooltip_text ( Some ( & fl! ( " check_button_general_same_size_tooltip " ) ) ) ;
self . check_button_video_ignore_same_size
. set_tooltip_text ( Some ( & fl! ( " check_button_general_same_size_tooltip " ) ) ) ;
2021-12-14 07:13:53 +13:00
self . check_button_image_ignore_same_size . set_label ( & fl! ( " check_button_general_same_size " ) ) ;
self . check_button_video_ignore_same_size . set_label ( & fl! ( " check_button_general_same_size " ) ) ;
2021-12-29 09:20:48 +13:00
self . check_button_image_fast_compare . set_label ( & fl! ( " main_notebook_image_fast_compare " ) ) ;
self . check_button_image_fast_compare
. set_tooltip_text ( Some ( & fl! ( " main_notebook_image_fast_compare_tooltip " ) ) ) ;
2021-12-14 07:13:53 +13:00
{
let hash_size_index = self . combo_box_image_hash_size . active ( ) . unwrap ( ) as usize ;
let hash_size = IMAGES_HASH_SIZE_COMBO_BOX [ hash_size_index ] ;
match hash_size {
8 = > {
2021-12-22 06:44:20 +13:00
self . label_similar_images_minimal_similarity
. set_text ( & get_string_from_similarity ( & Similarity ::Similar ( SIMILAR_VALUES [ 0 ] [ 5 ] ) , 8 ) ) ;
2021-12-14 07:13:53 +13:00
}
16 = > {
2021-12-22 06:44:20 +13:00
self . label_similar_images_minimal_similarity
. set_text ( & get_string_from_similarity ( & Similarity ::Similar ( SIMILAR_VALUES [ 1 ] [ 5 ] ) , 16 ) ) ;
2021-12-14 07:13:53 +13:00
}
32 = > {
2021-12-22 06:44:20 +13:00
self . label_similar_images_minimal_similarity
. set_text ( & get_string_from_similarity ( & Similarity ::Similar ( SIMILAR_VALUES [ 2 ] [ 5 ] ) , 32 ) ) ;
2021-12-14 07:13:53 +13:00
}
64 = > {
2021-12-22 06:44:20 +13:00
self . label_similar_images_minimal_similarity
. set_text ( & get_string_from_similarity ( & Similarity ::Similar ( SIMILAR_VALUES [ 3 ] [ 5 ] ) , 64 ) ) ;
2021-12-14 07:13:53 +13:00
}
_ = > panic! ( ) ,
}
}
2021-12-12 04:16:14 +13:00
let vec_children : Vec < gtk ::Widget > = self . notebook_main . children ( ) ;
2021-12-18 07:44:29 +13:00
// let vec_children: Vec<gtk::Widget> = get_all_children(&self.notebook_main);
// let vec_children: Vec<gtk::Widget> = get_all_children(&vec_children[1]);
// Change name of main notebook tabs
2021-12-12 04:16:14 +13:00
for ( main_enum , fl_thing ) in [
( NotebookMainEnum ::Duplicate as usize , fl! ( " main_notebook_duplicates " ) ) ,
( NotebookMainEnum ::EmptyDirectories as usize , fl! ( " main_notebook_empty_directories " ) ) ,
( NotebookMainEnum ::BigFiles as usize , fl! ( " main_notebook_big_files " ) ) ,
( NotebookMainEnum ::EmptyFiles as usize , fl! ( " main_notebook_empty_files " ) ) ,
( NotebookMainEnum ::Temporary as usize , fl! ( " main_notebook_temporary " ) ) ,
( NotebookMainEnum ::SimilarImages as usize , fl! ( " main_notebook_similar_images " ) ) ,
( NotebookMainEnum ::SimilarVideos as usize , fl! ( " main_notebook_similar_videos " ) ) ,
( NotebookMainEnum ::SameMusic as usize , fl! ( " main_notebook_same_music " ) ) ,
( NotebookMainEnum ::Symlinks as usize , fl! ( " main_notebook_symlinks " ) ) ,
( NotebookMainEnum ::BrokenFiles as usize , fl! ( " main_notebook_broken_files " ) ) ,
] {
2021-12-22 06:44:20 +13:00
self . notebook_main
. tab_label ( & vec_children [ main_enum ] )
. unwrap ( )
. downcast ::< gtk ::Label > ( )
. unwrap ( )
. set_text ( & fl_thing ) ;
2021-12-12 04:16:14 +13:00
}
// Change names of columns
let names_of_columns = [
2021-12-22 06:44:20 +13:00
vec! [
2021-12-24 21:18:55 +13:00
fl! ( " main_tree_view_column_size " ) ,
2021-12-22 06:44:20 +13:00
fl! ( " main_tree_view_column_file_name " ) ,
fl! ( " main_tree_view_column_path " ) ,
fl! ( " main_tree_view_column_modification " ) ,
] , // Duplicates
vec! [
fl! ( " main_tree_view_column_folder_name " ) ,
fl! ( " main_tree_view_column_path " ) ,
fl! ( " main_tree_view_column_modification " ) ,
] , // Empty Folders
2021-12-12 04:16:14 +13:00
vec! [
fl! ( " main_tree_view_column_size " ) ,
fl! ( " main_tree_view_column_file_name " ) ,
fl! ( " main_tree_view_column_path " ) ,
fl! ( " main_tree_view_column_modification " ) ,
] , // Big files
2021-12-22 06:44:20 +13:00
vec! [
fl! ( " main_tree_view_column_file_name " ) ,
fl! ( " main_tree_view_column_path " ) ,
fl! ( " main_tree_view_column_modification " ) ,
] , // Empty files
vec! [
fl! ( " main_tree_view_column_file_name " ) ,
fl! ( " main_tree_view_column_path " ) ,
fl! ( " main_tree_view_column_modification " ) ,
] , // Temporary Files
2021-12-12 04:16:14 +13:00
vec! [
fl! ( " main_tree_view_column_similarity " ) ,
fl! ( " main_tree_view_column_size " ) ,
fl! ( " main_tree_view_column_dimensions " ) ,
fl! ( " main_tree_view_column_file_name " ) ,
fl! ( " main_tree_view_column_path " ) ,
fl! ( " main_tree_view_column_modification " ) ,
] , // Similar Images
vec! [
fl! ( " main_tree_view_column_size " ) ,
fl! ( " main_tree_view_column_file_name " ) ,
fl! ( " main_tree_view_column_path " ) ,
fl! ( " main_tree_view_column_modification " ) ,
] , // Similar Videos
vec! [
fl! ( " main_tree_view_column_size " ) ,
fl! ( " main_tree_view_column_file_name " ) ,
fl! ( " main_tree_view_column_path " ) ,
fl! ( " main_tree_view_column_title " ) ,
fl! ( " main_tree_view_column_artist " ) ,
fl! ( " main_tree_view_column_year " ) ,
fl! ( " main_tree_view_column_album_title " ) ,
fl! ( " main_tree_view_column_album_artist " ) ,
fl! ( " main_tree_view_column_modification " ) ,
] , // Music Dupliactes
vec! [
fl! ( " main_tree_view_column_symlink_file_name " ) ,
fl! ( " main_tree_view_column_symlink_folder " ) ,
fl! ( " main_tree_view_column_destination_path " ) ,
fl! ( " main_tree_view_column_type_of_error " ) ,
fl! ( " main_tree_view_column_modification " ) ,
] , // Invalid Symlinks
vec! [
fl! ( " main_tree_view_column_file_name " ) ,
fl! ( " main_tree_view_column_path " ) ,
fl! ( " main_tree_view_column_type_of_error " ) ,
fl! ( " main_tree_view_column_modification " ) ,
] , // Broken Files
] ;
for ( notebook_index , tree_view ) in self . get_main_tree_views ( ) . iter ( ) . enumerate ( ) {
for ( column_index , column ) in tree_view . columns ( ) . iter ( ) . enumerate ( ) {
if column_index = = 0 {
continue ; // Selection button
}
column . set_title ( & names_of_columns [ notebook_index ] [ column_index - 1 ] ) ;
}
}
2021-12-24 21:18:55 +13:00
{
let active = self . combo_box_duplicate_check_method . active ( ) . unwrap_or ( 0 ) ;
self . combo_box_duplicate_check_method . remove_all ( ) ;
for i in & DUPLICATES_CHECK_METHOD_COMBO_BOX {
let text = match i . check_method {
CheckingMethod ::Hash = > fl! ( " duplicate_mode_hash_combo_box " ) ,
CheckingMethod ::Size = > fl! ( " duplicate_mode_size_combo_box " ) ,
CheckingMethod ::Name = > fl! ( " duplicate_mode_name_combo_box " ) ,
_ = > {
panic! ( )
}
} ;
self . combo_box_duplicate_check_method . append_text ( & text ) ;
}
self . combo_box_duplicate_check_method . set_active ( Some ( active ) ) ;
}
2021-12-12 04:16:14 +13:00
}
2021-01-11 01:45:05 +13:00
}