WIP: track creation and deletion both in frontend and backend.
This commit is contained in:
9
Source/Clip.cs
Normal file
9
Source/Clip.cs
Normal file
@@ -0,0 +1,9 @@
|
||||
using System;
|
||||
|
||||
namespace AudioEditor;
|
||||
|
||||
public class Clip
|
||||
{
|
||||
public TimeSpan StartTime { get; private set; }
|
||||
public TimeSpan EndTime { get; private set; }
|
||||
}
|
||||
1
Source/Clip.cs.uid
Normal file
1
Source/Clip.cs.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://b20juoqt3ac8x
|
||||
46
Source/Project.cs
Normal file
46
Source/Project.cs
Normal file
@@ -0,0 +1,46 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace AudioEditor;
|
||||
|
||||
public class Project
|
||||
{
|
||||
public int TrackCount => _tracks.Count;
|
||||
public void AddTrack()
|
||||
{
|
||||
var idx = _tracks.Count;
|
||||
_tracks.Add(new Track(idx, string.Empty));
|
||||
}
|
||||
|
||||
public void DuplicateTrack(int idx)
|
||||
{
|
||||
if (idx < 0 && idx > _tracks.Count - 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var track = _tracks[idx];
|
||||
var duplicate = track.Duplicate();
|
||||
|
||||
_tracks.Add(duplicate);
|
||||
}
|
||||
|
||||
public void RenameTrack(int idx, string name)
|
||||
{
|
||||
if (idx < 0 && idx > _tracks.Count - 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public void DeleteTrack(int idx)
|
||||
{
|
||||
if (idx < 0 && idx > _tracks.Count - 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_tracks.RemoveAt(idx);
|
||||
}
|
||||
|
||||
private List<Track> _tracks = new();
|
||||
}
|
||||
1
Source/Project.cs.uid
Normal file
1
Source/Project.cs.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bvgn3tf07jspe
|
||||
@@ -7,6 +7,9 @@ namespace AudioEditor;
|
||||
public partial class ProjectController : Node
|
||||
{
|
||||
[Signal] public delegate void AudioClipDroppedEventHandler(Vector2 atPosition, string path, string clipName, double startTime, double endTime);
|
||||
[Signal] public delegate void OnTrackAddedEventHandler(int idx);
|
||||
[Signal] public delegate void OnTrackRenamedEventHandler(int idx, string name);
|
||||
[Signal] public delegate void OnTrackDuplicatedEventHandler(int idx);
|
||||
[Signal] public delegate void OnTrackDeletedEventHandler(int trackIdx);
|
||||
|
||||
public override void _Ready()
|
||||
@@ -14,9 +17,28 @@ public partial class ProjectController : Node
|
||||
GetWindow().FilesDropped += FilesDropped;
|
||||
}
|
||||
|
||||
public void DeleteTrack(int trackIdx)
|
||||
public void AddTrack(int idx = 0)
|
||||
{
|
||||
_project.AddTrack();
|
||||
EmitSignal(SignalName.OnTrackAdded, _project.TrackCount - 1);
|
||||
}
|
||||
|
||||
public void DuplicateTrack(int idx)
|
||||
{
|
||||
_project.DuplicateTrack(idx);
|
||||
EmitSignal(SignalName.OnTrackDuplicated, idx);
|
||||
}
|
||||
|
||||
public void RenameTrack(int idx, string name)
|
||||
{
|
||||
_project.RenameTrack(idx, name);
|
||||
EmitSignal(SignalName.OnTrackRenamed, idx, name);
|
||||
}
|
||||
|
||||
public void DeleteTrack(int idx)
|
||||
{
|
||||
_project.DeleteTrack(idx);
|
||||
EmitSignal(SignalName.OnTrackDeleted, idx);
|
||||
}
|
||||
|
||||
public void CreateAudioClipPreview(Control audioClip)
|
||||
@@ -54,4 +76,6 @@ public partial class ProjectController : Node
|
||||
|
||||
EmitSignal(SignalName.AudioClipDropped, mousePosition, path, fileName, 0, waveformInfo.Length.TotalMilliseconds);
|
||||
}
|
||||
|
||||
private Project _project = new();
|
||||
}
|
||||
33
Source/Track.cs
Normal file
33
Source/Track.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace AudioEditor;
|
||||
|
||||
public class Track
|
||||
{
|
||||
public int Idx { get; private set; }
|
||||
public string Name { get; private set; }
|
||||
|
||||
public Track(int idx, string name)
|
||||
{
|
||||
Idx = idx;
|
||||
Name = name;
|
||||
}
|
||||
|
||||
public Track(int idx, string name, IEnumerable<Clip> clips)
|
||||
{
|
||||
Idx = idx;
|
||||
Name = name;
|
||||
_clips = clips.ToList();
|
||||
}
|
||||
|
||||
public bool TryAddClip(Clip clip)
|
||||
{
|
||||
_clips.Add(clip);
|
||||
return false;
|
||||
}
|
||||
|
||||
public Track Duplicate() => new(Idx, Name, _clips);
|
||||
|
||||
private List<Clip> _clips = new();
|
||||
}
|
||||
1
Source/Track.cs.uid
Normal file
1
Source/Track.cs.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dtk58stvxxdyl
|
||||
Reference in New Issue
Block a user