index f1b0f6f7a246f2b1e8a29d1ff468690aa7c92bff..d5cf285c81041347aec9ab638440c1c81c651342 100644 (file)
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
'''
-import inkex, base64
+import inkex, base64, os
+import gettext
+_ = gettext.gettext
class MyEffect(inkex.Effect):
def __init__(self):
inkex.Effect.__init__(self)
+ self.OptionParser.add_option("--desc")
self.OptionParser.add_option("--filepath",
action="store", type="string",
dest="filepath", default=None,
help="")
def effect(self):
- ctx = inkex.xml.xpath.Context.Context(self.document,processorNss=inkex.NSS)
+ mimesubext={
+ 'png' :'.png',
+ 'bmp' :'.bmp',
+ 'jpeg':'.jpg',
+ 'jpg' :'.jpg', #bogus mime
+ 'icon':'.ico',
+ 'gif' :'.gif'
+ }
# exbed the first embedded image
path = self.options.filepath
if (path != ''):
if (self.options.ids):
for id, node in self.selected.iteritems():
- if node.tagName == 'image':
- xlink = node.attributes.getNamedItemNS(inkex.NSS[u'xlink'],'href')
- if (xlink.value[:4]=='data'):
- comma = xlink.value.find(',')
+ if node.tag == inkex.addNS('image','svg'):
+ xlink = node.get(inkex.addNS('href','xlink'))
+ if (xlink[:4]=='data'):
+ comma = xlink.find(',')
if comma>0:
- data = base64.decodestring(xlink.value[comma:])
+ #get extension
+ fileext=''
+ semicolon = xlink.find(';')
+ if semicolon>0:
+ for sub in mimesubext.keys():
+ if sub in xlink[5:semicolon].lower():
+ fileext=mimesubext[sub]
+ path=path+fileext;
+ if (not os.path.isabs(path)):
+ if os.name == 'nt':
+ path = os.path.join(os.environ['USERPROFILE'],path)
+ else:
+ path = os.path.join(os.path.expanduser("~"),path)
+ inkex.errormsg(_('Image extracted to: %s') % path)
+ break
+ #save
+ data = base64.decodestring(xlink[comma:])
open(path,'wb').write(data)
- xlink.value = path
+ node.set(inkex.addNS('href','xlink'),os.path.realpath(path)) #absolute for making in-mem cycles work
else:
- inkex.debug('Difficulty finding the image data.')
+ inkex.errormsg(_('Unable to find image data.'))
break
-e = MyEffect()
-e.affect()
+if __name__ == '__main__':
+ e = MyEffect()
+ e.affect()
+
+
+# vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 fileencoding=utf-8 textwidth=99