Exemplo n.º 1
0
        void tb_MouseMove(object sender, MouseEventArgs e)
        {
            var tb    = sender as FastColoredTextBox;
            var place = tb.PointToPlace(e.Location);
            var r     = new FastColoredTextBoxNS.Range(tb, place, place);

            string text = r.GetFragment("[a-zA-Z]").Text;

            lbWordUnderMouse.Text = text;
        }
Exemplo n.º 2
0
        //函数悬停提示
        protected override void OnToolTip()
        {
            if (this.ToolTip == null)
            {
                return;
            }

            if (ToolTipNeeded == null)
            {
                return;
            }

            //get place under mouse
            Place place = this.PointToPlace(this.lastMouseCoord);

            //check distance
            Point p = this.PlaceToPoint(place);

            if (Math.Abs(p.X - this.lastMouseCoord.X) > this.CharWidth * 2 ||
                Math.Abs(p.Y - this.lastMouseCoord.Y) > this.CharHeight * 2)
            {
                return;
            }
            //get word under mouse
            var    r           = new Range(this, place, place);
            string hoveredWord = r.GetFragment("[a-zA-Z0-9_]").Text;
            //event handler
            var ea = new ToolTipNeededEventArgs(place, hoveredWord);

            ToolTipNeeded(this, ea);

            if (ea.ToolTipText != null)
            {
                lbTooltip.Visible  = true;
                lbTooltip.Text     = $"{ea.ToolTipTitle}\r\n\r\n{ea.ToolTipText}";
                lbTooltip.Location = new Point(this.Size.Width - 500, this.lastMouseCoord.Y + this.CharHeight);
                //this.ToolTip.ToolTipTitle = ea.ToolTipTitle;
                //this.ToolTip.ToolTipIcon = ea.ToolTipIcon;
                //ToolTip.SetToolTip(this, ea.ToolTipText);
                //this.ToolTip.Show(ea.ToolTipText, this, new Point(this.lastMouseCoord.X, this.lastMouseCoord.Y + this.CharHeight));
            }
        }
Exemplo n.º 3
0
        //函数悬停提示
        protected override void OnToolTip()
        {
            if (ToolTip == null)
            {
                return;
            }
            if (ToolTipNeeded == null)
            {
                return;
            }

            //get place under mouse
            Place place = PointToPlace(lastMouseCoord);

            //check distance
            Point p = PlaceToPoint(place);

            if (Math.Abs(p.X - lastMouseCoord.X) > CharWidth * 2 ||
                Math.Abs(p.Y - lastMouseCoord.Y) > CharHeight * 2)
            {
                return;
            }
            //get word under mouse
            var    r           = new Range(this, place, place);
            string hoveredWord = r.GetFragment("[a-zA-Z0-9_]").Text;
            //event handler
            var ea = new ToolTipNeededEventArgs(place, hoveredWord);

            ToolTipNeeded(this, ea);

            if (ea.ToolTipText != null)
            {
                //show tooltip
                ToolTip.ToolTipTitle = ea.ToolTipTitle;
                ToolTip.ToolTipIcon  = ea.ToolTipIcon;
                //ToolTip.SetToolTip(this, ea.ToolTipText);
                ToolTip.Show(ea.ToolTipText, this, new Point(lastMouseCoord.X, lastMouseCoord.Y + CharHeight));
            }
        }
Exemplo n.º 4
0
        private void ToolTipIsNeeded(object sender, ToolTipNeededEventArgs e)
        {
            if (String.IsNullOrEmpty(e.HoveredWord))
            {
                return;
            }

            var library = LibraryLookup.GetLibrary(game);

            var    range       = new FastColoredTextBoxNS.Range(sender as FastColoredTextBox, e.Place, e.Place);
            string hoveredWord = range.GetFragment("[^ ( \n \r ]").Text;

            e.ToolTipTitle = hoveredWord;

            for (int i = 0; i < library.FlowScriptModules.Count; i++)
            {
                for (int j = 0; j < library.FlowScriptModules[i].Functions.Count; j++)
                {
                    e.ToolTipText = ToolTip(hoveredWord, library) + "'";
                }
            }
        }
