diff options
author | Lukas Toenne <lukas.toenne@googlemail.com> | 2013-05-08 19:41:05 +0400 |
---|---|---|
committer | Lukas Toenne <lukas.toenne@googlemail.com> | 2013-05-08 19:41:05 +0400 |
commit | 8863222a905bba7e8cccd32d434a31a5d3654b6e (patch) | |
tree | 1b1874c63a23a28380fb43014507baa98eab32c5 /release/scripts/modules/nodeitems_utils.py | |
parent | 8542d97f73f99b1fad24f51a94bf08d44d4879d1 (diff) |
A bit more pythonic way of using the items callback in node categories. The category.items attribute is now a function taking a context parameter instead of a property. This can be used for checking validity, e.g. for doing node group recursion checks, and filter out unusable items.
Diffstat (limited to 'release/scripts/modules/nodeitems_utils.py')
-rw-r--r-- | release/scripts/modules/nodeitems_utils.py | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/release/scripts/modules/nodeitems_utils.py b/release/scripts/modules/nodeitems_utils.py index 7ab5d8b3180..3fbafc3ae9b 100644 --- a/release/scripts/modules/nodeitems_utils.py +++ b/release/scripts/modules/nodeitems_utils.py @@ -26,21 +26,17 @@ class NodeCategory(): def poll(cls, context): return True - @property - def items(self): - if hasattr(self, '_items'): - return self._items - elif hasattr(self, '_itemfunc'): - return self._itemfunc(self) - - def __init__(self, identifier, name, description="", items=[]): + def __init__(self, identifier, name, description="", items=None): self.identifier = identifier self.name = name self.description = description - if callable(items): - self._itemfunc = items + + if items is None: + self.items = lambda context: [] + elif callable(items): + self.items = items else: - self._items = items + self.items = lambda context: items class NodeItem(): def __init__(self, nodetype, label=None, settings={}): @@ -69,7 +65,7 @@ def register_node_categories(identifier, cat_list): layout = self.layout col = layout.column() default_context = bpy.app.translations.contexts.default - for item in self.category.items: + for item in self.category.items(context): op = col.operator("node.add_node", text=item.label, text_ctxt=default_context) op.type = item.nodetype op.use_transform = True |