WIP: track creation and deletion both in frontend and backend.

This commit is contained in:
2025-07-28 01:03:40 +02:00
parent ecadfb7033
commit cb38a509b5
15 changed files with 192 additions and 49 deletions

View File

@@ -37,23 +37,6 @@ func format_time_ms_minutes(ms: float) -> String:
var milliseconds = fmod(ms, 1000.0)
return "%02d:%02d.%03d" % [minutes, seconds, milliseconds]
func _ready():
await get_tree().process_frame
queue_redraw()
for c in track_list.get_children():
if c is Track:
var track = c as Track
track.on_deleted.connect(_track_deleted)
pass
pass
func _track_deleted(idx: int):
print("track deleted")
await get_tree().process_frame
queue_redraw()
pass
func get_track_idx_by_y(y: float):
var idx = 0
for track in track_list.get_children():
@@ -64,6 +47,8 @@ func get_track_idx_by_y(y: float):
return -1
func get_track_by_idx(idx: int) -> Control:
if idx > track_list.get_child_count() - 1:
return null
return track_list.get_child(idx)
func get_pixels_per_unit() -> float:

View File

@@ -1,15 +1,19 @@
class_name Track
extends Button
signal on_deleted
signal on_deleted(idx: int)
signal on_renamed
signal on_duplicated
func _ready():
var menu: PopupMenu = $PopupMenu
menu.add_item("Rename", 0)
menu.add_item("Delete", 1)
menu.add_item("Duplicate", 2)
menu.add_item("Delete", 1)
menu.add_separator()
menu.add_item("Properties")
menu.id_pressed.connect(_on_menu_option)
func _on_menu_option(id: int):
@@ -23,10 +27,7 @@ func _on_menu_option(id: int):
pass
func delete():
queue_free()
var idx = get_index()
print(idx)
on_deleted.emit(idx)
on_deleted.emit(get_index())
pass
func rename():

View File

@@ -4,6 +4,11 @@ func _ready() -> void:
text_submitted.connect(submit)
func submit(text: String):
caret_column = 0
release_focus()
var owner = get_owner()
if owner is Control:
var c = owner as Control
c.grab_focus()
pass

44
Scripts/TrackView.gd Normal file
View File

@@ -0,0 +1,44 @@
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()

1
Scripts/TrackView.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://y5e28thwmx7e