diff options
Diffstat (limited to 'activities/browser/AddressItem.py')
-rw-r--r-- | activities/browser/AddressItem.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/activities/browser/AddressItem.py b/activities/browser/AddressItem.py new file mode 100644 index 0000000..df5e71c --- /dev/null +++ b/activities/browser/AddressItem.py @@ -0,0 +1,66 @@ +import pygtk +pygtk.require('2.0') +import gtk + +class AddressEntry(gtk.HBox): + def __init__(self, callback): + gtk.HBox.__init__(self) + + self.callback = callback + self.folded = True + + label = gtk.Label("Open") + self.pack_start(label, False) + label.show() + + self.button = gtk.Button() + self.button.set_relief(gtk.RELIEF_NONE) + self.button.connect("clicked", self.__button_clicked_cb) + self.pack_start(self.button, False) + self.button.show() + + self.entry = gtk.Entry() + self.entry.connect("activate", self.__activate_cb) + self.pack_start(self.entry, False) + self.entry.show() + + self._update_folded_state() + + def _update_folded_state(self): + if self.folded: + image = gtk.Image() + image.set_from_icon_name('expand', gtk.ICON_SIZE_SMALL_TOOLBAR) + self.button.set_image(image) + image.show() + + self.entry.hide() + else: + image = gtk.Image() + image.set_from_icon_name('unexpand', gtk.ICON_SIZE_SMALL_TOOLBAR) + self.button.set_image(image) + image.show() + + self.entry.show() + self.entry.grab_focus() + + def get_folded(self): + return self.folded + + def set_folded(self, folded): + self.folded = folded + self._update_folded_state() + + def __button_clicked_cb(self, button): + self.set_folded(not self.get_folded()) + + def __activate_cb(self, entry): + self.callback(entry.get_text()) + self.set_folded(True) + +class AddressItem(gtk.ToolItem): + def __init__(self, callback): + gtk.ToolItem.__init__(self) + + address_entry = AddressEntry(callback) + self.add(address_entry) + address_entry.show() |