quick frontend (widgets): a deletion with onDelete can now be cancelled if onDelete return False

This commit is contained in:
Goffi 2016-08-22 20:56:51 +02:00
commit 5347f89dd4

View file

@ -253,9 +253,14 @@ class QuickWidgetsManager(object):
def deleteWidget(self, widget_to_delete):
"""Delete a widget
this method must be called by frontends when a widget is deleted
widget's onDelete method will be called before deletion
"""
widget_to_delete.onDelete()
if widget_to_delete.onDelete() == False:
return
if self.host.selected_widget == widget_to_delete:
self.host.selected_widget = None
for widget_map in self._widgets.itervalues():
to_delete = set()
@ -335,8 +340,11 @@ class QuickWidget(object):
return unicode(target) # by defaut, there is one hash for one target
def onDelete(self):
"""Called when a widget is deleted"""
log.debug(u"deleting widget {}".format(self)) # Must be implemented by frontends
if self.host.selected_widget == self:
self.host.selected_widget = None
"""Called when a widget is being deleted
@return (boot, None): False to cancel deletion
all other value continue deletion
"""
log.debug(u"widget {} deleted".format(self))
return True