add popups with id so they can be updated /removed
authorFelix Domke <tmbinc@elitedvb.net>
Thu, 7 Dec 2006 23:50:31 +0000 (23:50 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Thu, 7 Dec 2006 23:50:31 +0000 (23:50 +0000)
lib/python/Tools/Notifications.py

index 3cb107cc4dc58575bac5cab5d1bc8bb4ed6339d1..85452e11a3301d3b3b6a4cf3aac9e03180fa5c89 100644 (file)
@@ -3,10 +3,43 @@ notifications = [ ]
 
 notificationAdded = [ ]
 
+
+# notifications which are currently on screen (and might be closed by similiar notifications)
+current_notifications = [ ]
+
+def __AddNotification(fnc, screen, id, *args, **kwargs):
+       notifications.append((fnc, screen, args, kwargs, id))
+       for x in notificationAdded:
+               x()
+
 def AddNotification(screen, *args, **kwargs):
        AddNotificationWithCallback(None, screen, *args, **kwargs)
 
 def AddNotificationWithCallback(fnc, screen, *args, **kwargs):
-       notifications.append((fnc, screen, args, kwargs))
-       for x in notificationAdded:
-               x()
+       __AddNotification(fnc, screen, None, *args, **kwargs)
+
+def AddNotificationWithID(id, screen, *args, **kwargs):
+       __AddNotification(None, screen, id, *args, **kwargs)
+
+# we don't support notifications with callback and ID as this
+# would require manually calling the callback on cancelled popups.
+
+def RemovePopup(id):
+       # remove similiar notifications
+       print "RemovePopup, id =", id
+       for x in notifications:
+               if x[4] and x[4] == id:
+                       print "(found in notifications)"
+                       notifications.remove(x)
+
+       for x in current_notifications:
+               if x[0] == id:
+                       print "(found in current notifications)"
+                       x[1].close()
+
+def AddPopup(text, type, timeout, id = None):
+       if id is not None:
+               RemovePopup(id)
+       from Screens.MessageBox import MessageBox
+       print "AddPopup, id =", id
+       AddNotificationWithID(id, MessageBox, text = text, type = type, timeout = timeout)