From 1f8960033c74ba89501ab19adb59e48774fcf883 Mon Sep 17 00:00:00 2001 From: Aleksander Date: Sat, 16 Aug 2025 20:15:51 +0200 Subject: [PATCH] wgui: parser: `ParseDocumentParams` struct --- uidev/src/testbed/testbed_any.rs | 15 +++++-- uidev/src/testbed/testbed_generic.rs | 12 +++-- wgui/src/parser/mod.rs | 44 ++++++++++++------- wlx-overlay-s/src/gui/panel.rs | 8 ++-- .../src/overlays/keyboard/builder.rs | 16 ++++--- 5 files changed, 63 insertions(+), 32 deletions(-) diff --git a/uidev/src/testbed/testbed_any.rs b/uidev/src/testbed/testbed_any.rs index a5ac9c9..6bea26f 100644 --- a/uidev/src/testbed/testbed_any.rs +++ b/uidev/src/testbed/testbed_any.rs @@ -1,7 +1,10 @@ use crate::{assets, testbed::Testbed}; use glam::Vec2; use wgui::{ - event::EventListenerCollection, globals::WguiGlobals, layout::Layout, parser::ParserState, + event::EventListenerCollection, + globals::WguiGlobals, + layout::Layout, + parser::{ParseDocumentParams, ParserState}, }; pub struct TestbedAny { @@ -20,8 +23,14 @@ impl TestbedAny { let globals = WguiGlobals::new(Box::new(assets::Asset {}))?; - let (layout, state) = - wgui::parser::new_layout_from_assets(globals, listeners, &path, false)?; + let (layout, state) = wgui::parser::new_layout_from_assets( + listeners, + &ParseDocumentParams { + globals, + path: &path, + extra: Default::default(), + }, + )?; Ok(Self { layout, state }) } } diff --git a/uidev/src/testbed/testbed_generic.rs b/uidev/src/testbed/testbed_generic.rs index 44d5dfa..cd2d338 100644 --- a/uidev/src/testbed/testbed_generic.rs +++ b/uidev/src/testbed/testbed_generic.rs @@ -12,7 +12,7 @@ use wgui::{ globals::WguiGlobals, i18n::Translation, layout::{Layout, Widget}, - parser::ParserState, + parser::{ParseDocumentParams, ParserState}, widget::label::WidgetLabel, }; @@ -58,8 +58,14 @@ impl TestbedGeneric { let globals = WguiGlobals::new(Box::new(assets::Asset {}))?; - let (layout, state) = - wgui::parser::new_layout_from_assets(globals, listeners, XML_PATH, false)?; + let (layout, state) = wgui::parser::new_layout_from_assets( + listeners, + &ParseDocumentParams { + globals, + path: XML_PATH, + extra: Default::default(), + }, + )?; let label_cur_option = state.fetch_widget(&layout.state, "label_current_option")?; diff --git a/wgui/src/parser/mod.rs b/wgui/src/parser/mod.rs index 4e907b4..bb368ee 100644 --- a/wgui/src/parser/mod.rs +++ b/wgui/src/parser/mod.rs @@ -105,12 +105,12 @@ impl ParserState { pub fn process_template( &mut self, + doc_params: &ParseDocumentParams, template_name: &str, layout: &mut Layout, listeners: &mut EventListenerCollection, widget_id: WidgetID, template_parameters: HashMap, Rc>, - dev_mode: bool, ) -> anyhow::Result<()> { let Some(template) = self.templates.get(template_name) else { anyhow::bail!("no template named \"{}\" found", template_name); @@ -125,7 +125,7 @@ impl ParserState { components: self.components.clone(), // FIXME: prevent copying components_id_map: self.components_id_map.clone(), // FIXME: prevent copying templates: Default::default(), - dev_mode, + doc_params, }; let file = ParserFile { @@ -157,6 +157,7 @@ struct MacroAttribs { } struct ParserContext<'a, U1, U2> { + doc_params: &'a ParseDocumentParams<'a>, layout: &'a mut Layout, listeners: &'a mut EventListenerCollection, var_map: HashMap, Rc>, @@ -165,7 +166,6 @@ struct ParserContext<'a, U1, U2> { templates: HashMap, Rc