public void UndoableDeleteTrack(Track_Wrapper track) { List <IUndoRedo> undos = new List <IUndoRedo>(); if (track.Type == TrackType.ActionTrack) { if (CueRef.ReferenceType == ReferenceType.Sequence) { var trackEntryToRemove = SequenceRef.ActionTracks.FirstOrDefault(x => x.TableGuid == track.TrackRef.InstanceGuid); undos.Add(new UndoableListRemove <AcbTableReference>(SequenceRef.ActionTracks, trackEntryToRemove)); SequenceRef.ActionTracks.Remove(trackEntryToRemove); } else if (CueRef.ReferenceType == ReferenceType.Synth) { var trackEntryToRemove = SynthRef.ActionTracks.FirstOrDefault(x => x.TableGuid == track.TrackRef.InstanceGuid); undos.Add(new UndoableListRemove <AcbTableReference>(SynthRef.ActionTracks, trackEntryToRemove)); SynthRef.ActionTracks.Remove(trackEntryToRemove); } undos.Add(new UndoableListRemove <Track_Wrapper>(Tracks, track)); Tracks.Remove(track); } else if (track.Type == TrackType.Track) { if (CueRef.ReferenceType == ReferenceType.Sequence) { var trackEntryToRemove = SequenceRef.Tracks.FirstOrDefault(x => x.Index.TableGuid == track.TrackRef.InstanceGuid); undos.Add(new UndoableListRemove <ACB_SequenceTrack>(SequenceRef.Tracks, trackEntryToRemove)); SequenceRef.Tracks.Remove(trackEntryToRemove); } else if (CueRef.ReferenceType == ReferenceType.Synth) { if (SynthRef.ReferenceItems.Count > 1) { //Just delete it undos.Add(new UndoableListRemove <ACB_ReferenceItem>(SynthRef.ReferenceItems, track.refItemsRef)); SynthRef.ReferenceItems.Remove(track.refItemsRef); } else { //Last ReferenceItem on Synth. In this case, nullify it. undos.Add(new UndoableProperty <AcbTableReference>("TableGuid", track.refItemsRef.ReferenceIndex, track.refItemsRef.ReferenceIndex.TableGuid, Guid.Empty)); track.refItemsRef.ReferenceIndex.TableGuid = Guid.Empty; } } else if (CueRef.ReferenceType == ReferenceType.Waveform) { undos.Add(new UndoableProperty <AcbTableReference>("TableGuid", CueRef.ReferenceIndex, CueRef.ReferenceIndex.TableGuid, Guid.Empty)); CueRef.ReferenceIndex.TableGuid = Guid.Empty; } } Refresh(); undos.Add(new UndoActionDelegate(this, "Refresh", true)); UndoManager.Instance.AddUndo(new CompositeUndo(undos, (track.Type == TrackType.Track) ? "Delete Track" : "Delete Action")); }
public void CopyAction(Track_Wrapper trackWrapper) { if (trackWrapper?.TrackRef == null) { return; } CopiedAction action = new CopiedAction(trackWrapper.TrackRef, trackWrapper.TrackCommand); Clipboard.SetData(ACB_File.CLIPBOARD_ACB_ACTION, action); }
public void CopyTrack(Track_Wrapper trackWrapper) { if (trackWrapper?.WaveformWrapper == null) { return; } CopiedTrack track = new CopiedTrack(trackWrapper.WaveformWrapper.WaveformRef, trackWrapper.WaveformWrapper.AwbEntry); Clipboard.SetData(ACB_File.CLIPBOARD_ACB_TRACK, track); }