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-11-28 08:49:20 +13:00
use crate ::notebook_enums ::NUMBER_OF_NOTEBOOK_MAIN_TABS ;
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-11-29 23:38:38 +13:00
pub evk_tree_view_duplicate_finder : gtk ::EventControllerKey , // TODO, in GTK4 this can be changed to e.g. add_widget - https://discourse.gnome.org/t/how-to-convert-code-to-use-eventcontrollerkey/8198/2
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-01-11 08:12:08 +13:00
pub entry_similar_images_minimal_size : gtk ::Entry ,
2021-08-07 09:23:11 +12:00
pub entry_similar_images_maximal_size : gtk ::Entry ,
2021-11-23 23:10:24 +13:00
pub entry_similar_videos_minimal_size : gtk ::Entry ,
pub entry_similar_videos_maximal_size : gtk ::Entry ,
2021-01-11 08:12:08 +13:00
pub entry_duplicate_minimal_size : gtk ::Entry ,
2021-08-07 09:23:11 +12:00
pub entry_duplicate_maximal_size : gtk ::Entry ,
2021-01-11 08:12:08 +13:00
pub entry_same_music_minimal_size : gtk ::Entry ,
2021-08-07 09:23:11 +12:00
pub entry_same_music_maximal_size : gtk ::Entry ,
pub entry_big_files_number : gtk ::Entry ,
2021-01-11 08:12:08 +13:00
//// 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 ,
2021-11-23 23:10:24 +13:00
pub scale_similarity_similar_images : gtk ::Scale ,
pub scale_similarity_similar_videos : gtk ::Scale ,
2021-01-11 08:12:08 +13:00
2021-02-04 07:59:06 +13:00
pub radio_button_hash_type_blake3 : gtk ::RadioButton ,
pub radio_button_hash_type_crc32 : gtk ::RadioButton ,
pub radio_button_hash_type_xxh3 : gtk ::RadioButton ,
2021-11-19 18:35:26 +13:00
pub radio_button_resize_algorithm_lanczos3 : gtk ::RadioButton ,
pub radio_button_resize_algorithm_nearest : gtk ::RadioButton ,
pub radio_button_resize_algorithm_triangle : gtk ::RadioButton ,
pub radio_button_resize_algorithm_gaussian : gtk ::RadioButton ,
pub radio_button_resize_algorithm_catmullrom : gtk ::RadioButton ,
pub radio_button_similar_hash_algorithm_gradient : gtk ::RadioButton ,
pub radio_button_similar_hash_algorithm_blockhash : gtk ::RadioButton ,
pub radio_button_similar_hash_algorithm_mean : gtk ::RadioButton ,
pub radio_button_similar_hash_algorithm_vertgradient : gtk ::RadioButton ,
pub radio_button_similar_hash_algorithm_doublegradient : gtk ::RadioButton ,
pub radio_button_similar_hash_size_4 : gtk ::RadioButton ,
pub radio_button_similar_hash_size_8 : gtk ::RadioButton ,
pub radio_button_similar_hash_size_16 : gtk ::RadioButton ,
2021-01-11 08:12:08 +13:00
pub image_preview_similar_images : gtk ::Image ,
2021-08-07 20:38:10 +12:00
pub image_preview_duplicates : gtk ::Image ,
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-06-26 04:07:13 +12:00
let entry_similar_images_minimal_size : gtk ::Entry = builder . object ( " entry_similar_images_minimal_size " ) . unwrap ( ) ;
2021-08-07 09:23:11 +12:00
let entry_similar_images_maximal_size : gtk ::Entry = builder . object ( " entry_similar_images_maximal_size " ) . unwrap ( ) ;
2021-11-23 23:10:24 +13:00
let entry_similar_videos_minimal_size : gtk ::Entry = builder . object ( " entry_similar_videos_minimal_size " ) . unwrap ( ) ;
let entry_similar_videos_maximal_size : gtk ::Entry = builder . object ( " entry_similar_videos_maximal_size " ) . unwrap ( ) ;
2021-06-26 04:07:13 +12:00
let entry_duplicate_minimal_size : gtk ::Entry = builder . object ( " entry_duplicate_minimal_size " ) . unwrap ( ) ;
2021-08-07 09:23:11 +12:00
let entry_duplicate_maximal_size : gtk ::Entry = builder . object ( " entry_duplicate_maximal_size " ) . unwrap ( ) ;
2021-06-26 04:07:13 +12:00
let entry_same_music_minimal_size : gtk ::Entry = builder . object ( " entry_same_music_minimal_size " ) . unwrap ( ) ;
2021-08-07 09:23:11 +12:00
let entry_same_music_maximal_size : gtk ::Entry = builder . object ( " entry_same_music_maximal_size " ) . unwrap ( ) ;
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-01-11 08:12:08 +13:00
//// Radio Buttons
2021-06-26 04:07:13 +12:00
let radio_button_duplicates_name : gtk ::RadioButton = builder . object ( " radio_button_duplicates_name " ) . unwrap ( ) ;
let radio_button_duplicates_size : gtk ::RadioButton = builder . object ( " radio_button_duplicates_size " ) . unwrap ( ) ;
let radio_button_duplicates_hashmb : gtk ::RadioButton = builder . object ( " radio_button_duplicates_hashmb " ) . unwrap ( ) ;
let radio_button_duplicates_hash : gtk ::RadioButton = builder . object ( " radio_button_duplicates_hash " ) . unwrap ( ) ;
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
let radio_button_hash_type_blake3 : gtk ::RadioButton = builder . object ( " radio_button_hash_type_blake3 " ) . unwrap ( ) ;
let radio_button_hash_type_crc32 : gtk ::RadioButton = builder . object ( " radio_button_hash_type_crc32 " ) . unwrap ( ) ;
let radio_button_hash_type_xxh3 : gtk ::RadioButton = builder . object ( " radio_button_hash_type_xxh3 " ) . unwrap ( ) ;
2021-11-19 18:35:26 +13:00
let radio_button_resize_algorithm_lanczos3 : gtk ::RadioButton = builder . object ( " radio_button_resize_algorithm_lanczos3 " ) . unwrap ( ) ;
let radio_button_resize_algorithm_nearest : gtk ::RadioButton = builder . object ( " radio_button_resize_algorithm_nearest " ) . unwrap ( ) ;
let radio_button_resize_algorithm_triangle : gtk ::RadioButton = builder . object ( " radio_button_resize_algorithm_triangle " ) . unwrap ( ) ;
let radio_button_resize_algorithm_gaussian : gtk ::RadioButton = builder . object ( " radio_button_resize_algorithm_gaussian " ) . unwrap ( ) ;
let radio_button_resize_algorithm_catmullrom : gtk ::RadioButton = builder . object ( " radio_button_resize_algorithm_catmullrom " ) . unwrap ( ) ;
let radio_button_similar_hash_algorithm_gradient : gtk ::RadioButton = builder . object ( " radio_button_similar_hash_algorithm_gradient " ) . unwrap ( ) ;
let radio_button_similar_hash_algorithm_blockhash : gtk ::RadioButton = builder . object ( " radio_button_similar_hash_algorithm_blockhash " ) . unwrap ( ) ;
let radio_button_similar_hash_algorithm_mean : gtk ::RadioButton = builder . object ( " radio_button_similar_hash_algorithm_mean " ) . unwrap ( ) ;
let radio_button_similar_hash_algorithm_vertgradient : gtk ::RadioButton = builder . object ( " radio_button_similar_hash_algorithm_vertgradient " ) . unwrap ( ) ;
let radio_button_similar_hash_algorithm_doublegradient : gtk ::RadioButton = builder . object ( " radio_button_similar_hash_algorithm_doublegradient " ) . unwrap ( ) ;
let radio_button_similar_hash_size_4 : gtk ::RadioButton = builder . object ( " radio_button_similar_hash_size_4 " ) . unwrap ( ) ;
let radio_button_similar_hash_size_8 : gtk ::RadioButton = builder . object ( " radio_button_similar_hash_size_8 " ) . unwrap ( ) ;
let radio_button_similar_hash_size_16 : gtk ::RadioButton = builder . object ( " radio_button_similar_hash_size_16 " ) . 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_similar_images_minimal_size ,
2021-08-07 09:23:11 +12:00
entry_similar_images_maximal_size ,
2021-11-23 23:10:24 +13:00
entry_similar_videos_minimal_size ,
entry_similar_videos_maximal_size ,
2021-01-11 08:12:08 +13:00
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 ,
2021-11-23 23:10:24 +13:00
scale_similarity_similar_images ,
scale_similarity_similar_videos ,
2021-02-04 07:59:06 +13:00
radio_button_hash_type_blake3 ,
radio_button_hash_type_crc32 ,
radio_button_hash_type_xxh3 ,
2021-11-19 18:35:26 +13:00
radio_button_resize_algorithm_lanczos3 ,
radio_button_resize_algorithm_nearest ,
radio_button_resize_algorithm_triangle ,
radio_button_resize_algorithm_gaussian ,
radio_button_resize_algorithm_catmullrom ,
radio_button_similar_hash_algorithm_gradient ,
radio_button_similar_hash_algorithm_blockhash ,
radio_button_similar_hash_algorithm_mean ,
radio_button_similar_hash_algorithm_vertgradient ,
radio_button_similar_hash_algorithm_doublegradient ,
radio_button_similar_hash_size_4 ,
radio_button_similar_hash_size_8 ,
radio_button_similar_hash_size_16 ,
2021-01-11 08:12:08 +13:00
image_preview_similar_images ,
2021-08-07 09:23:11 +12:00
entry_duplicate_maximal_size ,
entry_same_music_maximal_size ,
2021-08-07 20:38:10 +12:00
image_preview_duplicates ,
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-01-11 01:45:05 +13:00
}