Revision: 34769
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34769
Author:   campbellbarton
Date:     2011-02-11 01:12:01 +0000 (Fri, 11 Feb 2011)
Log Message:
-----------
UI functions added to existing UI classes (operators adding their own menus for 
eg),
would stop the entire menu from drawing if they raised an exception.

now print the exception and continue.

Also added a verbose argument for bpy.utils.(un)register_module() to help test 
whats being registered.

Modified Paths:
--------------
    trunk/blender/release/scripts/modules/bpy/utils.py
    trunk/blender/release/scripts/modules/bpy_types.py

Modified: trunk/blender/release/scripts/modules/bpy/utils.py
===================================================================
--- trunk/blender/release/scripts/modules/bpy/utils.py  2011-02-11 00:39:07 UTC 
(rev 34768)
+++ trunk/blender/release/scripts/modules/bpy/utils.py  2011-02-11 01:12:01 UTC 
(rev 34769)
@@ -593,26 +593,37 @@
             i += 1
 
 
-def register_module(module):
+def register_module(module, verbose=False):
     import traceback
+    if verbose:
+        print("bpy.utils.register_module(%r): ..." % module)
     for cls, path, line in _bpy_module_classes(module, is_registered=False):
+        if verbose:
+            print("    %s of %s:%s" % (cls, path, line))
         try:
             register_class(cls)
         except:
             print("bpy.utils.register_module(): failed to registering class 
'%s.%s'" % (cls.__module__, cls.__name__))
             print("\t", path, "line", line)
             traceback.print_exc()
-
+    if verbose:
+        print("done.\n")
     if "cls" not in locals():
         raise Exception("register_module(%r): defines no classes" % module)
 
 
-def unregister_module(module):
+def unregister_module(module, verbose=False):
     import traceback
+    if verbose:
+        print("bpy.utils.unregister_module(%r): ..." % module)
     for cls, path, line in _bpy_module_classes(module, is_registered=True):
+        if verbose:
+            print("    %s of %s:%s" % (cls, path, line))
         try:
             unregister_class(cls)
         except:
             print("bpy.utils.unregister_module(): failed to unregistering 
class '%s.%s'" % (cls.__module__, cls.__name__))
             print("\t", path, "line", line)
             traceback.print_exc()
+    if verbose:
+        print("done.\n")
\ No newline at end of file

Modified: trunk/blender/release/scripts/modules/bpy_types.py
===================================================================
--- trunk/blender/release/scripts/modules/bpy_types.py  2011-02-11 00:39:07 UTC 
(rev 34768)
+++ trunk/blender/release/scripts/modules/bpy_types.py  2011-02-11 01:12:01 UTC 
(rev 34769)
@@ -657,7 +657,12 @@
 
             def draw_ls(self, context):
                 for func in draw_ls._draw_funcs:
-                    func(self, context)
+                    # so bad menu functions dont stop the entire menu from 
drawing.
+                    try:
+                        func(self, context)
+                    except:
+                        import traceback
+                        traceback.print_exc()
 
             draw_funcs = draw_ls._draw_funcs = [cls.draw]
             cls.draw = draw_ls

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to