/// <summary> /// 获取一个项目类 /// </summary> /// <param name="projectnode">xml项目节点</param> /// /// <param name="dictionary">上级目录</param> /// <returns></returns> protected ProjectClass GetProjectClass(XmlElement projectnode, string dictionary) { string name = projectnode.GetAttribute("ProjectName"); ProjectClass pro = new ProjectClass(this.ProjectLanguage); pro.RootPath = dictionary; pro.OutPath = dictionary + "bin//Debug//"; pro.FilesPath = dictionary; pro.ConfigFilePath = dictionary + name; pro.ProjectName = name; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(pro.ConfigFilePath); XmlElement rootElenemts = (XmlElement)xmlDoc.SelectSingleNode("Config"); //pro.ProjectName = rootElenemts.GetAttribute("ProjectName"); XmlNodeList ProjectFileNodelist = rootElenemts.SelectNodes("ProjectFile"); foreach (XmlElement enemt in ProjectFileNodelist) { ///获取文件名 string filename = enemt.GetAttribute("FileName"); PicTransfromXmlFile transf = new PicTransfromXmlFile(); pro.AddPicTabPage(transf.XmlToPic(dictionary + filename)); } ///保存关闭文件 xmlDoc.Save(pro.ConfigFilePath); ///设置项目语言 pro.Language = this.ProjectLanguage; return(pro); }
/// <summary> /// 添加一个项目文件 /// </summary> /// <param name="pro">要添加的项目类</param> public void AddProjectClass(ProjectClass pro) { if (!MySolution.Contains(pro)) { MySolution.Add(pro); MyProjectFiles file = new MyProjectFiles(); file.Name = pro.ProjectName; file.Path = pro.FilesPath; MyProjectClassFile.Add(file); } }
/// <summary> /// 删除一个项目 /// </summary> /// <param name="pro">要删除的项目</param> public void DelProjectClass(ProjectClass pro) { if (MySolution.Contains(pro)) { MySolution.Remove(pro); foreach (MyProjectFiles file in MyProjectClassFile) { if (file.Name == pro.ProjectName) { MyProjectClassFile.Remove(file); } } } }
/// <summary> /// 编译代码 /// </summary> /// <returns></returns> public string Editor() { string EditorMessage = ""; ///如果是C#代码 if (ProjectLanguage == "C#") { if (MyProjectClassFile.Count == 0) { MessageBox.Show("还没有创建任何项目!"); return(EditorMessage = "error"); } ///编译所有的项目 for (int nowcount = 0; nowcount < MySolution.Count; nowcount++) { ProjectClass proclass = MySolution[nowcount]; string[] CodeString = new string[proclass.MyListPicPage.Count]; int i = 0; XPicCodeToCSharpCode codeEditor = new XPicCodeToCSharpCode(proclass.ProjectName); foreach (PicTabPage page in proclass.MyListPicPage.Values) { CodeString[i] = codeEditor.XPicCodeEditor(page); } string ErrorString = ""; CodeDestoryClass.AnalyTicalCode(CodeString, out ErrorString, proclass.OutPath, proclass.GetDllFilePathString(), proclass.ProjectName); EditorMessage += ErrorString + "\r\n"; } } else if (ProjectLanguage == "C") { if (MyProjectClassFile.Count == 0) { MessageBox.Show("还没有创建任何项目!"); return(EditorMessage = "error"); } ProjectClass proclass = GetFirstProject(); string CodeString = ""; XPicCodeToCLanguagesCode codeEditor = new XPicCodeToCLanguagesCode(proclass.ProjectName); CodeString = codeEditor.XPicCodeEditor(proclass.GetFirstPicTabPage()); string ErrorString = ""; CodeDestoryClass.AnalyTicalCode(CodeString, out ErrorString, proclass.OutPath, proclass.ProjectName); EditorMessage += ErrorString + "\r\n"; } return(EditorMessage); }
/// <summary> /// 获取翻译后的代码 /// </summary> /// <returns>返回翻译后的代码</returns> private string[] GetCode() { ///如果是C#代码 if (ProjectLanguage == "C#") { if (MyProjectClassFile.Count == 0) { MessageBox.Show("还没有创建任何项目!"); return(null); } ///编译所有的项目 for (int nowcount = 0; nowcount < MySolution.Count; nowcount++) { ProjectClass proclass = MySolution[nowcount]; string[] CodeString = new string[proclass.MyListPicPage.Count]; int i = 0; XPicCodeToCSharpCode codeEditor = new XPicCodeToCSharpCode(proclass.ProjectName); foreach (PicTabPage page in proclass.MyListPicPage.Values) { CodeString[i] = codeEditor.XPicCodeEditor(page); } return(CodeString); } return(null); } else if (ProjectLanguage == "C") { if (MyProjectClassFile.Count == 0) { MessageBox.Show("还没有创建任何项目!"); return(null); } ProjectClass proclass = GetFirstProject(); string [] CodeString = new string[1]; XPicCodeToCLanguagesCode codeEditor = new XPicCodeToCLanguagesCode(proclass.ProjectName); CodeString[0] = codeEditor.XPicCodeEditor(proclass.GetFirstPicTabPage()); return(CodeString); } else { return(null); } }