Exemplo n.º 5
0
        //函数悬停提示
        protected override void OnToolTip()
        {
            if (this.ToolTip == null)
            {
                return;
            }

            if (ToolTipNeeded == null)
            {
                return;
            }

            //get place under mouse
            Place place = this.PointToPlace(this.lastMouseCoord);

            //check distance
            Point p = this.PlaceToPoint(place);

            if (Math.Abs(p.X - this.lastMouseCoord.X) > this.CharWidth * 2 ||
                Math.Abs(p.Y - this.lastMouseCoord.Y) > this.CharHeight * 2)
            {
                return;
            }
            //get word under mouse
            var    r           = new Range(this, place, place);
            string hoveredWord = r.GetFragment("[a-zA-Z0-9_]").Text;
            //event handler
            var ea = new ToolTipNeededEventArgs(place, hoveredWord);

            ToolTipNeeded(this, ea);

            if (ea.ToolTipText != null)
            {
                this.ShowTooltipWithLabel(ea.ToolTipTitle, ea.ToolTipText);
            }
        }
Exemplo n.º 6
0
        protected virtual void DoHighlighting()
        {
            if (parser == null)
            {
                return;
            }

            //parse text
            ParseTree tree;

            try
            {
                tree = parser.Parse(Text);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message); //oops...
                return;
            }

            //highlight errors
            if (tree.Status == ParseTreeStatus.Error)
            {
                ClearStyle(GetStyleIndexMask(new Style[] { WavyStyle }));
                foreach (var msg in tree.ParserMessages)
                {
                    var loc   = msg.Location;
                    var place = new Place(loc.Column, loc.Line);
                    var r     = new Range(this, place, place);
                    var f     = r.GetFragment(@"[\S]");
                    f.SetStyle(WavyStyle);
                }
                return;
            }


            SolidBrush brush1 = new SolidBrush(VariablesColor);

            SyntaxHighlighter.VariableStyle = new TextStyle(brush1, null, FontStyle.Regular);


            //highlight syntax
            ClearStyle(StyleIndex.All);
            foreach (var t in tree.Tokens)
            {
                var arg = new StyleNeededEventArgs(t);
                OnStyleNeeded(arg);

                if (arg.Cancel)
                {
                    continue;
                }

                if (arg.Style != null)
                {
                    GetTokenRange(t).SetStyle(arg.Style);
                    continue;
                }



                switch (t.Terminal.Name)
                {
                case "INTERVAL":
                    GetTokenRange(t).SetStyle(SyntaxHighlighter.FunctionsStyle);
                    break;

                case "Identifier":
                    GetTokenRange(t).SetStyle(SyntaxHighlighter.VariableStyle);
                    break;
                }

                switch (t.Terminal.GetType().Name)
                {
                case "KeyTerm":
                    if ((t.Terminal.Flags & TermFlags.IsKeyword) != 0)     //keywords are highlighted only
                    {
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.KeywordStyle);
                    }
                    break;

                case "FreeTextLiteral":
                    GetTokenRange(t).SetStyle(SyntaxHighlighter.CommentStyle);
                    break;

                case "Identifier":
                    GetTokenRange(t).SetStyle(SyntaxHighlighter.VariableStyle);

                    break;

                case "NumberLiteral":
                    GetTokenRange(t).SetStyle(SyntaxHighlighter.NumberStyle);
                    break;

                case "StringLiteral":
                    GetTokenRange(t).SetStyle(SyntaxHighlighter.StringStyle);
                    break;

                case "CommentTerminal":
                    GetTokenRange(t).SetStyle(SyntaxHighlighter.CommentStyle);
                    break;
                }
            }
        }
