# HACK
# Declarative settings in Godot don't really work without patching Godot
# source code. Workaround is to store a script to setup all of the settings.
# Annoying thing is that it can only be run from within the editor!

# ALERT
# Open this script within it's contained project and press Ctrl-Shift-x to apply.

@tool
extends EditorScript

var settings: EditorSettings = EditorInterface.get_editor_settings()

func apply_setting(setting_name: String, new_value):
	var old_value = settings.get_setting(setting_name)
	settings.set_setting(setting_name, new_value)
	print(setting_name + ": " + str(old_value) + " -> " + str(new_value))

func _run():
	print("Applying custom Godot editor settings:")
	apply_setting("interface/editor/dock_tab_style", 2)
	apply_setting("interface/theme/preset", "Custom")
	apply_setting("inerface/theme/base_color", Color("{{base00}}ff"))
	apply_setting("interface/theme/accent_color", Color("{{base09}}ff"))
	apply_setting("text_editor/theme/color_theme", "Custom")
	apply_setting("text_editor/theme/highlighting/symbol_color",Color("{{base0E}}ff"))
	apply_setting("text_editor/theme/highlighting/keyword_color",Color("{{base0E}}ff"))
	apply_setting("text_editor/theme/highlighting/control_flow_keyword_color",Color("{{base09}}ff"))
	apply_setting("text_editor/theme/highlighting/control_flow_keyword_color",Color("{{base0A}}ff"))
	apply_setting("text_editor/theme/highlighting/base_type_color",Color("{{base09}}ff"))
	apply_setting("text_editor/theme/highlighting/engine_type_color",Color("{{base09}}ff"))
	apply_setting("text_editor/theme/highlighting/user_type_color",Color("{{base09}}ff"))
	apply_setting("text_editor/theme/highlighting/comment_color",Color("c9c8c980"))
	apply_setting("text_editor/theme/highlighting/doc_comment_color",Color("{{base0B}}cc"))
	apply_setting("text_editor/theme/highlighting/string_color",Color("{{base0B}}ff"))
	apply_setting("text_editor/theme/highlighting/background_color",Color("{{base00}}ff"))
	apply_setting("text_editor/theme/highlighting/completion_background_color",Color("{{base01}}ff"))
	apply_setting("text_editor/theme/highlighting/completion_selected_color",Color("ffffff12"))
	apply_setting("text_editor/theme/highlighting/completion_existing_color",Color("ffffff24"))
	apply_setting("text_editor/theme/highlighting/completion_scroll_color",Color("ffffff4a"))
	apply_setting("text_editor/theme/highlighting/completion_scroll_hovered_color",Color("ffffff66"))
	apply_setting("text_editor/theme/highlighting/completion_font_color",Color("{{base07}}ff"))
	apply_setting("text_editor/theme/highlighting/text_color",Color("{{base07}}ff"))
	apply_setting("text_editor/theme/highlighting/line_number_color",Color("c9c8c980"))
	apply_setting("text_editor/theme/highlighting/safe_line_number_color",Color("{{base0D}}bf"))
	apply_setting("text_editor/theme/highlighting/caret_color",Color("{{base07}}ff"))
	apply_setting("text_editor/theme/highlighting/caret_background_color",Color("{{base00}}ff"))
	apply_setting("text_editor/theme/highlighting/text_selected_color",Color("ffffff12"))
	apply_setting("text_editor/theme/highlighting/selection_color",Color("{{base09}}33"))
	apply_setting("text_editor/theme/highlighting/brace_mismatch_color",Color("{{base08}}ff"))
	apply_setting("text_editor/theme/highlighting/current_line_color",Color("ffffff12"))
	apply_setting("text_editor/theme/highlighting/line_length_guideline_color",Color("{{base02}}ff"))
	apply_setting("text_editor/theme/highlighting/word_highlighted_color",Color("ffffff12"))
	apply_setting("text_editor/theme/highlighting/number_color",Color("{{base0D}}ff"))
	apply_setting("text_editor/theme/highlighting/function_color",Color("{{base0E}}ff"))
	apply_setting("text_editor/theme/highlighting/member_variable_color",Color("{{base0A}}ff"))
	apply_setting("text_editor/theme/highlighting/mark_color",Color("{{base08}}4d"))
	apply_setting("text_editor/theme/highlighting/warning_color",Color("{{base0A}}4d"))
	apply_setting("text_editor/theme/highlighting/bookmark_color",Color("{{base0E}}ff"))
	apply_setting("text_editor/theme/highlighting/breakpoint_color",Color("{{base08}}ff"))
	apply_setting("text_editor/theme/highlighting/executing_line_color",Color("{{base0C}}ff"))
	apply_setting("text_editor/theme/highlighting/code_folding_color",Color("ffffff45"))
	apply_setting("text_editor/theme/highlighting/folded_code_region_color",Color("{{base08}}33"))
	apply_setting("text_editor/theme/highlighting/search_result_color",Color("{{base0C}}33"))
	apply_setting("text_editor/theme/highlighting/search_result_border_color",Color("{{base0F}}33"))
	apply_setting("text_editor/theme/highlighting/gdscript/function_definition_color",Color("{{base0F}}ff"))
	apply_setting("text_editor/theme/highlighting/gdscript/global_function_color",Color("{{base0E}}ff"))
	apply_setting("text_editor/theme/highlighting/gdscript/node_path_color",Color("{{base0B}}ff"))
	apply_setting("text_editor/theme/highlighting/gdscript/node_reference_color",Color("{{base0A}}ff"))
	apply_setting("text_editor/theme/highlighting/gdscript/annotation_color",Color("{{base0C}}ff"))
	apply_setting("text_editor/theme/highlighting/gdscript/string_name_color",Color("{{base0D}}ff"))
	apply_setting("text_editor/theme/highlighting/comment_markers/critical_color",Color("{{base08}}ff"))
	apply_setting("text_editor/theme/highlighting/comment_markers/warning_color",Color("{{base0A}}ff"))
	apply_setting("text_editor/theme/highlighting/comment_markers/notice_color",Color("{{base0D}}ff"))
	apply_setting("interface/theme/contrast", 0.35)
	apply_setting("interface/scene_tabs/restore_scenes_on_load", false)
	apply_setting("interface/multi_window/enable", false)
	apply_setting("interface/multi_window/restore_windows_on_load", false)
	apply_setting("network/connection/check_for_updates", 0)
	apply_setting("network/language_server/show_native_symbols_in_editor", true)
	apply_setting("network/language_server/use_thread", true)
	apply_setting("filesystem/external_programs/raster_image_editor", "pinta")
	apply_setting("filesystem/external_programs/vector_image_editor", "inkscape")
	apply_setting("filesystem/external_programs/audio_editor", "tenacity")
	apply_setting("filesystem/external_programs/3d_model_editor", "blender")
	apply_setting("filesystem/external_programs/terminal_emulator", "alacritty")
	apply_setting("filesystem/external_programs/terminal_emulator_flags", "")
	apply_setting("filesystem/directories/autoscan_project_path", "/home/emmet/Projects")
	apply_setting("filesystem/directories/default_project_path", "/home/emmet/Projects")
	apply_setting("filesystem/import/blender/blender_path", "/home/emmet/.nix-profile/bin/blender")
	apply_setting("text_editor/behavior/indent/size", 2)
	apply_setting("text_editor/external/exec_path", "zeditor")
	apply_setting("text_editor/external/exec_flags", "{project} {file}:{line}:{col}")
	apply_setting("text_editor/external/use_external_editor", true)
	apply_setting("editors/3d/navigation/emulate_numpad", false)
	apply_setting("project_manager/directory_naming_convention", 2)
