2022-05-22 20:59:09 +12:00
|
|
|
use gtk4::prelude::*;
|
|
|
|
use gtk4::{EventControllerKey, GestureClick, TreeView};
|
2021-12-20 02:45:10 +13:00
|
|
|
|
2022-07-20 05:09:52 +12:00
|
|
|
use crate::help_functions::{get_all_direct_children, get_custom_label_from_widget, set_icon_of_button};
|
2021-12-12 04:16:14 +13:00
|
|
|
use crate::notebook_enums::NotebookUpperEnum;
|
2022-04-04 02:03:01 +12:00
|
|
|
use crate::{flg, CZK_ICON_ADD, CZK_ICON_DELETE, CZK_ICON_MANUAL_ADD};
|
2021-12-12 04:16:14 +13:00
|
|
|
|
|
|
|
#[derive(Clone)]
|
|
|
|
pub struct GuiUpperNotebook {
|
2022-05-22 20:59:09 +12:00
|
|
|
pub notebook_upper: gtk4::Notebook,
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
pub scrolled_window_included_directories: gtk4::ScrolledWindow,
|
|
|
|
pub scrolled_window_excluded_directories: gtk4::ScrolledWindow,
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-06-01 03:52:55 +12:00
|
|
|
pub tree_view_included_directories: TreeView,
|
|
|
|
pub tree_view_excluded_directories: TreeView,
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-06-01 03:52:55 +12:00
|
|
|
pub evk_tree_view_included_directories: EventControllerKey,
|
|
|
|
pub evk_tree_view_excluded_directories: EventControllerKey,
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-06-01 03:52:55 +12:00
|
|
|
pub gc_tree_view_included_directories: GestureClick,
|
|
|
|
pub gc_tree_view_excluded_directories: GestureClick,
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
pub entry_excluded_items: gtk4::Entry,
|
|
|
|
pub entry_allowed_extensions: gtk4::Entry,
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
pub check_button_recursive: gtk4::CheckButton,
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
pub buttons_manual_add_included_directory: gtk4::Button,
|
|
|
|
pub buttons_add_included_directory: gtk4::Button,
|
|
|
|
pub buttons_remove_included_directory: gtk4::Button,
|
|
|
|
pub buttons_manual_add_excluded_directory: gtk4::Button,
|
|
|
|
pub buttons_add_excluded_directory: gtk4::Button,
|
|
|
|
pub buttons_remove_excluded_directory: gtk4::Button,
|
2021-12-14 07:13:53 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
pub label_excluded_items: gtk4::Label,
|
|
|
|
pub label_allowed_extensions: gtk4::Label,
|
|
|
|
|
|
|
|
pub entry_general_minimal_size: gtk4::Entry,
|
|
|
|
pub entry_general_maximal_size: gtk4::Entry,
|
|
|
|
pub label_general_size_bytes: gtk4::Label,
|
|
|
|
pub label_general_min_size: gtk4::Label,
|
|
|
|
pub label_general_max_size: gtk4::Label,
|
2021-12-12 04:16:14 +13:00
|
|
|
}
|
|
|
|
|
|
|
|
impl GuiUpperNotebook {
|
2022-05-22 20:59:09 +12:00
|
|
|
pub fn create_from_builder(builder: >k4::Builder) -> Self {
|
|
|
|
let notebook_upper: gtk4::Notebook = builder.object("notebook_upper").unwrap();
|
|
|
|
|
|
|
|
let scrolled_window_included_directories: gtk4::ScrolledWindow = builder.object("scrolled_window_included_directories").unwrap();
|
|
|
|
let scrolled_window_excluded_directories: gtk4::ScrolledWindow = builder.object("scrolled_window_excluded_directories").unwrap();
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-06-01 03:52:55 +12:00
|
|
|
let tree_view_included_directories: TreeView = TreeView::new();
|
|
|
|
let tree_view_excluded_directories: TreeView = TreeView::new();
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-06-01 03:52:55 +12:00
|
|
|
let evk_tree_view_included_directories: EventControllerKey = EventControllerKey::new();
|
2022-05-22 20:59:09 +12:00
|
|
|
tree_view_included_directories.add_controller(&evk_tree_view_included_directories);
|
2022-06-01 03:52:55 +12:00
|
|
|
let evk_tree_view_excluded_directories: EventControllerKey = EventControllerKey::new();
|
2022-05-22 20:59:09 +12:00
|
|
|
tree_view_excluded_directories.add_controller(&evk_tree_view_excluded_directories);
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-06-01 03:52:55 +12:00
|
|
|
let gc_tree_view_included_directories: GestureClick = GestureClick::new();
|
2022-05-22 20:59:09 +12:00
|
|
|
tree_view_included_directories.add_controller(&gc_tree_view_included_directories);
|
2022-06-01 03:52:55 +12:00
|
|
|
let gc_tree_view_excluded_directories: GestureClick = GestureClick::new();
|
2022-05-22 20:59:09 +12:00
|
|
|
tree_view_excluded_directories.add_controller(&gc_tree_view_excluded_directories);
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
let entry_allowed_extensions: gtk4::Entry = builder.object("entry_allowed_extensions").unwrap();
|
|
|
|
let entry_excluded_items: gtk4::Entry = builder.object("entry_excluded_items").unwrap();
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
let check_button_recursive: gtk4::CheckButton = builder.object("check_button_recursive").unwrap();
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
let buttons_manual_add_included_directory: gtk4::Button = builder.object("buttons_manual_add_included_directory").unwrap();
|
|
|
|
let buttons_add_included_directory: gtk4::Button = builder.object("buttons_add_included_directory").unwrap();
|
|
|
|
let buttons_remove_included_directory: gtk4::Button = builder.object("buttons_remove_included_directory").unwrap();
|
|
|
|
let buttons_manual_add_excluded_directory: gtk4::Button = builder.object("buttons_manual_add_excluded_directory").unwrap();
|
|
|
|
let buttons_add_excluded_directory: gtk4::Button = builder.object("buttons_add_excluded_directory").unwrap();
|
|
|
|
let buttons_remove_excluded_directory: gtk4::Button = builder.object("buttons_remove_excluded_directory").unwrap();
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
let label_excluded_items: gtk4::Label = builder.object("label_excluded_items").unwrap();
|
|
|
|
let label_allowed_extensions: gtk4::Label = builder.object("label_allowed_extensions").unwrap();
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
let entry_general_minimal_size: gtk4::Entry = builder.object("entry_general_minimal_size").unwrap();
|
|
|
|
let entry_general_maximal_size: gtk4::Entry = builder.object("entry_general_maximal_size").unwrap();
|
|
|
|
let label_general_size_bytes: gtk4::Label = builder.object("label_general_size_bytes").unwrap();
|
|
|
|
let label_general_min_size: gtk4::Label = builder.object("label_general_min_size").unwrap();
|
|
|
|
let label_general_max_size: gtk4::Label = builder.object("label_general_max_size").unwrap();
|
2021-12-14 07:13:53 +13:00
|
|
|
|
2022-04-04 02:03:01 +12:00
|
|
|
set_icon_of_button(&buttons_add_included_directory, CZK_ICON_ADD);
|
|
|
|
set_icon_of_button(&buttons_manual_add_included_directory, CZK_ICON_MANUAL_ADD);
|
|
|
|
set_icon_of_button(&buttons_remove_included_directory, CZK_ICON_DELETE);
|
|
|
|
set_icon_of_button(&buttons_add_excluded_directory, CZK_ICON_ADD);
|
|
|
|
set_icon_of_button(&buttons_manual_add_excluded_directory, CZK_ICON_MANUAL_ADD);
|
|
|
|
set_icon_of_button(&buttons_remove_excluded_directory, CZK_ICON_DELETE);
|
|
|
|
|
2021-12-12 04:16:14 +13:00
|
|
|
Self {
|
|
|
|
notebook_upper,
|
|
|
|
scrolled_window_included_directories,
|
|
|
|
scrolled_window_excluded_directories,
|
|
|
|
tree_view_included_directories,
|
|
|
|
tree_view_excluded_directories,
|
|
|
|
evk_tree_view_included_directories,
|
|
|
|
evk_tree_view_excluded_directories,
|
2022-05-22 20:59:09 +12:00
|
|
|
gc_tree_view_included_directories,
|
|
|
|
gc_tree_view_excluded_directories,
|
2021-12-12 04:16:14 +13:00
|
|
|
entry_excluded_items,
|
|
|
|
entry_allowed_extensions,
|
|
|
|
check_button_recursive,
|
|
|
|
buttons_manual_add_included_directory,
|
|
|
|
buttons_add_included_directory,
|
|
|
|
buttons_remove_included_directory,
|
|
|
|
buttons_manual_add_excluded_directory,
|
|
|
|
buttons_add_excluded_directory,
|
|
|
|
buttons_remove_excluded_directory,
|
|
|
|
label_excluded_items,
|
|
|
|
label_allowed_extensions,
|
2021-12-14 07:13:53 +13:00
|
|
|
entry_general_minimal_size,
|
|
|
|
entry_general_maximal_size,
|
|
|
|
label_general_size_bytes,
|
|
|
|
label_general_min_size,
|
|
|
|
label_general_max_size,
|
2021-12-12 04:16:14 +13:00
|
|
|
}
|
|
|
|
}
|
|
|
|
pub fn update_language(&self) {
|
2022-05-22 20:59:09 +12:00
|
|
|
self.check_button_recursive.set_label(Some(&flg!("upper_recursive_button")));
|
2022-01-20 10:35:07 +13:00
|
|
|
self.check_button_recursive.set_tooltip_text(Some(&flg!("upper_recursive_button_tooltip")));
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
get_custom_label_from_widget(&self.buttons_manual_add_included_directory.clone()).set_text(&flg!("upper_manual_add_included_button"));
|
|
|
|
get_custom_label_from_widget(&self.buttons_add_included_directory.clone()).set_text(&flg!("upper_add_included_button"));
|
|
|
|
get_custom_label_from_widget(&self.buttons_remove_included_directory.clone()).set_text(&flg!("upper_remove_included_button"));
|
|
|
|
get_custom_label_from_widget(&self.buttons_manual_add_excluded_directory.clone()).set_text(&flg!("upper_manual_add_excluded_button"));
|
|
|
|
get_custom_label_from_widget(&self.buttons_add_excluded_directory.clone()).set_text(&flg!("upper_add_excluded_button"));
|
|
|
|
get_custom_label_from_widget(&self.buttons_remove_excluded_directory.clone()).set_text(&flg!("upper_remove_excluded_button"));
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2021-12-22 06:44:20 +13:00
|
|
|
self.buttons_manual_add_included_directory
|
2022-01-20 10:35:07 +13:00
|
|
|
.set_tooltip_text(Some(&flg!("upper_manual_add_included_button_tooltip")));
|
|
|
|
self.buttons_add_included_directory.set_tooltip_text(Some(&flg!("upper_add_included_button_tooltip")));
|
|
|
|
self.buttons_remove_included_directory.set_tooltip_text(Some(&flg!("upper_remove_included_button_tooltip")));
|
2021-12-22 06:44:20 +13:00
|
|
|
self.buttons_manual_add_excluded_directory
|
2022-01-20 10:35:07 +13:00
|
|
|
.set_tooltip_text(Some(&flg!("upper_manual_add_excluded_button_tooltip")));
|
|
|
|
self.buttons_add_excluded_directory.set_tooltip_text(Some(&flg!("upper_add_excluded_button_tooltip")));
|
|
|
|
self.buttons_remove_excluded_directory.set_tooltip_text(Some(&flg!("upper_remove_excluded_button_tooltip")));
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-01-20 10:35:07 +13:00
|
|
|
self.label_allowed_extensions.set_tooltip_text(Some(&flg!("upper_allowed_extensions_tooltip")));
|
|
|
|
self.entry_allowed_extensions.set_tooltip_text(Some(&flg!("upper_allowed_extensions_tooltip")));
|
|
|
|
self.label_excluded_items.set_tooltip_text(Some(&flg!("upper_excluded_items_tooltip")));
|
|
|
|
self.entry_excluded_items.set_tooltip_text(Some(&flg!("upper_excluded_items_tooltip")));
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-01-20 10:35:07 +13:00
|
|
|
self.label_excluded_items.set_label(&flg!("upper_excluded_items"));
|
|
|
|
self.label_allowed_extensions.set_label(&flg!("upper_allowed_extensions"));
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-01-20 10:35:07 +13:00
|
|
|
self.label_general_size_bytes.set_label(&flg!("main_label_size_bytes"));
|
|
|
|
self.label_general_min_size.set_label(&flg!("main_label_min_size"));
|
|
|
|
self.label_general_max_size.set_label(&flg!("main_label_max_size"));
|
2021-12-14 07:13:53 +13:00
|
|
|
|
2022-01-20 10:35:07 +13:00
|
|
|
self.label_general_size_bytes.set_tooltip_text(Some(&flg!("main_label_size_bytes_tooltip")));
|
|
|
|
self.label_general_min_size.set_tooltip_text(Some(&flg!("main_label_size_bytes_tooltip")));
|
|
|
|
self.label_general_max_size.set_tooltip_text(Some(&flg!("main_label_size_bytes_tooltip")));
|
|
|
|
self.entry_general_minimal_size.set_tooltip_text(Some(&flg!("main_label_size_bytes_tooltip")));
|
|
|
|
self.entry_general_maximal_size.set_tooltip_text(Some(&flg!("main_label_size_bytes_tooltip")));
|
2021-12-14 07:13:53 +13:00
|
|
|
|
2022-07-20 05:09:52 +12:00
|
|
|
let vec_children: Vec<gtk4::Widget> = get_all_direct_children(&self.notebook_upper);
|
|
|
|
let vec_children: Vec<gtk4::Widget> = get_all_direct_children(&vec_children[1]);
|
2021-12-18 07:44:29 +13:00
|
|
|
|
|
|
|
// Change name of upper notebook tabs
|
2021-12-12 04:16:14 +13:00
|
|
|
for (upper_enum, fl_thing) in [
|
2022-01-20 10:35:07 +13:00
|
|
|
(NotebookUpperEnum::ItemsConfiguration as usize, flg!("upper_notebook_items_configuration")),
|
|
|
|
(NotebookUpperEnum::ExcludedDirectories as usize, flg!("upper_notebook_excluded_directories")),
|
|
|
|
(NotebookUpperEnum::IncludedDirectories as usize, flg!("upper_notebook_included_directories")),
|
2021-12-12 04:16:14 +13:00
|
|
|
] {
|
2021-12-22 06:44:20 +13:00
|
|
|
self.notebook_upper
|
|
|
|
.tab_label(&vec_children[upper_enum])
|
|
|
|
.unwrap()
|
2022-05-22 20:59:09 +12:00
|
|
|
.downcast::<gtk4::Label>()
|
2021-12-22 06:44:20 +13:00
|
|
|
.unwrap()
|
|
|
|
.set_text(&fl_thing);
|
2021-12-12 04:16:14 +13:00
|
|
|
}
|
2021-12-24 21:18:55 +13:00
|
|
|
|
|
|
|
let names_of_columns = [
|
2022-01-20 10:35:07 +13:00
|
|
|
vec![
|
|
|
|
flg!("upper_tree_view_included_folder_column_title"),
|
|
|
|
flg!("upper_tree_view_included_reference_column_title"),
|
|
|
|
], // Included folders
|
2021-12-24 21:18:55 +13:00
|
|
|
];
|
|
|
|
|
|
|
|
for (notebook_index, tree_view) in [self.tree_view_included_directories.clone()].iter().enumerate() {
|
|
|
|
for (column_index, column) in tree_view.columns().iter().enumerate() {
|
|
|
|
column.set_title(&names_of_columns[notebook_index][column_index]);
|
|
|
|
}
|
|
|
|
}
|
2021-12-12 04:16:14 +13:00
|
|
|
}
|
|
|
|
}
|