mirror of
https://codeberg.org/StreamGraph/StreamGraph.git
synced 2024-11-13 19:49:55 +01:00
fa5e9997ef
here we go Reviewed-on: https://codeberg.org/Eroax/Re-DotDeck/pulls/2 Co-authored-by: Lera Elvoé <yagich@poto.cafe> Co-committed-by: Lera Elvoé <yagich@poto.cafe>
164 lines
4 KiB
GDScript
164 lines
4 KiB
GDScript
extends GraphNode
|
|
class_name DeckNodeRendererGraphNode
|
|
|
|
var node: DeckNode
|
|
|
|
|
|
func _ready() -> void:
|
|
title = node.name
|
|
node.position_updated.connect(_on_node_position_updated)
|
|
#node.port_added.connect(_on_node_port_added)
|
|
#node.port_removed.connect(_on_node_port_removed)
|
|
node.ports_updated.connect(_on_node_ports_updated)
|
|
for port in node.get_all_ports():
|
|
var descriptor_split := port.descriptor.split(":")
|
|
match descriptor_split[0]:
|
|
"button":
|
|
var button := Button.new()
|
|
add_child(button)
|
|
button.text = port.label
|
|
if port.port_type == DeckNode.PortType.OUTPUT:
|
|
button.pressed.connect(
|
|
func():
|
|
node.send(port.index_of_type, DeckType.DeckTypeBool.new(true))
|
|
)
|
|
elif port.port_type == DeckNode.PortType.INPUT:
|
|
button.pressed.connect(
|
|
func():
|
|
node._receive(port.index_of_type, DeckType.DeckTypeBool.new(true))
|
|
)
|
|
"field":
|
|
var line_edit := LineEdit.new()
|
|
add_child(line_edit)
|
|
if port.value:
|
|
line_edit.text = str(port.value)
|
|
line_edit.placeholder_text = port.label
|
|
port.value_callback = line_edit.get_text
|
|
line_edit.text_changed.connect(port.set_value)
|
|
_:
|
|
var label := Label.new()
|
|
add_child(label)
|
|
label.text = port.label
|
|
|
|
set_slot(
|
|
port.index,
|
|
port.port_type == DeckNode.PortType.INPUT,
|
|
0,
|
|
Color.WHITE,
|
|
port.port_type == DeckNode.PortType.OUTPUT,
|
|
0,
|
|
Color.WHITE,
|
|
)
|
|
|
|
|
|
func _on_position_offset_changed() -> void:
|
|
node.position.x = position_offset.x
|
|
node.position.y = position_offset.y
|
|
|
|
|
|
func _on_node_position_updated(new_position: Dictionary) -> void:
|
|
position_offset.x = new_position.x
|
|
position_offset.y = new_position.y
|
|
|
|
|
|
func _on_node_port_added(port_idx: int) -> void:
|
|
var port := node.get_all_ports()[port_idx]
|
|
|
|
var descriptor_split := port.descriptor.split(":")
|
|
match descriptor_split[0]:
|
|
"button":
|
|
var button := Button.new()
|
|
add_child(button)
|
|
button.text = port.label
|
|
if port.port_type == DeckNode.PortType.OUTPUT:
|
|
button.pressed.connect(
|
|
func():
|
|
node.send(port.index_of_type, DeckType.DeckTypeBool.new(true))
|
|
)
|
|
elif port.port_type == DeckNode.PortType.INPUT:
|
|
button.pressed.connect(
|
|
func():
|
|
node._receive(port.index_of_type, DeckType.DeckTypeBool.new(true))
|
|
)
|
|
"field":
|
|
var line_edit := LineEdit.new()
|
|
add_child(line_edit)
|
|
if port.value:
|
|
line_edit.text = str(port.value)
|
|
line_edit.placeholder_text = port.label
|
|
port.value_callback = line_edit.get_text
|
|
line_edit.text_changed.connect(port.set_value)
|
|
_:
|
|
var label := Label.new()
|
|
add_child(label)
|
|
label.text = port.label
|
|
|
|
set_slot(
|
|
port.index,
|
|
port.port_type == DeckNode.PortType.INPUT,
|
|
0,
|
|
Color.WHITE,
|
|
port.port_type == DeckNode.PortType.OUTPUT,
|
|
0,
|
|
Color.WHITE,
|
|
)
|
|
|
|
|
|
func _on_node_port_removed(port_idx: int) -> void:
|
|
set_slot(
|
|
port_idx,
|
|
false,
|
|
0,
|
|
Color.WHITE,
|
|
false,
|
|
0,
|
|
Color.WHITE,
|
|
)
|
|
|
|
get_child(port_idx).queue_free()
|
|
|
|
|
|
func _on_node_ports_updated() -> void:
|
|
clear_all_slots()
|
|
for c in get_children():
|
|
c.queue_free()
|
|
|
|
for port in node.get_all_ports():
|
|
var descriptor_split := port.descriptor.split(":")
|
|
match descriptor_split[0]:
|
|
"button":
|
|
var button := Button.new()
|
|
add_child(button)
|
|
button.text = port.label
|
|
if port.port_type == DeckNode.PortType.OUTPUT:
|
|
button.pressed.connect(
|
|
func():
|
|
node.send(port.index_of_type, DeckType.DeckTypeBool.new(true))
|
|
)
|
|
elif port.port_type == DeckNode.PortType.INPUT:
|
|
button.pressed.connect(
|
|
func():
|
|
node._receive(port.index_of_type, DeckType.DeckTypeBool.new(true))
|
|
)
|
|
"field":
|
|
var line_edit := LineEdit.new()
|
|
add_child(line_edit)
|
|
if port.value:
|
|
line_edit.text = str(port.value)
|
|
line_edit.placeholder_text = port.label
|
|
port.value_callback = line_edit.get_text
|
|
line_edit.text_changed.connect(port.set_value)
|
|
_:
|
|
var label := Label.new()
|
|
add_child(label)
|
|
label.text = port.label
|
|
|
|
set_slot(
|
|
port.index,
|
|
port.port_type == DeckNode.PortType.INPUT,
|
|
0,
|
|
Color.WHITE,
|
|
port.port_type == DeckNode.PortType.OUTPUT,
|
|
0,
|
|
Color.WHITE,
|
|
)
|