From 67ab69f1d0813aa82c5ebc5a07bb5c15c915f060 Mon Sep 17 00:00:00 2001 From: "Sode, Adedamola (DLSLtd,RAL,LSCI)" Date: Tue, 11 Aug 2026 14:57:04 +0000 Subject: [PATCH 1/2] generate.py: tightened padding values for x and y --- src/techui_builder/generate.py | 4 ++-- tests/test_generate.py | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/techui_builder/generate.py b/src/techui_builder/generate.py index 863bdc33..b6623de5 100644 --- a/src/techui_builder/generate.py +++ b/src/techui_builder/generate.py @@ -291,8 +291,8 @@ def _create_widgets( def layout_widgets(self, widgets: list[EmbeddedDisplay | ActionButton]): group_spacing: int = 30 max_group_height: int = 800 - spacing_x: int = 20 - spacing_y: int = 30 + spacing_x: int = 5 + spacing_y: int = 10 # Group tiles by size groups: dict[tuple[int, int], list[EmbeddedDisplay | ActionButton]] = ( defaultdict(list) diff --git a/tests/test_generate.py b/tests/test_generate.py index 6b497b9a..942b1dac 100644 --- a/tests/test_generate.py +++ b/tests/test_generate.py @@ -345,14 +345,14 @@ def test_generator_create_widgets_related( "index, x, y", [ (0, 0, 0), - (1, 0, 150), - (2, 0, 300), - (3, 0, 450), - (4, 0, 600), - (5, 235, 0), - (6, 235, 150), - (7, 355, 150), - (8, 235, 220), + (1, 0, 130), + (2, 0, 260), + (3, 0, 390), + (4, 0, 520), + (5, 0, 650), + (6, 235, 0), + (7, 235, 50), + (8, 235, 100), ], ) def test_generator_layout_widgets(generator, index, x, y): From 551407f7f10a69e095aadd432ee012c948936849 Mon Sep 17 00:00:00 2001 From: "Sode, Adedamola (DLSLtd,RAL,LSCI)" Date: Mon, 17 Aug 2026 09:32:00 +0000 Subject: [PATCH 2/2] removed sorted component, and made widgets in levels the same size --- src/techui_builder/generate.py | 19 ++++++++++++------- tests/test_generate.py | 16 ++++++++-------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/techui_builder/generate.py b/src/techui_builder/generate.py index b6623de5..57f74ad3 100644 --- a/src/techui_builder/generate.py +++ b/src/techui_builder/generate.py @@ -292,7 +292,7 @@ def layout_widgets(self, widgets: list[EmbeddedDisplay | ActionButton]): group_spacing: int = 30 max_group_height: int = 800 spacing_x: int = 5 - spacing_y: int = 10 + spacing_y: int = 5 # Group tiles by size groups: dict[tuple[int, int], list[EmbeddedDisplay | ActionButton]] = ( defaultdict(list) @@ -303,19 +303,18 @@ def layout_widgets(self, widgets: list[EmbeddedDisplay | ActionButton]): groups[key].append(widget) # Sort groups by width (optional) - sorted_widgets: list[EmbeddedDisplay | ActionButton] = [] - sorted_groups = sorted(groups.items(), key=lambda g: g[0][0], reverse=True) + layedout_widgets: list[EmbeddedDisplay | ActionButton] = [] current_x: int = 0 current_y: int = 0 column_width: int = 0 column_levels: list[list[EmbeddedDisplay | ActionButton]] = [] - for (h, w), group in sorted_groups: + for (h, w), group in groups.items(): for widget in group: placed = False for level in column_levels: level_y, _ = self._get_widget_position(level[0]) - _, widget_width = self._get_widget_dimensions(widget) + level_height = max(self._get_widget_dimensions(t)[0] for t in level) level_width = ( sum( (self._get_widget_dimensions(t))[1] + spacing_x @@ -323,6 +322,12 @@ def layout_widgets(self, widgets: list[EmbeddedDisplay | ActionButton]): ) - spacing_x ) # Find the width of the row + + _, widget_width = self._get_widget_dimensions(widget) + + if level_height > h or level_height < h: + continue + if ( level_y + h <= max_group_height and level_width + widget_width <= column_width @@ -348,9 +353,9 @@ def layout_widgets(self, widgets: list[EmbeddedDisplay | ActionButton]): column_levels.append([widget]) current_y += h + spacing_y column_width = max(column_width, w) - sorted_widgets.append(widget) + layedout_widgets.append(widget) - return sorted_widgets + return layedout_widgets def build_widgets(self, screen_name: str, screen_entities: list[Entity]): # Empty widget buffer diff --git a/tests/test_generate.py b/tests/test_generate.py index 942b1dac..28fea58f 100644 --- a/tests/test_generate.py +++ b/tests/test_generate.py @@ -345,14 +345,14 @@ def test_generator_create_widgets_related( "index, x, y", [ (0, 0, 0), - (1, 0, 130), - (2, 0, 260), - (3, 0, 390), - (4, 0, 520), - (5, 0, 650), - (6, 235, 0), - (7, 235, 50), - (8, 235, 100), + (1, 0, 125), + (2, 0, 250), + (3, 0, 375), + (4, 0, 500), + (5, 0, 625), + (6, 0, 750), + (7, 105, 750), + (8, 235, 0), ], ) def test_generator_layout_widgets(generator, index, x, y):