I love you, will you have my children? 
Nice work man 
Btw... the UI now supports:  Windows, text boxes, and buttons fully.  I cleaned up the API a good bit, and it's now getting to be really usable.  I have a simple python debug console working perfectly 
Here's the actual class that handles input from the user and writes output from the interpreter to the UI.  It's derived from InteractiveInterpreter.
	Code:
	class DevConsole(code.InteractiveInterpreter):
    def write(self, data):
        ui.widgets['chat'].AddText(data.strip() + '\n')
    def Enter(self, textbox):
            if textbox.text == '/quit':
                return -1
            elif textbox.text[:7] == '/python':
                print self.runsource(textbox.text[8:], '<<console>>')
                textbox.SetText('/python ')
            else:
                ui.widgets['chat'].AddText(textbox.text + '\n')
                textbox.SetText('')
            return True
 And this is the actual initialization code for the UI Test.  Following this is all the implementation-specific rendering stuff.  OpenEQ will render to OpenGL of course, but the current UI Test just renders to a pygame (SDL) window:
	Code:
	class UITest:
    size = (800, 600)
    def __init__(self):
        self.ui = ui.UI(self.size)
        win1 = self.ui.Window('win1', pos=(100, 100), size=(600, 600), bgcolor=(255, 255, 255, 255), outline=(255, 0, 0, 255))
        tb1 = win1.Textbox(name='tb1', pos=(10, 310), size=(580, 40), bgcolor=(0, 0, 0, 255), outline=(255, 0, 0, 255), fgcolor=(255, 255, 255, 255), center=(False, True))
        win1.Textbox(name='chat', pos=(10, 10), size=(580, 300), bgcolor=(0, 0, 0, 255), outline=(255, 0, 0, 255), fgcolor=(255, 255, 255, 255), center=(False, False), freeze=True)
        dc = DevConsole()
        tb1.Register('enter', dc.Enter)
 If anyone has any ideas on the API, please let me know.  Thanks!
(Btw... those keyword args to the Window and Textbox functions populate the `props' property of the widgets.  Soon you'll be able to do win1['bgcolor'] = (255, 255, 255, 255) or whatever also... gotta implement that still 

 )