[Bf-blender-cvs] [a565324] object_nodes: Use the familiar tab/ctrl+tab keymap for opening/closing nodes.

Lukas Tönne noreply at git.blender.org
Tue Nov 24 09:42:38 CET 2015


Commit: a565324f150ae9eed4993506244646397d5c99cd
Author: Lukas Tönne
Date:   Fri Jul 17 17:11:42 2015 +0200
Branches: object_nodes
https://developer.blender.org/rBa565324f150ae9eed4993506244646397d5c99cd

Use the familiar tab/ctrl+tab keymap for opening/closing nodes.

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

M	release/scripts/startup/bl_operators/object_nodes.py

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

diff --git a/release/scripts/startup/bl_operators/object_nodes.py b/release/scripts/startup/bl_operators/object_nodes.py
index d88ea2c..c91f27d 100644
--- a/release/scripts/startup/bl_operators/object_nodes.py
+++ b/release/scripts/startup/bl_operators/object_nodes.py
@@ -53,15 +53,6 @@ class ObjectNodeTree(NodeTree):
         else:
             return None, None, None
 
-    @classmethod
-    def register(cls):
-        global node_categories
-        nodeitems_utils.register_node_categories("OBJECT_NODES", node_categories)
-
-    @classmethod
-    def unregister(cls):
-        nodeitems_utils.unregister_node_categories("OBJECT_NODES")
-
 
 class ObjectNodeBase():
     @classmethod
@@ -82,7 +73,6 @@ class ForceFieldNode(ObjectNodeBase, ObjectNode):
 
     def draw_buttons(self, context, layout):
         layout.template_ID(self, "id", new="object_nodes.force_field_nodes_new")
-        layout.operator("object_nodes.node_edit")
 
 ###############################################################################
 
@@ -149,13 +139,12 @@ class ObjectNodeEdit(Operator):
         space = context.space_data
         if space.type != 'NODE_EDITOR':
             return False
-        
-        return cls.get_node(context) is not None
+        return True
 
     def execute(self, context):
         space = context.space_data
         node = self.get_node(context)
-        has_tree = hasattr(node, "id") and node.id and isinstance(node.id, bpy.types.NodeTree)
+        has_tree = node and hasattr(node, "id") and node.id and isinstance(node.id, bpy.types.NodeTree)
         exit = self.exit or not has_tree
 
         if exit:
@@ -178,3 +167,36 @@ class ForceFieldNodesNew(Operator):
 
     def execute(self, context):
         return bpy.ops.node.new_node_tree(type='ForceFieldNodeTree', name="ForceFieldNodes")
+
+
+###############################################################################
+
+keymaps = []
+
+def register():
+    # XXX HACK, needed to have access to the operator, registration needs cleanup once moved out of operators
+    bpy.utils.register_class(ObjectNodeEdit)
+
+    nodeitems_utils.register_node_categories("OBJECT_NODES", node_categories)
+
+    # create keymap
+    wm = bpy.context.window_manager
+    km = wm.keyconfigs.default.keymaps.new(name="Node Generic", space_type='NODE_EDITOR')
+    
+    kmi = km.keymap_items.new(bpy.types.OBJECT_NODES_OT_node_edit.bl_idname, 'TAB', 'PRESS')
+    
+    kmi = km.keymap_items.new(bpy.types.OBJECT_NODES_OT_node_edit.bl_idname, 'TAB', 'PRESS', ctrl=True)
+    kmi.properties.exit = True
+    
+    keymaps.append(km)
+
+def unregister():
+    nodeitems_utils.unregister_node_categories("OBJECT_NODES")
+
+    # remove keymap
+    wm = bpy.context.window_manager
+    for km in keymaps:
+        wm.keyconfigs.default.keymaps.remove(km)
+    keymaps.clear()
+
+register()




More information about the Bf-blender-cvs mailing list