public void HandleUseThisClassClick(CustomClassSave classToUse) { ReferencedFileSave currentReferencedFile = EditorLogic.CurrentReferencedFile; if (EditorLogic.CurrentReferencedFile != null) { if (classToUse != null) { CustomClassController.Self.SetCsvRfsToUseCustomClass(currentReferencedFile, classToUse); } } }
public ValidationResponse AddNewCustomClass(string className, out CustomClassSave customClassSave) { ValidationResponse validationResponse = new ValidationResponse(); customClassSave = null; string whyIsntValid; if (!NameVerifier.IsCustomClassNameValid(className, out whyIsntValid)) { validationResponse.OperationResult = OperationResult.Failure; validationResponse.Message = whyIsntValid; } else if (ProjectManager.GlueProjectSave.GetCustomClass(className) != null) { validationResponse.OperationResult = OperationResult.Failure; validationResponse.Message = $"The custom class {className} already exists"; } else { validationResponse.OperationResult = OperationResult.Success; customClassSave = new CustomClassSave(); customClassSave.Name = className; ProjectManager.GlueProjectSave.CustomClasses.Add(customClassSave); GlueCommands.Self.GluxCommands.SaveGlux(); GlueCommands.Self.GenerateCodeCommands.GenerateCustomClassesCode(); } return validationResponse; }
private void NewClassButton_Click(object sender, EventArgs e) { TextInputWindow tiw = new TextInputWindow(); tiw.DisplayText = "Enter new class name"; DialogResult result = tiw.ShowDialog(this); if (result == DialogResult.OK) { string newClassName = tiw.Result; string whyIsntValid; if (!NameVerifier.IsScreenNameValid(tiw.Result, null, out whyIsntValid)) { MessageBox.Show(whyIsntValid); } else { if (ProjectManager.GlueProjectSave.GetCustomClass(newClassName) == null) { CustomClassSave ccs = new CustomClassSave(); ccs.Name = newClassName; ProjectManager.GlueProjectSave.CustomClasses.Add(ccs); UpdateTreeView(); } } } }
public static string GetTypeForCsvFile(this ReferencedFileSave referencedFileSave, string alternativeFileName = null)//string fileName) { if (referencedFileSave == null) { throw new ArgumentNullException("ReferencedFileSave is null - it can't be."); } string fileName = referencedFileSave.Name; if (!string.IsNullOrEmpty(alternativeFileName)) { fileName = alternativeFileName; } if (!string.IsNullOrEmpty(referencedFileSave.UniformRowType)) { return(referencedFileSave.UniformRowType); } else { string className = null; // Make sure that the fileName is relative: // Wait! There's no reason to do this. The // RFS's Name property will always be relative // to the content project. This is a must to make // projects portable so we don't have to do any processing // on the file name. //if (!FileManager.IsRelative(fileName)) //{ // if (ProjectManager.ContentProject.Directory != null && // !FileManager.IsRelativeTo(ProjectManager.ContentProject.Directory, FileManager.RelativeDirectory)) // { // fileName = FileManager.MakeRelative(fileName, ProjectManager.ContentProject.Directory); // } // else // { // fileName = FileManager.MakeRelative(fileName); // } //} // Is this file using a custom class? CustomClassSave ccs = ObjectFinder.Self.GlueProject.GetCustomClassReferencingFile(fileName); if (ccs == null) { className = FileManager.RemovePath(FileManager.RemoveExtension(fileName)); if (className.EndsWith("File")) { className = className.Substring(0, className.Length - "File".Length); } className = EditorObjects.IoC.Container.Get <IVsProjectState>().DefaultNamespace + ".DataTypes." + className; } else { if (!string.IsNullOrEmpty(ccs.CustomNamespace)) { className = ccs.CustomNamespace + "." + ccs.Name; } else { className = EditorObjects.IoC.Container.Get <IVsProjectState>().DefaultNamespace + ".DataTypes." + ccs.Name; } } return(className); } }
private static void GenerateCustomClass(CustomClassSave customClass) { if (customClass.GenerateCode) { string fileName = ""; ICodeBlock codeBlock = new CodeDocument(); List<TypedMemberBase> members; Dictionary<string, string> untypedMembers; ReferencedFileSave rfs = null; if (customClass.CsvFilesUsingThis.Count != 0) { rfs = ObjectFinder.Self.GetReferencedFileSaveFromFile(customClass.CsvFilesUsingThis[0]); } if (rfs != null) { // let's just use the existing code flow, even though it's less efficient: GenerateAndSaveDataClass(rfs, rfs.CsvDelimiter); } else { fileName = GetClassInfo(fileName, null, customClass, out members, out untypedMembers); bool succeeded = GenerateClassFromMembers(rfs, true, customClass.Name, members, untypedMembers); } } //return fileName; }
private static void GetClassInfoFromCsv(List<RuntimeCsvRepresentation> rcrsForClass, CustomClassSave customClass, out List<TypedMemberBase> members, out Dictionary<string, string> untypedMembers) { members = new List<TypedMemberBase>(); untypedMembers = new Dictionary<string, string>(); //List<RuntimeCsvRepresentation> rcrsForClass = new List<RuntimeCsvRepresentation>(); List<string> membersAlreadyAdded = new List<string>(); //rcrsForClass.Add(rcr); foreach (RuntimeCsvRepresentation rcr in rcrsForClass) { GetMembersForRcr(members, untypedMembers, membersAlreadyAdded, rcr); } if (customClass != null) { foreach (var item in customClass.RequiredProperties) { string memberName = item.Member; string type = item.Type; TryAddMember(members, untypedMembers, membersAlreadyAdded, memberName, null, type); } } }
private static string GetClassInfo(string fileName, RuntimeCsvRepresentation rcr, CustomClassSave customClass, out List<TypedMemberBase> members, out Dictionary<string, string> untypedMembers) { bool usesCustomClass = customClass != null; List<RuntimeCsvRepresentation> rcrsForClass = new List<RuntimeCsvRepresentation>(); if (usesCustomClass) { foreach (string name in customClass.CsvFilesUsingThis) { ReferencedFileSave foundRfs = ObjectFinder.Self.GetReferencedFileSaveFromFile(name); if (foundRfs == null) { int m = 3; } else { fileName = foundRfs.Name; fileName = ProjectManager.MakeAbsolute(fileName); RuntimeCsvRepresentation runtimeToAdd = null; try { runtimeToAdd = CsvFileManager.CsvDeserializeToRuntime(fileName); } catch (Exception e) { MessageBox.Show("Error trying to parse CSV:\n" + e.ToString()); } if (runtimeToAdd != null) { rcrsForClass.Add(runtimeToAdd); } } } } else if(rcr != null) { rcrsForClass.Add(rcr); } GetClassInfoFromCsv(rcrsForClass, customClass, out members, out untypedMembers); return fileName; }