OSDN Git Service

fix bl24 encoding.
authorousttrue <ousttrue@gmail.com>
Wed, 30 Jun 2010 23:07:41 +0000 (08:07 +0900)
committerousttrue <ousttrue@gmail.com>
Wed, 30 Jun 2010 23:07:41 +0000 (08:07 +0900)
swig/blender/bl24.py
swig/setup.py

index 5d4fceb..3ef3dab 100755 (executable)
@@ -17,6 +17,17 @@ if os.path.exists(os.path.dirname(sys.argv[0])+"/utf8"):
 else:
     INTERNAL_ENCODING=FS_ENCODING
 
+def to_internal_encoding(fn):
+    '''
+    decorator for fix string encoding
+    '''
+    def newfn(*args):
+        return fn(*[
+            v.encode(INTERNAL_ENCODING) if isinstance(v, unicode) else v 
+            for v in args])
+    return newfn
+
+
 SCENE=None
 def initialize(name, scene):
     global SCENE
@@ -34,6 +45,7 @@ def finalize():
     #if mode_edit: 
     #    Blender.Window.EditMode(1)
 
+@to_internal_encoding
 def message(msg):
     res=Blender.Draw.PupMenu(msg + "%t|OK")
     print(res)
@@ -94,11 +106,10 @@ class ProgressBar(object):
         self.progress=float(progress)
         self._print(message)
 
+    @to_internal_encoding
     def _print(self, message):
-        print(message)
+        print(message.decode(INTERNAL_ENCODING))
         message="%s: %s" % (self.base, message)
-        if message.__class__ is unicode:
-            message=message.encode(FS_ENCODING)
         Blender.Window.DrawProgressBar(self.progress, message)
 
     def finish(self):
@@ -133,6 +144,7 @@ class scene:
 
 class object:
     @staticmethod
+    @to_internal_encoding
     def createEmpty(name):
         global SCENE
         empty=SCENE.objects.new("Empty")
@@ -198,11 +210,12 @@ class object:
         return o.getData(mesh=True).key.blocks
 
     @staticmethod
+    @to_internal_encoding
     def addShapeKey(o, name):
         mesh=o.getData(mesh=True)
         mesh.insertKey()
         block=mesh.key.blocks[-1]
-        block.name=name.encode(INTERNAL_ENCODING)
+        block.name=name
         return block
 
     @staticmethod
@@ -222,10 +235,12 @@ class object:
         return o.getPose()
 
     @staticmethod
+    @to_internal_encoding
     def addVertexGroup(o, name):
         o.getData(mesh=True).addVertGroup(name)
 
     @staticmethod
+    @to_internal_encoding
     def assignVertexGroup(o, name, index, weight):
         o.getData(mesh=True).assignVertsToGroup(name, 
                 [index], weight, Blender.Mesh.AssignModes.ADD)
@@ -235,6 +250,7 @@ class object:
         return o.getData(mesh=True).getVertGroupNames()
 
     @staticmethod
+    @to_internal_encoding
     def getVertexGroup(o, name):
         indices=[]
         for index in o.getData(mesh=True).getVertsFromGroup(name):
@@ -284,9 +300,10 @@ class shapekey:
 
 class texture:
     @staticmethod
+    @to_internal_encoding
     def create(path):
-        image = Blender.Image.Load(path.encode(INTERNAL_ENCODING))
-        texture = Blender.Texture.New(path.encode(INTERNAL_ENCODING))
+        image = Blender.Image.Load(path)
+        texture = Blender.Texture.New(path)
         texture.type = Blender.Texture.Types.IMAGE
         texture.image = image
         texture.imageFlags|=Blender.Texture.ImageFlags.USEALPHA
@@ -295,6 +312,7 @@ class texture:
 
 class material:
     @staticmethod
+    @to_internal_encoding
     def create(name):
         m = Blender.Material.New(name)
         return m
@@ -324,10 +342,11 @@ class material:
 
 class mesh:
     @staticmethod
+    @to_internal_encoding
     def create(name):
         global SCENE
         m=Blender.Mesh.New()
-        o=SCENE.objects.new(m, name.encode(INTERNAL_ENCODING))
+        o=SCENE.objects.new(m, name)
         return m, o
 
     @staticmethod
@@ -471,9 +490,10 @@ class armature:
         return constraint
 
     @staticmethod
+    @to_internal_encoding
     def createBone(armature_object, name):
         bone=Blender.Armature.Editbone()
-        bone.name=name.encode(INTERNAL_ENCODING)
+        bone.name=name
         armature_object.bones[name]=bone
         return bone
 
index a2ced8f..78146dc 100644 (file)
@@ -64,7 +64,7 @@ else:
 for i in range(len(ext_modules)+1):
     try:
         setup(name="meshio",
-                version='0.12',
+                version='0.13',
                 description='polygon mesh io utilities',
                 author='ousttrue',
                 author_email='ousttrue@gmail.com',