godot_data_editor/data_editor.gd
2017-08-03 11:35:44 +02:00

98 lines
2.8 KiB
GDScript

tool
extends EditorPlugin
var data_editor_class = preload("data_editor_gui.tscn")
var data_class = preload("data.gd")
var gui = null
var all_items = {}
signal data_item_class_opened(item_class)
func _enter_tree():
OS.set_low_processor_usage_mode(true)
check_for_data_singleton()
check_plugin_settings()
gui = data_editor_class.instance()
get_editor_viewport().add_child(gui)
gui.set_area_as_parent_rect()
gui.hide()
# Remove control and data singleton
func _exit_tree():
OS.set_low_processor_usage_mode(false)
get_editor_viewport().remove_child(gui)
gui.free()
var config = ConfigFile.new()
var status = config.load("res://engine.cfg")
if status == OK:
if config.has_section_key("autoload", "data"):
config.set_value("autoload", "data", null)
config.save("res://engine.cfg")
# Check if the Classes and Data folders exist
Globals.clear("item_manager")
func _ready():
gui.connect("class_edit_requested", self, "edit_class", [])
Globals.set("debug_is_editor", true)
# Opens the selected class in the Script Editor
func edit_class(item_class):
edit_resource(item_class)
func check_for_data_singleton():
var config = ConfigFile.new()
var status = config.load("res://engine.cfg")
if status == OK:
if not config.has_section_key("autoload", "data"):
config.set_value("autoload", "data", "*res://addons/DataEditor/data.gd")
config.save("res://engine.cfg")
#var directory = Directory.new()
#directory.copy("res://engine.cfg", "res://engine.cfg_BACKUP")
# Load the plugin settings and adds default if they do not exist.
# TODO: Obtain defaults from dialog
func check_plugin_settings():
var config = ConfigFile.new()
var status = config.load("res://addons/DataEditor/plugin.cfg")
if status == OK:
if not config.has_section_key("custom", "class_directory"):
config.set_value("custom", "class_directory", "res://classes")
# TODO: Create folders
if not config.has_section_key("custom", "extension"):
config.set_value("custom", "extension", "json")
if not config.has_section_key("custom", "output_directory"):
config.set_value("custom", "output_directory", "res://data")
# TODO: Create folders
if not config.has_section_key("custom", "password"):
config.set_value("custom", "password", "")
if not config.has_section_key("custom", "sanitize_ids"):
config.set_value("custom", "sanitize_ids", true)
if not config.has_section_key("custom", "serializer"):
config.set_value("custom", "serializer", "json")
config.save("res://addons/DataEditor/plugin.cfg")
# Virtual: Name of the tool button on top
func get_name():
return "Data"
# Virtual: Makes sure that the control owns the main screen
func has_main_screen():
return true
# Virtual:
func make_visible(visible):
if(visible):
gui.reload()
gui.show()
else:
gui.hide()