From 667e5f3c5a16439ccc0a03c4427cf1eda57cd92e Mon Sep 17 00:00:00 2001 From: Hemish Date: Sat, 24 Feb 2024 17:08:21 +0530 Subject: [PATCH 1/2] Port View Switcher to python --- demos/View Switcher/main.py | 41 +++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 demos/View Switcher/main.py diff --git a/demos/View Switcher/main.py b/demos/View Switcher/main.py new file mode 100644 index 00000000..5aa88e9d --- /dev/null +++ b/demos/View Switcher/main.py @@ -0,0 +1,41 @@ +import gi + +gi.require_version("Gtk", "4.0") +gi.require_version("Adw", "1") + +from gi.repository import Gtk, Adw + +import workbench + +notifications_page: Adw.ViewStackPage = workbench.builder.get_object("page3") +notification_list: Gtk.ListBox = workbench.builder.get_object("notification_list") + +notifications_count = 5 +# object.props. can be used also instead of get and set functions +notifications_page.props.badge_number = notifications_count + + +def on_button_clicked(button: Gtk.Button, *_): + notifications_page.props.badge_number -= 1 + notification_list.remove(button.get_ancestor(Adw.ActionRow)) + # get_ancestor method gets the most recent parent of the type provided + + if notifications_page.props.badge_number == 0: + notifications_page.props.needs_attention = False + + +for i in range(notifications_count): + notification_row = Adw.ActionRow() + notification_row.set_title("Notification") + notification_row.set_selectable(False) + + button = Gtk.Button() + button.set_halign(Gtk.Align.CENTER) + button.set_valign(Gtk.Align.CENTER) + button.set_margin_top(10) + button.set_margin_bottom(10) + button.set_icon_name("check-plain-symbolic") + + button.connect("clicked", on_button_clicked) + notification_row.add_suffix(button) + notification_list.append(notification_row) From 2d509f3da63a2d511fc7d459e42b3f03e1d3114d Mon Sep 17 00:00:00 2001 From: Hemish Date: Sat, 24 Feb 2024 22:01:35 +0530 Subject: [PATCH 2/2] Use constructors for Button and ActionRow instead of multiple setters --- demos/View Switcher/main.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/demos/View Switcher/main.py b/demos/View Switcher/main.py index 5aa88e9d..211b4c55 100644 --- a/demos/View Switcher/main.py +++ b/demos/View Switcher/main.py @@ -25,17 +25,17 @@ def on_button_clicked(button: Gtk.Button, *_): for i in range(notifications_count): - notification_row = Adw.ActionRow() - notification_row.set_title("Notification") - notification_row.set_selectable(False) - - button = Gtk.Button() - button.set_halign(Gtk.Align.CENTER) - button.set_valign(Gtk.Align.CENTER) - button.set_margin_top(10) - button.set_margin_bottom(10) - button.set_icon_name("check-plain-symbolic") - + notification_row = Adw.ActionRow(title="Notification", selectable=False) + + button = Gtk.Button( + halign=Gtk.Align.CENTER, + valign=Gtk.Align.CENTER, + margin_top=10, + margin_bottom=10, + icon_name="check-plain-symbolic", + ) + button.connect("clicked", on_button_clicked) + notification_row.add_suffix(button) notification_list.append(notification_row)