roundabout,
created on Tuesday, 21 October 2025, 19:16:38 (1761074198),
received on Tuesday, 21 October 2025, 19:16:41 (1761074201)
Author identity: Vlad <vlad.muntoiu@gmail.com>
e8d88efc2d23116fb62e6555cd28227cca23ba16
applets/notifier/__init__.py
@@ -18,6 +18,8 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
from __future__ import annotations
import pydbus.generic
import panorama_panel
import locale
from pathlib import Path
@@ -81,10 +83,16 @@ class NotificationsService:
<method name="CloseNotification">
<arg type="u" name="id" direction="in"/>
</method>
<signal name="ActionInvoked">
<arg type="u" name="id" direction="out"/>
<arg type="s" name="action_key" direction="out"/>
</signal>
</interface>
</node>
"""
ActionInvoked = pydbus.generic.signal()
def __init__(self, applet: NotifierApplet):
self._next_id = 1
self.applet = applet
@@ -151,7 +159,12 @@ class DetailedNotification(Gtk.ListBoxRow):
self.text_area.append(self.body)
self.text_area.set_hexpand(True)
# TODO: add actions
self.actions = actions
for name, label in zip(self.actions[0::2], self.actions[1::2]):
action_button = Gtk.Button.new_with_label(label)
action_button.connect("clicked", lambda button, n=name: self.engage_action(n))
self.text_area.append(action_button)
self.box.append(self.text_area)
@@ -164,6 +177,10 @@ class DetailedNotification(Gtk.ListBoxRow):
del self.applet.notifications_by_id[self.id]
self.applet.notification_count_label.set_text(locale.format_string('%d', self.applet.notification_count - 1))
self.applet.notification_count -= 1
# TODO: notify closed
def engage_action(self, name):
self.applet.service.ActionInvoked(self.id, name)
class NotifierApplet(panorama_panel.Applet):