示例#1
0
def canvas(width, height, delegate, useCGI=False):
    C = cookie()
    if useCGI:
        global _canvasCGIService
        if _canvasCGIService is None:
            from nevow import appserver
            from twisted.internet import reactor
            _canvasCGIService = reactor.listenTCP(
                0, appserver.NevowSite(Canvas(docFactory=canvasServerMessage)))
            _canvasCGIService.dispatchMap = {}
        port = _canvasCGIService.getHost().port
        prefix = '/'
        movie_url = url.here.click('/').secure(False, port)
    else:
        movie_url = url.here
        port = lambda c, d: inevow.IRequest(c).transport.server.port

        def prefix(c, d):
            pre = inevow.IRequest(c).path
            if pre.endswith('/'):
                return pre
            return pre + '/'

    _hookup[C] = delegate
    handlerInfo = []
    for handlerName in [
            'onMouseMove', 'onMouseDown', 'onMouseUp', 'onKeyDown', 'onKeyUp'
    ]:
        if getattr(delegate, handlerName, None) is not None:
            handlerInfo.append((handlerName, 1))

    movie_url = movie_url.child('nevow_canvas_movie.swf').add('cookie', C).add(
        'port', port).add('prefix', prefix)
    for (k, v) in handlerInfo:
        movie_url = movie_url.add(k, v)

    return tags._object(
        classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000",
        codebase=
        "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0",
        width=width,
        height=height,
        id=("Canvas-", C),
        align="middle"
    )[tags.param(name="allowScriptAccess", value="sameDomain"),
      tags.param(name="movie", value=movie_url),
      tags.param(name="quality", value="high"),
      tags.param(name="scale", value="noscale"),
      tags.param(name="bgcolor", value="#ffffff"),
      Tag('embed')(src=movie_url,
                   quality="high",
                   scale="noscale",
                   bgcolor="#ffffff",
                   width=width,
                   height=height,
                   name=("Canvas-", C),
                   align="middle",
                   allowScriptAccess="sameDomain",
                   type="application/x-shockwave-flash",
                   pluginspage="http://www.macromedia.com/go/getflashplayer")]
示例#2
0
def canvas(width, height, delegate, useCGI=False):
    C = cookie()
    if useCGI:
        global _canvasCGIService
        if _canvasCGIService is None:
            from nevow import appserver
            # Import reactor here to avoid installing default at startup
            from twisted.internet import reactor
            _canvasCGIService = reactor.listenTCP(0, appserver.NevowSite(Canvas(docFactory=canvasServerMessage)))
            _canvasCGIService.dispatchMap = {}
        port = _canvasCGIService.getHost().port
        prefix = '/'
        movie_url = url.here.click('/').secure(False, port)
    else:
        movie_url = url.here
        port = lambda c, d: inevow.IRequest(c).transport.server.port
        def prefix(c, d):
            pre = inevow.IRequest(c).path
            if pre.endswith('/'):
                return pre
            return pre + '/'

    _hookup[C] = delegate
    handlerInfo = []
    for handlerName in ['onMouseMove', 'onMouseDown', 'onMouseUp', 'onKeyDown', 'onKeyUp']:
        if getattr(delegate, handlerName, None) is not None:
            handlerInfo.append((handlerName, 1))

    movie_url = movie_url.child('nevow_canvas_movie.swf').add('cookie', C).add('port', port).add('prefix', prefix)
    for (k, v) in handlerInfo:
        movie_url = movie_url.add(k, v)

    return tags._object(classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000",
        codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0",
        width=width, height=height, id=("Canvas-", C), align="middle")[
        tags.param(name="allowScriptAccess", value="sameDomain"),
        tags.param(name="movie", value=movie_url),
        tags.param(name="quality", value="high"),
        tags.param(name="scale", value="noscale"),
        tags.param(name="bgcolor", value="#ffffff"),
        Tag('embed')(
            src=movie_url,
            quality="high",
            scale="noscale",
            bgcolor="#ffffff",
            width=width,
            height=height,
            name=("Canvas-", C),
            align="middle",
            allowScriptAccess="sameDomain",
            type="application/x-shockwave-flash",
            pluginspage="http://www.macromedia.com/go/getflashplayer")]
示例#3
0
def flash(src, width, height, id_=None, params=None, **kwparams):
    """Returns the XHTML for flash.
    'params' is a dictionary of name, value pairs that will be turned into a
    bunch of <param> tags"""
    log.debug(u"flash %s" % src)
    stan = T._object(type="application/x-shockwave-flash", width=width, height=height, **kwparams)
    if id_:
        stan.attributes["id"] = id_
    stan.attributes["data"] = src
    if params is None:
        params = {}
    params.setdefault("movie", src)
    for name, value in params.items():
        stan = stan[T.param(name=name, value=value)]
    return unicode(flatten(stan).replace("&amp;", "&"), "utf8")
示例#4
0
def flash(src, width, height, id_=None, params={}, **kwparams):
    """Returns the XHTML for flash.
    'params' is a dictionary of name, value pairs that will be turned into a
    bunch of <param> tags"""
    log.debug(u"flash %s" % src)
    stan = \
        T._object(type='application/x-shockwave-flash',
                 width=width,
                 height=height,
                 **kwparams)
    if id_:
        stan = stan(id=id_)
    if src:
        stan = stan(data=src)
    for name, value in params.items():
        stan = stan[T.param(name=name, value=value)]
    return flatten(stan)
示例#5
0
def flash(src, width, height, id_=None, params=None, **kwparams):
    """Returns the XHTML for flash.
    'params' is a dictionary of name, value pairs that will be turned into a
    bunch of <param> tags"""
    log.debug(u"flash %s" % src)
    stan = \
        T._object(type='application/x-shockwave-flash',
                 width=width,
                 height=height,
                 **kwparams)
    if id_:
        stan.attributes['id'] = id_
    stan.attributes['data'] = src
    if params is None:
        params = {}
    params.setdefault('movie', src)
    for name, value in params.items():
        stan = stan[T.param(name=name, value=value)]
    return unicode(flatten(stan).replace('&amp;', '&'), 'utf8')