Below is the file 'kairosis.py' from this revision. You can also download the file.
#!/usr/bin/env python2.4 """An Epiphany extension which implements Devhelp like functionality.""" import traceback import string import sys import gtk import gtk.glade import gobject import gtk.keysyms import pango #import epiphany _ui_str = """ <ui> <menubar name="menubar"> <menu name="ToolsMenu" action="Tools"> <separator/> <menuitem name="ShowKairosis" action="ShowKairosis"/> <separator/> </menu> </menubar> </ui> """ def debug(s): sys.stdout.write(s+'\n') def kairosis_cb(action, window): print "Kairosis!!" pass _actions = [('ShowKairosis', None, '_Kairosis DevHelp', None, None, kairosis_cb)] def remove_kairosis(*args): debug(args) def attach_window(window): # load the notebook, and splice it into a new horizontal box pack_into = gtk.HPaned() glade_str = open('/home/grahame/mtn/kairosis/kairosis.glade').read() glade_obj = gtk.glade.xml_new_from_buffer(glade_str, len(glade_str), "kairosis_table") glade_obj.signal_autoconnect(glade_obj) pack_into.add(glade_obj.get_widget("kairosis_table")) # grab the notebook out of the window, and splice it into that box notebook = window.get_notebook() notebook_p = notebook.parent notebook.reparent(pack_into) notebook_p.add(pack_into) # show everything pack_into.show_all() # add our menu items ui_manager = window.get_ui_manager() group = gtk.ActionGroup("Kairosis") group.add_actions(_actions, window) ui_manager.insert_action_group(group, 0) ui_id = ui_manager.add_ui_from_string(_ui_str) window._kairosis_window_data = (group, ui_id) def detach_window(window): debug("detach_window ran") group, ui_id = window._kairosis_window_data del window._kairosis_window_data ui_manager = window.get_ui_manager() ui_manager.remove_ui(ui_id) ui_manager.remove_action_group(group) ui_manager.ensure_update()