123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- tool
- extends Control
-
- var editor_reference
- var editorPopup
-
-
- # This is the information of this event and it will get parsed and saved to the JSON file.
- var event_data = {
- 'call_node': {
- 'target_node_path': '',
- 'method_name': '',
- 'arguments': []
- }
- }
-
-
- func load_data(data):
- event_data = data
-
- if (not event_data['call_node']['arguments'] is Array):
- event_data['call_node']['arguments'] = []
-
- for i in range(event_data['call_node']['arguments'].size()):
- if (event_data['call_node']['arguments'][i] == null):
- event_data['call_node']['arguments'][i] = ''
-
- $PanelContainer/VBoxContainer/Properties/TargetNodeEdit.text = event_data['call_node']['target_node_path']
- $PanelContainer/VBoxContainer/Properties/CallMethodEdit.text = event_data['call_node']['method_name']
- $PanelContainer/VBoxContainer/Properties/ArgumentsSpinBox.value = event_data['call_node']['arguments'].size()
-
- _create_argument_controls()
-
-
- # signal callbacks
-
- func _on_Target_LineEdit_text_changed(new_text):
- event_data['call_node']['target_node_path'] = new_text
-
- func _on_Method_LineEdit_text_changed(new_text):
- event_data['call_node']['method_name'] = new_text
-
- func _on_ArgumentsSpinBox_value_changed(value):
- event_data['call_node']['arguments'].resize(max(0, value))
-
- for i in range(event_data['call_node']['arguments'].size()):
- if (event_data['call_node']['arguments'][i] == null):
- event_data['call_node']['arguments'][i] = ''
-
- _create_argument_controls()
- pass
-
- func _on_argument_value_changed(value, arg_index):
- if (arg_index < 0 or arg_index >= event_data['call_node']['arguments'].size()):
- return
-
- event_data['call_node']['arguments'][arg_index] = str(value)
- pass
-
- # helpers
- func _create_argument_controls():
- if (not event_data['call_node']['arguments'] is Array):
- return
-
- # clear old
- for c in $PanelContainer/VBoxContainer/Arguments.get_children():
- $PanelContainer/VBoxContainer/Arguments.remove_child(c)
- c.queue_free()
-
- # create controls
- var index = 0
- for a in event_data['call_node']['arguments']:
- var container = HBoxContainer.new()
- container.name = "Argument%s" % index
-
- var label = Label.new()
- label.name = "ArgumentLabel"
- label.text = "Argument %s:" % index
- label.rect_min_size.x = 100
- container.add_child(label)
-
- var edit = LineEdit.new()
- edit.name = "ArgumentValue"
- edit.text = str(a)
- edit.connect("text_changed", self, "_on_argument_value_changed", [ index ])
- edit.rect_min_size.x = 250
- container.add_child(edit)
-
- $PanelContainer/VBoxContainer/Arguments.add_child(container)
-
- index += 1
-
- pass
|