From aa203d4a49d98d2d307c09b35168cd26ff6b12fb Mon Sep 17 00:00:00 2001 From: Goffi Date: Wed, 12 Feb 2020 19:46:14 +0100 Subject: [PATCH] quick frontends (widgets): added widgetNew and widgetDelete listeners: - `widgetNew` is called when a brand new widget is created (not when a new instance is created if there is already an existing one) - `widgetDelete` is called when all instances of a widget (with a given widget_hash) have been deleted. --- sat_frontends/quick_frontend/constants.py | 6 ++++-- sat_frontends/quick_frontend/quick_app.py | 7 ++++++- sat_frontends/quick_frontend/quick_widgets.py | 4 +++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/sat_frontends/quick_frontend/constants.py b/sat_frontends/quick_frontend/constants.py index acde2180..6a5f3605 100644 --- a/sat_frontends/quick_frontend/constants.py +++ b/sat_frontends/quick_frontend/constants.py @@ -99,13 +99,15 @@ class Const(constants.Const): "nick", "presence", "selected", + "notification", + "notificationsClear", + "widgetNew", + "widgetDeleted", "profilePlugged", "contactsFilled", "disconnect", "gotMenus", "menu", - "notification", - "notificationsClear", "progressFinished", "progressError", } diff --git a/sat_frontends/quick_frontend/quick_app.py b/sat_frontends/quick_frontend/quick_app.py index c8bce06c..5c1882fd 100644 --- a/sat_frontends/quick_frontend/quick_app.py +++ b/sat_frontends/quick_frontend/quick_app.py @@ -560,8 +560,13 @@ class QuickApp(object): args: (selected_widget,) - notification: called when a new notification is emited args: (entity, notification_data, profile) - - notification_clear: called when notifications are cleared + - notificationsClear: called when notifications are cleared args: (entity, type_, profile) + - widgetNew: a new QuickWidget has been created + args: (widget,) + - widgetDeleted: all instances of a widget with specific hash have been + deleted + args: (widget_deleted,) - menu: called when a menu item is added or removed args: (type_, path, path_i18n, item) were values are: type_: same as in [sat.core.sat_main.SAT.importMenu] diff --git a/sat_frontends/quick_frontend/quick_widgets.py b/sat_frontends/quick_frontend/quick_widgets.py index d6b7cabe..d2634166 100644 --- a/sat_frontends/quick_frontend/quick_widgets.py +++ b/sat_frontends/quick_frontend/quick_widgets.py @@ -231,9 +231,10 @@ class QuickWidgetsManager(object): if widget is None: # we need to create a new widget - log.debug("Creating new widget for target {} {}".format(target, cls)) + log.debug(f"Creating new widget for target {target} {cls}") widget = cls(*_args, **_kwargs) widgets_map.setdefault(hash_, []).append(widget) + self.host.callListeners("widgetNew", widget) if on_new_widget == C.WIDGET_NEW: self.host.newWidget(widget) @@ -341,6 +342,7 @@ class QuickWidgetsManager(object): del widgets_map[widget_hash] log.debug("All instances of {cls} with hash {widget_hash!r} have been deleted" .format(cls=class_, widget_hash=widget_hash)) + self.host.callListeners("widgetDeleted", widget_to_delete) class QuickWidget(object):