WIP: track creation and deletion both in frontend and backend.
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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():
|
||||
|
||||
@@ -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
44
Scripts/TrackView.gd
Normal 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
1
Scripts/TrackView.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://y5e28thwmx7e
|
||||
Reference in New Issue
Block a user