mat_maker_gd/material_maker/nodes/ios/port.gd

53 lines
1.7 KiB
GDScript

extends HBoxContainer
func _ready() -> void:
$Type.clear()
for tn in mm_io_types.type_names:
var t = mm_io_types.types[tn]
$Type.add_item(t.label)
func set_model_data(data, remaining_group_size = 0) -> int:
$Name.set_text(data.name if data.has("name") else "")
$Type.select(mm_io_types.type_names.find(data.type))
if data.has("shortdesc"):
$Description.short_description = data.shortdesc
if data.has("longdesc"):
$Description.long_description = data.longdesc
$Description.update_tooltip()
if data.has("group_size") and data.group_size > 1:
$PortGroupButton.set_state(1)
return data.group_size-1
elif remaining_group_size == 1:
$PortGroupButton.set_state(1)
return int(max(remaining_group_size-1, 0))
func update_up_down_button() -> void:
var parent = get_parent()
if parent == null:
return
$Up.disabled = (get_index() == 0)
$Down.disabled = (get_index() == get_parent().get_child_count()-2)
func _on_Name_label_changed(new_label) -> void:
get_parent().generator.set_port_name(get_index(), new_label)
func _on_Type_item_selected(ID) -> void:
get_parent().generator.set_port_type(get_index(), mm_io_types.type_names[ID])
func _on_PortGroupButton_group_size_changed(s):
get_parent().generator.set_port_group_size(get_index(), s)
get_parent().update()
func _on_Description_descriptions_changed(short_description, long_description):
get_parent().generator.set_port_descriptions(get_index(), short_description, long_description)
func _on_Delete_pressed() -> void:
get_parent().generator.delete_port(get_index())
func _on_Up_pressed() -> void:
get_parent().generator.swap_ports(get_index(), get_index()-1)
func _on_Down_pressed() -> void:
get_parent().generator.swap_ports(get_index(), get_index()+1)