2022-05-22 20:59:09 +12:00
|
|
|
use gtk4::prelude::*;
|
|
|
|
use gtk4::{Builder, EventControllerKey, Window};
|
2021-01-11 08:12:08 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
use crate::help_functions::{get_custom_label_from_widget, set_icon_of_button};
|
2022-04-04 02:03:01 +12:00
|
|
|
use crate::{flg, CZK_ICON_STOP};
|
2021-12-20 02:45:10 +13:00
|
|
|
|
2021-01-11 08:12:08 +13:00
|
|
|
#[derive(Clone)]
|
2021-03-28 01:14:02 +13:00
|
|
|
pub struct GuiProgressDialog {
|
2022-05-22 20:59:09 +12:00
|
|
|
pub window_progress: gtk4::Dialog,
|
2021-01-11 08:12:08 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
pub progress_bar_current_stage: gtk4::ProgressBar,
|
|
|
|
pub progress_bar_all_stages: gtk4::ProgressBar,
|
2021-01-11 08:12:08 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
pub label_stage: gtk4::Label,
|
|
|
|
pub label_progress_current_stage: gtk4::Label,
|
|
|
|
pub label_progress_all_stages: gtk4::Label,
|
2021-01-11 08:12:08 +13:00
|
|
|
|
2024-02-07 22:23:01 +13:00
|
|
|
pub grid_progress: gtk4::Grid,
|
2021-01-11 08:12:08 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
pub button_stop_in_dialog: gtk4::Button,
|
2022-06-01 03:52:55 +12:00
|
|
|
pub evk_button_stop_in_dialog: EventControllerKey,
|
2021-01-11 08:12:08 +13:00
|
|
|
}
|
|
|
|
|
2021-03-28 01:14:02 +13:00
|
|
|
impl GuiProgressDialog {
|
2021-11-28 04:44:30 +13:00
|
|
|
pub fn create_from_builder(window_main: &Window) -> Self {
|
2022-02-26 06:47:25 +13:00
|
|
|
let glade_src = include_str!("../../ui/progress.ui").to_string();
|
2021-07-08 07:13:36 +12:00
|
|
|
let builder = Builder::from_string(glade_src.as_str());
|
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
let window_progress: gtk4::Dialog = builder.object("window_progress").unwrap();
|
|
|
|
window_progress.set_title(Some(&flg!("window_progress_title")));
|
2021-11-28 04:44:30 +13:00
|
|
|
window_progress.set_transient_for(Some(window_main));
|
2021-12-18 07:29:37 +13:00
|
|
|
window_progress.set_modal(true);
|
2021-01-11 08:12:08 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
let progress_bar_current_stage: gtk4::ProgressBar = builder.object("progress_bar_current_stage").unwrap();
|
|
|
|
let progress_bar_all_stages: gtk4::ProgressBar = builder.object("progress_bar_all_stages").unwrap();
|
2021-01-11 08:12:08 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
let label_stage: gtk4::Label = builder.object("label_stage").unwrap();
|
|
|
|
let label_progress_current_stage: gtk4::Label = builder.object("label_progress_current_stage").unwrap();
|
|
|
|
let label_progress_all_stages: gtk4::Label = builder.object("label_progress_all_stages").unwrap();
|
2021-01-11 08:12:08 +13:00
|
|
|
|
2024-02-07 22:23:01 +13:00
|
|
|
let grid_progress: gtk4::Grid = builder.object("grid_progress").unwrap();
|
2021-01-11 08:12:08 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
let button_stop_in_dialog: gtk4::Button = builder.object("button_stop_in_dialog").unwrap();
|
|
|
|
let evk_button_stop_in_dialog = EventControllerKey::new();
|
2023-02-19 22:21:14 +13:00
|
|
|
button_stop_in_dialog.add_controller(evk_button_stop_in_dialog.clone());
|
2021-01-11 08:12:08 +13:00
|
|
|
|
2022-04-04 02:03:01 +12:00
|
|
|
set_icon_of_button(&button_stop_in_dialog, CZK_ICON_STOP);
|
|
|
|
|
2021-01-11 08:12:08 +13:00
|
|
|
Self {
|
2021-01-26 06:23:42 +13:00
|
|
|
window_progress,
|
2021-01-11 08:12:08 +13:00
|
|
|
progress_bar_current_stage,
|
|
|
|
progress_bar_all_stages,
|
|
|
|
label_stage,
|
2021-12-12 04:16:14 +13:00
|
|
|
label_progress_current_stage,
|
|
|
|
label_progress_all_stages,
|
2024-02-07 22:23:01 +13:00
|
|
|
grid_progress,
|
2021-01-11 08:12:08 +13:00
|
|
|
button_stop_in_dialog,
|
2021-12-01 23:09:47 +13:00
|
|
|
evk_button_stop_in_dialog,
|
2021-01-11 08:12:08 +13:00
|
|
|
}
|
|
|
|
}
|
2021-12-12 04:16:14 +13:00
|
|
|
pub fn update_language(&self) {
|
2022-05-22 20:59:09 +12:00
|
|
|
self.window_progress.set_title(Some(&flg!("window_progress_title")));
|
2021-12-20 09:42:14 +13:00
|
|
|
|
2022-05-22 20:59:09 +12:00
|
|
|
get_custom_label_from_widget(&self.button_stop_in_dialog.clone()).set_text(&flg!("progress_stop_button"));
|
2021-12-12 04:16:14 +13:00
|
|
|
|
2022-01-20 10:35:07 +13:00
|
|
|
self.label_progress_current_stage.set_label(&flg!("progress_current_stage"));
|
|
|
|
self.label_progress_all_stages.set_label(&flg!("progress_all_stages"));
|
2021-12-12 04:16:14 +13:00
|
|
|
}
|
2021-01-11 08:12:08 +13:00
|
|
|
}
|