bsc_thesis/code/blender_maxwell/operators/connect_viewer.py

68 lines
1.6 KiB
Python

import bpy
class BlenderMaxwellConnectViewer(bpy.types.Operator):
bl_idname = "blender_maxwell.connect_viewer"
bl_label = "Connect Viewer to Active"
bl_description = "Connect active node to Viewer Node"
bl_options = {'REGISTER', 'UNDO'}
@classmethod
def poll(cls, context):
space = context.space_data
return (
space.type == 'NODE_EDITOR'
and space.node_tree is not None
and space.node_tree.bl_idname == "MaxwellSimTreeType"
)
def invoke(self, context, event):
node_tree = context.space_data.node_tree
mlocx = event.mouse_region_x
mlocy = event.mouse_region_y
bpy.ops.node.select(
extend=False,
location=(mlocx, mlocy),
)
select_node = context.selected_nodes[0]
for node in node_tree.nodes:
if node.bl_idname == "ViewerNodeType":
viewer_node = node
break
else:
viewer_node = node_tree.nodes.new("ViewerNodeType")
viewer_node.location.x = select_node.location.x + 250
viewer_node.location.y = select_node.location.y
select_node.select = False
new_link = True
for link in viewer_node.inputs[0].links:
if link.from_node.name == select_node.name:
new_link = False
continue
node_tree.links.remove(link)
if new_link:
node_tree.links.new(select_node.outputs[0], viewer_node.inputs[0])
return {'FINISHED'}
####################
# - Blender Registration
####################
BL_REGISTER = [
BlenderMaxwellConnectViewer,
]
BL_KMI_REGISTER = [
dict(
_=(
BlenderMaxwellConnectViewer.bl_idname,
"LEFTMOUSE",
"PRESS",
),
ctrl=True, ## CTRL
shift=True, ## Shift
alt=False, ## Alt
),
]