comparison sat_frontends/quick_frontend/quick_widgets.py @ 3168:1cb232c9e845

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.
author Goffi <goffi@goffi.org>
date Wed, 12 Feb 2020 19:46:14 +0100
parents 7699a08ba8fb
children be6d91572633
comparison
equal deleted inserted replaced
3167:d0fb79f97466 3168:1cb232c9e845
229 else: 229 else:
230 widget.addTarget(target) 230 widget.addTarget(target)
231 231
232 if widget is None: 232 if widget is None:
233 # we need to create a new widget 233 # we need to create a new widget
234 log.debug("Creating new widget for target {} {}".format(target, cls)) 234 log.debug(f"Creating new widget for target {target} {cls}")
235 widget = cls(*_args, **_kwargs) 235 widget = cls(*_args, **_kwargs)
236 widgets_map.setdefault(hash_, []).append(widget) 236 widgets_map.setdefault(hash_, []).append(widget)
237 self.host.callListeners("widgetNew", widget)
237 238
238 if on_new_widget == C.WIDGET_NEW: 239 if on_new_widget == C.WIDGET_NEW:
239 self.host.newWidget(widget) 240 self.host.newWidget(widget)
240 elif callable(on_new_widget): 241 elif callable(on_new_widget):
241 on_new_widget(widget) 242 on_new_widget(widget)
339 # all instances with this hash have been deleted 340 # all instances with this hash have been deleted
340 # we remove the hash itself 341 # we remove the hash itself
341 del widgets_map[widget_hash] 342 del widgets_map[widget_hash]
342 log.debug("All instances of {cls} with hash {widget_hash!r} have been deleted" 343 log.debug("All instances of {cls} with hash {widget_hash!r} have been deleted"
343 .format(cls=class_, widget_hash=widget_hash)) 344 .format(cls=class_, widget_hash=widget_hash))
345 self.host.callListeners("widgetDeleted", widget_to_delete)
344 346
345 347
346 class QuickWidget(object): 348 class QuickWidget(object):
347 """generic widget base""" 349 """generic widget base"""
348 # FIXME: sometime a single target is used, sometimes several ones 350 # FIXME: sometime a single target is used, sometimes several ones