mirror of
https://codeberg.org/StreamGraph/StreamGraph.git
synced 2024-11-13 19:49:55 +01:00
sync node renames and position in group instances
This commit is contained in:
parent
b2d96a471e
commit
802749704f
5 changed files with 62 additions and 9 deletions
|
@ -45,6 +45,8 @@ signal node_removed_from_group(node_id: String, remove_connections: bool, deck:
|
|||
signal nodes_connected_in_group(from_node_id: String, to_node_id: String, from_output_port: int, to_input_port: int, deck: Deck)
|
||||
signal nodes_disconnected_in_group(from_node_id: String, to_node_id: String, from_output_port: int, to_input_port: int, deck: Deck)
|
||||
signal node_port_value_updated(node_id: String, port_idx: int, new_value: Variant, deck: Deck)
|
||||
signal node_renamed(node_id: String, new_name: String, deck: Deck)
|
||||
signal node_moved(node_id: String, new_position: Dictionary, deck: Deck)
|
||||
#endregion
|
||||
|
||||
## Instantiate a node by its' [member DeckNode.node_type] and add it to this deck.[br]
|
||||
|
@ -82,6 +84,18 @@ func add_node_inst(node: DeckNode, assign_id: String = "", assign_to_self: bool
|
|||
node_port_value_updated.emit(node._id, port_idx, new_value, self)
|
||||
)
|
||||
|
||||
node.renamed.connect(
|
||||
func(new_name: String):
|
||||
if is_group && emit_group_signals:
|
||||
node_renamed.emit(node._id, new_name, self)
|
||||
)
|
||||
|
||||
node.position_updated.connect(
|
||||
func(new_position: Dictionary):
|
||||
if is_group && emit_group_signals:
|
||||
node_moved.emit(node._id, new_position, self)
|
||||
)
|
||||
|
||||
return node
|
||||
|
||||
|
||||
|
|
|
@ -41,11 +41,7 @@ static func add_group_from_dict(data: Dictionary, deck_id: String, instance_id:
|
|||
var instances: Dictionary = decks.get(deck_id, {})
|
||||
instances[instance_id] = group
|
||||
decks[deck_id] = instances
|
||||
group.node_added_to_group.connect(DeckHolder._on_node_added_to_group)
|
||||
group.node_removed_from_group.connect(DeckHolder._on_node_removed_from_group)
|
||||
group.nodes_connected_in_group.connect(DeckHolder._on_nodes_connected_in_group)
|
||||
group.nodes_disconnected_in_group.connect(DeckHolder._on_nodes_disconnected_in_group)
|
||||
group.node_port_value_updated.connect(DeckHolder._on_node_port_value_updated)
|
||||
connect_group_signals(group)
|
||||
return group
|
||||
|
||||
|
||||
|
@ -61,12 +57,18 @@ static func add_empty_group() -> Deck:
|
|||
group.id = UUID.v4()
|
||||
group.instance_id = UUID.v4()
|
||||
decks[group.id] = {group.instance_id: group}
|
||||
connect_group_signals(group)
|
||||
return group
|
||||
|
||||
|
||||
static func connect_group_signals(group: Deck) -> void:
|
||||
group.node_added_to_group.connect(DeckHolder._on_node_added_to_group)
|
||||
group.node_removed_from_group.connect(DeckHolder._on_node_removed_from_group)
|
||||
group.nodes_connected_in_group.connect(DeckHolder._on_nodes_connected_in_group)
|
||||
group.nodes_disconnected_in_group.connect(DeckHolder._on_nodes_disconnected_in_group)
|
||||
group.node_port_value_updated.connect(DeckHolder._on_node_port_value_updated)
|
||||
return group
|
||||
group.node_renamed.connect(DeckHolder._on_node_renamed)
|
||||
group.node_moved.connect(DeckHolder._on_node_moved)
|
||||
|
||||
|
||||
static func get_deck(id: String) -> Deck:
|
||||
|
@ -172,4 +174,28 @@ static func _on_node_port_value_updated(node_id: String, port_idx: int, new_valu
|
|||
instance.get_node(node_id).get_all_ports()[port_idx].set_value_no_signal(new_value)
|
||||
instance.emit_group_signals = true
|
||||
|
||||
|
||||
static func _on_node_renamed(node_id: String, new_name: String, deck: Deck) -> void:
|
||||
var group_id := deck.id
|
||||
for instance_id: String in decks[group_id]:
|
||||
if instance_id == deck.instance_id:
|
||||
continue
|
||||
|
||||
var instance: Deck = get_group_instance(group_id, instance_id)
|
||||
instance.emit_group_signals = false
|
||||
instance.get_node(node_id).name = new_name
|
||||
instance.emit_group_signals = true
|
||||
|
||||
|
||||
static func _on_node_moved(node_id: String, new_position: Dictionary, deck: Deck) -> void:
|
||||
var group_id := deck.id
|
||||
for instance_id: String in decks[group_id]:
|
||||
if instance_id == deck.instance_id:
|
||||
continue
|
||||
|
||||
var instance: Deck = get_group_instance(group_id, instance_id)
|
||||
instance.emit_group_signals = false
|
||||
instance.get_node(node_id).position = new_position.duplicate()
|
||||
instance.emit_group_signals = true
|
||||
|
||||
#endregion
|
||||
|
|
|
@ -66,6 +66,8 @@ signal incoming_connection_removed(from_port: int)
|
|||
|
||||
signal port_value_updated(port_idx: int, new_value: Variant)
|
||||
|
||||
signal renamed(new_name: String)
|
||||
|
||||
|
||||
## Add an input port to this node. Usually only used at initialization.
|
||||
func add_input_port(type: DeckType.Types, label: String, descriptor: String = "") -> void:
|
||||
|
@ -193,6 +195,11 @@ func remove_incoming_connection(to_port: int) -> void:
|
|||
incoming_connection_removed.emit(to_port)
|
||||
|
||||
|
||||
func rename(new_name: String) -> void:
|
||||
name = new_name
|
||||
renamed.emit(new_name)
|
||||
|
||||
|
||||
@warning_ignore("unused_parameter")
|
||||
func _event_received(event_name: StringName, event_data: Dictionary = {}) -> void:
|
||||
pass
|
||||
|
|
|
@ -18,12 +18,14 @@ func _ready() -> void:
|
|||
for port in node.get_all_ports():
|
||||
update_port(port)
|
||||
position_offset_changed.connect(_on_position_offset_changed)
|
||||
node.renamed.connect(_on_node_renamed)
|
||||
|
||||
## Connected to [signal GraphElement.position_offset_updated] and updates the
|
||||
## [member node]s properties
|
||||
func _on_position_offset_changed() -> void:
|
||||
node.position.x = position_offset.x
|
||||
node.position.y = position_offset.y
|
||||
node.position_updated.emit(node.position)
|
||||
|
||||
## Connected to [member node]s [signal position_updated] to keep parity with the
|
||||
## data position.
|
||||
|
@ -32,7 +34,7 @@ func _on_node_position_updated(new_position: Dictionary) -> void:
|
|||
position_offset.x = new_position.x
|
||||
position_offset.y = new_position.y
|
||||
position_offset_changed.connect(_on_position_offset_changed)
|
||||
print("PO: ", position_offset)
|
||||
|
||||
|
||||
## Connected to [member node]s [signal port_added] handles setting up the specified
|
||||
## [member Port.descriptor] with it's required nodes/signals etc. + adding the port
|
||||
|
@ -68,6 +70,10 @@ func _on_node_ports_updated() -> void:
|
|||
update_port(port)
|
||||
|
||||
|
||||
func _on_node_renamed(new_name: String) -> void:
|
||||
title = new_name
|
||||
|
||||
|
||||
func update_port(port: Port) -> void:
|
||||
var descriptor_split := port.descriptor.split(":")
|
||||
match descriptor_split[0]:
|
||||
|
|
|
@ -211,7 +211,7 @@ func _input(event: InputEvent) -> void:
|
|||
func _on_rename_popup_rename_confirmed(new_name: String) -> void:
|
||||
var node: DeckNodeRendererGraphNode = get_selected_nodes()[0]
|
||||
node.title = new_name
|
||||
node.node.name = new_name
|
||||
node.node.rename(new_name)
|
||||
|
||||
|
||||
func _on_rename_popup_closed() -> void:
|
||||
|
|
Loading…
Reference in a new issue