[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34769] trunk/blender/release/scripts/ modules: UI functions added to existing UI classes ( operators adding their own menus for eg),

Campbell Barton ideasman42 at gmail.com
Fri Feb 11 02:12:02 CET 2011


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




More information about the Bf-blender-cvs mailing list