private void HandleGluxLoaded() { TaskManager.Self.AddSync(() => { var areAnyNetworked = false; foreach (var screen in GlueState.Self.CurrentGlueProject.Screens) { if (NetworkScreenViewModel.IsNetworked(screen)) { areAnyNetworked = true; NetworkScreenCodeGenerator.GenerateCodeFor(screen, save: false); } } foreach (var entity in GlueState.Self.CurrentGlueProject.Entities) { if (NetworkEntityViewModel.IsNetworked(entity)) { areAnyNetworked = true; NetworkEntityCodeGenerator.GenerateCodeFor(entity, save: false); } } if (areAnyNetworked) { NetworkConfigurationCodeGenerator.GenerateConfiguration(); GlueCommands.Self.ProjectCommands.SaveProjects(); } }, "Regenerating network files"); }
private void HandleVariableRemoved(CustomVariable variable) { var currentEntity = GlueState.Self.CurrentEntitySave; if (currentEntity != null && NetworkEntityViewModel.IsNetworked(currentEntity) && NetworkEntityViewModel.IsNetworked(variable) ) { TaskManager.Self.AddSync(() => NetworkEntityCodeGenerator.GenerateCodeFor(currentEntity), "Regenerating networked due to variable removed"); } }
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"); } }