[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4468] trunk/py/scripts/addons/ io_scene_ms3d: raise HeaderError if, file header is invalid.

Alexander Nussbaumer alpha-beta-release at gmx.net
Fri Apr 12 16:07:09 CEST 2013


Revision: 4468
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4468
Author:   beta-tester
Date:     2013-04-12 14:07:09 +0000 (Fri, 12 Apr 2013)
Log Message:
-----------
raise HeaderError if, file header is invalid.

Modified Paths:
--------------
    trunk/py/scripts/addons/io_scene_ms3d/__init__.py
    trunk/py/scripts/addons/io_scene_ms3d/ms3d_export.py
    trunk/py/scripts/addons/io_scene_ms3d/ms3d_import.py
    trunk/py/scripts/addons/io_scene_ms3d/ms3d_spec.py
    trunk/py/scripts/addons/io_scene_ms3d/ms3d_ui.py

Modified: trunk/py/scripts/addons/io_scene_ms3d/__init__.py
===================================================================
--- trunk/py/scripts/addons/io_scene_ms3d/__init__.py	2013-04-12 12:21:16 UTC (rev 4467)
+++ trunk/py/scripts/addons/io_scene_ms3d/__init__.py	2013-04-12 14:07:09 UTC (rev 4468)
@@ -23,7 +23,7 @@
     'description': "Import / Export MilkShape3D MS3D files"\
             " (conform with MilkShape3D v1.8.4)",
     'author': "Alexander Nussbaumer",
-    'version': (0, 97, 0),
+    'version': (0, 98, 0),
     'blender': (2, 66, 0),
     'location': "File > Import & File > Export",
     'warning': "",

Modified: trunk/py/scripts/addons/io_scene_ms3d/ms3d_export.py
===================================================================
--- trunk/py/scripts/addons/io_scene_ms3d/ms3d_export.py	2013-04-12 12:21:16 UTC (rev 4467)
+++ trunk/py/scripts/addons/io_scene_ms3d/ms3d_export.py	2013-04-12 14:07:09 UTC (rev 4468)
@@ -180,11 +180,13 @@
             if self.options_verbose in Ms3dUi.VERBOSE_NORMAL:
                 print("write - exception in try block\n  type: '{0}'\n"
                         "  value: '{1}'".format(type, value, traceback))
+                if self.report:
+                    self.report({'WARNING', 'ERROR', }, "write - exception.")
 
             if t2 is None:
                 t2 = time()
 
-            raise
+            return False
 
         else:
             pass
@@ -194,7 +196,7 @@
             print(ms3d_str['SUMMARY_EXPORT'].format(
                     (t3 - t1), (t2 - t1), (t3 - t2)))
 
-        return {"FINISHED"}
+        return True
 
 
     ###########################################################################
@@ -385,14 +387,16 @@
                                     weights.append(blender_weight)
                                 elif count == 3:
                                     bone_ids.append(ms3d_index)
-                                    self.report(
-                                            {'WARNING', 'INFO'},
-                                            ms3d_str['WARNING_EXPORT_SKIP_WEIGHT'])
+                                    if self.report and self.options_verbose in Ms3dUi.VERBOSE_NORMAL:
+                                        self.report(
+                                                {'WARNING', 'INFO'},
+                                                ms3d_str['WARNING_EXPORT_SKIP_WEIGHT'])
                                 else:
                                     # only first three weights will be supported / four bones
-                                    self.report(
-                                            {'WARNING', 'INFO'},
-                                            ms3d_str['WARNING_EXPORT_SKIP_WEIGHT_EX'])
+                                    if self.report and self.options_verbose in Ms3dUi.VERBOSE_NORMAL:
+                                        self.report(
+                                                {'WARNING', 'INFO'},
+                                                ms3d_str['WARNING_EXPORT_SKIP_WEIGHT_EX'])
                                     break
                                 count += 1
 

Modified: trunk/py/scripts/addons/io_scene_ms3d/ms3d_import.py
===================================================================
--- trunk/py/scripts/addons/io_scene_ms3d/ms3d_import.py	2013-04-12 12:21:16 UTC (rev 4467)
+++ trunk/py/scripts/addons/io_scene_ms3d/ms3d_import.py	2013-04-12 14:07:09 UTC (rev 4468)
@@ -56,6 +56,7 @@
         Ms3dModel,
         Ms3dVertexEx2,
         Ms3dVertexEx3,
