From c110014789ad94604fdedfc0a96b370eea1631d7 Mon Sep 17 00:00:00 2001 From: aurium Date: Tue, 24 Mar 2009 00:23:29 +0000 Subject: [PATCH] initial version of web-transmit-att effect, to add web useful fetures in svg. Not really Working yet. --- share/extensions/interp-att-g.py | 2 +- share/extensions/web-transmit-att.inx | 41 ++++++++++++++++ share/extensions/web-transmit-att.py | 70 +++++++++++++++++++++++++++ 3 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 share/extensions/web-transmit-att.inx create mode 100644 share/extensions/web-transmit-att.py diff --git a/share/extensions/interp-att-g.py b/share/extensions/interp-att-g.py index dc1c36379..021d7b711 100755 --- a/share/extensions/interp-att-g.py +++ b/share/extensions/interp-att-g.py @@ -1,6 +1,6 @@ #!/usr/bin/env python ''' -Copyright (C) 2005 Aurelio A. Heckert, aurium (a) gmail dot com +Copyright (C) 2009 Aurelio A. Heckert, aurium (a) gmail dot com This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/share/extensions/web-transmit-att.inx b/share/extensions/web-transmit-att.inx new file mode 100644 index 000000000..9df45264b --- /dev/null +++ b/share/extensions/web-transmit-att.inx @@ -0,0 +1,41 @@ + + + <_name>Transmit Atributes + org.inkscape.web.transmit-att + web-transmit-att.py + inkex.py + <_param name="intro1" type="description">This effect adds a feature visible (or usable) only on a SVG enabled web browser (like Firefox). + <_param name="sep1" type="description">•••••••••••••••••••••••••••••••••••••••••••••••• + <_param name="intro2" type="description">This effect transmit one or more atributes from the first selected element to the second when a event occurs. + <_param name="sep2" type="description">•••••••••••••••••••••••••••••••••••••••••••••••• + <_param name="intro2" type="description">If you want to transmit more then one attribute, you must separate this with a space, and only with a space. + fill + + <_item value="onclick">on click + <_item value="onfocusin">on focus + <_item value="onfocusout">on blur + <_item value="onactivate">on activate + <_item value="onmousedown">on mouse down + <_item value="onmouseup">on mouse up + <_item value="onmouseover">on mouse over + <_item value="onmousemove">on mouse move + <_item value="onmouseout">on mouse out + <_item value="onload">on element loaded + + + <_item value="append">Run it after + <_item value="prepend">Run it before + <_item value="replace">Replace + + + all + + + + + + + + \ No newline at end of file diff --git a/share/extensions/web-transmit-att.py b/share/extensions/web-transmit-att.py new file mode 100644 index 000000000..eff10f05f --- /dev/null +++ b/share/extensions/web-transmit-att.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python +''' +Copyright (C) 2009 Aurelio A. Heckert, aurium (a) gmail dot com + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +''' +import inkex, sys, os +#from lxml import etree + +class InterpAttG(inkex.Effect): + + def __init__(self): + inkex.Effect.__init__(self) + self.OptionParser.add_option("-a", "--att", + action="store", type="string", + dest="att", default="fill", + help="Attribute to transmited.") + self.OptionParser.add_option("-w", "--when", + action="store", type="string", + dest="when", default="onclick", + help="When it must to transmit?") + self.OptionParser.add_option("-c", "--compatibility", + action="store", type="string", + dest="compatibility", default="append", + help="Compatibility with previews code to this event.") + + def ensureInkWebSupport(self): + if not self.document.xpath('//*[@id="inkwebjs"]', namespaces=inkex.NSS): + root = self.document.getroot() + scriptEl = inkex.etree.Element( "script" ) + scriptEl.set( "id", "inkwebjs" ) + scriptEl.set( "type", "text/javascript" ) + js = open( os.path.join(sys.path[0], "inkweb.js"), 'r' ) + scriptEl.text = inkex.etree.CDATA( js.read() ) + js.close() + root.insert( 0, scriptEl ) + + def effect(self): + self.ensureInkWebSupport() + + elFrom = self.selected[ self.options.ids[0] ] + idTo = self.options.ids[1] + + prevEvCode = elFrom.get( self.options.when ) + if prevEvCode == None: prevEvCode = "" + + evCode = "InkWeb.transmitAtt({from:this, to:'"+idTo+"', att:'"+self.options.att+"'})" + + if self.options.compatibility == 'append': + evCode = prevEvCode +";\n"+ evCode + if self.options.compatibility == 'prepend': + evCode = evCode +";\n"+ prevEvCode + + elFrom.set( self.options.when, evCode ) + +if __name__ == '__main__': + e = InterpAttG() + e.affect() \ No newline at end of file -- 2.30.2