45 lines
862 B
GDScript
45 lines
862 B
GDScript
extends Control
|
|
class_name TrackView
|
|
|
|
@export var controller: Node
|
|
@export var track_scene: PackedScene
|
|
@onready var track_list: VBoxContainer = %TrackList
|
|
|
|
signal track_added(idx: int)
|
|
signal track_deleted(idx: int)
|
|
signal tracks_updated()
|
|
|
|
func _ready() -> void:
|
|
pass
|
|
|
|
func add_track(idx: int):
|
|
track_added.emit(idx)
|
|
tracks_updated.emit()
|
|
pass
|
|
|
|
func delete_track(idx: int):
|
|
track_deleted.emit(idx)
|
|
_track_deleted(idx)
|
|
tracks_updated.emit()
|
|
pass
|
|
|
|
func _track_added():
|
|
var track = track_scene.instantiate() as Track
|
|
track.on_deleted.connect(delete_track)
|
|
track_list.add_child(track)
|
|
pass
|
|
|
|
func _track_duplicated(idx: int):
|
|
pass
|
|
|
|
func _track_renamed(idx: int):
|
|
pass
|
|
|
|
func _track_deleted(idx: int):
|
|
var track = track_list.get_child(idx)
|
|
track.call_deferred("free")
|
|
pass
|
|
|
|
func get_track_elements() -> Array[Node]:
|
|
return track_list.get_children()
|