parent
4ae3a6708e
commit
38bf469539
|
|
@ -598,6 +598,7 @@ version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"eframe",
|
"eframe",
|
||||||
"egui",
|
"egui",
|
||||||
|
"egui_dock",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -773,6 +774,17 @@ version = "0.1.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76"
|
checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "duplicate"
|
||||||
|
version = "2.0.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8e92f10a49176cbffacaedabfaa11d51db1ea0f80a83c26e1873b43cd1742c24"
|
||||||
|
dependencies = [
|
||||||
|
"heck",
|
||||||
|
"proc-macro2",
|
||||||
|
"proc-macro2-diagnostics",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ecolor"
|
name = "ecolor"
|
||||||
version = "0.34.2"
|
version = "0.34.2"
|
||||||
|
|
@ -879,6 +891,18 @@ dependencies = [
|
||||||
"winit",
|
"winit",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "egui_dock"
|
||||||
|
version = "0.19.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "db51b9023b9d65cb4d561fd981946f987c54f25413c75b2c8e634c774c3d70ad"
|
||||||
|
dependencies = [
|
||||||
|
"duplicate",
|
||||||
|
"egui",
|
||||||
|
"paste",
|
||||||
|
"thiserror 2.0.18",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "egui_glow"
|
name = "egui_glow"
|
||||||
version = "0.34.2"
|
version = "0.34.2"
|
||||||
|
|
@ -2244,6 +2268,12 @@ dependencies = [
|
||||||
"windows-link",
|
"windows-link",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "paste"
|
||||||
|
version = "1.0.15"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "peniko"
|
name = "peniko"
|
||||||
version = "0.6.0"
|
version = "0.6.0"
|
||||||
|
|
@ -2446,6 +2476,18 @@ dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro2-diagnostics"
|
||||||
|
version = "0.10.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
"version_check",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "profiling"
|
name = "profiling"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
|
|
|
||||||
|
|
@ -6,3 +6,4 @@ edition = "2024"
|
||||||
[dependencies]
|
[dependencies]
|
||||||
eframe = "0.34.2"
|
eframe = "0.34.2"
|
||||||
egui = "0.34.2"
|
egui = "0.34.2"
|
||||||
|
egui_dock = "0.19.1"
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,61 @@
|
||||||
|
use egui_dock::{DockArea, Style};
|
||||||
|
|
||||||
|
static TABS_CAN_BE_WINDOWS: bool = false;
|
||||||
|
|
||||||
|
enum TabTypes{
|
||||||
|
Equipment,
|
||||||
|
Worker,
|
||||||
|
Position,
|
||||||
|
Salary,
|
||||||
|
Material,
|
||||||
|
Recipe,
|
||||||
|
Product,
|
||||||
|
Order,
|
||||||
|
Settings
|
||||||
|
}
|
||||||
|
struct Tab{
|
||||||
|
tab_type: TabTypes,
|
||||||
|
title: String,
|
||||||
|
content: String,
|
||||||
|
}
|
||||||
|
|
||||||
pub struct App{
|
pub struct App{
|
||||||
label: String,
|
tree: egui_dock::DockState<Tab>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for App{
|
impl Default for App{
|
||||||
fn default() -> Self{
|
fn default() -> Self{
|
||||||
Self {
|
let mut tree = egui_dock::DockState::new(vec![
|
||||||
label: "Добро пожаловать в СУП: Систему Управления Пивоварней!".to_owned()
|
Tab{
|
||||||
|
tab_type: TabTypes::Equipment,
|
||||||
|
title:"Оборудование".to_owned(),
|
||||||
|
content:"Вкладка с оборудованием".to_owned()
|
||||||
|
},
|
||||||
|
Tab{
|
||||||
|
tab_type: TabTypes::Material,
|
||||||
|
title: "Сырьё".to_owned(),
|
||||||
|
content:"Вкладка с сырьём".to_owned()
|
||||||
|
},
|
||||||
|
Tab{
|
||||||
|
tab_type: TabTypes::Worker,
|
||||||
|
title: "Сотрудники".to_owned(),
|
||||||
|
content:"Сотрудники".to_owned()
|
||||||
}
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
// let [a,b] =
|
||||||
|
// tree.main_surface_mut()
|
||||||
|
// .split_left(egui_dock::NodeIndex::root(), 0.3, vec!["tab3".to_owned()]);
|
||||||
|
|
||||||
|
// let [_,_] = tree
|
||||||
|
// .main_surface_mut()
|
||||||
|
// .split_below(a, 0.7, vec!["tab4".to_owned()]);
|
||||||
|
// let [_,_] = tree
|
||||||
|
// .main_surface_mut()
|
||||||
|
// .split_below(b, 0.5, vec!["tab5".to_owned()]);
|
||||||
|
Self{tree}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl App{
|
impl App{
|
||||||
pub fn new(_cc: &eframe::CreationContext<'_>) -> Self{
|
pub fn new(_cc: &eframe::CreationContext<'_>) -> Self{
|
||||||
Default::default()
|
Default::default()
|
||||||
|
|
@ -19,18 +65,36 @@ impl App{
|
||||||
|
|
||||||
impl eframe::App for App{
|
impl eframe::App for App{
|
||||||
fn ui(&mut self, ui: &mut egui::Ui, _frame: &mut eframe::Frame){
|
fn ui(&mut self, ui: &mut egui::Ui, _frame: &mut eframe::Frame){
|
||||||
|
DockArea::new(&mut self.tree)
|
||||||
egui::Panel::top("top_panel").show_inside(ui, |ui| {
|
.style(Style::from_egui(ui.style().as_ref()))
|
||||||
egui::MenuBar::new().ui(ui, |ui| {
|
.show_inside(ui, &mut TabViewer {});
|
||||||
egui::widgets::global_theme_preference_buttons(ui);
|
}
|
||||||
});
|
}
|
||||||
});
|
|
||||||
egui::CentralPanel::default().show_inside(ui, |ui|{
|
struct TabViewer {}
|
||||||
ui.heading("Система Управления Пивоварней");
|
|
||||||
ui.horizontal(|ui|{
|
impl egui_dock::TabViewer for TabViewer{
|
||||||
ui.label("write something: ");
|
type Tab = Tab;
|
||||||
ui.text_edit_singleline(&mut self.label);
|
|
||||||
});
|
fn title(&mut self, tab: &mut Self::Tab) -> egui::WidgetText{
|
||||||
});
|
(&*tab.title).into()
|
||||||
|
}
|
||||||
|
fn ui(&mut self, ui: &mut egui::Ui, tab: &mut Self::Tab){
|
||||||
|
ui.label(&tab.content);
|
||||||
|
match &tab.tab_type{
|
||||||
|
TabTypes::Equipment => {
|
||||||
|
ui.label("This is Equipment");
|
||||||
|
},
|
||||||
|
_ =>{
|
||||||
|
ui.label("This is not");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
fn allowed_in_windows(&self, _tab: &mut Self::Tab) -> bool {
|
||||||
|
TABS_CAN_BE_WINDOWS
|
||||||
|
}
|
||||||
|
fn is_closeable(&self, _tab: &Self::Tab) -> bool {
|
||||||
|
false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
||||||
fn main() -> eframe::Result{
|
fn main() -> eframe::Result{
|
||||||
|
|
||||||
let native_opts = eframe::NativeOptions {
|
let native_opts = eframe::NativeOptions {
|
||||||
|
|
@ -8,4 +9,4 @@ fn main() -> eframe::Result{
|
||||||
};
|
};
|
||||||
eframe::run_native("BCS", native_opts, Box::new(|cc| Ok(Box::new(code::App::new(cc)))),)
|
eframe::run_native("BCS", native_opts, Box::new(|cc| Ok(Box::new(code::App::new(cc)))),)
|
||||||
|
|
||||||
} //Код не работает, ошибка пока и должна быть.
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
Есть следующие вкладки:
|
||||||
|
Equipment - управление оборудованием
|
||||||
|
Worker - Управление сотрудниками
|
||||||
|
Position - Управление должностями(внутри сотрудника)
|
||||||
|
Salary - управление зарплатами(внутри сотрудника)
|
||||||
|
Material - управление сырьём
|
||||||
|
Recipe - управление рецептами
|
||||||
|
Product - управление продукцией(внутри рецептов)
|
||||||
|
Order - управление заказами
|
||||||
|
Settings - настройки
|
||||||
|
|
||||||
|
В настройках можно:
|
||||||
|
разрешить вкладкам становиться окнами
|
||||||
Loading…
Reference in New Issue