summaryrefslogtreecommitdiff
path: root/lab5/src/main.rs
diff options
context:
space:
mode:
authorAndrew Guschin <guschin.drew@gmail.com>2022-12-11 12:43:48 +0400
committerAndrew Guschin <guschin.drew@gmail.com>2022-12-11 12:43:48 +0400
commit032e1fa27ff9faa9a5d82624dbfc5fe8a48c339c (patch)
tree40083b63867a6517254e9b27a3a81c8f9aac5d37 /lab5/src/main.rs
parenta28703315e4628b41e1d7d1d0628189b44b656b8 (diff)
Добавлена 5 лабораторная
Diffstat (limited to 'lab5/src/main.rs')
-rw-r--r--lab5/src/main.rs44
1 files changed, 44 insertions, 0 deletions
diff --git a/lab5/src/main.rs b/lab5/src/main.rs
new file mode 100644
index 0000000..d056ebb
--- /dev/null
+++ b/lab5/src/main.rs
@@ -0,0 +1,44 @@
+mod utils;
+mod window_state;
+
+mod check_window;
+mod forge_window;
+mod generate_window;
+mod sign_window;
+
+use crate::window_state::WindowState;
+use eframe::egui;
+
+fn main() {
+ let options = eframe::NativeOptions::default();
+ eframe::run_native(
+ "Криптографические методы защиты информации",
+ options,
+ Box::new(|_cc| Box::new(Application::default())),
+ );
+}
+
+struct Application {
+ labs: Vec<Box<dyn WindowState>>,
+}
+
+impl Default for Application {
+ fn default() -> Self {
+ Self {
+ labs: vec![
+ Box::new(generate_window::Window::default()),
+ Box::new(sign_window::Window::default()),
+ Box::new(check_window::Window::default()),
+ Box::new(forge_window::Window::default()),
+ ],
+ }
+ }
+}
+
+impl eframe::App for Application {
+ fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
+ for window in &mut self.labs {
+ egui::Window::new(window.get_name()).show(ctx, |ui| window.update(ui));
+ }
+ }
+}