diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2015-09-24 18:24:20 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2015-09-24 18:24:20 +0300 |
commit | 27b3ea622f8bd313a8e2827dfec752bf2125566c (patch) | |
tree | f212e49d224ce8e1cfc3b17a64ae524711494391 /release/scripts/modules/nodeitems_utils.py | |
parent | 372dff8d1dc7e24d4b2cd37de245588ecfce8bfa (diff) | |
parent | de80e687689032cb85179a1f7e89750573631d5d (diff) |
Merge remote-tracking branch 'origin/master' into cycles_camera_nodescycles_camera_nodes
Note: the branch currently crashes in blender_camera_nodes.cpp:
BL::NodeTree b_ntree = b_data.node_groups[nodes_tree_name];
The crash was introduced in:
cb7cf523e5c000609f32a382e2c0fcc57f635a42
Conflicts:
intern/cycles/SConscript
intern/cycles/blender/addon/__init__.py
intern/cycles/blender/addon/properties.py
intern/cycles/blender/blender_camera.cpp
intern/cycles/kernel/kernel_types.h
intern/cycles/kernel/svm/svm.h
intern/cycles/kernel/svm/svm_types.h
intern/cycles/render/camera.cpp
intern/cycles/render/camera.h
Diffstat (limited to 'release/scripts/modules/nodeitems_utils.py')
-rw-r--r-- | release/scripts/modules/nodeitems_utils.py | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/release/scripts/modules/nodeitems_utils.py b/release/scripts/modules/nodeitems_utils.py index 1fef6c3a019..be6f031217c 100644 --- a/release/scripts/modules/nodeitems_utils.py +++ b/release/scripts/modules/nodeitems_utils.py @@ -20,7 +20,7 @@ import bpy -class NodeCategory(): +class NodeCategory: @classmethod def poll(cls, context): return True @@ -37,13 +37,17 @@ class NodeCategory(): else: def items_gen(context): for item in items: - if item.poll is None or item.poll(context): + if item.poll is None or context is None or item.poll(context): yield item self.items = items_gen -class NodeItem(): - def __init__(self, nodetype, label=None, settings={}, poll=None): +class NodeItem: + def __init__(self, nodetype, label=None, settings=None, poll=None): + + if settings is None: + settings = {} + self.nodetype = nodetype self._label = label self.settings = settings @@ -73,7 +77,7 @@ class NodeItem(): ops.value = setting[1] -class NodeItemCustom(): +class NodeItemCustom: def __init__(self, poll=None, draw=None): self.poll = poll self.draw = draw @@ -127,8 +131,6 @@ def register_node_categories(identifier, cat_list): if cat.poll(context): layout.menu("NODE_MT_category_%s" % cat.identifier) - bpy.types.NODE_MT_add.append(draw_add_menu) - # stores: (categories list, menu draw function, submenu types, panel types) _node_categories[identifier] = (cat_list, draw_add_menu, menu_types, panel_types) @@ -136,7 +138,7 @@ def register_node_categories(identifier, cat_list): def node_categories_iter(context): for cat_type in _node_categories.values(): for cat in cat_type[0]: - if cat.poll and cat.poll(context): + if cat.poll and ((context is None) or cat.poll(context)): yield cat @@ -147,7 +149,6 @@ def node_items_iter(context): def unregister_node_cat_types(cats): - bpy.types.NODE_MT_add.remove(cats[1]) for mt in cats[2]: bpy.utils.unregister_class(mt) for pt in cats[3]: @@ -166,3 +167,8 @@ def unregister_node_categories(identifier=None): for cat_types in _node_categories.values(): unregister_node_cat_types(cat_types) _node_categories.clear() + + +def draw_node_categories_menu(self, context): + for cats in _node_categories.values(): + cats[1](self, context) |