Example #1
0
        public static void parseVariable(ObservableCollection <Block> variables, EditorDragDropTarget page)
        {
            ReadOnlyObservableCollection <Block> list = page.getTreeList();

            indent(true);

            foreach (Block b in variables)
            {
                string s = "";
                foreach (String str in indentCount)
                {
                    s = s + str;
                }
                s = s + "vardecl";
                foreach (string str in b.metadataList)
                {
                    //catching caps in var declaration and setting them to lowercase
                    if (str.Contains("INT") || str.Contains("BOOL") || str.Contains("STRING"))
                    {
                        s += " " + str.ToLower();
                    }
                    else
                    {
                        s = s + " " + str;
                    }
                }
                s = s + ";";
                if (SocketReader.checkCustoms(list, b) > 0)
                {
                    writeToFile(s);
                }
            }
        }
Example #2
0
        private static void addEditors(XElement editors)
        {
            IEnumerable <XElement> editor = editors.Elements();

            foreach (var midnight in editor) //time of great programming
            {
                string editorName         = midnight.Attribute("name").Value.ToString();
                EditorDragDropTarget EDDT = null;
                //get a refrence to the EDDT for the current midnight (redundant)
                foreach (EditorDragDropTarget target in MainPage.editorLists) //ask team to find a better way to do this
                {
                    if (target.Name.Equals(editorName))
                    {
                        //Debug.WriteLine(target.Name);
                        EDDT = MainPage.editorLists[MainPage.editorLists.IndexOf(target)];
                        break;
                    }
                }

                addBlocks(midnight, EDDT);
                methodIndex++;
            }
        }
Example #3
0
        private static void addBlocks(XElement editor, EditorDragDropTarget EDDT)
        {
            IEnumerable <XElement> blocks = editor.Elements();

            foreach (var block in blocks)
            {
                int    blockID   = blockLookUp[block.Attribute("type").Value];
                string blockName = block.Attribute("type").Value;
                int    line      = Int32.Parse(block.Element("LINE").Value);
                Debug.WriteLine(blockName + " ID: " + blockID + " Line: " + line);
                if (!blockName.Contains("END"))
                {
                    Block copyBlock = MainPage.createProgramStructureBlock(blockID);
                    Block endBlock  = null;

                    //currently adding so that program doesn't break.
                    //need to add correct block in this case methods by name.
                    if (copyBlock == null)
                    {
                        switch (blockName)
                        {
                        case "METHOD":
                            foreach (Block b in MainPage.methodList)     //find method block
                            {
                                if (b.metadataList[1].Equals(block.Element("name").Value))
                                {
                                    copyBlock = b.cloneSelf(true);
                                    break;
                                }
                            }
                            break;

                        case "RETURN":
                            TabPage methodCode = (TabPage)MainPage.tabList[methodIndex - 1].Content;   //MainPage.methodList.IndexOf(b)
                            copyBlock = methodCode.getReturnBlock();
                            if (copyBlock == null)
                            {
                                copyBlock = MainPage.createReservedBlock(blockName);
                            }
                            break;

                        default:
                            copyBlock = MainPage.createReservedBlock(blockName);
                            break;
                        }
                    }

                    //create end blocks for those who neeed it
                    if (blockName.Contains("IF"))
                    {
                        endBlock = MainPage.createReservedBlock("ENDIF");
                    }
                    else if (blockName.Equals("ELSE"))
                    {
                        endBlock = MainPage.createReservedBlock("ENDELSE");
                    }
                    else if (copyBlock.flag_requiresEndLoop)
                    {
                        endBlock = MainPage.createReservedBlock("ENDLOOP");
                    }


                    //add block and call sockets to be added
                    if (endBlock == null)
                    {
                        EDDT.addNodeToTree(copyBlock, line);
                    }
                    else
                    {
                        EDDT.addNodeToTree(copyBlock, endBlock, line);
                    }

                    //List<int> socketPosition = SocketReader.socketFinder(copyBlock);
                    //foreach (int socket in socketPosition)
                    //{
                    //   Debug.WriteLine("socket location: " + socket);
                    getSocket(block, copyBlock);
                    //}
                }
            }
            EDDT.setTree(EDDT.Content as ListBox);
        }
Example #4
0
        public static void parseVariable(ObservableCollection<Block> variables, EditorDragDropTarget page)
        {
            ReadOnlyObservableCollection<Block> list = page.getTreeList();
            indent(true);

            foreach (Block b in variables)
            {
                string s = "";
                foreach (String str in indentCount)
                    s = s + str;
                s = s + "vardecl";
                foreach (string str in b.metadataList)
                {
                    //catching caps in var declaration and setting them to lowercase
                    if (str.Contains("INT") || str.Contains("BOOL") || str.Contains("STRING"))
                    {
                        s += " " + str.ToLower();
                    }
                    else
                    {
                        s = s + " " + str;
                    }
                }
                s = s + ";";
                if (SocketReader.checkCustoms(list, b) > 0)
                {
                    writeToFile(s);
                }
            }
        }
