private int ResolutionBlocks(LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK block_next, LMD_GUI.LMD_BottomPanel info) { try { int result = 0; String str_lvl = ""; for (int i = 0; i < level; i++) { str_lvl += "---"; } if (block_next.element != null) { ME.AddItem(block_next, GetCodeParseBlock(block_next.element)); } info.AddItemText("1>---" + str_lvl + "| Block[" + block_next.Type + "] Mode[" + block_next.Mode + "] Type element[" + block_next.element.GetType() + "] lvl[" + level + "]"); if (block_next.Type == LMD_GUI.TYPE_BLOCK.condition) { level += 2; LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK block_next_1 = block_next.next_2; ResolutionBlocks(block_next_1, info); } if (block_next.Mode == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_false_end || block_next.Mode == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_true_end) { level--; if (block_next.Mode == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_false_end) { ME.AddItem(null, new String[] { " "+ ML.GetElseCondition() }); } else if (block_next.Mode == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_true_end) { ME.AddItem(null, new String[] { " "+ ML.GetCloseCondition() }); } } block_next = block_next.next_1; if (block_next != null) { ResolutionBlocks(block_next, info); } return(result); } catch { info.AddItemText("Произошла ошибка собирания блоков"); return(0); } }
public void AddItem(LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK block, String[] code) { BLOCK_CODE_CONTROL_ERROR b = new BLOCK_CODE_CONTROL_ERROR(); b.block = block; b.code = code; blocks.Add(b); }
private int ResolutionBlocksSave(LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK block_next, LMD_GUI.LMD_BottomPanel info) { /* * int result = 0; * String str_lvl = ""; * * FileManager.ManagerProjects.INFO_BLOCK b = new FileManager.ManagerProjects.INFO_BLOCK(); * b.ID = block_next.ID; * if (block_next.next_1 != null) * { * b.NextID = block_next.next_1.ID; * } * b.Type = block_next.Type; * * if (block_next.element != null) * { * b.x = (float)System.Windows.Controls.Canvas.GetLeft(block_next.element); * b.y = (float)System.Windows.Controls.Canvas.GetTop(block_next.element); * } * ListInfoBlocks.Add(b); * * info.AddItemText("1>--- ID[" + b.ID + "] NextID[" + b.NextID + "] Block[" + b.Type + "] "); * * for (int i = 0; i < level; i++) * str_lvl += "---"; * * if (block_next.element != null) * ME.AddItem(block_next, GetCodeParseBlock(block_next.element)); * * if (block_next.Type == LMD_GUI.TYPE_BLOCK.condition) * { * level += 2; * LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK block_next_1 = block_next.next_2; * * ResolutionBlocksSave(block_next_1, info); * } * * if (block_next.Mode == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_false_end || * block_next.Mode == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_true_end) * { * level--; * * if (block_next.Mode == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_false_end) * ME.AddItem(null, new String[] { " } else {" }); * else if (block_next.Mode == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_true_end) * ME.AddItem(null, new String[] { " }" }); * } * * block_next = block_next.next_1; * if (block_next != null) * ResolutionBlocksSave(block_next, info); * * return result; */ return(0); }
public List <FileManager.ManagerProjects.INFO_BLOCK> GetInfoBlocks(List <LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK> blocks, LMD_GUI.LMD_BottomPanel info, LMD_GUI.LMD_FastInformationPanel fast_info) { info.ClearDate(); List <FileManager.ManagerProjects.INFO_BLOCK> bl = new List <FileManager.ManagerProjects.INFO_BLOCK>(); ListInfoBlocks.Clear(); PrevTextCode.Clear(); level = 0; ME.Clear(); int count_block = blocks.Count; info.AddItemText("Сохранение проекта... " + count_block); String lang = ""; switch (ML.PresentLanguage) { case Language.ManagerLanguage.LANGUAGE.C_PLUS_PLUS: lang = "C++"; break; case Language.ManagerLanguage.LANGUAGE.C_SHARP: lang = "C#"; break; case Language.ManagerLanguage.LANGUAGE.JAVA: lang = "Java"; break; case Language.ManagerLanguage.LANGUAGE.PASCALABC: lang = "Pascal"; break; } PrevTextCode.Add("Язык построения: " + lang); PrevTextCode.Add(""); info.AddItemText("Язык построения: " + lang); LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK block_begin = null; for (int i = 0; i < count_block; i++) { blocks[i].ID = i; if (blocks[i].Type == LMD_GUI.TYPE_BLOCK.begin) { block_begin = blocks[i]; } } LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK block_next = block_begin; info.AddItemText("Построение последовательности блоков"); ResolutionBlocksSave(block_next, info); info.AddItemText("Сохранение выполнено успешно"); return(ListInfoBlocks); }
public void RemoveBlock(UIElement element) { // LMD_BLOCKS.BlockJoint joint = null; LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK bblock = null; for (int i = 0; i < blocks.Count; i++) { if (blocks[i].element == element) { bblock = blocks[i]; // for (int j = 0; j < joints.Count; j++) // if (joints[j].element_begin == blocks[i].element) // { // joint = joints[j]; // } break; } } // Boolean block_yes = false; // for (int i = 0; i < blocks.Count; i++) // { // if (blocks[i].next_1 != null) // if (joint.element_end == blocks[i].next_1.element) // { // blocks[i].next_1 = null; // // block_yes = true; // } // // if (block_yes) // break; // } // joints.Remove(joint); // RemoveLine(joint); blocks.Remove(bblock); canvas.Children.Remove(element); }
public void CreateJoint2() { if (selectJoint != null) { LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK b1 = null; LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK b2 = null; for (int i = 0; i < blocks.Count; i++) { if (blocks[i].element == selectJoint.element_begin) { b1 = blocks[i]; } } for (int i = 0; i < blocks.Count; i++) { if (blocks[i].element == selectJoint.element_end) { b2 = blocks[i]; } } b1.next_1 = b2; // MessageBox.Show("b1[" + b1.Type + "] Mode[" + b1.Mode + "] b2[" + b2.Type + "] Mode[" + b2.Mode + "]"); if (b1.Mode == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_true) { b2.Mode = LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_true; } else if (b1.Mode == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_false) { b2.Mode = LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_false; } selectJoint.Create(this.canvas); selectJoint = null; } joint_select = false; }
public void RunCoreCompile(FileManager.INFO_PROJECT info_project, LMD_GUI.LMD_BottomPanel info, List <LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK> blocks, LMD_GUI.LMD_FastInformationPanel fast_info) { Language.ManagerLanguage.LANGUAGE old_language = ML.PresentLanguage; ML.SetLanguage(Language.ManagerLanguage.LANGUAGE.C_SHARP); level = 0; ME.Clear(); LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK block_begin = null; for (int i = 0; i < blocks.Count; i++) { if (blocks[i].Type == LMD_GUI.TYPE_BLOCK.begin) { block_begin = blocks[i]; } } LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK block_next = block_begin; ResolutionBlocks(block_next, info); String res_code = ""; List <Language.BLOCK_CODE_CONTROL_ERROR> BCCE = ME.GetItems(); int lines = 0; for (int i = 0; i < BCCE.Count; i++) { for (int j = 0; j < BCCE[i].code.Length; j++) { lines++; info.AddItemText(BCCE[i].code[j]); res_code += BCCE[i].code[j]; BCCE[i].lines.Add(lines); } } CompileCode(res_code, null, true); ML.SetLanguage(old_language); }
/// <summary> /// Добавляет выборочно связь. Связь зависит от selectJoint /// и исходя из этого объекта сама выбирает какую форму она будет иметь /// </summary> /// <param name="element">UI связываемого блока. Привязывается к соединению</param> public void AddJoint(UIElement element) { joint_select = true; if (selectJoint == null) { selectJoint = new LMD_BLOCKS.BlockJoint(this); selectJoint.element_begin = element; selectJoint.createNewJoint += selectJoint_createNewJoint; selectJoint.removeJoint += selectJoint_removeJoint; selectJoint.type_line = LMD_BLOCKS.TYPE_LINE.marshrut; } else if (selectJoint.type_line == LMD_BLOCKS.TYPE_LINE.marshrut) // Прямая связь { if (selectJoint.element_begin == null) { selectJoint.element_begin = element; } else if (selectJoint.element_end == null) { selectJoint.element_end = element; CreateJoint2(); } } else if (selectJoint.type_line == LMD_BLOCKS.TYPE_LINE.line_block || selectJoint.type_line == LMD_BLOCKS.TYPE_LINE.condition) { if (selectJoint.type_line == LMD_BLOCKS.TYPE_LINE.line_block) { selectJoint.element_end = element; LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK b1 = null; LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK b2 = null; for (int i = 0; i < blocks.Count; i++) { if (blocks[i].element == selectJoint.element_begin) { b1 = blocks[i]; } } for (int i = 0; i < blocks.Count; i++) { if (blocks[i].element == selectJoint.element_end) { b2 = blocks[i]; } } b1.next_1 = b2; // MessageBox.Show(""+b1.Type + " | " + b2.Type); selectJoint.CreateOldXYToBlock(this.canvas, element); } else if (selectJoint.type_line == LMD_BLOCKS.TYPE_LINE.condition) { #region + if (selectJoint.State == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_true) // + { selectJoint.element_end = element; LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK b1 = null; LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK b2 = null; for (int i = 0; i < blocks.Count; i++) { if (blocks[i].element == selectJoint.element_begin) { b1 = blocks[i]; } } for (int i = 0; i < blocks.Count; i++) { if (blocks[i].element == selectJoint.element_end) { b2 = blocks[i]; } } b1.next_1 = b2; b2.Mode = LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_true; selectJoint.CreateOldXYToBlock(this.canvas, element); } #endregion #region - else if (selectJoint.State == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_false) // - { selectJoint.element_end = element; LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK b1 = null; LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK b2 = null; for (int i = 0; i < blocks.Count; i++) { if (blocks[i].element == selectJoint.element_begin) { b1 = blocks[i]; } } for (int i = 0; i < blocks.Count; i++) { if (blocks[i].element == selectJoint.element_end) { b2 = blocks[i]; } } b1.next_2 = b2; b2.Mode = LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_false; selectJoint.CreateOldXYToBlock(this.canvas, element); } #endregion } else { selectJoint.CreateOldXYToBlock(this.canvas, element); } joint_select = false; selectJoint = null; } }
public void AddBlock(TYPE_BLOCK type) { canvas.Children.Remove(SelectUIElement); SelectUIElement = null; selectTypeBlock = TYPE_BLOCK.none; date_select = true; selectTypeBlock = type; LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK b_b = null; switch (type) { case TYPE_BLOCK.begin: LMD_BLOCKS.BlockBegin bb = new LMD_BLOCKS.BlockBegin(); bb.expanderClickItem += bb_expanderClickItem; SelectUIElement = bb; b_b = new LMD_BLOCKS.BLOCK_JOINT.BEGIN(); break; case TYPE_BLOCK.end: LMD_BLOCKS.BlockEnd be = new LMD_BLOCKS.BlockEnd(); be.expanderClickItem += bb_expanderClickItem; SelectUIElement = be; b_b = new LMD_BLOCKS.BLOCK_JOINT.END(); break; case TYPE_BLOCK.input: LMD_BLOCKS.BlockInput bi = new LMD_BLOCKS.BlockInput(); bi.expanderClickItem += bb_expanderClickItem; SelectUIElement = bi; b_b = new LMD_BLOCKS.BLOCK_JOINT.INPUT(); break; case TYPE_BLOCK.output: LMD_BLOCKS.BlockOutput bo = new LMD_BLOCKS.BlockOutput(); bo.expanderClickItem += bb_expanderClickItem; SelectUIElement = bo; b_b = new LMD_BLOCKS.BLOCK_JOINT.OUTPUT(); break; case TYPE_BLOCK.calculate: LMD_BLOCKS.BlockCalculate bca = new LMD_BLOCKS.BlockCalculate(); bca.expanderClickItem += bb_expanderClickItem; SelectUIElement = bca; b_b = new LMD_BLOCKS.BLOCK_JOINT.CALCULATE(); break; case TYPE_BLOCK.condition: LMD_BLOCKS.BlockCondition bco = new LMD_BLOCKS.BlockCondition(); bco.expanderClickItem += bb_expanderClickItem; bco.clickJoint += bco_clickJoint; SelectUIElement = bco; b_b = new LMD_BLOCKS.BLOCK_JOINT.CONDITION(); break; case TYPE_BLOCK.camera: break; case TYPE_BLOCK.joint: joint_select = true; break; } b_b.element = SelectUIElement; b_b.element.MouseEnter += element_MouseEnter; b_b.element.MouseLeave += element_MouseLeave; blocks.Add(b_b); SelectUIElement.Opacity = 0.5; canvas.Children.Add(SelectUIElement); Canvas.SetLeft(SelectUIElement, -500); Canvas.SetTop(SelectUIElement, -500); }
public int Run(List <LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK> blocks, LMD_GUI.LMD_BottomPanel info, LMD_GUI.LMD_FastInformationPanel fast_info) { info.ClearDate(); fast_info.SetCurrentText("Начато построение"); PrevTextCode.Clear(); level = 0; ME.Clear(); int count_block = blocks.Count; // Set setting from projects to compile FileManager.INFO_PROJECT info_project = FileManager.ManagerProjects.GetPresentProjectInfo(); ML.SetLanguage(info_project.Language); info.AddItemText("Информация о проекте: "); info.AddItemText("Название: " + info_project.name); info.AddItemText("Путь: " + Environment.CurrentDirectory + "\\" + info_project.path); info.AddItemText("Тип проекта: " + info_project.Type); info.AddItemText("Колличество блоков: " + count_block); fast_info.ProgressBar.Value = 20; String lang = ""; switch (ML.PresentLanguage) { case Language.ManagerLanguage.LANGUAGE.C_PLUS_PLUS: lang = "C++"; break; case Language.ManagerLanguage.LANGUAGE.C_SHARP: lang = "C#"; break; case Language.ManagerLanguage.LANGUAGE.JAVA: lang = "Java"; break; case Language.ManagerLanguage.LANGUAGE.PASCALABC: lang = "Pascal"; break; } PrevTextCode.Add("Язык построения: " + lang); PrevTextCode.Add(""); info.AddItemText("Язык построения: " + lang); LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK block_begin = null; for (int i = 0; i < count_block; i++) { if (blocks[i].Type == LMD_GUI.TYPE_BLOCK.begin) { block_begin = blocks[i]; } } LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK block_next = block_begin; info.AddItemText("Построение последовательности блоков"); ResolutionBlocks(block_next, info); fast_info.ProgressBar.Value = 60; info.AddItemText("Собирается код"); String res_code = ""; List <Language.BLOCK_CODE_CONTROL_ERROR> BCCE = ME.GetItems(); int lines = 0; for (int i = 0; i < BCCE.Count; i++) { for (int j = 0; j < BCCE[i].code.Length; j++) { lines++; PrevTextCode.Add(BCCE[i].code[j]); info.AddItemText(BCCE[i].code[j]); res_code += BCCE[i].code[j]; BCCE[i].lines.Add(lines); } } fast_info.ProgressBar.Value = 80; switch (info_project.Type) { case FileManager.TYPE_PROJECT.DLL: this.name_project = info_project.name + ".dll"; CompileCode(res_code, info, false); break; case FileManager.TYPE_PROJECT.EXE: this.name_project = info_project.name + ".exe"; RunCoreCompile(info_project, info, blocks, fast_info); break; case FileManager.TYPE_PROJECT.NONE: break; case FileManager.TYPE_PROJECT.TXT: FileManager.ManagerProjects.CreateTXTCode(res_code); break; } info.AddItemText("Собирание проекта завершено"); fast_info.SetCurrentText("Готово"); fast_info.ProgressBar.Value = 100; return(0); }