move uidev dashboard to dash-frontend crate
This commit is contained in:
12
dash-frontend/src/assets.rs
Normal file
12
dash-frontend/src/assets.rs
Normal 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
48
dash-frontend/src/lib.rs
Normal 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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user