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()