mirror of
https://github.com/Relintai/godot_data_editor.git
synced 2024-11-13 06:27:19 +01:00
98 lines
2.8 KiB
GDScript
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()
|
|
|
|
|