+        Ms3dHeader,
         )
 from io_scene_ms3d.ms3d_utils import (
         select_all,
@@ -160,16 +161,27 @@
                 print(statistics)
                 print("##########################################################")
 
+        except Ms3dHeader.HeaderError:
+            msg = "read - invalid file format."
+            if self.options_verbose in Ms3dUi.VERBOSE_NORMAL:
+                print(msg)
+                if self.report:
+                    self.report({'WARNING', 'ERROR', }, msg)
+
+            return False
+
         except Exception:
             type, value, traceback = exc_info()
             if self.options_verbose in Ms3dUi.VERBOSE_NORMAL:
                 print("read - exception in try block\n  type: '{0}'\n"
                         "  value: '{1}'".format(type, value, traceback))
+                if self.report:
+                    self.report({'WARNING', 'ERROR', }, "read - exception.")
 
             if t2 is None:
                 t2 = time()
 
-            raise
+            return False
 
         else:
             pass
@@ -180,7 +192,7 @@
             print(ms3d_str['SUMMARY_IMPORT'].format(
                     (t3 - t1), (t2 - t1), (t3 - t2)))
 
-        return {"FINISHED"}
+        return True
 
 
     ###########################################################################
@@ -495,35 +507,39 @@
                         bmv_new[layer_extra] = bmv[layer_extra]
                         vert_index = length_verts
                         length_verts += 1
-                        self.report({'WARNING', 'INFO'},
-                                ms3d_str['WARNING_IMPORT_EXTRA_VERTEX_NORMAL'].format(
-                                bmv.normal, blender_normal))
+                        if self.report and self.options_verbose in Ms3dUi.VERBOSE_NORMAL:
+                            self.report({'WARNING', 'INFO'},
+                                    ms3d_str['WARNING_IMPORT_EXTRA_VERTEX_NORMAL'].format(
+                                    bmv.normal, blender_normal))
                     bmv = bmv_new
 
                 if [[x] for x in bmv_list if x == bmv]:
-                    self.report(
-                            {'WARNING', 'INFO'},
-                            ms3d_str['WARNING_IMPORT_SKIP_VERTEX_DOUBLE'].format(
-                                    ms3d_triangle_index))
+                    if self.report and self.options_verbose in Ms3dUi.VERBOSE_NORMAL:
+                        self.report(
+                                {'WARNING', 'INFO'},
+                                ms3d_str['WARNING_IMPORT_SKIP_VERTEX_DOUBLE'].format(
+                                        ms3d_triangle_index))
                     continue
                 bmv_list.append(bmv)
                 bmf_normal += bmv.normal
 
             if len(bmv_list) < 3:
-                self.report(
-                        {'WARNING', 'INFO'},
-                        ms3d_str['WARNING_IMPORT_SKIP_LESS_VERTICES'].format(
-                                ms3d_triangle_index))
+                if self.report and self.options_verbose in Ms3dUi.VERBOSE_NORMAL:
+                    self.report(
+                            {'WARNING', 'INFO'},
+                            ms3d_str['WARNING_IMPORT_SKIP_LESS_VERTICES'].format(
+                                    ms3d_triangle_index))
                 continue
 
             bmf_normal.normalize()
 
             bmf = bm.faces.get(bmv_list)
             if bmf is not None:
-                self.report(
-                        {'WARNING', 'INFO'},
-                        ms3d_str['WARNING_IMPORT_SKIP_FACE_DOUBLE'].format(
-                                ms3d_triangle_index))
+                if self.report and self.options_verbose in Ms3dUi.VERBOSE_NORMAL:
+                    self.report(
+                            {'WARNING', 'INFO'},
+                            ms3d_str['WARNING_IMPORT_SKIP_FACE_DOUBLE'].format(
+                                    ms3d_triangle_index))
                 continue
 
             bmf = bm.faces.new(bmv_list)

Modified: trunk/py/scripts/addons/io_scene_ms3d/ms3d_spec.py
===================================================================
--- trunk/py/scripts/addons/io_scene_ms3d/ms3d_spec.py	2013-04-12 12:21:16 UTC (rev 4467)
+++ trunk/py/scripts/addons/io_scene_ms3d/ms3d_spec.py	2013-04-12 14:07:09 UTC (rev 4468)
@@ -351,7 +351,11 @@
         Ms3dIo.write_string(raw_io, Ms3dIo.LENGTH_ID, self.id)
         Ms3dIo.write_dword(raw_io, self.version)
 
+    class HeaderError(Exception):
+        pass
 
+
+
 ###############################################################################
 class Ms3dVertex:
     """ Ms3dVertex """
@@ -1740,6 +1744,7 @@
         self.header.read(raw_io)
         if (self.header != Ms3dHeader()):
             debug_out.append("\nwarning, invalid file header\n")
+            raise Ms3dHeader.HeaderError
 
         _number_vertices = Ms3dIo.read_word(raw_io)
         if (_number_vertices > Ms3dSpec.MAX_VERTICES):

Modified: trunk/py/scripts/addons/io_scene_ms3d/ms3d_ui.py
===================================================================
--- trunk/py/scripts/addons/io_scene_ms3d/ms3d_ui.py	2013-04-12 12:21:16 UTC (rev 4467)
+++ trunk/py/scripts/addons/io_scene_ms3d/ms3d_ui.py	2013-04-12 14:07:09 UTC (rev 4468)
@@ -392,7 +392,7 @@
     def execute(self, blender_context):
         """ start executing """
         from io_scene_ms3d.ms3d_import import (Ms3dImporter, )
-        Ms3dImporter(
+        finished = Ms3dImporter(
                 report=self.report,
                 verbose=self.verbose,
                 use_extended_normal_handling=self.use_extended_normal_handling,
@@ -405,10 +405,11 @@
                         blender_context,
                         self.filepath
                         )
+        if finished:
+            blender_context.scene.update()
+            return {"FINISHED"}
+        return {"CANCELLED"}
 
-        blender_context.scene.update()
-        return {"FINISHED"}
-
     def invoke(self, blender_context, event):
         blender_context.window_manager.fileselect_add(self)
         return {'RUNNING_MODAL', }
@@ -595,7 +596,7 @@
     def execute(self, blender_context):
         """start executing"""
         from io_scene_ms3d.ms3d_export import (Ms3dExporter, )
-        Ms3dExporter(
+        finished = Ms3dExporter(
                 self.report,
                 verbose=self.verbose,
                 use_blender_names=self.use_blender_names,
@@ -611,10 +612,11 @@
                         blender_context,
                         self.filepath
                         )
+        if finished:
+            blender_context.scene.update()
+            return {"FINISHED"}
+        return {"CANCELLED"}
 
-        blender_context.scene.update()
-        return {"FINISHED"}
-
     #
     def invoke(self, blender_context, event):

@@ Diff output truncated at 10240 characters. @@


More information about the Bf-extensions-cvs mailing list