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