From 09a45313b81baa19335ed548d81878a0fd68ee30 Mon Sep 17 00:00:00 2001 From: Maic Siemering Date: Wed, 2 Apr 2025 07:50:21 +0200 Subject: [PATCH 1/4] gui: allow setting layer and index in UIView.add_widget --- arcade/gui/ui_manager.py | 2 +- arcade/gui/view.py | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/arcade/gui/ui_manager.py b/arcade/gui/ui_manager.py index ffa4c055b0..b97505ce3f 100644 --- a/arcade/gui/ui_manager.py +++ b/arcade/gui/ui_manager.py @@ -320,7 +320,7 @@ def on_update(self, time_delta): """Dispatches an update event to all widgets in the UIManager.""" return self.dispatch_ui_event(UIOnUpdateEvent(self, time_delta)) - def draw(self, pixelated=False) -> None: + def draw(self, **kwargs) -> None: """Will draw all widgets to the window. UIManager caches all rendered widgets into a framebuffer (something like a diff --git a/arcade/gui/view.py b/arcade/gui/view.py index 885f4587a1..7190952797 100644 --- a/arcade/gui/view.py +++ b/arcade/gui/view.py @@ -31,9 +31,15 @@ def __init__(self): The UIManager of this view. """ - def add_widget(self, widget: W) -> W: - """Add a widget to the UIManager of this view.""" - return self.ui.add(widget) + def add_widget(self, widget: W, *, index=None, layer=UIManager.DEFAULT_LAYER) -> W: + """Add a widget to the UIManager of this view. + + Args: + widget: widget to add + index: position a widget is added, None has the highest priority + layer: layer which the widget should be added to, higher layer are above + """ + return self.ui.add(widget, index=index, layer=layer) def on_show_view(self): """If subclassing UIView, don't forget to call super().on_show_view().""" From bb8cc8e9efc16e13a59e51e6a33187a66e50cf2a Mon Sep 17 00:00:00 2001 From: Maic Siemering Date: Thu, 3 Apr 2025 06:48:40 +0200 Subject: [PATCH 2/4] gui: fix UIScrollbar.add returning None --- arcade/gui/experimental/scroll_area.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/arcade/gui/experimental/scroll_area.py b/arcade/gui/experimental/scroll_area.py index cc1bc55352..25b75d5d48 100644 --- a/arcade/gui/experimental/scroll_area.py +++ b/arcade/gui/experimental/scroll_area.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Iterable +from typing import Iterable, TypeVar from pyglet.event import EVENT_UNHANDLED @@ -23,6 +23,8 @@ ) from arcade.types import LBWH +W = TypeVar("W", bound="UIWidget") + class UIScrollBar(UIWidget): """Scroll bar for a UIScrollLayout. @@ -210,7 +212,7 @@ def __init__( y: float = 0, width: float = 300, height: float = 300, - children: Iterable["UIWidget"] = tuple(), + children: Iterable[UIWidget] = tuple(), size_hint=None, size_hint_min=None, size_hint_max=None, @@ -242,7 +244,7 @@ def __init__( bind(self, "scroll_x", self.trigger_full_render) bind(self, "scroll_y", self.trigger_full_render) - def add(self, child: "UIWidget", **kwargs): + def add(self, child: W, **kwargs) -> W: """Add a child to the widget.""" if self._children: raise ValueError("UIScrollArea can only have one child") @@ -250,7 +252,9 @@ def add(self, child: "UIWidget", **kwargs): super().add(child, **kwargs) self.trigger_full_render() - def remove(self, child: "UIWidget"): + return child + + def remove(self, child: UIWidget): """Remove a child from the widget.""" super().remove(child) self.trigger_full_render() From 0e06e13529dfb6e3a4bf932a70efbf8535c3c1ef Mon Sep 17 00:00:00 2001 From: Maic Siemering Date: Thu, 3 Apr 2025 06:52:26 +0200 Subject: [PATCH 3/4] add changelog --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 65ab8e0c7d..a39aded817 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ You can grab pre-release versions from PyPi. See the available versions from the Arcade [PyPi Release History](https://pypi.org/project/arcade/#history) page. +## Version 3.1.1 (unreleased) + +- GUI + - Fix `UIScrollArea.add` always returning None + + ## Version 3.1 - Drop Python 3.9 support From 7e2131da249a95d28e70a42f0697336db9871116 Mon Sep 17 00:00:00 2001 From: Maic Siemering Date: Thu, 3 Apr 2025 06:53:09 +0200 Subject: [PATCH 4/4] add changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a39aded817..d1998dc04e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ Arcade [PyPi Release History](https://pypi.org/project/arcade/#history) page. - GUI - Fix `UIScrollArea.add` always returning None + - Support `layer` in `UIView.add_widget()` ## Version 3.1