yagvm/UI/Main/ReleasesView.gd

44 lines
1.5 KiB
GDScript

extends VBoxContainer
const ITEM_SCENE := preload("res://UI/Components/ReleaseItem.tscn")
@onready var release_items_container: VBoxContainer = %ReleaseItemsContainer
@onready var fetch_button: Button = %FetchButton
@onready var status_label: Label = %StatusLabel
func _ready() -> void:
ReleasesManager.releases_fetched.connect(releases_updated)
ReleasesManager.releases_fetched.connect(func(_x):
await get_tree().process_frame
fetch_button.disabled = false
)
fetch_button.pressed.connect(func():
ReleasesManager.fetch_releases()
fetch_button.disabled = true
)
ReleasesManager.fetch_releases(true)
ReleasesManager.status_update.connect(status_label.set_text)
func releases_updated(releases: ReleasesManager.Releases) -> void:
clear_releases()
for version in releases.releases:
var item: ReleaseItem = ITEM_SCENE.instantiate()
release_items_container.add_child(item)
item.set_version(version)
item.set_install_button_disabled(ReleasesManager.is_version_installed(version))
item.set_templates_button_disabled(ReleasesManager.is_version_templates_installed(version))
item.install_button_pressed.connect(ReleasesManager.download_release)
item.install_templates_button_pressed.connect(ReleasesManager.download_release)
ReleasesManager.version_downloaded.connect(item._on_version_downloaded)
ReleasesManager.export_templates_downloaded.connect(item._on_export_templates_downloaded)
func clear_releases() -> void:
for i in release_items_container.get_children():
i.queue_free()