Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/activities/browser/AddressItem.py
diff options
context:
space:
mode:
Diffstat (limited to 'activities/browser/AddressItem.py')
-rw-r--r--activities/browser/AddressItem.py66
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()