move uidev dashboard to dash-frontend crate

This commit is contained in:
Aleksander
2025-09-13 12:16:38 +02:00
parent 3f76dbe9cc
commit 1d8f8aca3e
75 changed files with 130 additions and 2 deletions

View File

@@ -0,0 +1,12 @@
#[derive(rust_embed::Embed)]
#[folder = "assets/"]
pub struct Asset;
impl wgui::assets::AssetProvider for Asset {
fn load_from_path(&mut self, path: &str) -> anyhow::Result<Vec<u8>> {
match Asset::get(path) {
Some(data) => Ok(data.data.to_vec()),
None => anyhow::bail!("embedded file {} not found", path),
}
}
}

48
dash-frontend/src/lib.rs Normal file
View File

@@ -0,0 +1,48 @@
use glam::Vec2;
use wgui::{
event::EventListenerCollection,
globals::WguiGlobals,
layout::Layout,
parser::{ParseDocumentParams, ParserState},
};
mod assets;
pub struct Frontend {
pub layout: Layout,
#[allow(dead_code)]
state: ParserState,
}
pub struct FrontendParams<'a> {
pub listeners: &'a mut EventListenerCollection<(), ()>,
}
impl Frontend {
pub fn new(params: FrontendParams) -> anyhow::Result<Self> {
let globals = WguiGlobals::new(Box::new(assets::Asset {}))?;
let (layout, state) = wgui::parser::new_layout_from_assets(
params.listeners,
&ParseDocumentParams {
globals,
path: "gui/dashboard.xml",
extra: Default::default(),
},
)?;
Ok(Self { layout, state })
}
pub fn update(&mut self, width: f32, height: f32, timeste_alpha: f32) -> anyhow::Result<()> {
self
.layout
.update(Vec2::new(width, height), timeste_alpha)?;
Ok(())
}
pub fn get_layout(&mut self) -> &mut Layout {
&mut self.layout
}
}