from twisted.python import util from nevow import rend, loaders, inevow, livepage getValue = livepage.js('getValue') changeLabel = livepage.js('changeLabel') def onCommand(client, text): client.sendScript(changeLabel(text)) class XulApp(livepage.LivePage): addSlash = True docFactory = loaders.xmlfile(util.sibpath(__file__, 'xul_example.xul')) def locateChild(self, ctx, segments): inevow.IRequest(ctx).setHeader("Content-Type", "application/vnd.mozilla.xul+xml; charset=UTF-8") return rend.Page.locateChild(self, ctx, segments) def render_btn(self, ctx, data): return ctx.tag(oncommand=livepage.server.handle('onCommand', getValue('some-text'))) def handle_onCommand(self, ctx, text): return changeLabel(text) def createResource(): return XulApp()