Bug fix for banners: unsure why I had that exception there
[watersofshiloah] / src / banners.py
index 328029a..afa5281 100644 (file)
@@ -12,22 +12,30 @@ _moduleLogger = logging.getLogger(__name__)
 class GenericBanner(object):
 
        def __init__(self):
+               self._indicator = gtk.Image()
+
                self._label = gtk.Label()
 
-               self._layout = gtk.VBox()
-               self._layout.pack_start(self._label)
+               self._layout = gtk.HBox()
+               self._layout.pack_start(self._indicator, False, False)
+               self._layout.pack_start(self._label, False, True)
 
        @property
        def toplevel(self):
                return self._layout
 
-       def show(self, message):
+       def show(self, icon, message):
                assert not self._label.get_text(), self._label.get_text()
+               if isinstance(icon, gtk.gdk.PixbufAnimation):
+                       self._indicator.set_from_animation(icon)
+               elif isinstance(icon, gtk.gdk.Pixbuf):
+                       self._indicator.set_from_pixbuf(icon)
+               else:
+                       self._indicator.set_from_stock(icon)
                self._label.set_text(message)
                self.toplevel.show()
 
        def hide(self):
-               assert self._label.get_text(), self._label.get_text()
                self._label.set_text("")
                self.toplevel.hide()
 
@@ -61,7 +69,7 @@ class StackingBanner(object):
 
        def push_message(self, message, icon=""):
                self._messages.append((message, icon))
-               if 1 == len(self.__messages):
+               if 1 == len(self._messages):
                        self._update_message()
 
        def push_exception(self):
@@ -70,14 +78,14 @@ class StackingBanner(object):
                _moduleLogger.exception(userMessage)
 
        def pop_message(self):
-               del self.__messages[0]
+               del self._messages[0]
                self._update_message()
 
        def _update_message(self):
-               if 0 == len(self.__messages):
+               if 0 == len(self._messages):
                        self.toplevel.hide()
                else:
-                       message, icon = self._message[0]
+                       message, icon = self._messages[0]
                        self._message.set_text(message)
                        if icon:
                                self._indicator.set_from_stock(icon)