Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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;
                }
            }
        }
Exemplo n.º 3
0
        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");
        }
Exemplo n.º 4
0
        internal void GenerateFor(EntitySave entity, RacingEntityViewModel viewModel)
        {
            string contents = GetCsvContents(entity, viewModel);

            string fileName = CsvFileFor(entity).FullPath;

            GlueCommands.Self.TryMultipleTimes(() =>
            {
                FileManager.SaveText(contents, fileName);
            });
        }
Exemplo n.º 5
0
        public MainEntityView GetControl()
        {
            if (mainControl == null)
            {
                viewModel = new RacingEntityViewModel();
                viewModel.PropertyChanged += HandleViewModelPropertyChange;
                mainControl = new MainEntityView();

                mainControl.DataContext = viewModel;
            }

            return(mainControl);
        }