コード例 #1
0
ファイル: Form1.cs プロジェクト: ParticularPhil/PAWNFox
        void openFile(string path)
        {
            //Open the file:
            StreamReader file = new StreamReader(path, Encoding.Default);
            string       text = file.ReadToEnd();

            codeEditor.Text = text;
            file.Close();

            fileSaved = true;

            //Set the current file path:
            currentFilePath = path;
            //Set the current file name:
            string[] tokens = currentFilePath.Split('\\');
            currentFileName = tokens[tokens.Length - 1];
            //Remove extension:
            tokens          = currentFileName.Split('.');
            currentFileName = tokens[0];
            //Just loaded the new file - co changes possible:
            noChanges = true;

            //Lexer:
            List <lexer.defineData>   userDefineList   = null;
            List <lexer.functionData> userFunctionList = null;
            lexer lex = new lexer();

            lex.codeAnalysis(text, ref userDefineList, ref userFunctionList, false);

            //Autocomplete list:
            ScanDocumentThreaded(true);

            //Recently opened:
            StreamWriter recentlyFile = new StreamWriter(appPath + "\\PawnStuff\\last_opened.data", false);

            recentlyFile.Write(path);
            recentlyFile.Close();

            //Update caption:
            this.Text = "Pawnfox - " + currentFileName;
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: ParticularPhil/PAWNFox
        private void analyzeThread_DoWork(object sender, DoWorkEventArgs e)
        {
            //Variables:
            string[] lines = (e.Argument.ToString()).Split('\n');
            //Define variables:
            tempDefineContent = new TreeNode();
            TreeNode maxNode    = tempDefineContent.Nodes.Add("MAX");
            TreeNode dialogNode = tempDefineContent.Nodes.Add("DIALOG");
            TreeNode colorNode  = tempDefineContent.Nodes.Add("COLORS");
            TreeNode otherNode  = tempDefineContent.Nodes.Add("Other");

            //User function variables:
            tempUserFunctionContent = new TreeNode();
            //Enum variables:
            TreeNode tempNode = null;

            tempEnumContent = new TreeNode();
            int stage = 0;

            //PVar variables:
            tempPVarContent = new TreeNode();

            //Analyse:
            tempUserFunctionList = null;
            List <lexer.defineData> defineList = null;
            lexer lex = new lexer();

            lex.codeAnalysis(e.Argument.ToString(), ref defineList, ref tempUserFunctionList, false);
            foreach (lexer.defineData define in defineList)
            {
                if (define.identifer.ToLower().Contains("max"))
                {
                    maxNode.Nodes.Add(define.identifer + " " + define.value);
                }
                else if (define.identifer.ToLower().Contains("dialog"))
                {
                    dialogNode.Nodes.Add(define.identifer + " " + define.value);
                }
                else if (define.identifer.ToLower().Contains("color"))
                {
                    colorNode.Nodes.Add(define.identifer + " " + define.value);
                }
                else
                {
                    otherNode.Nodes.Add(define.identifer + " " + define.value);
                }
            }
            foreach (lexer.functionData function in tempUserFunctionList)
            {
                tempNode = tempUserFunctionContent.Nodes.Add(function.fullIdentiferDataTypes);
                TreeNode callNode = tempNode.Nodes.Add("Calls");
                tempNode.Nodes.Add("Add to code (double click)");
                //Call stuff:
                foreach (int call in function.occurences)
                {
                    callNode.Nodes.Add((call + 1).ToString());
                }
            }

            foreach (string line in lines)
            {
                //PVars:
                if (line.ToLower().Contains("setpvar") || line.ToLower().Contains("getpvar"))
                {
                    string[] tokens = line.Split('\"');
                    if (tokens.Length >= 3)
                    {
                        string varName = "\"" + tokens[1] + "\"";
                        varName = varName.Replace("\"", "");
                        if (!varName.Contains('%'))
                        {
                            bool exists = false;
                            foreach (TreeNode node in tempPVarContent.Nodes)
                            {
                                if (node.Text == varName)
                                {
                                    exists = true;
                                    break;
                                }
                            }
                            if (!exists)
                            {
                                tempPVarContent.Nodes.Add(varName);
                            }
                        }
                    }
                }
                if (line.Contains("enum") || stage != 0)
                {
                    if (line.Contains("enum"))
                    {
                        tempNode = new TreeNode(line);
                        stage    = 1;
                    }
                    else
                    {
                        if (line.Contains('{') && !line.Contains('}'))
                        {
                            //Skip line (continue would be dangerous)
                        }
                        else if (line.Contains('}') && !line.Contains('{'))
                        {
                            tempEnumContent.Nodes.Add(tempNode);
                            stage = 0;
                        }
                        else
                        {
                            tempNode.Nodes.Add(line);
                        }
                    }
                }
            }
        }