]> git.mxchange.org Git - flightgear.git/blobdiff - utils/Modeller/uv_import_svg.py
mingw fix
[flightgear.git] / utils / Modeller / uv_import_svg.py
index 127ed12cc22877101d596f77d687cd01330bbe8b..b366d41255d848a87035d99a97c0ed298653d631 100755 (executable)
@@ -8,12 +8,12 @@
 # """
 
 __author__ = "Melchior FRANZ < mfranz # aon : at >"
-__url__ = "http://www.flightgear.org/"
+__url__ = ["http://www.flightgear.org/", "http://cvs.flightgear.org/viewvc/source/utils/Modeller/uv_import_svg.py"]
 __version__ = "0.2"
 __bpydoc__ = """\
 Imports an SVG file containing UV maps, which has been saved by the
 uv_export.svg script. This allows to move, scale, and rotate object
-mapping in SVG editors like Inkscape. Note that all contained UV maps
+mappings in SVG editors like Inkscape. Note that all contained UV maps
 will be set, no matter which objects are actually selected at the moment.
 The choice has been made when the file was saved!
 """
@@ -41,8 +41,7 @@ The choice has been made when the file was saved!
 ID_SEPARATOR = '_.:._'
 
 
-import Blender, BPyMessages, sys, math, re
-from xml.sax import handler, make_parser
+import Blender, BPyMessages, sys, math, re, xml.sax
 
 
 numwsp = re.compile('(?<=[\d.])\s+(?=[-+.\d])')
@@ -165,7 +164,7 @@ def parse_transform(s):
        return matrix
 
 
-class import_svg(handler.ContentHandler):
+class import_svg(xml.sax.handler.ContentHandler):
        # err_handler
        def error(self, exception):
                raise Abort(str(exception))
@@ -212,18 +211,18 @@ class import_svg(handler.ContentHandler):
 
        def startElement(self, name, attrs):
                currmat = self.matrices[-1]
-               try:
+               if "transform" in attrs:
                        m = parse_transform(attrs["transform"])
                        if currmat != None:
                                m.multiply(currmat)
                        self.matrices.append(m)
-               except:
+               else:
                        self.matrices.append(currmat)
 
                if name == "polygon":
                        self.handlePolygon(attrs)
                elif name == "svg":
-                       try:
+                       if "viewBox" in attrs:
                                x, y, w, h = commawsp.split(attrs["viewBox"], 4)
                                if int(x) or int(y):
                                        raise Abort("bad viewBox")
@@ -231,7 +230,7 @@ class import_svg(handler.ContentHandler):
                                self.height = int(h)
                                if self.width != self.height:
                                        raise Abort("viewBox isn't a square")
-                       except:
+                       else:
                                raise Abort("no viewBox")
                elif name == "desc" and not self.verified:
                        self.scandesc = True
@@ -276,7 +275,6 @@ class import_svg(handler.ContentHandler):
                        uv[1] = transuv[i][1]
 
 
-
 def run_parser(path):
        if BPyMessages.Error_NoFile(path):
                return
@@ -287,10 +285,7 @@ def run_parser(path):
        Blender.Window.WaitCursor(1)
 
        try:
-               svg = make_parser()
-               svg.setContentHandler(import_svg())
-               svg.setErrorHandler(import_svg())
-               svg.parse(path)
+               xml.sax.parse(path, import_svg(), import_svg())
                Blender.Registry.SetKey("UVImportExportSVG", { "path" : path }, False)
 
        except Abort, e: