예제 #1
0
        private void CopyMenuItem_Click(object sender, EventArgs e)
        {
            if (TasView.AnyRowsSelected)
            {
                _tasClipboard.Clear();
                var list = TasView.SelectedRows.ToList();
                var sb   = new StringBuilder();

                foreach (var index in list)
                {
                    var input = CurrentTasMovie.GetInputState(index);
                    if (input == null)
                    {
                        break;
                    }
                    _tasClipboard.Add(new TasClipboardEntry(index, input));
                    var lg = CurrentTasMovie.LogGeneratorInstance();
                    lg.SetSource(input);
                    sb.AppendLine(lg.GenerateLogEntry());
                }

                Clipboard.SetDataObject(sb.ToString());
                SetSplicer();
            }
        }
예제 #2
0
        private void CutMenuItem_Click(object sender, EventArgs e)
        {
            if (TasView.AnyRowsSelected)
            {
                var wasPaused       = GlobalWin.MainForm.EmulatorPaused;
                var needsToRollback = TasView.FirstSelectedIndex < Emulator.Frame;
                var rollBackFrame   = TasView.FirstSelectedIndex.Value;

                _tasClipboard.Clear();
                var list = TasView.SelectedRows.ToArray();
                var sb   = new StringBuilder();
                for (var i = 0; i < list.Length; i++)
                {
                    var input = CurrentTasMovie.GetInputState(i);
                    if (input == null)
                    {
                        break;
                    }
                    _tasClipboard.Add(new TasClipboardEntry(list[i], input));
                    var lg = CurrentTasMovie.LogGeneratorInstance();
                    lg.SetSource(input);
                    sb.AppendLine(lg.GenerateLogEntry());
                }

                Clipboard.SetDataObject(sb.ToString());
                CurrentTasMovie.RemoveFrames(list);
                SetSplicer();
                //TasView.DeselectAll(); feos: what if I want to continuously cut?

                if (needsToRollback)
                {
                    GoToLastEmulatedFrameIfNecessary(rollBackFrame);
                    if (wasPaused)
                    {
                        DoAutoRestore();
                    }
                    else
                    {
                        GlobalWin.MainForm.UnpauseEmulator();
                    }
                }
                else
                {
                    RefreshDialog();
                }
            }
        }