Exemplo n.º 1
0
        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"));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }