import gtk import hildondesktop as hd import os class XTermLaunch(hd.TaskNavigatorItem): def launch_xterm(self, widget): os.spawnlp(os.P_NOWAIT, "maemo-invoker", "maemo-invoker", "osso-xterm.launch") def open_menu(self, widget): if not self.button.get_active(): self.menu.popup(None, None, self.menu_position, 1, gtk.get_current_event_time()) self.button.set_active(True) else: self.menu.popdown() self.button.set_active(False) return True def menu_position(self, menu): pos = self.button.get_allocation() return (pos.x + pos.width, pos.y, False) def deactivate(self, widget): self.button.set_active(False) def __init__(self): hd.TaskNavigatorItem.__init__(self) img_file = "/usr/share/icons/hicolor/64x64/apps/terminal.png" self.button = button = hd.ToggleButton() button.set_image(gtk.image_new_from_file(img_file)) button.connect("pressed", self.open_menu) button.show() self.add(button) self.menu = menu = gtk.Menu() menu.connect("deactivate", self.deactivate) for i in range(0, 5): item = hd.hildon_thumb_menu_item_new_with_labels("X Terminal", "X Terminal", "Start X Terminal") item.connect("activate", self.launch_xterm) item.set_image(gtk.image_new_from_file(img_file)) item.set_size_request(300, -1) menu.append(item) hd.hildon_menu_set_thumb_mode(menu, True) menu.show_all() def hd_plugin_get_objects(): plugin = XTermLaunch() return [plugin]