From eb93558fc362c5c54fefd22e2868d7f6686ad56d Mon Sep 17 00:00:00 2001 From: Moises Date: Tue, 10 Sep 2024 22:06:19 +0200 Subject: [PATCH 01/13] Added ActivityIndicator implementation for iOS Signed-off-by: Moises --- .../api/widgets/activityindicator.rst | 4 +++ .../images/activityindicator-ios.png | Bin 0 -> 5155 bytes iOS/src/toga_iOS/factory.py | 2 ++ iOS/src/toga_iOS/libs/uikit.py | 4 +++ iOS/src/toga_iOS/widgets/activityindicator.py | 34 ++++++++++++++++++ 5 files changed, 44 insertions(+) create mode 100644 docs/reference/images/activityindicator-ios.png create mode 100644 iOS/src/toga_iOS/widgets/activityindicator.py diff --git a/docs/reference/api/widgets/activityindicator.rst b/docs/reference/api/widgets/activityindicator.rst index 0a19d4be23..29fbb1cadf 100644 --- a/docs/reference/api/widgets/activityindicator.rst +++ b/docs/reference/api/widgets/activityindicator.rst @@ -28,6 +28,10 @@ usually rendered as a "spinner" animation. .. group-tab:: iOS |no| + .. figure:: /reference/images/activityindicator-ios.png + :align: center + :width: 100px + Not supported .. group-tab:: Web |beta| diff --git a/docs/reference/images/activityindicator-ios.png b/docs/reference/images/activityindicator-ios.png new file mode 100644 index 0000000000000000000000000000000000000000..aec9f3c1a5021ff94875a79640cba9bbeb8fad7d GIT binary patch literal 5155 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 literal 0 HcmV?d00001 diff --git a/iOS/src/toga_iOS/factory.py b/iOS/src/toga_iOS/factory.py index a8ac897ccb..0bf9c6f757 100644 --- a/iOS/src/toga_iOS/factory.py +++ b/iOS/src/toga_iOS/factory.py @@ -13,6 +13,7 @@ from .statusicons import MenuStatusIcon, SimpleStatusIcon, StatusIconSet # Widgets +from .widgets.activityindicator import ActivityIndicator from .widgets.box import Box from .widgets.button import Button from .widgets.canvas import Canvas @@ -47,6 +48,7 @@ def not_implemented(feature): __all__ = [ "not_implemented", + "ActivityIndicator", "App", "Command", # Resources diff --git a/iOS/src/toga_iOS/libs/uikit.py b/iOS/src/toga_iOS/libs/uikit.py index 8e1cd1ccc8..818900ce7c 100644 --- a/iOS/src/toga_iOS/libs/uikit.py +++ b/iOS/src/toga_iOS/libs/uikit.py @@ -117,6 +117,10 @@ def NSTextAlignment(alignment): UIKeyInput = ObjCProtocol("UIKeyInput") +###################################################################### +# UIActivityIndicatorView.h +UIActivityIndicatorView = ObjCClass("UIActivityIndicatorView") + ###################################################################### # UIAlertController.h UIAlertController = ObjCClass("UIAlertController") diff --git a/iOS/src/toga_iOS/widgets/activityindicator.py b/iOS/src/toga_iOS/widgets/activityindicator.py new file mode 100644 index 0000000000..fdda10dcb8 --- /dev/null +++ b/iOS/src/toga_iOS/widgets/activityindicator.py @@ -0,0 +1,34 @@ +from rubicon.objc import CGSize + +from toga_iOS.libs import UIActivityIndicatorView, UIView +from toga_iOS.widgets.base import Widget + + +class ActivityIndicator(Widget): + def create(self): + self._activity_indicator = UIActivityIndicatorView.new() + self._activity_indicator.hidesWhenStopped = True + self._activity_indicator.translatesAutoresizingMaskIntoConstraints = False + + self.native = UIView.new() + self.native.addSubview(self._activity_indicator) + self.native.translatesAutoresizingMaskIntoConstraints = False + self.native.sizeToFit() + + self.add_constraints() + + def is_running(self): + return self._activity_indicator.isAnimating() + + def start(self): + self._activity_indicator.startAnimating() + + def stop(self): + self._activity_indicator.stopAnimating() + + def rehint(self): + fitting_size = self._activity_indicator.systemLayoutSizeFittingSize( + CGSize(0, 0) + ) + self.interface.intrinsic.width = fitting_size.width + self.interface.intrinsic.height = fitting_size.height From 2469ecfbe25c919e400be6142ca06a32360676d8 Mon Sep 17 00:00:00 2001 From: Moises Date: Tue, 10 Sep 2024 22:12:07 +0200 Subject: [PATCH 02/13] Updated documentation for the iOS ActivityIndicatorWidget Added changes file for PR Signed-off-by: Moises --- changes/2829.feature.rst | 1 + docs/reference/api/widgets/activityindicator.rst | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 changes/2829.feature.rst diff --git a/changes/2829.feature.rst b/changes/2829.feature.rst new file mode 100644 index 0000000000..e278c95c51 --- /dev/null +++ b/changes/2829.feature.rst @@ -0,0 +1 @@ +Added implementation of ActivityIndicator for iOS using the UIActivityIndicatorView diff --git a/docs/reference/api/widgets/activityindicator.rst b/docs/reference/api/widgets/activityindicator.rst index 29fbb1cadf..956753a130 100644 --- a/docs/reference/api/widgets/activityindicator.rst +++ b/docs/reference/api/widgets/activityindicator.rst @@ -26,7 +26,7 @@ usually rendered as a "spinner" animation. Not supported - .. group-tab:: iOS |no| + .. group-tab:: iOS .. figure:: /reference/images/activityindicator-ios.png :align: center From c5e79630e6dbf8a04730b221106b86d33c5db587 Mon Sep 17 00:00:00 2001 From: Moises Date: Tue, 10 Sep 2024 23:16:43 +0200 Subject: [PATCH 03/13] Enabled tests for the iOS ActivityIndicator Signed-off-by: Moises --- iOS/tests_backend/widgets/activityindicator.py | 7 +++++++ testbed/tests/widgets/test_activityindicator.py | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 iOS/tests_backend/widgets/activityindicator.py diff --git a/iOS/tests_backend/widgets/activityindicator.py b/iOS/tests_backend/widgets/activityindicator.py new file mode 100644 index 0000000000..09172dfaa0 --- /dev/null +++ b/iOS/tests_backend/widgets/activityindicator.py @@ -0,0 +1,7 @@ +from toga_iOS.libs import UIView + +from .base import SimpleProbe + + +class ActivityIndicatorProbe(SimpleProbe): + native_class = UIView diff --git a/testbed/tests/widgets/test_activityindicator.py b/testbed/tests/widgets/test_activityindicator.py index a4b33308e0..15e97cc720 100644 --- a/testbed/tests/widgets/test_activityindicator.py +++ b/testbed/tests/widgets/test_activityindicator.py @@ -11,7 +11,7 @@ @pytest.fixture async def widget(): - skip_on_platforms("android", "iOS", "windows") + skip_on_platforms("android", "windows") return toga.ActivityIndicator() From bf5869acc399bb0d5096b2c3a2ac1e11e3da9f74 Mon Sep 17 00:00:00 2001 From: Moises Date: Tue, 10 Sep 2024 23:21:18 +0200 Subject: [PATCH 04/13] Updated widgets_by_platform.csv to include ActivityIndicator for iOS Signed-off-by: Moises --- docs/reference/data/widgets_by_platform.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/data/widgets_by_platform.csv b/docs/reference/data/widgets_by_platform.csv index ccebcf7aff..f3108e1543 100644 --- a/docs/reference/data/widgets_by_platform.csv +++ b/docs/reference/data/widgets_by_platform.csv @@ -3,7 +3,7 @@ Application,Core Component,:class:`~toga.App`,The application itself,|y|,|y|,|y| Window,Core Component,:class:`~toga.Window`,An operating system-managed container of widgets.,|y|,|y|,|y|,|y|,|y|,|b|,|b| DocumentWindow,Core Component,:class:`~toga.DocumentWindow`,A window that can be used as the main interface to a document-based app.,|y|,|y|,|y|,,,, MainWindow,Core Component,:class:`~toga.MainWindow`,A window that can use the full set of window-level user interface elements.,|y|,|y|,|y|,|y|,|y|,|b|,|b| -ActivityIndicator,General Widget,:class:`~toga.ActivityIndicator`,A spinning activity animation,|y|,|y|,,,,|b|, +ActivityIndicator,General Widget,:class:`~toga.ActivityIndicator`,A spinning activity animation,|y|,|y|,,|y|,,|b|, Button,General Widget,:class:`~toga.Button`,Basic clickable Button,|y|,|y|,|y|,|y|,|y|,|b|,|b| Canvas,General Widget,:class:`~toga.Canvas`,A drawing area for 2D vector graphics.,|y|,|y|,|y|,|y|,|y|,, DateInput,General Widget,:class:`~toga.DateInput`,A widget to select a calendar date,,,|y|,,|y|,, From 42d7fb5c25c666160aad8073e5c0381d69a8b95e Mon Sep 17 00:00:00 2001 From: Moises Aranas Date: Wed, 11 Sep 2024 20:04:58 +0200 Subject: [PATCH 05/13] Update changes/2829.feature.rst Suggested changes from #2829 Co-authored-by: Russell Keith-Magee --- changes/2829.feature.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changes/2829.feature.rst b/changes/2829.feature.rst index e278c95c51..c5517b973c 100644 --- a/changes/2829.feature.rst +++ b/changes/2829.feature.rst @@ -1 +1 @@ -Added implementation of ActivityIndicator for iOS using the UIActivityIndicatorView +The ActivityIndicator widget is now supported on iOS. From 791691bcfa318032c7fa18d44114b3c2a014c6ae Mon Sep 17 00:00:00 2001 From: Moises Aranas Date: Wed, 11 Sep 2024 20:05:27 +0200 Subject: [PATCH 06/13] Update docs/reference/api/widgets/activityindicator.rst Updated activityindicator.rst Co-authored-by: Russell Keith-Magee --- docs/reference/api/widgets/activityindicator.rst | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/reference/api/widgets/activityindicator.rst b/docs/reference/api/widgets/activityindicator.rst index 956753a130..c395c90247 100644 --- a/docs/reference/api/widgets/activityindicator.rst +++ b/docs/reference/api/widgets/activityindicator.rst @@ -31,9 +31,6 @@ usually rendered as a "spinner" animation. .. figure:: /reference/images/activityindicator-ios.png :align: center :width: 100px - - Not supported - .. group-tab:: Web |beta| .. .. figure:: /reference/images/activityindicator-web.png From 7d98567661927e43d5523302a7c3d867a9b92c82 Mon Sep 17 00:00:00 2001 From: Moises Date: Wed, 11 Sep 2024 20:16:36 +0200 Subject: [PATCH 07/13] Added implementation note for ActivityIndicator on iOS explaining the bug with the initial hidden state. Signed-off-by: Moises --- iOS/src/toga_iOS/widgets/activityindicator.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/iOS/src/toga_iOS/widgets/activityindicator.py b/iOS/src/toga_iOS/widgets/activityindicator.py index fdda10dcb8..4c5c601751 100644 --- a/iOS/src/toga_iOS/widgets/activityindicator.py +++ b/iOS/src/toga_iOS/widgets/activityindicator.py @@ -6,6 +6,19 @@ class ActivityIndicator(Widget): def create(self): + """Implements the ActivityIndicator widget for iOS + + Implementation note: + =================== + + The UIActivityIndicatorView is added to a parent UIView because + there is an issue with the UIActivityIndicatorView's `hidesWhenStopped` + behavior - if it is not part of a parent UIView, the indicator + is immediately visible even when not animating, even when + `hidesWhenStopped` is set to `True`, but it works as expected when + it is added as a subview to a parent UIView. + """ + self._activity_indicator = UIActivityIndicatorView.new() self._activity_indicator.hidesWhenStopped = True self._activity_indicator.translatesAutoresizingMaskIntoConstraints = False From c2d0ebd7945a370f0381eb85f6f7f9433a4b7621 Mon Sep 17 00:00:00 2001 From: Moises Date: Thu, 12 Sep 2024 17:44:48 +0200 Subject: [PATCH 08/13] ActivityIndicator for iOS - Fixed the initial hidden state issue by overriding set_hidden Signed-off-by: Moises --- iOS/src/toga_iOS/widgets/activityindicator.py | 36 ++++++------------- 1 file changed, 10 insertions(+), 26 deletions(-) diff --git a/iOS/src/toga_iOS/widgets/activityindicator.py b/iOS/src/toga_iOS/widgets/activityindicator.py index 4c5c601751..4d17e4c8a0 100644 --- a/iOS/src/toga_iOS/widgets/activityindicator.py +++ b/iOS/src/toga_iOS/widgets/activityindicator.py @@ -1,47 +1,31 @@ from rubicon.objc import CGSize -from toga_iOS.libs import UIActivityIndicatorView, UIView +from toga_iOS.libs import UIActivityIndicatorView from toga_iOS.widgets.base import Widget class ActivityIndicator(Widget): def create(self): - """Implements the ActivityIndicator widget for iOS - - Implementation note: - =================== - - The UIActivityIndicatorView is added to a parent UIView because - there is an issue with the UIActivityIndicatorView's `hidesWhenStopped` - behavior - if it is not part of a parent UIView, the indicator - is immediately visible even when not animating, even when - `hidesWhenStopped` is set to `True`, but it works as expected when - it is added as a subview to a parent UIView. - """ - - self._activity_indicator = UIActivityIndicatorView.new() - self._activity_indicator.hidesWhenStopped = True - self._activity_indicator.translatesAutoresizingMaskIntoConstraints = False - - self.native = UIView.new() - self.native.addSubview(self._activity_indicator) + self.native = UIActivityIndicatorView.new() + self.native.hidesWhenStopped = True self.native.translatesAutoresizingMaskIntoConstraints = False self.native.sizeToFit() self.add_constraints() + def set_hidden(self, hidden): + self.native.setHidden((not self.is_running()) or hidden) + def is_running(self): - return self._activity_indicator.isAnimating() + return self.native.isAnimating() def start(self): - self._activity_indicator.startAnimating() + self.native.startAnimating() def stop(self): - self._activity_indicator.stopAnimating() + self.native.stopAnimating() def rehint(self): - fitting_size = self._activity_indicator.systemLayoutSizeFittingSize( - CGSize(0, 0) - ) + fitting_size = self.native.systemLayoutSizeFittingSize(CGSize(0, 0)) self.interface.intrinsic.width = fitting_size.width self.interface.intrinsic.height = fitting_size.height From d2c6f07e08abda692810be0d48694075a0794de6 Mon Sep 17 00:00:00 2001 From: Moises Date: Thu, 12 Sep 2024 17:48:57 +0200 Subject: [PATCH 09/13] Updated ActivityIndicator test backend for iOS with the correct native class Signed-off-by: Moises --- iOS/tests_backend/widgets/activityindicator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iOS/tests_backend/widgets/activityindicator.py b/iOS/tests_backend/widgets/activityindicator.py index 09172dfaa0..bc20c88bab 100644 --- a/iOS/tests_backend/widgets/activityindicator.py +++ b/iOS/tests_backend/widgets/activityindicator.py @@ -1,7 +1,7 @@ -from toga_iOS.libs import UIView +from toga_iOS.libs import UIActivityIndicatorView from .base import SimpleProbe class ActivityIndicatorProbe(SimpleProbe): - native_class = UIView + native_class = UIActivityIndicatorView From fdca33b7cadc4f0c4652b73de3683aa612cb3e79 Mon Sep 17 00:00:00 2001 From: Moises Date: Thu, 12 Sep 2024 18:18:02 +0200 Subject: [PATCH 10/13] Updated documentation formatting Signed-off-by: Moises --- docs/reference/api/widgets/activityindicator.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/reference/api/widgets/activityindicator.rst b/docs/reference/api/widgets/activityindicator.rst index c395c90247..04b0b1edb3 100644 --- a/docs/reference/api/widgets/activityindicator.rst +++ b/docs/reference/api/widgets/activityindicator.rst @@ -28,9 +28,10 @@ usually rendered as a "spinner" animation. .. group-tab:: iOS - .. figure:: /reference/images/activityindicator-ios.png + .. figure:: /reference/images/activityindicator-iOS.png :align: center :width: 100px + .. group-tab:: Web |beta| .. .. figure:: /reference/images/activityindicator-web.png From e92782893e49620b419de969301a0322fe393b5e Mon Sep 17 00:00:00 2001 From: Moises Date: Thu, 12 Sep 2024 18:57:25 +0200 Subject: [PATCH 11/13] Deleted activityindicator-ios.png (incorrect case) Signed-off-by: Moises --- docs/reference/images/activityindicator-ios.png | Bin 5155 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/reference/images/activityindicator-ios.png diff --git a/docs/reference/images/activityindicator-ios.png b/docs/reference/images/activityindicator-ios.png deleted file mode 100644 index aec9f3c1a5021ff94875a79640cba9bbeb8fad7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5155 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 From 48ace849a044696d10fab97934923471917f59de Mon Sep 17 00:00:00 2001 From: Moises Date: Thu, 12 Sep 2024 18:58:10 +0200 Subject: [PATCH 12/13] Added activityindicator-iOS.png with correct case (git issues, so had to do delete and add in separate commits) Signed-off-by: Moises --- docs/reference/images/activityindicator-iOS.png | Bin 0 -> 5155 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/reference/images/activityindicator-iOS.png diff --git a/docs/reference/images/activityindicator-iOS.png b/docs/reference/images/activityindicator-iOS.png new file mode 100644 index 0000000000000000000000000000000000000000..aec9f3c1a5021ff94875a79640cba9bbeb8fad7d GIT binary patch literal 5155 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 literal 0 HcmV?d00001 From 8cbd5f9a12b2c30850254df358597f6340338abb Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Fri, 13 Sep 2024 07:14:32 +0800 Subject: [PATCH 13/13] Add upper version pin to PyGObject. --- gtk/pyproject.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gtk/pyproject.toml b/gtk/pyproject.toml index b4c5480add..13059a5e66 100644 --- a/gtk/pyproject.toml +++ b/gtk/pyproject.toml @@ -66,7 +66,10 @@ root = ".." dependencies = [ "gbulb >= 0.5.3", "pycairo >= 1.17.0", - "pygobject >= 3.46.0", + # New asyncio handling introduced in 3.50.0; that code is incompatible + # with gbulb, See #2550 for the code that replaces GBulb with the new + # asyncio code. + "pygobject < 3.50.0", "toga-core == {version}", ]