Fixed Node Spawn Positioning Issues
This commit is contained in:
parent
6bac303dea
commit
2e5fbad9be
BIN
Nodes/__pycache__/blueprint_node.cpython-312.pyc
Normal file
BIN
Nodes/__pycache__/blueprint_node.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
38
Nodes/blueprint_node.py
Normal file
38
Nodes/blueprint_node.py
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from OdenGraphQt import BaseNode
|
||||||
|
from Qt import QtCore
|
||||||
|
|
||||||
|
class BlueprintNode(BaseNode):
|
||||||
|
"""
|
||||||
|
A placeholder node used to preview placement before spawning
|
||||||
|
the real node. It has a distinct color and minimal UI.
|
||||||
|
"""
|
||||||
|
__identifier__ = 'bunny-lab.io.blueprint'
|
||||||
|
NODE_NAME = 'Blueprint Node'
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super(BlueprintNode, self).__init__()
|
||||||
|
# Display a name so the user sees "Click to Place Node"
|
||||||
|
self.set_name("Click to Place Node")
|
||||||
|
|
||||||
|
# Give it a bluish color + white text, for visibility
|
||||||
|
self.set_color(60, 120, 220) # R, G, B
|
||||||
|
self.view.text_color = (255, 255, 255, 200)
|
||||||
|
self.view.border_color = (255, 255, 255, 180)
|
||||||
|
|
||||||
|
# Make it slightly transparent if desired (alpha=150)
|
||||||
|
self.view._bg_color = (60, 120, 220, 150)
|
||||||
|
|
||||||
|
# Remove any default inputs/outputs (make it minimal)
|
||||||
|
for port in self.input_ports() + self.output_ports():
|
||||||
|
self.model.delete_port(port.name(), port.port_type)
|
||||||
|
|
||||||
|
# Store the "actual node" we want to spawn
|
||||||
|
self.create_property("actual_node_type", "", widget_type=0)
|
||||||
|
|
||||||
|
def process_input(self):
|
||||||
|
"""
|
||||||
|
We do nothing here; it is purely a placeholder node.
|
||||||
|
"""
|
||||||
|
pass
|
14
borealis.py
14
borealis.py
@ -21,13 +21,11 @@ def _patched_setSelectionArea(self, painterPath, second_arg, *args, **kwargs):
|
|||||||
# Monkey-patch the setSelectionArea method.
|
# Monkey-patch the setSelectionArea method.
|
||||||
QtWidgets.QGraphicsScene.setSelectionArea = _patched_setSelectionArea
|
QtWidgets.QGraphicsScene.setSelectionArea = _patched_setSelectionArea
|
||||||
|
|
||||||
# --- End of patch section ---
|
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import pkgutil
|
import pkgutil
|
||||||
import importlib
|
import importlib
|
||||||
import inspect
|
import inspect
|
||||||
from Qt import QtWidgets, QtCore
|
from Qt import QtWidgets, QtCore, QtGui
|
||||||
from OdenGraphQt import NodeGraph, BaseNode
|
from OdenGraphQt import NodeGraph, BaseNode
|
||||||
|
|
||||||
def import_nodes_from_folder(package_name):
|
def import_nodes_from_folder(package_name):
|
||||||
@ -47,12 +45,14 @@ def import_nodes_from_folder(package_name):
|
|||||||
def make_node_command(graph, nt):
|
def make_node_command(graph, nt):
|
||||||
"""
|
"""
|
||||||
Given a NodeGraph instance and a node type string nt, return a command
|
Given a NodeGraph instance and a node type string nt, return a command
|
||||||
function that creates a node of that type.
|
function that creates a node of that type at the current mouse location.
|
||||||
"""
|
"""
|
||||||
def command():
|
def command():
|
||||||
try:
|
try:
|
||||||
node = graph.create_node(nt)
|
# Get the current cursor position in scene coordinates
|
||||||
# (No need to force top-level if nodes are created as top-level by default.)
|
pos = graph.cursor_pos()
|
||||||
|
# Create the node with the current cursor position.
|
||||||
|
node = graph.create_node(nt, pos=pos)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error creating node of type {nt}: {e}")
|
print(f"Error creating node of type {nt}: {e}")
|
||||||
return command
|
return command
|
||||||
@ -103,4 +103,4 @@ if __name__ == '__main__':
|
|||||||
timer.timeout.connect(global_update)
|
timer.timeout.connect(global_update)
|
||||||
timer.start(500)
|
timer.start(500)
|
||||||
|
|
||||||
sys.exit(app.exec())
|
sys.exit(app.exec())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user