class_name MusicListPanel extends PanelContainer ## The list of songs in the playlist, one row per song. ## Emitted when the row of song number [param song_no] is clicked. signal song_clicked(song_no: int) var _song_list_object: PackedScene = preload("res://song_list_object.tscn") @onready var _rows: VBoxContainer = $ScrollContainer/MusicList ## Shows the songs in the playlist again, so it shows their latest state. func refresh() -> void: Settings.delete_children(_rows) for s: SongObject in Playlist.get_playlist(): var new_song_list_object: SongListObject = _song_list_object.instantiate() new_song_list_object.song_object = s new_song_list_object.gui_input.connect(_on_row_input.bind(s.song_number)) _rows.add_child(new_song_list_object) func _on_row_input(event: InputEvent, song_no: int) -> void: if event is InputEventMouseButton && event.pressed && event.button_index == MOUSE_BUTTON_LEFT: song_clicked.emit(song_no)