From 764ff53ed0acbd9e17f45b7eeb901685564a13b8 Mon Sep 17 00:00:00 2001 From: Urtsi Santsi Date: Tue, 31 Oct 2023 08:38:40 +0200 Subject: [PATCH 1/2] Library: Port 'Spin Button' to Python --- src/Library/demos/Spin Button/main.py | 36 +++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/Library/demos/Spin Button/main.py diff --git a/src/Library/demos/Spin Button/main.py b/src/Library/demos/Spin Button/main.py new file mode 100644 index 000000000..808450ec7 --- /dev/null +++ b/src/Library/demos/Spin Button/main.py @@ -0,0 +1,36 @@ +import gi + +gi.require_version("Gtk", "4.0") +gi.require_version("Adw", "1") +from gi.repository import Gtk, Adw +import workbench + +hours: Gtk.SpinButton = workbench.builder.get_object("hours") +minutes: Gtk.SpinButton = workbench.builder.get_object("minutes") + +hours.set_text("00") +minutes.set_text("00") + + +def tellTime(hours, minutes): + return f"The time selected is {hours.get_text()}:{minutes.get_text()}" + + +def on_value_changed(spin_button): + value = spin_button.get_adjustment().get_value() + spin_button.set_text(f"{int(value):02}") + return True + + +hours.connect("value-changed", lambda *args: print(tellTime(hours, minutes))) +minutes.connect("value-changed", lambda *args: print(tellTime(hours, minutes))) + + +hours.connect("output", on_value_changed) + +minutes.connect("output", on_value_changed) + + +# This only works for one direction +# Add any extra logic to account for wrapping in both directions +minutes.connect("wrapped", lambda *args: hours.spin(Gtk.SpinType.STEP_FORWARD, 1)) From 02a206b5a33fb7b8748a2b93f39e07434482a1a8 Mon Sep 17 00:00:00 2001 From: Urtsi Santsi Date: Sun, 12 Nov 2023 06:08:57 +0200 Subject: [PATCH 2/2] Review fixes --- src/Library/demos/Spin Button/main.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Library/demos/Spin Button/main.py b/src/Library/demos/Spin Button/main.py index 808450ec7..ce9578ed0 100644 --- a/src/Library/demos/Spin Button/main.py +++ b/src/Library/demos/Spin Button/main.py @@ -1,8 +1,7 @@ import gi gi.require_version("Gtk", "4.0") -gi.require_version("Adw", "1") -from gi.repository import Gtk, Adw +from gi.repository import Gtk import workbench hours: Gtk.SpinButton = workbench.builder.get_object("hours") @@ -12,7 +11,7 @@ minutes.set_text("00") -def tellTime(hours, minutes): +def tell_time(hours, minutes): return f"The time selected is {hours.get_text()}:{minutes.get_text()}" @@ -22,8 +21,8 @@ def on_value_changed(spin_button): return True -hours.connect("value-changed", lambda *args: print(tellTime(hours, minutes))) -minutes.connect("value-changed", lambda *args: print(tellTime(hours, minutes))) +hours.connect("value-changed", lambda *args: print(tell_time(hours, minutes))) +minutes.connect("value-changed", lambda *args: print(tell_time(hours, minutes))) hours.connect("output", on_value_changed)