#!/usr/bin/env python import warnings as _warnings _warnings.resetwarnings() _warnings.filterwarnings('error') # BEGIN INCLUDE from tdi import html from tdi.tools.html import decode # This is some typcial flash embedding code. # It serves as a "layout widget", placed via overlay flash = html.from_string("""

You need to enable Flash to view this content.

""") # page template, using the flash layout widget, passing parameters template = html.from_string("""

some flash

some cool text """.lstrip()).overlay(flash) class FlashParam(dict): def render_init(self, node): self.clear() encoding = node.raw.encoder.encoding self['file'] = decode(node[u'file'], encoding) self['width'] = decode(node[u'width'], encoding) self['height'] = decode(node[u'height'], encoding) self['param'] = [] node.render() node.remove() def render_param(self, node): encoding = node.raw.encoder.encoding self['param'].append(( decode(node[u'name'], encoding), decode(node[u'value'], encoding), )) def render_alternative(self, node): self['alt'] = node.copy() class Flash(object): def __init__(self): self.scope_param = FlashParam() def render_object_ie(self, node): p = self.scope_param node[u'width'] = p['width'] node[u'height'] = p['height'] def render_url(self, node): p = self.scope_param node[u'value'] = p['file'] def render_param(self, node): p = self.scope_param for pnode, (name, value) in node.iterate(p['param']): pnode[u'name'] = name pnode[u'value'] = value def render_object_other(self, node): p = self.scope_param node[u'width'] = p['width'] node[u'height'] = p['height'] node[u'data'] = p['file'] def render_alternative(self, node): p = self.scope_param if 'alt' in p: node.replace(None, p['alt']) class Model(object): def __init__(self): self.scope_flash = Flash() template.render(Model())