valueslider.gd 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. extends VBoxContainer
  2. @onready var window := $BreakFileMaker
  3. @onready var editor := window.get_node("AutomationEditor")
  4. #Called when the node enters the scene tree for the first time.
  5. func _ready() -> void:
  6. #$HSplitContainer/ValueLabel.text = str($HSplitContainer/HSlider.value) # initial value
  7. $HSplitContainer/LineEdit.text = str($HSplitContainer/HSlider.value) # initial value
  8. $BreakFileMaker.hide()
  9. editor.connect("automation_updated", Callable(self, "_on_automation_data_received"))
  10. func _on_h_slider_value_changed(value: float) -> void:
  11. #$HSplitContainer/ValueLabel.text = str(value)
  12. $HSplitContainer/LineEdit.text = str(value)
  13. func _on_line_edit_text_submitted(new_text: String) -> void:
  14. #check if input from text box is a valid number for the slider if not choose and appropriate value and set that
  15. if new_text.is_valid_float():
  16. var new_val = new_text.to_float()
  17. if new_val > $HSplitContainer/HSlider.max_value:
  18. $HSplitContainer/HSlider.value = $HSplitContainer/HSlider.max_value
  19. elif new_val < $HSplitContainer/HSlider.min_value:
  20. $HSplitContainer/HSlider.value = $HSplitContainer/HSlider.min_value
  21. else:
  22. $HSplitContainer/HSlider.set_value_no_signal(new_val)
  23. else:
  24. $HSplitContainer/LineEdit.text = str($HSplitContainer/HSlider.value)
  25. func _on_line_edit_focus_exited() -> void:
  26. #check if input from text box is a valid number for the slider if not choose and appropriate value and set that
  27. if $HSplitContainer/LineEdit.text.is_valid_float():
  28. var new_val = $HSplitContainer/LineEdit.text.to_float()
  29. if new_val > $HSplitContainer/HSlider.max_value:
  30. $HSplitContainer/HSlider.value = $HSplitContainer/HSlider.max_value
  31. elif new_val < $HSplitContainer/HSlider.min_value:
  32. $HSplitContainer/HSlider.value = $HSplitContainer/HSlider.min_value
  33. else:
  34. $HSplitContainer/HSlider.set_value_no_signal(new_val)
  35. else:
  36. $HSplitContainer/LineEdit.text = str($HSplitContainer/HSlider.value)
  37. #check for right click
  38. func _on_h_slider_gui_input(event: InputEvent) -> void:
  39. if $HSplitContainer/HSlider.has_meta("brk"):
  40. $HSplitContainer/HSlider/PopupMenu.set_item_disabled(0, false)
  41. $HSplitContainer/HSlider/PopupMenu.set_item_text(0, "Add Automation")
  42. else:
  43. $HSplitContainer/HSlider/PopupMenu.set_item_disabled(0, true)
  44. $HSplitContainer/HSlider/PopupMenu.set_item_text(0, "Automation is not available for this parameter")
  45. if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_RIGHT and event.pressed:
  46. var local_pos = DisplayServer.mouse_get_position()
  47. # Show popup at global mouse position
  48. $HSplitContainer/HSlider/PopupMenu.popup()
  49. $HSplitContainer/HSlider/PopupMenu.set_position(local_pos)
  50. # Prevent default context menu or input propagation if needed
  51. accept_event()
  52. func _on_popup_menu_index_pressed(index: int) -> void:
  53. match index:
  54. 0:
  55. $BreakFileMaker.position = DisplayServer.mouse_get_position()
  56. $BreakFileMaker.show()
  57. if $HSplitContainer/HSlider.has_meta("brk_data"):
  58. $BreakFileMaker/AutomationEditor.read_automation($HSplitContainer/HSlider.get_meta("brk_data"))
  59. 1:
  60. $HSplitContainer/HSlider.set_meta("brk_data", null)
  61. $BreakFileMaker/AutomationEditor.reset_automation()
  62. $HSplitContainer/HSlider.editable = true
  63. $HSplitContainer/HSlider/PopupMenu.set_item_text(0, "Add Automation")
  64. $HSplitContainer/HSlider/PopupMenu.remove_item(1)
  65. func _on_automation_data_received(data):
  66. $HSplitContainer/HSlider.set_meta("brk_data", data)
  67. print($HSplitContainer/HSlider.get_meta("brk_data"))
  68. $HSplitContainer/HSlider.editable = false
  69. $HSplitContainer/HSlider/PopupMenu.set_item_text(0, "Edit Automation")
  70. if $HSplitContainer/HSlider/PopupMenu.get_item_count() <= 1:
  71. $HSplitContainer/HSlider/PopupMenu.add_item("Remove Automation", 1)
  72. func _on_save_automation_button_down() -> void:
  73. $BreakFileMaker.hide()
  74. func _on_save_automation_2_button_down() -> void:
  75. $BreakFileMaker.hide()
  76. func _on_break_file_maker_close_requested() -> void:
  77. $BreakFileMaker.hide()