From 0a88c0fb25722967362e73052c48d2a8a7724bed Mon Sep 17 00:00:00 2001 From: aintercourse Date: Wed, 29 Mar 2023 07:32:57 +0300 Subject: [PATCH] mod files, cycle of buttons --- src/panelMode.rs | 103 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 src/panelMode.rs diff --git a/src/panelMode.rs b/src/panelMode.rs new file mode 100644 index 0000000..2b3d0f4 --- /dev/null +++ b/src/panelMode.rs @@ -0,0 +1,103 @@ + +#![allow(dead_code)] + +use std::sync::mpsc::{Receiver, Sender}; +use std::rc::Rc; +use std::sync::{mpsc, Arc, Mutex}; +use std::thread::ThreadId; +use std::{ + collections::btree_set::Union, + io::{self, ErrorKind}, + thread, + time::Duration, +}; +use eframe::{ + egui::{self, Button, RichText}, + epaint::Vec2, +}; + +//custom types +#[repr(u8)] +#[derive(Debug, Clone, Copy, PartialEq)] +enum PanelCurrent { + GSO, + IMP, + GR, + Iron, + Mode, +} + +impl Default for PanelCurrent { + fn default() -> Self { + PanelCurrent::Mode + } +} + +#[derive(Debug)] +struct Panel { + id: PanelCurrent, + name: String, +} + +#[derive(Debug)] +struct panelSelector { + panel: [Panel; 5], +} + +impl Default for panelSelector { + fn default() -> Self { + panelSelector { + panel: [ + + Panel { + id: (PanelCurrent::GSO), + name: ("ГСО".to_string()), + }, + Panel { + id: (PanelCurrent::IMP), + name: ("ИМП".to_string()), + }, + Panel { + id: (PanelCurrent::GR), + name: ("Газ-разбавит.".to_string()), + }, + Panel { + id: (PanelCurrent::Iron), + name: ("Оборудование".to_string()), + }, + Panel { + id: (PanelCurrent::Mode), + name: ("Режим".to_string()), + }, + ], + } + } +} + +pub fn mode_screen( ctx: &egui::Context, ui: &mut egui::Ui, snd: Sender, rx: Receiver) { + let panels: panelSelector = panelSelector::default(); + let mut panel_current: PanelCurrent = PanelCurrent::default(); + + egui::CentralPanel::default().show_inside( ui, |ui| { + egui::TopBottomPanel::top("mode_panel") + .default_height(35.0) + .resizable(false) + .show_inside(ui, |ui| { + //ui.horizontal_centered(|ui| { + // ui.heading("Режим"); + //}); + + ui.horizontal(|ui| { + for panel in panels.panel.iter() { + if ui + .add_sized(Vec2::new(100.0, 24.0), Button::new(panel.name.as_str())) + .clicked() + { + panel_current = panel.id; + println!("{:#?}", panel_current); + }; + } + }); + }); + }); +} \ No newline at end of file