addremoveinlets.gd 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. extends Control
  2. signal add_inlet
  3. signal remove_inlet
  4. var undo_redo: UndoRedo
  5. var minimum_inlet_count
  6. var maximum_inlet_count
  7. var current_inlet_count
  8. func _ready() -> void:
  9. minimum_inlet_count = get_meta("min")
  10. maximum_inlet_count = get_meta("max")
  11. current_inlet_count = get_meta("default")
  12. check_buttons()
  13. func _on_add_inlet_button_button_down() -> void:
  14. undo_redo.create_action("Add Inlet")
  15. undo_redo.add_do_method(add_new)
  16. undo_redo.add_undo_method(remove)
  17. undo_redo.commit_action()
  18. func add_new() -> void:
  19. add_inlet.emit()
  20. current_inlet_count += 1
  21. set_meta("inlet_count", current_inlet_count)
  22. check_buttons()
  23. func _on_remove_inlet_button_button_down() -> void:
  24. undo_redo.create_action("Remove Inlet")
  25. undo_redo.add_do_method(remove)
  26. undo_redo.add_undo_method(add_new)
  27. undo_redo.commit_action()
  28. func remove() -> void:
  29. remove_inlet.emit()
  30. current_inlet_count -= 1
  31. set_meta("inlet_count", current_inlet_count)
  32. check_buttons()
  33. func check_buttons():
  34. if current_inlet_count == maximum_inlet_count:
  35. $VBoxContainer/HBoxContainer/AddInletButton.disabled = true
  36. else:
  37. $VBoxContainer/HBoxContainer/AddInletButton.disabled = false
  38. if current_inlet_count == minimum_inlet_count:
  39. $VBoxContainer/HBoxContainer/RemoveInletButton.disabled = true
  40. else:
  41. $VBoxContainer/HBoxContainer/RemoveInletButton.disabled = false
  42. func restore_inlets():
  43. print("current meta for inlet count is " + str(get_meta("inlet_count")))
  44. var restore_inlet_count = get_meta("inlet_count")
  45. while restore_inlet_count > current_inlet_count:
  46. _on_add_inlet_button_button_down()
  47. while restore_inlet_count < current_inlet_count:
  48. _on_remove_inlet_button_button_down()
  49. print("current inlet count is " + str(current_inlet_count))