diff --git a/dash-frontend/assets/gui/view/audio_settings.xml b/dash-frontend/assets/gui/view/audio_settings.xml index a6a4b887..e1dbabc2 100644 --- a/dash-frontend/assets/gui/view/audio_settings.xml +++ b/dash-frontend/assets/gui/view/audio_settings.xml @@ -1,16 +1,16 @@ - + @@ -67,4 +67,4 @@ - \ No newline at end of file + diff --git a/dash-frontend/src/tab/apps.rs b/dash-frontend/src/tab/apps.rs index cd2a5150..7e17ff39 100644 --- a/dash-frontend/src/tab/apps.rs +++ b/dash-frontend/src/tab/apps.rs @@ -286,7 +286,7 @@ impl AppList { let mut params = HashMap::, Rc>::new(); params.insert("text".into(), category_name.into()); - parser_state.parse_template( + parser_state.realize_template( doc_params, "CategoryText", &mut frontend.layout, @@ -318,7 +318,7 @@ impl AppList { ); params.insert("name".into(), entry.app_name.clone()); - let data = parser_state.parse_template( + let data = parser_state.realize_template( doc_params, "AppEntry", &mut frontend.layout, diff --git a/dash-frontend/src/tab/monado.rs b/dash-frontend/src/tab/monado.rs index c65861b9..0f714306 100644 --- a/dash-frontend/src/tab/monado.rs +++ b/dash-frontend/src/tab/monado.rs @@ -12,7 +12,7 @@ use wgui::{ drawing::Color, globals::WguiGlobals, layout::{Layout, WidgetID}, - parser::{self, Fetchable, ParseDocumentParams, ParserData, ParserState}, + parser::{self, Fetchable, ParseDocumentParams, ParserState}, task::Tasks, }; use wlx_common::dash_interface::{self, MonadoDumpSessionFrame}; @@ -66,15 +66,11 @@ struct SubtabGeneralSettings { struct DebugGraph { graph: Rc, - #[allow(dead_code)] - data: ParserData, } struct DebugSessionList { #[allow(dead_code)] buttons: Vec>, - #[allow(dead_code)] - data_vec: Vec, } struct TimingsSession { @@ -288,7 +284,6 @@ fn mount_sessions_list( sessions: &SessionsMap, ) -> anyhow::Result { let mut buttons = Vec::new(); - let mut data_vec = Vec::new(); let globals = layout.state.globals.clone(); layout.remove_children(id_parent); @@ -304,7 +299,7 @@ fn mount_sessions_list( )), ); - let data = state.parse_template( + let data = state.realize_template( &doc_params_tab_debug_timings(&globals), "SessionButton", layout, @@ -324,10 +319,9 @@ fn mount_sessions_list( }); buttons.push(button); - data_vec.push(data); } - Ok(DebugSessionList { buttons, data_vec }) + Ok(DebugSessionList { buttons }) } fn mount_graph( @@ -343,7 +337,7 @@ fn mount_graph( params.insert(Rc::from("limit_min"), Rc::from(limits.0.to_string())); params.insert(Rc::from("limit_max"), Rc::from(limits.1.to_string())); - let data = state.parse_template( + let data = state.realize_template( &doc_params_tab_debug_timings(&globals), "DebugGraph", layout, @@ -352,7 +346,7 @@ fn mount_graph( )?; let graph = data.fetch_component_as::("graph")?; - Ok(DebugGraph { graph, data }) + Ok(DebugGraph { graph }) } fn ns_to_ms(ns: i64) -> f32 { @@ -585,7 +579,7 @@ impl SubtabProcessList { let globals = layout.state.globals.clone(); - let state_cell = self.state.parse_template( + let state_cell = self.state.realize_template( &doc_params_tab_process_list(&globals), "Cell", layout, diff --git a/dash-frontend/src/views/audio_settings.rs b/dash-frontend/src/views/audio_settings.rs index f2c43f45..61061d33 100644 --- a/dash-frontend/src/views/audio_settings.rs +++ b/dash-frontend/src/views/audio_settings.rs @@ -750,7 +750,7 @@ impl View { let data = self .state - .parse_template(&doc_params(&self.globals), "Card", params.layout, self.id_devices, par)?; + .realize_template(&doc_params(&self.globals), "Card", params.layout, self.id_devices, par)?; let btn_card = data.fetch_component_as::("btn_card")?; btn_card.on_click({ @@ -764,7 +764,6 @@ impl View { }) }); - log::info!("mount card TODO: {}", params.card.name); Ok(()) } @@ -794,7 +793,7 @@ impl View { }, ); - let data = self.state.parse_template( + let data = self.state.realize_template( &doc_params(&self.globals), "DeviceSlider", params.layout, @@ -941,7 +940,7 @@ impl View { layout.remove_children(self.id_devices); { - let data = self.state.parse_template( + let data = self.state.realize_template( &doc_params(&self.globals), "SelectAudioProfileText", layout, diff --git a/dash-frontend/src/views/running_games_list.rs b/dash-frontend/src/views/running_games_list.rs index 19f96911..6428f5d1 100644 --- a/dash-frontend/src/views/running_games_list.rs +++ b/dash-frontend/src/views/running_games_list.rs @@ -127,7 +127,7 @@ impl View { for game in games { let game_name = View::extract_name_from_appid(&game.app_id, &self.installed_games); - let t = self.state.parse_template( + let t = self.state.realize_template( &doc_params(layout.state.globals.clone()), "RunningGameCell", layout, diff --git a/wgui/src/layout.rs b/wgui/src/layout.rs index 9c9a786b..2569f8b7 100644 --- a/wgui/src/layout.rs +++ b/wgui/src/layout.rs @@ -377,7 +377,7 @@ impl Layout { self.registered_components_to_refresh.insert(*node_id, component.weak()); } - /// Convenience function to avoid repeated `WidgetID` → `WidgetState` lookups. + /// Convenience function to avoid repeated `WidgetID` → `WidgetState` look-ups. pub fn add_event_listener( &self, widget_id: WidgetID, diff --git a/wgui/src/parser/mod.rs b/wgui/src/parser/mod.rs index bd716e7e..a715b4df 100644 --- a/wgui/src/parser/mod.rs +++ b/wgui/src/parser/mod.rs @@ -203,7 +203,6 @@ impl Fetchable for ParserData { let casted = widget .get_as::() .ok_or_else(|| anyhow::anyhow!("fetch_widget_as({id}): failed to cast"))?; - Ok(casted) } } @@ -219,16 +218,40 @@ pub struct ParserState { } impl ParserState { - /// This function is suitable in cases if you don't want to pollute main parser state with dynamic IDs - /// Use `instantiate_template` instead unless you want to handle `components` results yourself. - /// Make sure not to drop them if you want to have your listener handles valid - pub fn parse_template( + /// Parse named