diff options
Diffstat (limited to 'activities/browser/NotificationBar.py')
-rw-r--r-- | activities/browser/NotificationBar.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/activities/browser/NotificationBar.py b/activities/browser/NotificationBar.py new file mode 100644 index 0000000..c9b3b8a --- /dev/null +++ b/activities/browser/NotificationBar.py @@ -0,0 +1,58 @@ +import pygtk +pygtk.require('2.0') +import gtk +import gobject + +class NotificationBar(gtk.HBox): + __gsignals__ = { + 'action': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, + ([gobject.TYPE_STRING])) + } + + def __init__(self): + gtk.HBox.__init__(self, False, 12) + + self.set_name("notif bar") + self.set_border_width(3) + + self._icon = gtk.Image() + self.pack_start(self._icon, False) + + self._text_label = gtk.Label() + self._text_label.set_alignment(0.0, 0.5) + self.pack_start(self._text_label) + self._text_label.show() + + self._action_button = gtk.Button() + self._action_button.connect('clicked', self.__button_clicked) + self.pack_start(self._action_button, False) + self._action_button.show() + + self.connect('expose_event', self.expose) + + def expose(self, widget, event): + rect = self.get_allocation() + ctx = widget.window.cairo_create() + + ctx.new_path() + ctx.rectangle(rect.x, rect.y, rect.width, rect.height) + ctx.set_source_rgb(0.56 , 0.75 , 1) + ctx.fill_preserve() + ctx.set_source_rgb(0.16 , 0.35 , 0.6) + ctx.stroke() + + return False + + def set_icon(self, icon_name): + self._icon.set_from_icon_name(icon_name, gtk.ICON_SIZE_BUTTON) + self._icon.show() + + def set_text(self, text): + self._text_label.set_markup(text) + + def set_action(self, action_id, action_text): + self._action_id = action_id + self._action_button.set_label(action_text) + + def __button_clicked(self, button): + self.emit("action", self._action_id) |