#!/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("""
""")
# page template, using the flash layout widget, passing parameters
template = html.from_string("""
some flash
""".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())