Example #5
0
        public static void parseCode(EditorDragDropTarget page)
        {
            ReadOnlyObservableCollection<Block> list = page.getTreeList();

            foreach (Block b in list)
            {
                string s = "";         
                if (b.flag_endIndent)
                {
                    indent(false);
                    foreach (String str in indentCount)
                        s = s + str;
                    s += "}";
                    writeToFile(s);
                }
                else
                {
                    foreach (String str in indentCount)
                        s = s + str;
                    //checks to see if the block should use name or contents to print into code
                    if(b.flag_printLiteral)
                    {
                        s += (b.ToString()).ToLower() + SocketReader.readSocket(b);
                        //s = s.ToLower();
                    }
                    else if (b.flag_robotOnly)
                    {
                        s += SocketReader.translateRobotFunctions(b) + ";";
                    }
                    else if (b.flag_isCustom && b.flag_transformer)
                    {
                        s += (b.metadataList[0]).ToLower() + " " + b.metadataList[1];
                        s += SocketReader.readSocket(b);
                        if (s[s.Length - 1] != ')')
                        {
                            s += " ()";
                        }
                        s += ";";
                    }
                    else
                    {
                        s += (b.metadataList[0]).ToLower();
                        s += SocketReader.readSocket(b);
                    }

                    if (b.metadataList[0].Equals("ASSIGN") || b.metadataList[0].Equals("WAIT UNTIL") || b.metadataList[0].Equals("RETURN"))
                    {
                        s += ";";
                    }

                    writeToFile(s);
                    if (b.flag_beginIndent)
                    {
                        s = "";
                        foreach (String str in indentCount)
                            s = s + str;
                        s += "{";
                        writeToFile(s);
                        indent(true);
                    }
                }
            }
            indent(false);
        }
Example #6
0
        public static void parseCode(EditorDragDropTarget page)
        {
            ReadOnlyObservableCollection <Block> list = page.getTreeList();

            foreach (Block b in list)
            {
                string s = "";
                if (b.flag_endIndent)
                {
                    indent(false);
                    foreach (String str in indentCount)
                    {
                        s = s + str;
                    }
                    s += "}";
                    writeToFile(s);
                }
                else
                {
                    foreach (String str in indentCount)
                    {
                        s = s + str;
                    }
                    //checks to see if the block should use name or contents to print into code
                    if (b.flag_printLiteral)
                    {
                        s += (b.ToString()).ToLower() + SocketReader.readSocket(b);
                        //s = s.ToLower();
                    }
                    else if (b.flag_robotOnly)
                    {
                        s += SocketReader.translateRobotFunctions(b) + ";";
                    }
                    else if (b.flag_isCustom && b.flag_transformer)
                    {
                        s += (b.metadataList[0]).ToLower() + " " + b.metadataList[1];
                        s += SocketReader.readSocket(b);
                        if (s[s.Length - 1] != ')')
                        {
                            s += " ()";
                        }
                        s += ";";
                    }
                    else
                    {
                        s += (b.metadataList[0]).ToLower();
                        s += SocketReader.readSocket(b);
                    }

                    if (b.metadataList[0].Equals("ASSIGN") || b.metadataList[0].Equals("WAIT UNTIL") || b.metadataList[0].Equals("RETURN"))
                    {
                        s += ";";
                    }

                    writeToFile(s);
                    if (b.flag_beginIndent)
                    {
                        s = "";
                        foreach (String str in indentCount)
                        {
                            s = s + str;
                        }
                        s += "{";
                        writeToFile(s);
                        indent(true);
                    }
                }
            }
            indent(false);
        }
Example #7
0
        private static void addBlocks(XElement editor, EditorDragDropTarget EDDT)
        {
            IEnumerable<XElement> blocks = editor.Elements();
            foreach (var block in blocks)
            {
                int blockID = blockLookUp[block.Attribute("type").Value];
                string blockName = block.Attribute("type").Value;
                int line = Int32.Parse(block.Element("LINE").Value);
                Debug.WriteLine(blockName + " ID: " + blockID + " Line: " + line);
                if (!blockName.Contains("END"))
                {
                    Block copyBlock = MainPage.createProgramStructureBlock(blockID);
                    Block endBlock = null;

                    //currently adding so that program doesn't break.
                    //need to add correct block in this case methods by name.
                    if (copyBlock == null)
                    {
                        switch (blockName)
                        {
                            case "METHOD":
                                foreach (Block b in MainPage.methodList) //find method block
                                {
                                    if (b.metadataList[1].Equals(block.Element("name").Value))
                                    {
                                        copyBlock = b.cloneSelf(true);
                                        break;
                                    }
                                }
                                break;
                            case "RETURN":
                                TabPage methodCode = (TabPage)MainPage.tabList[methodIndex-1].Content; //MainPage.methodList.IndexOf(b)
                                copyBlock = methodCode.getReturnBlock();
                                if(copyBlock == null)
                                    copyBlock = MainPage.createReservedBlock(blockName);
                                break;
                            default:
                                copyBlock = MainPage.createReservedBlock(blockName);
                                break;
                        }       
                    }

                    //create end blocks for those who neeed it
                    if (blockName.Contains("IF"))
                    {
                        endBlock = MainPage.createReservedBlock("ENDIF");
                    }
                    else if (blockName.Equals("ELSE"))
                    {
                        endBlock = MainPage.createReservedBlock("ENDELSE");
                    }
                    else if (copyBlock.flag_requiresEndLoop)
                    {
                        endBlock = MainPage.createReservedBlock("ENDLOOP");
                    }

                    
                    //add block and call sockets to be added
                    if (endBlock == null)
                    {
                        EDDT.addNodeToTree(copyBlock, line);                       
                    }
                    else
                    {
                        EDDT.addNodeToTree(copyBlock, endBlock, line);
                    }
                    
                    //List<int> socketPosition = SocketReader.socketFinder(copyBlock);
                    //foreach (int socket in socketPosition)
                    //{
                     //   Debug.WriteLine("socket location: " + socket);
                        getSocket(block, copyBlock);
                    //}
                }
            }
            EDDT.setTree(EDDT.Content as ListBox);
        }