public static void GenerateCodeFor(ScreenSave screenSave, bool save = false)
        {
            var isNetworkScreen = NetworkScreenViewModel.IsNetworked(screenSave);

            if (isNetworkScreen)
            {
                var screenGeneratedCode            = GetGeneratedScreenCode(screenSave);
                var generatedScreenNetworkFilePath = CodeGeneratorCommonLogic.GetGeneratedElementNetworkFilePathFor(screenSave);

                CodeGeneratorCommonLogic.SaveFile(screenGeneratedCode, generatedScreenNetworkFilePath);
                CodeGeneratorCommonLogic.AddCodeFileToProject(generatedScreenNetworkFilePath);

                var customScreenNetworkFilePath = CodeGeneratorCommonLogic.GetCustomElementNetworkFilePathFor(screenSave);
                if (customScreenNetworkFilePath.Exists() == false)
                {
                    var customScreenNetworkCode = GenerateEmptyCustomScreenNetworkCode(screenSave);
                    CodeGeneratorCommonLogic.SaveFile(customScreenNetworkCode, customScreenNetworkFilePath);
                }
                CodeGeneratorCommonLogic.AddCodeFileToProject(customScreenNetworkFilePath);

                GlueCommands.Self.ProjectCommands.MakeGeneratedCodeItemsNested();

                if (save)
                {
                    GlueCommands.Self.ProjectCommands.SaveProjects();
                }
            }
        }
Example #2
0
        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");
        }
Example #3
0
 private void HandleScreenRemoved(ScreenSave screen, List <string> filesToRemove)
 {
     if (NetworkScreenViewModel.IsNetworked(screen))
     {
         filesToRemove.Add(CodeGeneratorCommonLogic.GetGeneratedElementNetworkFilePathFor(screen).FullPath);
         filesToRemove.Add(CodeGeneratorCommonLogic.GetCustomElementNetworkFilePathFor(screen).FullPath);
     }
 }
        public static void GenerateAllNetworkScreenCode()
        {
            var screensToRegenerate = GlueState.Self.CurrentGlueProject.Screens
                                      .Where(item => NetworkScreenViewModel.IsNetworked(item))
                                      .ToArray();

            foreach (var screen in screensToRegenerate)
            {
                NetworkScreenCodeGenerator.GenerateCodeFor(screen);
            }
        }
Example #5
0
        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}");
            }
        }