public static void WriteSettingsForElement(ElementSave element, CodeOutputElementSettings settings) { // save the file var fileName = GetCodeSettingsFileFor(element); var serialized = JsonConvert.SerializeObject(settings); System.IO.File.WriteAllText(fileName.FullPath, serialized); }
public static string GetCodeForElement(ElementSave element, CodeOutputElementSettings elementSettings, CodeOutputProjectSettings projectSettings) { #region Determine if XamarinForms Control VisualApi visualApi; var defaultState = element.DefaultState; var isXamForms = defaultState.GetValueRecursive($"IsXamarinFormsControl") as bool?; if (isXamForms == true) { visualApi = VisualApi.XamarinForms; } else { visualApi = VisualApi.Gum; } #endregion var stringBuilder = new StringBuilder(); int tabCount = 0; #region Using Statements if (!string.IsNullOrWhiteSpace(projectSettings?.CommonUsingStatements)) { stringBuilder.AppendLine(projectSettings.CommonUsingStatements); } if (!string.IsNullOrEmpty(elementSettings?.UsingStatements)) { stringBuilder.AppendLine(elementSettings.UsingStatements); } #endregion #region Namespace Header/Opening { if (!string.IsNullOrEmpty(elementSettings?.Namespace)) { stringBuilder.AppendLine(ToTabs(tabCount) + $"namespace {elementSettings.Namespace}"); stringBuilder.AppendLine(ToTabs(tabCount) + "{"); tabCount++; } #endregion #region Class Header/Opening { stringBuilder.AppendLine(ToTabs(tabCount) + $"partial class {GetClassNameForType(element.Name, visualApi)}"); stringBuilder.AppendLine(ToTabs(tabCount) + "{"); tabCount++; #endregion FillWithStateEnums(element, stringBuilder, tabCount); FillWithCurrentState(element, stringBuilder, tabCount); foreach (var instance in element.Instances.Where(item => item.DefinedByBase == false)) { FillWithInstanceDeclaration(instance, element, stringBuilder, tabCount); } AddAbsoluteLayoutIfNecessary(element, tabCount, stringBuilder); stringBuilder.AppendLine(); FillWithExposedVariables(element, stringBuilder, visualApi, tabCount); // -- no need for AppendLine here since FillWithExposedVariables does it after every variable -- GenerateConstructor(element, visualApi, tabCount, stringBuilder); stringBuilder.AppendLine(ToTabs(tabCount) + "partial void CustomInitialize();"); #region Class Closing } tabCount--; stringBuilder.AppendLine(ToTabs(tabCount) + "}"); #endregion if (!string.IsNullOrEmpty(elementSettings?.Namespace)) { tabCount--; stringBuilder.AppendLine(ToTabs(tabCount) + "}"); } return(stringBuilder.ToString()); }
public static string GetCustomCodeForElement(ElementSave element, CodeOutputElementSettings elementSettings, CodeOutputProjectSettings projectSettings) { var visualApi = CodeGenerator.GetVisualApiForElement(element); var stringBuilder = new StringBuilder(); int tabCount = 0; #region Using Statements if (!string.IsNullOrWhiteSpace(projectSettings?.CommonUsingStatements)) { stringBuilder.AppendLine(projectSettings.CommonUsingStatements); } if (!string.IsNullOrEmpty(elementSettings?.UsingStatements)) { stringBuilder.AppendLine(elementSettings.UsingStatements); } #endregion #region Namespace Header/Opening { string namespaceName = CodeGenerator.GetElementNamespace(element, elementSettings, projectSettings); if (!string.IsNullOrEmpty(namespaceName)) { stringBuilder.AppendLine(ToTabs(tabCount) + $"namespace {namespaceName}"); stringBuilder.AppendLine(ToTabs(tabCount) + "{"); tabCount++; } #endregion #region Class Header/Opening { // todo - this needs work! It's just placeholder so I can finish the rest of this method to get something with the right # of brackets string inheritance = null; if (element is ScreenSave) { inheritance = element.BaseType ?? "Xamarin.Forms.BioCheckPage"; } else if (element.BaseType == "XamarinForms/SkiaGumCanvasView") { inheritance = "SkiaGum.SkiaGumCanvasView"; } else { inheritance = "BindableGraphicalUiElement"; } stringBuilder.AppendLine(ToTabs(tabCount) + $"partial class {CodeGenerator.GetClassNameForType(element.Name, visualApi)} : {inheritance}"); stringBuilder.AppendLine(ToTabs(tabCount) + "{"); tabCount++; #endregion stringBuilder.AppendLine(ToTabs(tabCount) + "partial void CustomInitialize()"); stringBuilder.AppendLine(ToTabs(tabCount) + "{"); stringBuilder.AppendLine(ToTabs(tabCount)); stringBuilder.AppendLine(ToTabs(tabCount) + "}"); #region Class Closing } tabCount--; stringBuilder.AppendLine(ToTabs(tabCount) + "}"); #endregion if (!string.IsNullOrEmpty(namespaceName)) { tabCount--; stringBuilder.AppendLine(ToTabs(tabCount) + "}"); } return(stringBuilder.ToString()); }