82 lines
2.2 KiB
GDScript
82 lines
2.2 KiB
GDScript
extends MenuButton
|
|
|
|
const ConfigManager := preload("res://addons/run-configs/run-config-manager.gd")
|
|
const RunConfig := preload("res://addons/run-configs/models/run_config.gd")
|
|
|
|
const ConfigsEditorScene := preload("res://addons/run-configs/editor/controls/configs_editor/configs_editor.tscn")
|
|
const ConfigsEditor := preload("res://addons/run-configs/editor/controls/configs_editor/configs_editor.gd")
|
|
|
|
var configs_editor: ConfigsEditor
|
|
var _add_config_index := 0
|
|
var _no_config_index := 0
|
|
|
|
const DEFAULT_CONFIGS_TEXT = "..."
|
|
|
|
|
|
func _ready():
|
|
icon = EditorInterface.get_base_control().get_theme_icon(&"GuiTreeArrowDown", &"EditorIcons")
|
|
icon_alignment = HORIZONTAL_ALIGNMENT_RIGHT
|
|
text = DEFAULT_CONFIGS_TEXT
|
|
configs_editor = ConfigsEditorScene.instantiate()
|
|
configs_editor.hide()
|
|
|
|
EditorInterface.get_base_control().add_child(configs_editor)
|
|
configs_editor.confirmed.connect(_update, CONNECT_DEFERRED)
|
|
|
|
pressed.connect(_update)
|
|
get_popup().id_pressed.connect(_on_id_pressed)
|
|
_update() # Make sure size is properly set to fit in screen
|
|
|
|
|
|
func _exit_tree() -> void:
|
|
configs_editor.queue_free()
|
|
|
|
|
|
func _update():
|
|
var popup := get_popup()
|
|
popup.clear()
|
|
|
|
var configs := ConfigManager.load_configs()
|
|
var id := 0
|
|
|
|
if configs.size() > 0:
|
|
for config in configs:
|
|
popup.add_check_item(config.name, id)
|
|
id += 1
|
|
|
|
popup.add_separator()
|
|
|
|
_no_config_index = id
|
|
popup.add_check_item("No config", id)
|
|
id += 1
|
|
else:
|
|
popup.add_item("No configs", id)
|
|
popup.set_item_disabled(id, true)
|
|
id += 1
|
|
|
|
var config_count := ConfigManager.load_configs().size()
|
|
var current := ConfigManager.get_current_config_index()
|
|
|
|
if current >= 0 and current < config_count:
|
|
popup.set_item_checked(popup.get_item_index(current), true)
|
|
# Set main button text here as well
|
|
text = configs[current].name
|
|
else:
|
|
popup.set_item_checked(popup.get_item_index(_no_config_index), true)
|
|
text = DEFAULT_CONFIGS_TEXT
|
|
|
|
popup.add_separator()
|
|
popup.add_item("Edit configurations...", id)
|
|
|
|
_add_config_index = id
|
|
|
|
|
|
func _on_id_pressed(id: int) -> void:
|
|
if id == _add_config_index:
|
|
configs_editor.popup_centered_ratio(0.5)
|
|
elif id == _no_config_index:
|
|
ConfigManager.set_current_config_index(-1)
|
|
else:
|
|
ConfigManager.set_current_config_index(id)
|
|
_update()
|