Exemplo n.º 7
0
        protected virtual void DoHighlighting()
        {
            if (parser == null)
            {
                return;
            }

            //parse text
            ParseTree tree;

            try
            {
                tree = parser.Parse(Text);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message); //oops...
                return;
            }

            //highlight errors
            if (tree.Status == ParseTreeStatus.Error)
            {
                ClearStyle(GetStyleIndexMask(new Style[] { WavyStyle }));
                foreach (var msg in tree.ParserMessages)
                {
                    var loc   = msg.Location;
                    var place = new Place(loc.Column, loc.Line);
                    var r     = new Range(this, place, place);
                    var f     = r.GetFragment(@"[\S]");
                    f.SetStyle(WavyStyle);
                }
                return;
            }

            //highlight syntax
            ClearStyle(StyleIndex.All);
            foreach (var t in tree.Tokens)
            {
                var arg = new StyleNeededEventArgs(t);
                OnStyleNeeded(arg);

                if (arg.Cancel)
                {
                    continue;
                }

                if (arg.Style != null)
                {
                    GetTokenRange(t).SetStyle(arg.Style);
                    continue;
                }

                switch (t.Terminal.GetType().Name)
                {
                case "KeyTerm":
                    if ((t.Terminal.Flags & TermFlags.IsKeyword) != 0)     //keywords are highlighted only
                    {
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.KeywordStyle);
                    }
                    break;

                case "NumberLiteral":
                    GetTokenRange(t).SetStyle(purpleStyle);
                    break;

                case "StringLiteral":
                    GetTokenRange(t).SetStyle(orangeStyle);
                    break;

                case "CommentTerminal":
                    GetTokenRange(t).SetStyle(SyntaxHighlighter.GrayStyle);
                    break;

                //estes default no viene por defecto se puede utilizar para pintar id, u otros terminales
                default:
                    if (t.Terminal.Name.Equals(Constante.Etiqueta))
                    {
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.GreenStyle);
                    }
                    break;
                }
            }
        }
Exemplo n.º 8
0
        private void tmrCommandTooltip_Tick(object sender, EventArgs e)
        {
            tmrCommandTooltip.Stop();

            Place place = txtCodeEditor.PointToPlace(lastMouseCoordinate);
            Point distance = txtCodeEditor.PlaceToPoint(place);

            if (Math.Abs(distance.X - lastMouseCoordinate.X) > txtCodeEditor.CharWidth * 2 |
                Math.Abs(distance.Y - lastMouseCoordinate.Y) > txtCodeEditor.CharHeight * 2)
                return;

            FastColoredTextBoxNS.Range range = new FastColoredTextBoxNS.Range(txtCodeEditor, place, place);

            string hoverWord = range.GetFragment(@"[a-zA-Z]").Text;

            if (hoverWord == "")
            {
                return;
            }

            RpgCodeExpress.RpgCode.Command foundCommand = rpgCodeReference.FindCommand(hoverWord);

            if (foundCommand != null)
            {
                Tooltip.ToolTipTitle = foundCommand.Tooltip;
                Tooltip.SetToolTip(txtCodeEditor, foundCommand.Description);
                Tooltip.Show(foundCommand.Description, txtCodeEditor, new Point(lastMouseCoordinate.X,
                        lastMouseCoordinate.Y + txtCodeEditor.CharHeight));
            }
        }
        protected virtual void DoHighlighting()
        {
            //if (parser == null)
            //    return;

            //parse text
            ParseTree tree;

            try
            {
                tree = parser.Parse(Text);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message); //oops...
                return;
            }

            //highlight errors
            if (tree.Status == ParseTreeStatus.Error)

            {
                ClearStyle(GetStyleIndexMask(new Style[] { WavyStyle }));
                foreach (var msg in tree.ParserMessages)
                {
                    var loc   = msg.Location;
                    var place = new Place(loc.Column, loc.Line);
                    var r     = new Range(this, place, place);
                    var f     = r.GetFragment(@"[\S]");
                    f.SetStyle(WavyStyle);
                }
                return;
            }



            //highlight syntax
            ClearStyle(StyleIndex.All);
            foreach (var t in tree.Tokens)
            {
                var arg = new StyleNeededEventArgs(t);
                OnStyleNeeded(arg);

                if (arg.Cancel)
                {
                    continue;
                }

                if (arg.Style != null)
                {
                    GetTokenRange(t).SetStyle(arg.Style);
                    continue;
                }



                switch (t.Terminal.Name)
                {
                case "INTERVAL":     //Sample of how to color a single TOKEN, not working yet
                    GetTokenRange(t).SetStyle(SyntaxHighlighter.FunctionsStyle);
                    break;

                case "Identifier":
                    //GetTokenRange(t).SetStyle(SyntaxHighlighter.VariableStyle);
                    //Identifier: Discover the correct type for identifier and hihglight.
                    int CPIndex   = 0;
                    var IdentType = CoderHelper.GetTypeIdentifier(Identifiers, t.Text, out CPIndex);
                    switch (IdentType)
                    {
                    case PCODE_CONST.OUTPOINTTYPE:
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.OutputStyle);
                        break;

                    case PCODE_CONST.INPOINTTYPE:
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.InputStyle);
                        break;

                    case PCODE_CONST.VARPOINTTYPE:
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.VariableStyle);
                        break;

                    case PCODE_CONST.PIDPOINTTYPE:
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.PidStyle);
                        break;

                    default:
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.VariableStyle);
                        break;
                    }
                    break;

                case "INS":
                    GetTokenRange(t).SetStyle(SyntaxHighlighter.InputStyle);
                    break;

                case "OUTS":
                    GetTokenRange(t).SetStyle(SyntaxHighlighter.OutputStyle);
                    break;

                case "VARS":
                    GetTokenRange(t).SetStyle(SyntaxHighlighter.VariableStyle);
                    break;

                case "PIDS":
                    GetTokenRange(t).SetStyle(SyntaxHighlighter.PidStyle);
                    break;

                case "LineNumber":
                    GetTokenRange(t).SetStyle(SyntaxHighlighter.InnerLinesNumberStyle);
                    break;

                default:     //parse by type: General highlighting
                    switch (t.Terminal.GetType().Name)
                    {
                    case "KeyTerm":
                        if ((t.Terminal.Flags & TermFlags.IsKeyword) != 0)         //keywords are highlighted only
                        {
                            GetTokenRange(t).SetStyle(SyntaxHighlighter.KeywordStyle);
                        }
                        break;

                    case "FreeTextLiteral":
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.CommentStyle);
                        break;

                    case "NumberLiteral":
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.NumberStyle);
                        break;

                    case "StringLiteral":
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.StringStyle);
                        break;

                    case "CommentTerminal":
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.CommentStyle);
                        break;
                    }
                    break;
                }
            }
        }
