From 4c957e625fe6727fee4c57b127ecc4a740535fbb Mon Sep 17 00:00:00 2001 From: Ollie Copping Date: Wed, 4 Feb 2026 15:24:15 +0000 Subject: [PATCH] Fix autofilling for widgets inside of groups in index.bob --- src/techui_builder/autofill.py | 4 ++-- src/techui_builder/utils.py | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/techui_builder/autofill.py b/src/techui_builder/autofill.py index f2b9b9ad..e72f899c 100644 --- a/src/techui_builder/autofill.py +++ b/src/techui_builder/autofill.py @@ -108,7 +108,7 @@ def replace_content( assert current_widget is not None # Remove all existing macros if they exist - if current_widget.macros is not None: + if hasattr(current_widget, "macros"): current_widget.remove(current_widget.macros) # Create new macros element current_widget.append( @@ -137,7 +137,7 @@ def _create_macro_element(self, macros: dict): macros_element = Element("macros") for macro, val in macros.items(): macro_element = SubElement(macros_element, macro) - macro_element.text = val + macro_element.text = str(val) # ... which requires this horror obj_macros_element = fromstring(tostring(macros_element)) diff --git a/src/techui_builder/utils.py b/src/techui_builder/utils.py index 11b1304a..fa1c35b7 100644 --- a/src/techui_builder/utils.py +++ b/src/techui_builder/utils.py @@ -21,12 +21,14 @@ def get_widgets(root: ObjectifiedElement): # but not any nested tags below them for child in root.iterchildren(): # If widget is a symbol (i.e. a component) - if child.tag == "widget" and child.get("type", default=None) in [ - "symbol", - "group", - ]: - name = child.name.text - assert name is not None - widgets[name] = child - + if child.tag == "widget": + match child.get("type", default=None): + case "action_button" | "symbol": + name = child.name.text + assert name is not None + widgets[name] = child + case "group": + # Get all the widgets inside of the group objects + groups_widgets = get_widgets(child) + widgets.update(groups_widgets) return widgets