pokepurple/addons/twitcher/editor/setup/page_utilities.gd
Mario Steele c11a4ebbc2 Initial Commit
Initial commit of Code Base.
2025-06-12 14:31:14 -05:00

74 lines
2.7 KiB
GDScript

@tool
extends MarginContainer
const script_path: String = "res://addons/twitcher/twitch_service.tscn"
const autoload_name: String = "Twitch"
const setting_key: String = "autoload/%s" % autoload_name
const setting_value: String = "*" + script_path
@onready var autoload_install: Button = %AutoloadInstall
@onready var autoload_info: Label = %AutoloadInfo
@onready var autoload_description: RichTextLabel = %AutoloadDescription
func _ready() -> void:
autoload_description.text = autoload_description.text.format({
"autoload_name": autoload_name
})
autoload_install.pressed.connect(_on_install_autoload_pressed)
_update_install_autoload()
func _update_install_autoload() -> void:
if ProjectSettings.has_setting(setting_key):
autoload_install.text = "Uninstall Autoload"
else:
autoload_install.text = "Install Autoload"
func _on_install_autoload_pressed() -> void:
if ProjectSettings.has_setting(setting_key):
_uninstall_autoload()
else:
_install_autload()
_update_install_autoload()
func _uninstall_autoload() -> void:
ProjectSettings.clear(setting_key)
var err = ProjectSettings.save()
if err == OK:
autoload_info.text = "Autoload '%s' uninstalled successfully!\nYou might need to reload the current project for changes to fully apply everywhere in the editor immediately." % autoload_name
print("Successfully removed autoload: %s" % autoload_name)
else:
autoload_info.text = "Failed to save project settings.\nError code: %s" % error_string(err)
printerr("Failed to save project settings! Error: ", error_string(err))
func _install_autload() -> void:
if not FileAccess.file_exists(script_path):
OS.alert("The TwitchService file does not exist at:\n" + script_path, "Error")
return
var setting_key: String = "autoload/%s" % autoload_name
var setting_value: String = "*" + script_path
if ProjectSettings.has_setting(setting_key):
var existing_value = ProjectSettings.get_setting(setting_key)
if existing_value == setting_value:
autoload_info.text = "Autoload '%s' with the same path is already installed." % autoload_name
return
else:
autoload_info.text = "Autoload '%s' already exists but points to a different path (%s)." % [autoload_name, existing_value]
return
ProjectSettings.set_setting(setting_key, setting_value)
var err = ProjectSettings.save()
if err == OK:
autoload_info.text = "Autoload '%s' installed successfully!\nYou might need to reload the current project for changes to fully apply everywhere in the editor immediately." % autoload_name
print("Successfully added autoload: %s -> %s" % [autoload_name, script_path])
else:
autoload_info.text = "Failed to save project settings.\nError code: %s" % error_string(err)
printerr("Failed to save project settings! Error: ", error_string(err))