[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