diff --git a/system/ui/spinner.py b/system/ui/spinner.py index fd4264be6c..9c1882cf5f 100755 --- a/system/ui/spinner.py +++ b/system/ui/spinner.py @@ -12,7 +12,6 @@ PROGRESS_BAR_WIDTH = 1000 PROGRESS_BAR_HEIGHT = 20 DEGREES_PER_SECOND = 360.0 # one full rotation per second MARGIN_H = 100 -MARGIN_V = 200 TEXTURE_SIZE = 360 FONT_SIZE = 88 LINE_HEIGHT = 96 @@ -43,7 +42,22 @@ class Spinner: self._wrapped_lines = wrap_text(text, FONT_SIZE, gui_app.width - MARGIN_H) def render(self): - center = rl.Vector2(gui_app.width / 2.0, gui_app.height / 2.0) + with self._lock: + progress = self._progress + wrapped_lines = self._wrapped_lines + + if wrapped_lines: + # Calculate total height required for spinner and text + spacing = 50 + total_height = TEXTURE_SIZE + spacing + len(wrapped_lines) * LINE_HEIGHT + center_y = (gui_app.height - total_height) / 2.0 + TEXTURE_SIZE / 2.0 + else: + # Center spinner vertically + spacing = 150 + center_y = gui_app.height / 2.0 + y_pos = center_y + TEXTURE_SIZE / 2.0 + spacing + + center = rl.Vector2(gui_app.width / 2.0, center_y) spinner_origin = rl.Vector2(TEXTURE_SIZE / 2.0, TEXTURE_SIZE / 2.0) comma_position = rl.Vector2(center.x - TEXTURE_SIZE / 2.0, center.y - TEXTURE_SIZE / 2.0) @@ -57,11 +71,6 @@ class Spinner: rl.draw_texture_v(self._comma_texture, comma_position, rl.WHITE) # Display progress bar or text based on user input - y_pos = rl.get_screen_height() - MARGIN_V - PROGRESS_BAR_HEIGHT - with self._lock: - progress = self._progress - wrapped_lines = self._wrapped_lines - if progress is not None: bar = rl.Rectangle(center.x - PROGRESS_BAR_WIDTH / 2.0, y_pos, PROGRESS_BAR_WIDTH, PROGRESS_BAR_HEIGHT) rl.draw_rectangle_rounded(bar, 1, 10, DARKGRAY) diff --git a/system/ui/text.py b/system/ui/text.py index 4ea886ba1e..79c20ce8dc 100755 --- a/system/ui/text.py +++ b/system/ui/text.py @@ -21,7 +21,9 @@ def wrap_text(text, font_size, max_width): for paragraph in text.split("\n"): if not paragraph.strip(): - lines.append("") + # Don't add empty lines first, ensuring wrap_text("") returns [] + if lines: + lines.append("") continue indent = re.match(r"^\s*", paragraph).group() current_line = indent