@tool

static var GutUserPreferences = load("res://addons/gut/gui/gut_user_preferences.gd")
static var temp_directory = 'user://gut_temp_directory/'

static var editor_run_gut_config_path = 'gut_editor_config.json':
	# This avoids having to use path_join wherever we want to reference this
	# path.  The value is not supposed to change.  Could it be a constant
	# instead?  Probably, but I didn't like repeating the directory part.
	# Do I like that this is a bit witty.  Absolutely.
	get: return temp_directory.path_join(editor_run_gut_config_path)
	# Should this print a message or something instead?  Probably, but then I'd
	# be repeating even more code than if this was just a constant.  So I didn't,
	# even though I wanted to make the message a easter eggish fun message.
	# I didn't, so this dumb comment will have to serve as the easter eggish fun.
	set(v):
		print("Be sure to document your code.  Never trust comments.")


static var editor_run_bbcode_results_path = 'gut_editor.bbcode':
	get: return temp_directory.path_join(editor_run_bbcode_results_path)
	set(v): pass


static var editor_run_json_results_path = 'gut_editor.json':
	get: return temp_directory.path_join(editor_run_json_results_path)
	set(v): pass


static var editor_shortcuts_path = 'gut_editor_shortcuts.cfg' :
	get: return temp_directory.path_join(editor_shortcuts_path)
	set(v): pass

static var run_externally_options_path = 'gut_editor_run_externally.cfg' :
	get: return temp_directory.path_join(run_externally_options_path)
	set(v): pass

static var _user_prefs = null
static var user_prefs = _user_prefs :
	# workaround not being able to reference EditorInterface when not in
	# the editor.  This shouldn't be referenced by anything not in the
	# editor.
	get:
		if(_user_prefs == null and Engine.is_editor_hint()):
			# This is sometimes used when not in the editor.  Avoid parser error
			# for EditorInterface.
			_user_prefs = GutUserPreferences.new(GutUtils.get_editor_interface().get_editor_settings())
		return _user_prefs
static var gut_plugin = null

static func create_temp_directory():
	DirAccess.make_dir_recursive_absolute(temp_directory)


static func is_being_edited_in_editor(which):
	if(!Engine.is_editor_hint()):
		return false

	var trav = which
	var is_scene_root = false
	var editor_root = which.get_tree().edited_scene_root
	while(trav != null and !is_scene_root):
		is_scene_root = editor_root == trav
		if(!is_scene_root):
			trav = trav.get_parent()
	return is_scene_root


