private string GetCsvContents(EntitySave entity, RacingEntityViewModel viewModel) { List <RacingEntityValues> values = new List <RacingEntityValues>(); var defaultValues = new RacingEntityValues(); defaultValues.Name = "DefaultValues"; // leave the defaults from the class values.Add(defaultValues); RuntimeCsvRepresentation rcr = RuntimeCsvRepresentation.FromList(values); var nameHeader = rcr.Headers[0]; // Setting it to IsRequired is not sufficient, need to // modify the "Original Text" prop // chop off the closing quote, and add ", required)" nameHeader.OriginalText = nameHeader.OriginalText.Substring(0, nameHeader.OriginalText.Length - 1) + ", required)"; rcr.Headers[0] = nameHeader; // if we want more defaults here... rcr.Records.Add(new string[0]); var toReturn = rcr.GenerateCsvString(); return(toReturn); }
private void DetermineWhatToGenerate(string propertyName, RacingEntityViewModel viewModel, out bool shouldGenerateCsv, out bool shouldGenerateEntity, out bool shouldAddTopDownVariables) { var entity = GlueState.Self.CurrentEntitySave; shouldGenerateCsv = false; shouldGenerateEntity = false; shouldAddTopDownVariables = false; if (entity != null) { switch (propertyName) { case nameof(RacingEntityViewModel.IsRacingEntity): // Don't generate a CSV if it's not a top down shouldGenerateCsv = viewModel.IsRacingEntity; shouldAddTopDownVariables = viewModel.IsRacingEntity; shouldGenerateEntity = true; break; //case nameof(TopDownEntityViewModel.TopDownValues): // shouldGenerateCsv = true; // // I don't think we need this...yet // shouldGenerateEntity = false; // shouldAddTopDownVariables = false; // break; } } }
private static void GenerateCsv(EntitySave entity, RacingEntityViewModel viewModel) { TaskManager.Self.Add( () => CsvGenerator.Self.GenerateFor(entity, viewModel), "Generating Racing CSV for " + entity.Name); TaskManager.Self.Add(() => { string rfsName = entity.Name.Replace("\\", "/") + "/" + CsvGenerator.RelativeCsvFile; bool isAlreadyAdded = entity.ReferencedFiles.FirstOrDefault(item => item.Name == rfsName) != null; if (!isAlreadyAdded) { GlueCommands.Self.GluxCommands.AddSingleFileTo( CsvGenerator.Self.CsvFileFor(entity).FullPath, CsvGenerator.RelativeCsvFile, "", null, false, null, entity, null ); } var rfs = entity.ReferencedFiles.FirstOrDefault(item => item.Name == rfsName); if (rfs != null && rfs.CreatesDictionary == false) { rfs.CreatesDictionary = true; GlueCommands.Self.GluxCommands.SaveGlux(); GlueCommands.Self.GenerateCodeCommands.GenerateElementCode(entity); } const string customClassName = "RacingEntityValues"; if (GlueState.Self.CurrentGlueProject.CustomClasses.Any(item => item.Name == customClassName) == false) { CustomClassSave throwaway; GlueCommands.Self.GluxCommands.AddNewCustomClass(customClassName, out throwaway); } var customClass = GlueState.Self.CurrentGlueProject.CustomClasses .FirstOrDefault(item => item.Name == customClassName); if (rfs != null) { if (customClass != null && customClass.CsvFilesUsingThis.Contains(rfs.Name) == false) { FlatRedBall.Glue.CreatedClass.CustomClassController.Self.SetCsvRfsToUseCustomClass(rfs, customClass, force: true); GlueCommands.Self.GluxCommands.SaveGlux(); } } }, "Adding csv to racing entity"); }
internal void GenerateFor(EntitySave entity, RacingEntityViewModel viewModel) { string contents = GetCsvContents(entity, viewModel); string fileName = CsvFileFor(entity).FullPath; GlueCommands.Self.TryMultipleTimes(() => { FileManager.SaveText(contents, fileName); }); }
public MainEntityView GetControl() { if (mainControl == null) { viewModel = new RacingEntityViewModel(); viewModel.PropertyChanged += HandleViewModelPropertyChange; mainControl = new MainEntityView(); mainControl.DataContext = viewModel; } return(mainControl); }