hook up downloading releases and templates to component

This commit is contained in:
2023-05-25 23:13:07 +03:00
parent 94c256b608
commit db5700b62d
4 changed files with 131 additions and 19 deletions

View File

@@ -7,18 +7,18 @@ class_name ReleaseItem
var version: String
signal install_button_pressed
signal install_templates_button_pressed
signal install_button_pressed(version)
signal install_templates_button_pressed(version)
func _ready() -> void:
install_button.pressed.connect(func(): install_button_pressed.emit())
install_templates_button.pressed.connect(func(): install_templates_button_pressed.emit())
install_button.pressed.connect(func(): install_button_pressed.emit(version))
install_templates_button.pressed.connect(func(): install_templates_button_pressed.emit(version))
func set_version(v: String) -> void:
version = v
version_label.text = v
version_label.text = "Godot v%s" % v
func set_install_button_disabled(d: bool) -> void:
@@ -27,3 +27,21 @@ func set_install_button_disabled(d: bool) -> void:
func set_templates_button_disabled(d: bool) -> void:
install_templates_button.disabled = d
func _on_version_downloaded(p_version: String) -> void:
if p_version != version:
# this isn't us
return
set_install_button_disabled(true)
ReleasesManager.version_downloaded.disconnect(_on_version_downloaded)
func _on_export_templates_downloaded(p_version: String) -> void:
if p_version != version:
# this isn't us
return
set_templates_button_disabled(true)
ReleasesManager.export_templates_downloaded.disconnect(_on_export_templates_downloaded)

View File

@@ -1,3 +1,43 @@
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()

View File

@@ -46,6 +46,5 @@ alignment = 2
[node name="StatusLabel" type="Label" parent="HBoxContainer/HBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Downloading v..."
text = "Idle"