[Bf-blender-cvs] [0affcf098f] app-templates: Pass in filters as functions instead of sets

Campbell Barton noreply at git.blender.org
Tue Mar 21 04:15:17 CET 2017


Commit: 0affcf098fbcf5b6953f464e9df61e44839d3231
Author: Campbell Barton
Date:   Tue Mar 21 14:12:49 2017 +1100
Branches: app-templates
https://developer.blender.org/rB0affcf098fbcf5b6953f464e9df61e44839d3231

Pass in filters as functions instead of sets

Also add label filter

===================================================================

M	release/datafiles/app_templates/101/template/__init__.py
M	release/scripts/modules/bl_app_override.py

===================================================================

diff --git a/release/datafiles/app_templates/101/template/__init__.py b/release/datafiles/app_templates/101/template/__init__.py
index 5cdde52263..da9a7a94a1 100644
--- a/release/datafiles/app_templates/101/template/__init__.py
+++ b/release/datafiles/app_templates/101/template/__init__.py
@@ -46,7 +46,6 @@ class AppStateStore:
         assert(len(self.class_store) == 0)
 
         # Classes
-
         self.class_store.extend(
             bl_app_override.class_filter(
                 bpy.types.Panel,
@@ -76,29 +75,44 @@ class AppStateStore:
 
     def setup_ui_filter(self):
         import bl_app_override
-        self.ui_filter_store = bl_app_override.ui_draw_filter_register(
-            operator_blacklist={
-                # "render.render",
+
+        def filter_operator(op_id):
+            return op_id not in {
                 "transform.mirror",
                 "sound.mixdown",
                 "object.modifier_add",
                 "object.forcefield_toggle",
-            },
-            property_blacklist={
+            }
+
+        def filter_property(ty, prop):
+            return (ty, prop) not in {
                 ("Object", "location"),
-                ("Object", "scale"),
                 ("Object", "rotation_euler"),
-                ("RenderSettings", "use_placeholder"),
-                ("RenderSettings", "use_render_cache"),
-                ("RenderSettings", "pixel_filter_type"),
+                ("Object", "scale"),
                 ("RenderSettings", "filter_size"),
-                ("RenderSettings", "frame_map_old"),
                 ("RenderSettings", "frame_map_new"),
-                ("RenderSettings", "use_border"),
-                ("RenderSettings", "use_crop_to_border"),
+                ("RenderSettings", "frame_map_old"),
                 ("RenderSettings", "pixel_aspect_x"),
                 ("RenderSettings", "pixel_aspect_y"),
-            },
+                ("RenderSettings", "pixel_filter_type"),
+                ("RenderSettings", "use_border"),
+                ("RenderSettings", "use_crop_to_border"),
+                ("RenderSettings", "use_placeholder"),
+                ("RenderSettings", "use_render_cache"),
+                ("Scene", "frame_step"),
+            }
+
+        def filter_label(text):
+            # print(text)
+            return text not in {
+                "Aspect Ratio:",
+                "Time Remapping:",
+            }
+
+        self.ui_filter_store = bl_app_override.ui_draw_filter_register(
+            filter_operator=filter_operator,
+            filter_property=filter_property,
+            filter_label=filter_label,
         )
 
     def teardown_ui_filter(self):
diff --git a/release/scripts/modules/bl_app_override.py b/release/scripts/modules/bl_app_override.py
index 5ea6045e83..284a99e3f3 100644
--- a/release/scripts/modules/bl_app_override.py
+++ b/release/scripts/modules/bl_app_override.py
@@ -45,8 +45,9 @@ def class_filter(cls_parent, **kw):
 def ui_draw_filter_register(
     *,
     classes=None,
-    property_blacklist=None,
-    operator_blacklist=None,
+    filter_operator=None,
+    filter_property=None,
+    filter_label=None,
 ):
     import bpy
 
@@ -59,12 +60,6 @@ def ui_draw_filter_register(
             bpy.types.Header,
         )
 
-    def filter_operator(op_id):
-        return op_id not in operator_blacklist
-
-    def filter_prop(data, prop):
-        return (data.__class__.__name__, prop) not in property_blacklist
-
     class OperatorProperties_Fake:
         pass
 
@@ -83,6 +78,9 @@ def ui_draw_filter_register(
                 return dummy_func
 
             elif attr in {"operator", "operator_menu_enum", "operator_enum"}:
+                if filter_operator is None:
+                    return UILayout.__getattribute__(self, attr)
+
                 real_func = UILayout.__getattribute__(self, attr)
 
                 def dummy_func(*args, **kw):
@@ -96,16 +94,34 @@ def ui_draw_filter_register(
                     return ret
                 return dummy_func
             elif attr in {"prop", "prop_enum"}:
+                if filter_property is None:
+                    return UILayout.__getattribute__(self, attr)
+
                 real_func = UILayout.__getattribute__(self, attr)
 
                 def dummy_func(*args, **kw):
                     # print("wrapped", attr)
-                    if filter_prop(args[0], args[1]):
+                    if filter_property(args[0].__class__.__name__, args[1]):
                         ret = real_func(*args, **kw)
                     else:
                         ret = None
                     return ret
                 return dummy_func
+            elif attr == "label":
+                if filter_label is None:
+                    return UILayout.__getattribute__(self, attr)
+
+                real_func = UILayout.__getattribute__(self, attr)
+
+                def dummy_func(*args, **kw):
+                    # print("wrapped", attr)
+                    if filter_label(args[0] if args else kw["text"]):
+                        ret = real_func(*args, **kw)
+                    else:
+                        # ret = real_func()
+                        ret = None
+                    return ret
+                return dummy_func
             else:
                 return UILayout.__getattribute__(self, attr)
             # print(self, attr)
@@ -113,6 +129,14 @@ def ui_draw_filter_register(
         def operator(*args, **kw):
             return super().operator(*args, **kw)
 
+        def label(*args, **kw):
+            text = args[1] if args else kw["text"]
+            if filter_label(text):
+                return super().label(*args, **kw)
+            else:
+                return super().label(args[0], "")
+
+
     def draw_override(func_orig, self_real, context):
         # simple, no wrapping
         # return func_orig(self_wrap, context)




More information about the Bf-blender-cvs mailing list