Ejemplo n.º 1
0
        private void ScintillaNet_CharAdded(object sender, CharAddedEventArgs e)
        {
            ScriptHelpMgr.Instance.bCompileError = true;
            bNeedSaved = true;
            int nPos = TextArea.CurrentPosition;

            //AXIS
            if (e.Char == '.')
            {
                string sWord = TextArea.GetWordFromPosition(nPos - 1);
                if (sWord.Contains("AXIS"))
                {
                    TextArea.AutoCShow(0, sbAxisStructPromt.ToString());
                }
                else if (sWord.Contains("INST"))
                {
                    TextArea.AutoCShow(0, sbInstrumentStructPromt.ToString());
                }
                else if (sWord.Contains("ENUM"))
                {
                    TextArea.AutoCShow(0, sbEnumPromt1.ToString());
                }
                else if (sbEnumPromt1.ToString().Contains(sWord) && sbEnumPromt2Dic.Keys.Contains(sWord))
                {
                    TextArea.AutoCShow(0, sbEnumPromt2Dic[sWord].ToString());
                }
                else
                {
                    foreach (var it in rawDataDic)
                    {
                        if (it.Key == sWord)
                        {
                            TextArea.AutoCShow(0, strCateDic[sWord]);   //strCateDic : Cate-----"func1 func2 func3"
                            break;
                        }
                    }
                }
            }
            else if (e.Char == '(')
            {
                string sWord = TextArea.GetWordFromPosition(nPos - 1);
                foreach (var it in Funcmanager.Funcs)
                {
                    if (it.FunctionName == sWord)
                    {
                        strPromot = it.Prompt;
                        TextArea.CallTipShow(nPos, strPromot);
                        break;
                    }
                }
                nStartPos = strPromot.IndexOf('(');
                nEndPos   = strPromot.IndexOf(',') == -1 ? strPromot.IndexOf(')') : strPromot.IndexOf(',');
                TextArea.CallTipSetHlt(nStartPos, nEndPos);
            }
            else if (e.Char == ')')
            {
                TextArea.CallTipCancel();
                strPromot = "";
                nEndPos   = 0;
            }
            else if (e.Char == ',')
            {
                int pos1 = nEndPos;
                if (pos1 < strPromot.Length)
                {
                    int pos2 = strPromot.IndexOf(',', pos1 + 1) == -1 ? strPromot.IndexOf(')') : strPromot.IndexOf(',', pos1 + 1);
                    TextArea.CallTipShow(nPos, strPromot);
                    TextArea.CallTipSetHlt(pos1, pos2);
                    nEndPos = pos2;
                }
            }
        }