1
0
Fork 0
mirror of synced 2024-05-13 17:02:31 +12:00
czkawka/czkawka_gui/src/gui_structs/gui_settings.rs

263 lines
16 KiB
Rust
Raw Normal View History

2022-05-22 20:59:09 +12:00
use gtk4::prelude::*;
use gtk4::{Builder, Window};
2021-02-23 21:40:19 +13:00
use crate::flg;
2022-05-22 20:59:09 +12:00
use crate::help_functions::get_all_children;
2021-02-23 21:40:19 +13:00
#[derive(Clone)]
2021-03-28 01:14:02 +13:00
pub struct GuiSettings {
2022-06-01 03:52:55 +12:00
pub window_settings: Window,
2021-02-23 21:40:19 +13:00
2022-05-22 20:59:09 +12:00
pub notebook_settings: gtk4::Notebook,
2021-02-23 21:40:19 +13:00
// General
2022-05-22 20:59:09 +12:00
pub check_button_settings_save_at_exit: gtk4::CheckButton,
pub check_button_settings_load_at_start: gtk4::CheckButton,
pub check_button_settings_confirm_deletion: gtk4::CheckButton,
pub check_button_settings_confirm_link: gtk4::CheckButton,
pub check_button_settings_confirm_group_deletion: gtk4::CheckButton,
pub check_button_settings_show_text_view: gtk4::CheckButton,
pub check_button_settings_use_cache: gtk4::CheckButton,
pub check_button_settings_save_also_json: gtk4::CheckButton,
pub check_button_settings_use_trash: gtk4::CheckButton,
pub label_settings_general_language: gtk4::Label,
pub combo_box_settings_language: gtk4::ComboBoxText,
2021-02-23 21:40:19 +13:00
// Duplicates
2022-05-22 20:59:09 +12:00
pub check_button_settings_hide_hard_links: gtk4::CheckButton,
pub entry_settings_cache_file_minimal_size: gtk4::Entry,
pub entry_settings_prehash_cache_file_minimal_size: gtk4::Entry,
pub check_button_duplicates_use_prehash_cache: gtk4::CheckButton,
pub check_button_settings_show_preview_duplicates: gtk4::CheckButton,
pub check_button_settings_duplicates_delete_outdated_cache: gtk4::CheckButton,
pub button_settings_duplicates_clear_cache: gtk4::Button,
pub label_settings_duplicate_minimal_size_cache: gtk4::Label,
pub label_settings_duplicate_minimal_size_cache_prehash: gtk4::Label,
2021-02-23 21:40:19 +13:00
// Similar Images
2022-05-22 20:59:09 +12:00
pub check_button_settings_show_preview_similar_images: gtk4::CheckButton,
pub check_button_settings_similar_images_delete_outdated_cache: gtk4::CheckButton,
pub button_settings_similar_images_clear_cache: gtk4::Button,
// Similar Videos
2022-05-22 20:59:09 +12:00
pub check_button_settings_similar_videos_delete_outdated_cache: gtk4::CheckButton,
pub button_settings_similar_videos_clear_cache: gtk4::Button,
2021-02-23 21:40:19 +13:00
// Buttons
2022-05-22 20:59:09 +12:00
pub button_settings_save_configuration: gtk4::Button,
pub button_settings_load_configuration: gtk4::Button,
pub button_settings_reset_configuration: gtk4::Button,
2022-05-22 20:59:09 +12:00
pub button_settings_open_cache_folder: gtk4::Button,
pub button_settings_open_settings_folder: gtk4::Button,
2021-02-23 21:40:19 +13:00
}
2021-03-28 01:14:02 +13:00
impl GuiSettings {
pub fn create_from_builder(window_main: &Window) -> Self {
let glade_src = include_str!("../../ui/settings.ui").to_string();
2021-07-08 07:13:36 +12:00
let builder = Builder::from_string(glade_src.as_str());
2022-06-01 03:52:55 +12:00
let window_settings: Window = builder.object("window_settings").unwrap();
2022-05-22 20:59:09 +12:00
window_settings.set_title(Some(&flg!("window_settings_title")));
window_settings.set_modal(true);
window_settings.set_transient_for(Some(window_main));
2021-02-23 21:40:19 +13:00
2022-05-22 20:59:09 +12:00
let notebook_settings: gtk4::Notebook = builder.object("notebook_settings").unwrap();
2021-02-23 21:40:19 +13:00
// General
2022-05-22 20:59:09 +12:00
let check_button_settings_save_at_exit: gtk4::CheckButton = builder.object("check_button_settings_save_at_exit").unwrap();
let check_button_settings_load_at_start: gtk4::CheckButton = builder.object("check_button_settings_load_at_start").unwrap();
let check_button_settings_confirm_deletion: gtk4::CheckButton = builder.object("check_button_settings_confirm_deletion").unwrap();
let check_button_settings_confirm_link: gtk4::CheckButton = builder.object("check_button_settings_confirm_link").unwrap();
let check_button_settings_confirm_group_deletion: gtk4::CheckButton = builder.object("check_button_settings_confirm_group_deletion").unwrap();
let check_button_settings_show_text_view: gtk4::CheckButton = builder.object("check_button_settings_show_text_view").unwrap();
let check_button_settings_use_cache: gtk4::CheckButton = builder.object("check_button_settings_use_cache").unwrap();
let check_button_settings_save_also_json: gtk4::CheckButton = builder.object("check_button_settings_save_also_json").unwrap();
let check_button_settings_use_trash: gtk4::CheckButton = builder.object("check_button_settings_use_trash").unwrap();
let label_settings_general_language: gtk4::Label = builder.object("label_settings_general_language").unwrap();
let combo_box_settings_language: gtk4::ComboBoxText = builder.object("combo_box_settings_language").unwrap();
2021-02-23 21:40:19 +13:00
// Duplicates
2022-05-22 20:59:09 +12:00
let check_button_settings_hide_hard_links: gtk4::CheckButton = builder.object("check_button_settings_hide_hard_links").unwrap();
let entry_settings_cache_file_minimal_size: gtk4::Entry = builder.object("entry_settings_cache_file_minimal_size").unwrap();
let check_button_settings_show_preview_duplicates: gtk4::CheckButton = builder.object("check_button_settings_show_preview_duplicates").unwrap();
let check_button_settings_duplicates_delete_outdated_cache: gtk4::CheckButton = builder.object("check_button_settings_duplicates_delete_outdated_cache").unwrap();
let button_settings_duplicates_clear_cache: gtk4::Button = builder.object("button_settings_duplicates_clear_cache").unwrap();
let check_button_duplicates_use_prehash_cache: gtk4::CheckButton = builder.object("check_button_duplicates_use_prehash_cache").unwrap();
let entry_settings_prehash_cache_file_minimal_size: gtk4::Entry = builder.object("entry_settings_prehash_cache_file_minimal_size").unwrap();
let label_settings_duplicate_minimal_size_cache: gtk4::Label = builder.object("label_settings_duplicate_minimal_size_cache").unwrap();
let label_settings_duplicate_minimal_size_cache_prehash: gtk4::Label = builder.object("label_settings_duplicate_minimal_size_cache_prehash").unwrap();
2021-02-23 21:40:19 +13:00
// Similar Images
2022-05-22 20:59:09 +12:00
let check_button_settings_show_preview_similar_images: gtk4::CheckButton = builder.object("check_button_settings_show_preview_similar_images").unwrap();
let check_button_settings_similar_images_delete_outdated_cache: gtk4::CheckButton = builder.object("check_button_settings_similar_images_delete_outdated_cache").unwrap();
let button_settings_similar_images_clear_cache: gtk4::Button = builder.object("button_settings_similar_images_clear_cache").unwrap();
// Similar Videos
2022-05-22 20:59:09 +12:00
let check_button_settings_similar_videos_delete_outdated_cache: gtk4::CheckButton = builder.object("check_button_settings_similar_videos_delete_outdated_cache").unwrap();
let button_settings_similar_videos_clear_cache: gtk4::Button = builder.object("button_settings_similar_videos_clear_cache").unwrap();
2021-02-23 21:40:19 +13:00
// Saving/Loading/Resetting configuration
2022-05-22 20:59:09 +12:00
let button_settings_save_configuration: gtk4::Button = builder.object("button_settings_save_configuration").unwrap();
let button_settings_load_configuration: gtk4::Button = builder.object("button_settings_load_configuration").unwrap();
let button_settings_reset_configuration: gtk4::Button = builder.object("button_settings_reset_configuration").unwrap();
2021-02-23 21:40:19 +13:00
2022-05-22 20:59:09 +12:00
let button_settings_open_cache_folder: gtk4::Button = builder.object("button_settings_open_cache_folder").unwrap();
let button_settings_open_settings_folder: gtk4::Button = builder.object("button_settings_open_settings_folder").unwrap();
2021-02-23 21:40:19 +13:00
Self {
window_settings,
notebook_settings,
2021-02-23 21:40:19 +13:00
check_button_settings_save_at_exit,
check_button_settings_load_at_start,
check_button_settings_confirm_deletion,
check_button_settings_confirm_link,
check_button_settings_confirm_group_deletion,
2021-02-23 21:40:19 +13:00
check_button_settings_show_text_view,
2021-03-28 01:14:02 +13:00
check_button_settings_use_cache,
check_button_settings_save_also_json,
2021-03-28 01:14:02 +13:00
check_button_settings_use_trash,
label_settings_general_language,
combo_box_settings_language,
2021-03-28 01:14:02 +13:00
check_button_settings_hide_hard_links,
entry_settings_cache_file_minimal_size,
2021-12-02 08:09:04 +13:00
entry_settings_prehash_cache_file_minimal_size,
check_button_duplicates_use_prehash_cache,
check_button_settings_show_preview_duplicates,
check_button_settings_duplicates_delete_outdated_cache,
button_settings_duplicates_clear_cache,
label_settings_duplicate_minimal_size_cache,
label_settings_duplicate_minimal_size_cache_prehash,
2021-03-28 01:14:02 +13:00
check_button_settings_show_preview_similar_images,
check_button_settings_similar_images_delete_outdated_cache,
button_settings_similar_images_clear_cache,
check_button_settings_similar_videos_delete_outdated_cache,
button_settings_similar_videos_clear_cache,
2021-02-23 21:40:19 +13:00
button_settings_save_configuration,
button_settings_load_configuration,
button_settings_reset_configuration,
button_settings_open_cache_folder,
button_settings_open_settings_folder,
2021-02-23 21:40:19 +13:00
}
}
pub fn update_language(&self) {
2022-05-22 20:59:09 +12:00
self.window_settings.set_title(Some(&flg!("window_settings_title")));
self.check_button_settings_save_at_exit.set_label(Some(&flg!("settings_save_at_exit_button")));
self.check_button_settings_load_at_start.set_label(Some(&flg!("settings_load_at_start_button")));
self.check_button_settings_confirm_deletion.set_label(Some(&flg!("settings_confirm_deletion_button")));
self.check_button_settings_confirm_link.set_label(Some(&flg!("settings_confirm_link_button")));
self.check_button_settings_confirm_group_deletion
.set_label(Some(&flg!("settings_confirm_group_deletion_button")));
self.check_button_settings_show_text_view.set_label(Some(&flg!("settings_show_text_view_button")));
self.check_button_settings_use_cache.set_label(Some(&flg!("settings_use_cache_button")));
self.check_button_settings_save_also_json.set_label(Some(&flg!("settings_save_also_as_json_button")));
self.check_button_settings_use_trash.set_label(Some(&flg!("settings_use_trash_button")));
self.label_settings_general_language.set_label(&flg!("settings_language_label"));
self.check_button_settings_save_at_exit
.set_tooltip_text(Some(&flg!("settings_save_at_exit_button_tooltip")));
self.check_button_settings_load_at_start
.set_tooltip_text(Some(&flg!("settings_load_at_start_button_tooltip")));
self.check_button_settings_confirm_deletion
.set_tooltip_text(Some(&flg!("settings_confirm_deletion_button_tooltip")));
self.check_button_settings_confirm_link
.set_tooltip_text(Some(&flg!("settings_confirm_link_button_tooltip")));
self.check_button_settings_confirm_group_deletion
.set_tooltip_text(Some(&flg!("settings_confirm_group_deletion_button_tooltip")));
self.check_button_settings_show_text_view
.set_tooltip_text(Some(&flg!("settings_show_text_view_button_tooltip")));
self.check_button_settings_save_also_json
.set_tooltip_text(Some(&flg!("settings_save_also_as_json_button_tooltip")));
self.check_button_settings_use_cache.set_tooltip_text(Some(&flg!("settings_use_cache_button_tooltip")));
self.check_button_settings_use_trash.set_tooltip_text(Some(&flg!("settings_use_trash_button_tooltip")));
self.label_settings_general_language.set_tooltip_text(Some(&flg!("settings_language_label_tooltip")));
2022-05-22 20:59:09 +12:00
self.check_button_settings_hide_hard_links
.set_label(Some(&flg!("settings_duplicates_hide_hard_link_button")));
self.check_button_settings_show_preview_duplicates
2022-05-22 20:59:09 +12:00
.set_label(Some(&flg!("settings_multiple_image_preview_checkbutton")));
self.check_button_settings_duplicates_delete_outdated_cache
2022-05-22 20:59:09 +12:00
.set_label(Some(&flg!("settings_multiple_delete_outdated_cache_checkbutton")));
self.button_settings_duplicates_clear_cache.set_label(&flg!("settings_multiple_clear_cache_button"));
2022-05-22 20:59:09 +12:00
self.check_button_duplicates_use_prehash_cache
.set_label(Some(&flg!("settings_duplicates_prehash_checkbutton")));
self.label_settings_duplicate_minimal_size_cache
.set_label(&flg!("settings_duplicates_minimal_size_cache_label"));
self.label_settings_duplicate_minimal_size_cache_prehash
.set_label(&flg!("settings_duplicates_minimal_size_cache_prehash_label"));
self.check_button_settings_hide_hard_links
.set_tooltip_text(Some(&flg!("settings_duplicates_hide_hard_link_button_tooltip")));
self.entry_settings_cache_file_minimal_size
.set_tooltip_text(Some(&flg!("settings_duplicates_minimal_size_entry_tooltip")));
self.check_button_settings_show_preview_duplicates
.set_tooltip_text(Some(&flg!("settings_multiple_image_preview_checkbutton_tooltip")));
self.check_button_settings_duplicates_delete_outdated_cache
.set_tooltip_text(Some(&flg!("settings_multiple_delete_outdated_cache_checkbutton_tooltip")));
self.button_settings_duplicates_clear_cache
.set_tooltip_text(Some(&flg!("settings_multiple_clear_cache_button_tooltip")));
self.check_button_duplicates_use_prehash_cache
.set_tooltip_text(Some(&flg!("settings_duplicates_prehash_checkbutton_tooltip")));
self.entry_settings_prehash_cache_file_minimal_size
.set_tooltip_text(Some(&flg!("settings_duplicates_prehash_minimal_entry_tooltip")));
self.check_button_settings_show_preview_similar_images
2022-05-22 20:59:09 +12:00
.set_label(Some(&flg!("settings_multiple_image_preview_checkbutton")));
self.check_button_settings_similar_images_delete_outdated_cache
2022-05-22 20:59:09 +12:00
.set_label(Some(&flg!("settings_multiple_delete_outdated_cache_checkbutton")));
self.button_settings_similar_images_clear_cache.set_label(&flg!("settings_multiple_clear_cache_button"));
self.check_button_settings_show_preview_similar_images
.set_tooltip_text(Some(&flg!("settings_multiple_image_preview_checkbutton_tooltip")));
self.check_button_settings_similar_images_delete_outdated_cache
.set_tooltip_text(Some(&flg!("settings_multiple_delete_outdated_cache_checkbutton_tooltip")));
self.button_settings_similar_images_clear_cache
.set_tooltip_text(Some(&flg!("settings_multiple_clear_cache_button_tooltip")));
self.check_button_settings_similar_videos_delete_outdated_cache
2022-05-22 20:59:09 +12:00
.set_label(Some(&flg!("settings_multiple_delete_outdated_cache_checkbutton")));
self.button_settings_similar_videos_clear_cache.set_label(&flg!("settings_multiple_clear_cache_button"));
self.check_button_settings_similar_videos_delete_outdated_cache
.set_tooltip_text(Some(&flg!("settings_multiple_delete_outdated_cache_checkbutton_tooltip")));
self.button_settings_similar_videos_clear_cache
.set_tooltip_text(Some(&flg!("settings_multiple_clear_cache_button_tooltip")));
self.button_settings_save_configuration.set_label(&flg!("settings_saving_button"));
self.button_settings_load_configuration.set_label(&flg!("settings_loading_button"));
self.button_settings_reset_configuration.set_label(&flg!("settings_reset_button"));
self.button_settings_save_configuration.set_tooltip_text(Some(&flg!("settings_saving_button_tooltip")));
self.button_settings_load_configuration.set_tooltip_text(Some(&flg!("settings_loading_button_tooltip")));
self.button_settings_reset_configuration.set_tooltip_text(Some(&flg!("settings_reset_button_tooltip")));
self.button_settings_open_cache_folder.set_label(&flg!("settings_folder_cache_open"));
self.button_settings_open_settings_folder.set_label(&flg!("settings_folder_settings_open"));
self.button_settings_open_cache_folder.set_tooltip_text(Some(&flg!("settings_folder_cache_open_tooltip")));
self.button_settings_open_settings_folder
.set_tooltip_text(Some(&flg!("settings_folder_settings_open_tooltip")));
2022-05-22 20:59:09 +12:00
let vec_children: Vec<gtk4::Widget> = get_all_children(&self.notebook_settings);
let vec_children: Vec<gtk4::Widget> = get_all_children(&vec_children[1]);
// Change name of main notebook tabs
let names: [String; 4] = [
flg!("settings_notebook_general"),
flg!("settings_notebook_duplicates"),
flg!("settings_notebook_images"),
flg!("settings_notebook_videos"),
];
for (index, fl_thing) in names.iter().enumerate() {
self.notebook_settings
.tab_label(&vec_children[index])
.unwrap()
2022-05-22 20:59:09 +12:00
.downcast::<gtk4::Label>()
.unwrap()
.set_text(fl_thing);
}
}
2021-02-23 21:40:19 +13:00
}