Exemplo n.º 10
0
        protected virtual void DoHighlighting()
        {
            if (parser == null)
            {
                return;
            }

            //parse text
            ParseTree tree;

            try
            {
                tree = parser.Parse(Text);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message); //oops...
                return;
            }

            //highlight errors
            if (tree.Status == ParseTreeStatus.Error)
            {
                ClearStyle(GetStyleIndexMask(new Style[] { WavyStyle }));
                foreach (var msg in tree.ParserMessages)
                {
                    var loc   = msg.Location;
                    var place = new Place(loc.Column, loc.Line);
                    var r     = new Range(this, place, place);
                    var f     = r.GetFragment(@"[\S]");
                    f.SetStyle(WavyStyle);
                }
                return;
            }

            //highlight syntax
            ClearStyle(StyleIndex.All);
            foreach (var t in tree.Tokens)
            {
                var arg = new StyleNeededEventArgs(t);
                OnStyleNeeded(arg);

                if (arg.Cancel)
                {
                    continue;
                }

                if (arg.Style != null)
                {
                    GetTokenRange(t).SetStyle(arg.Style);
                    continue;
                }

                switch (t.Terminal.GetType().Name)
                {
                case "KeyTerm":
                    if ((t.Terminal.Flags & TermFlags.IsKeyword) != 0)         //keywords are highlighted only
                    {
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.KeywordStyle);
                    }
                    break;

                case "CommentTerminal":
                    GetTokenRange(t).SetStyle(grayStyle);
                    break;

                default:
                    switch (t.Terminal.Name)
                    {
                    case "er_cadena":
                        GetTokenRange(t).SetStyle(orangeStyle);
                        break;

                    case "er_caracter":
                        GetTokenRange(t).SetStyle(orangeStyle);
                        break;

                    case "er_entero":
                        GetTokenRange(t).SetStyle(purpleStyle);
                        break;

                    case "er_decimal":
                        GetTokenRange(t).SetStyle(purpleStyle);
                        break;

                    case "er_visibilidad":
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.KeywordStyle);
                        break;

                    case "er_tipo":
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.KeywordStyle);
                        break;

                    case "er_etiq":
                        GetTokenRange(t).SetStyle(redStyle);
                        break;

                    case "er_importar":
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.KeywordStyle);
                        break;

                    case "er_booleano":
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.KeywordStyle);
                        break;

                    case "numero":
                        GetTokenRange(t).SetStyle(purpleStyle);
                        break;

                    case "er_casteo":
                        GetTokenRange(t).SetStyle(SyntaxHighlighter.KeywordStyle);
                        break;
                    }
                    break;
                }
            }
        }