godot_data_editor/class_properties.gd

51 lines
1.5 KiB
GDScript3
Raw Normal View History

2017-08-03 11:35:44 +02:00
tool
extends Panel
var property_item_class = preload("property_item.tscn")
onready var class_properties_box = get_node("Body/Scroll/ClassProperties")
onready var no_class_properties_label = get_node("Body/Scroll/ClassProperties/NoClassPropertiesLabel")
var item = null
signal on_item_changed(item)
func build_properties(item):
self.item = item
for node in class_properties_box.get_children():
if node.has_meta("property"):
class_properties_box.remove_child(node)
var number_of_properties = 0
for property in item.get_property_list():
if property["usage"] == (PROPERTY_USAGE_SCRIPT_VARIABLE + PROPERTY_USAGE_STORAGE + PROPERTY_USAGE_EDITOR + PROPERTY_USAGE_NETWORK):
no_class_properties_label.hide()
number_of_properties += 1
var property_item = property_item_class.instance()
var property_name = property["name"]
var value = item.get(property_name)
property_item.initialize(property_name, property["type"], value, property["hint"], property["hint_string"])
property_item.connect("property_item_load_button_down", self, "_property_item_requests_file_dialog", [])
var changed_values = []
property_item.connect("on_property_value_changed", self, "item_changed", changed_values)
property_item.set_meta("property", true)
class_properties_box.add_child(property_item)
pass
if number_of_properties == 0:
no_class_properties_label.show()
func item_changed(property, value):
if item:
item.set(property, value)
emit_signal("on_item_changed", item)