[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57103] trunk/blender/release/scripts/ startup/bl_operators/node.py: workaround for search menu enum using freed python scripts ( py api limitation).
Campbell Barton
ideasman42 at gmail.com
Wed May 29 13:55:35 CEST 2013
Revision: 57103
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57103
Author: campbellbarton
Date: 2013-05-29 11:55:35 +0000 (Wed, 29 May 2013)
Log Message:
-----------
workaround for search menu enum using freed python scripts (py api limitation).
Modified Paths:
--------------
trunk/blender/release/scripts/startup/bl_operators/node.py
Modified: trunk/blender/release/scripts/startup/bl_operators/node.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_operators/node.py 2013-05-29 11:49:39 UTC (rev 57102)
+++ trunk/blender/release/scripts/startup/bl_operators/node.py 2013-05-29 11:55:35 UTC (rev 57103)
@@ -163,10 +163,15 @@
bl_idname = "node.add_search"
bl_label = "Search and Add Node"
bl_options = {'REGISTER', 'UNDO'}
+ bl_property = "node_item"
+ _enum_item_hack = []
+
# Create an enum list from node items
def node_enum_items(self, context):
- enum_items = []
+ enum_items = NODE_OT_add_search._enum_item_hack
+ enum_items.clear()
+
for index, item in enumerate(nodeitems_utils.node_items_iter(context)):
nodetype = getattr(bpy.types, item.nodetype, None)
if nodetype:
@@ -175,14 +180,13 @@
# Look up the item based on index
def find_node_item(self, context):
+ node_item = int(self.node_item)
for index, item in enumerate(nodeitems_utils.node_items_iter(context)):
- if str(index) == self.type:
+ if index == node_item:
return item
return None
- # XXX this should be called 'node_item' but the operator search
- # property is hardcoded to 'type' by a hack in bpy_operator_wrap.c ...
- type = EnumProperty(
+ node_item = EnumProperty(
name="Node Type",
description="Node type",
items=node_enum_items,
@@ -190,6 +194,10 @@
def execute(self, context):
item = self.find_node_item(context)
+
+ # no need to keep
+ self._enum_item_hack.clear()
+
if item:
# apply settings from the node item
for setting in item.settings.items():
More information about the Bf-blender-cvs
mailing list