From a4e2878fa22b5912d7058d6d63afbd5021ee1415 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roland=20L=C3=B6tscher?= Date: Fri, 27 Oct 2023 08:17:08 +0200 Subject: [PATCH 1/3] library: Port Actions demo to Python --- src/Library/demos/Actions/main.py | 70 +++++++++++++++++++++++++++++++ src/about.js | 1 + 2 files changed, 71 insertions(+) create mode 100644 src/Library/demos/Actions/main.py diff --git a/src/Library/demos/Actions/main.py b/src/Library/demos/Actions/main.py new file mode 100644 index 000000000..0a33bcd62 --- /dev/null +++ b/src/Library/demos/Actions/main.py @@ -0,0 +1,70 @@ +import gi + +gi.require_version("Gtk", "4.0") +gi.require_version("Adw", "1") +from gi.repository import Gtk, Adw, GLib, Gio +import workbench + +demo: Adw.StatusPage = workbench.builder.get_object("demo") + +demo_group = Gio.SimpleActionGroup() +demo.insert_action_group("demo", demo_group) + +# Action with no state or parameters +simple_action = Gio.SimpleAction( + name = "simple" +) + +simple_action.connect("activate", + lambda action, _ : print(f"{action.get_name()} action activated") +) + +demo_group.add_action(simple_action) + +# Action with parameter +bookmarks_action = Gio.SimpleAction( + name = "open-bookmarks", + parameter_type = GLib.VariantType("s"), +) + +bookmarks_action.connect("activate", + lambda action, parameter : print(f"{action.get_name()} activated with {parameter.unpack()}") +) + +demo_group.add_action(bookmarks_action) + +# Action with state +toggle_action = Gio.SimpleAction( + name = "toggle", + # Boolean actions dont need parameters for activation + state = GLib.Variant.new_boolean(False), +) + +toggle_action.connect("notify::state", + lambda action, _ : print(f"{action.get_name()} action set to {action.get_state().unpack()}") +) + +demo_group.add_action(toggle_action) + +# Action with state and parameter +scale_action = Gio.SimpleAction( + name = "scale", + state = GLib.Variant.new_string("100%"), + parameter_type = GLib.VariantType("s"), +) + +scale_action.connect("notify::state", + lambda action, _ : print(f"{action.get_name()} action set to {action.get_state().unpack()}") +) + +demo_group.add_action(scale_action) + +text : Gtk.Label = workbench.builder.get_object("text") + +alignment_action = Gio.PropertyAction( + name = "text-align", + object = text, + property_name = "halign", +) + +demo_group.add_action(alignment_action) diff --git a/src/about.js b/src/about.js index ee49c15fa..d73403c59 100644 --- a/src/about.js +++ b/src/about.js @@ -82,6 +82,7 @@ ${getBlueprintVersion()} "Onkar https://github.com/onkarrai06", "Sabrina Meindlhumer https://github.com/m-sabrina", "Urtsi Santsi ", + "Roland Lötscher https://github.com/rolandlo", // Add yourself as // "John Doe", // or From e597ece19dc2c023a695f9ad679611b9c42c1ee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roland=20L=C3=B6tscher?= Date: Sat, 28 Oct 2023 19:21:04 +0200 Subject: [PATCH 2/3] Format Actions/main.py according to PEP 8 --- src/Library/demos/Actions/main.py | 55 ++++++++++++++++++------------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/src/Library/demos/Actions/main.py b/src/Library/demos/Actions/main.py index 0a33bcd62..f7e9eb4c3 100644 --- a/src/Library/demos/Actions/main.py +++ b/src/Library/demos/Actions/main.py @@ -11,60 +11,69 @@ demo.insert_action_group("demo", demo_group) # Action with no state or parameters -simple_action = Gio.SimpleAction( - name = "simple" -) +simple_action = Gio.SimpleAction(name="simple") -simple_action.connect("activate", - lambda action, _ : print(f"{action.get_name()} action activated") +simple_action.connect( + "activate", lambda action, _: print( + f"{action.get_name()} action activated" + ), ) demo_group.add_action(simple_action) # Action with parameter bookmarks_action = Gio.SimpleAction( - name = "open-bookmarks", - parameter_type = GLib.VariantType("s"), + name="open-bookmarks", + parameter_type=GLib.VariantType("s"), ) -bookmarks_action.connect("activate", - lambda action, parameter : print(f"{action.get_name()} activated with {parameter.unpack()}") +bookmarks_action.connect( + "activate", + lambda action, parameter: print( + f"{action.get_name()} activated with {parameter.unpack()}" + ), ) demo_group.add_action(bookmarks_action) # Action with state toggle_action = Gio.SimpleAction( - name = "toggle", - # Boolean actions dont need parameters for activation - state = GLib.Variant.new_boolean(False), + name="toggle", + # Boolean actions dont need parameters for activation + state=GLib.Variant.new_boolean(False), ) -toggle_action.connect("notify::state", - lambda action, _ : print(f"{action.get_name()} action set to {action.get_state().unpack()}") +toggle_action.connect( + "notify::state", + lambda action, _: print( + f"{action.get_name()} action set to {action.get_state().unpack()}" + ), ) demo_group.add_action(toggle_action) # Action with state and parameter scale_action = Gio.SimpleAction( - name = "scale", - state = GLib.Variant.new_string("100%"), - parameter_type = GLib.VariantType("s"), + name="scale", + state=GLib.Variant.new_string("100%"), + parameter_type=GLib.VariantType("s"), ) -scale_action.connect("notify::state", - lambda action, _ : print(f"{action.get_name()} action set to {action.get_state().unpack()}") +scale_action.connect( + "notify::state", + lambda action, _: print( + f"{action.get_name()} action set to {action.get_state().unpack()}" + ), ) demo_group.add_action(scale_action) -text : Gtk.Label = workbench.builder.get_object("text") +text: Gtk.Label = workbench.builder.get_object("text") alignment_action = Gio.PropertyAction( - name = "text-align", - object = text, - property_name = "halign", + name="text-align", + object=text, + property_name="halign", ) demo_group.add_action(alignment_action) From 40c7a90970cc008b361f767b7f7d794c71009081 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roland=20L=C3=B6tscher?= Date: Sat, 28 Oct 2023 19:25:56 +0200 Subject: [PATCH 3/3] Add Link to PyGObjects docs in Actions demo --- src/Library/demos/Actions/main.blp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Library/demos/Actions/main.blp b/src/Library/demos/Actions/main.blp index 7bb594353..1846acc3d 100644 --- a/src/Library/demos/Actions/main.blp +++ b/src/Library/demos/Actions/main.blp @@ -162,6 +162,11 @@ Adw.StatusPage demo { uri: "https://gjs.guide/guides/gio/actions-and-menus.html"; } + LinkButton { + label: _("PyGObjects Documentation"); + uri: "https://pygobject.readthedocs.io"; + } + LinkButton { label: _("GTK Documentation"); uri: "https://docs.gtk.org/gtk4/actions.html";