Exemple #1
0
        private void btnRun_Click(object sender, EventArgs e)
        {
            //入参判断是否json

            //var thread = new Thread(() => ThreadProc(this.txtCode.Text, BreakPoints));
            //CurrentDebugStatus = 0;
            //thread.Start();
            if (db.IsRunning)
            {
                //db.StepOut();
            }
            else
            {
                //将document中的breakpoint转成breakPointList
                IList <EditorBreakPoint> BreakPoints = new List <EditorBreakPoint>();
                foreach (var item in this.txtCode.Document.BookmarkManager.Marks)
                {
                    if (item.GetType().Name == "BreakPointMark")
                    {
                        BreakPointMark breakPointMark = (BreakPointMark)item;
                        BreakPoints.Add(new EditorBreakPoint(breakPointMark.Location.Line + 1, breakPointMark.Location.Column));
                    }
                }
                var instance = new JintDebugInstance()
                {
                    Script      = this.txtCode.Text,
                    BreakPoints = BreakPoints,
                    InputJson   = this.txtInput.Text.Trim()
                };
                db.Run(instance);
            }
        }
Exemple #2
0
        private void IconBarMargin_MouseDown(AbstractMargin sender, Point mousepos, MouseButtons mouseButtons)
        {
            if (mouseButtons != MouseButtons.Left)
            {
                return;
            }

            var textArea = this.txtCode.ActiveTextAreaControl.TextArea;

            int yPos       = mousepos.Y;
            int lineHeight = textArea.TextView.FontHeight;
            int lineNumber = (yPos + textArea.VirtualTop.Y) / lineHeight;

            //是否已经存在该断点
            //if(this.txtCode.Document.BookmarkManager.Marks)

            //if (BreakPoints.Any(p => p.Line == lineNumber + 1) || lineNumber >= textArea.Document.TotalNumberOfLines)
            //    return;


            string text   = textArea.Document.GetText(textArea.Document.GetLineSegment(lineNumber));
            int    offset = -1;

            for (int i = 0; i < text.Length; i++)
            {
                if (
                    !Char.IsWhiteSpace(text[i]) &&
                    text[i] != '/'
                    )
                {
                    offset = i;
                    break;
                }
            }

            if (offset == -1)
            {
                return;
            }

            var breakPoint = new EditorBreakPoint(lineNumber + 1, offset);

            db.AddBreakPoint(breakPoint);

            var document = this.txtCode.Document;

            var mark = new BreakPointMark(
                document,
                new TextLocation(
                    offset,
                    lineNumber
                    )
                );

            mark.Removed += (s, e) =>
            {
                db.RemoveBreakPoint(breakPoint);
            };

            document.BookmarkManager.AddMark(mark);

            this.txtCode.Refresh();
        }
Exemple #3
0
        void IconBarMargin_MouseDown(AbstractMargin sender, Point mousepos, MouseButtons mouseButtons)
        {
            if (mouseButtons != MouseButtons.Left)
            {
                return;
            }

            var textArea = _textEditor.ActiveTextAreaControl.TextArea;

            int yPos       = mousepos.Y;
            int lineHeight = textArea.TextView.FontHeight;
            int lineNumber = (yPos + textArea.VirtualTop.Y) / lineHeight;

            if (BreakPoints.Any(p => p.Line == lineNumber + 1) || lineNumber >= textArea.Document.TotalNumberOfLines)
            {
                return;
            }

            string text   = textArea.Document.GetText(textArea.Document.GetLineSegment(lineNumber));
            int    offset = -1;

            for (int i = 0; i < text.Length; i++)
            {
                if (
                    !Char.IsWhiteSpace(text[i]) &&
                    text[i] != '/'
                    )
                {
                    offset = i;
                    break;
                }
            }

            if (offset == -1)
            {
                return;
            }

            var breakPoint = new EditorBreakPoint(lineNumber + 1, offset);

            BreakPoints.Add(breakPoint);

            if (_script != null)
            {
                breakPoint.BreakPoint = new BreakPoint(Script.Script, lineNumber + 1, offset);
                _script.Engine.BreakPoints.Add(breakPoint.BreakPoint);
            }

            var document = _textEditor.Document;

            var mark = new BreakPointMark(
                document,
                new TextLocation(
                    offset,
                    lineNumber
                    )
                );

            mark.Removed += (s, e) =>
            {
                BreakPoints.Remove(breakPoint);
                _script?.Engine.BreakPoints.Remove(breakPoint.BreakPoint);
            };

            document.BookmarkManager.AddMark(mark);

            _textEditor.Refresh();
        }