private void HandleScreenRemoved(ScreenSave screen, List <string> filesToRemove) { if (NetworkScreenViewModel.IsNetworked(screen)) { filesToRemove.Add(CodeGeneratorCommonLogic.GetGeneratedElementNetworkFilePathFor(screen).FullPath); filesToRemove.Add(CodeGeneratorCommonLogic.GetCustomElementNetworkFilePathFor(screen).FullPath); } }
private void HandleEntityRemoved(EntitySave entity, List <string> filesToRemove) { if (NetworkEntityViewModel.IsNetworked(entity)) { var filePaths = CodeGeneratorCommonLogic.GetAllNetworkFilesFor(entity); filesToRemove.AddRange(filePaths.Select(item => item.FullPath)); // All screens no longer need to handle creating this: TaskManager.Self.AddSync(NetworkScreenCodeGenerator.GenerateAllNetworkScreenCode, "Regenerating network screens due to entity removal"); } }
private void HandleEntityViewModelPropertyChanged(object sender, PropertyChangedEventArgs e) { var currentEntity = GlueState.Self.CurrentEntitySave; if (currentEntity != null && entityViewModel != null) { TaskManager.Self.AddSync(() => { var createdNewVariable = entityViewModel.ApplyTo(currentEntity); if (createdNewVariable) { GlueCommands.Self.RefreshCommands.RefreshUi(currentEntity); } GlueCommands.Self.GluxCommands.SaveGluxTask(); NetworkEntityCodeGenerator.GenerateCodeFor(currentEntity); // Whenever a new entity is modified, we may need to re-generate all screens because screens // have a switch statement for creating entities based on networked entities: var changedIsNetworked = e.PropertyName == nameof(NetworkEntityViewModel.IsNetworkEntity); if (changedIsNetworked) { if (NetworkEntityViewModel.IsNetworked(currentEntity) == false) { // set this to not be networked, need to remove the files: var networkedFiles = CodeGeneratorCommonLogic.GetAllNetworkFilesFor(currentEntity); foreach (var file in networkedFiles) { CodeGeneratorCommonLogic.RemoveCodeFileFromProject(file); } } else { NetworkConfigurationCodeGenerator.GenerateConfiguration(); MessagesCodeGenerator.GenerateAllMessages(); } NetworkScreenCodeGenerator.GenerateAllNetworkScreenCode(); } }, "Reacting to networked entity view model change"); } }
private void HandleScreenViewModelPropertyChanged(object sender, PropertyChangedEventArgs e) { var currentScreen = GlueState.Self.CurrentScreenSave; if (currentScreen != null && screenViewModel != null) { TaskManager.Self.AddSync(() => { screenViewModel.ApplyTo(currentScreen); GlueCommands.Self.GluxCommands.SaveGluxTask(); var shouldRegenerate = true; if (e.PropertyName == nameof(NetworkScreenViewModel.IsNetworkScreen)) { if (NetworkScreenViewModel.IsNetworked(currentScreen) == false) { shouldRegenerate = false; CodeGeneratorCommonLogic.RemoveCodeFileFromProject( CodeGeneratorCommonLogic.GetGeneratedElementNetworkFilePathFor(currentScreen)); CodeGeneratorCommonLogic.RemoveCodeFileFromProject( CodeGeneratorCommonLogic.GetCustomElementNetworkFilePathFor(currentScreen)); } else { NetworkConfigurationCodeGenerator.GenerateConfiguration(); MessagesCodeGenerator.GenerateAllMessages(); } } if (shouldRegenerate) { NetworkScreenCodeGenerator.GenerateCodeFor(currentScreen); } }, $"Regenerating network screen {currentScreen}"); } }