public static GenerationResult GenerateFilePreview(Idea Source, ExternalLanguageDeclaration Language, bool FailWhenInvalid = false) { var TemplateText = Source.IdeaDefinitor.GetGenerationFinalTemplate(Language); var Result = GenerateFilePreview(Source, TemplateText, FailWhenInvalid); return(Result); }
public void TemplateLanguageSelection(ExternalLanguageDeclaration NewLanguage) { this.Apply(); this.BaseDomain.CurrentExternalLanguage = NewLanguage; this.Refresh(); }
/// <summary> /// Constructor. /// </summary> public FileGenerator(Composition SourceComposition, ExternalLanguageDeclaration Language, FileGenerationConfiguration NewConfiguration) { this.SourceComposition = SourceComposition; this.Language = Language; if (NewConfiguration == null) { NewConfiguration = new FileGenerationConfiguration(); } this.Configuration = NewConfiguration; }
public static ExternalLanguageDeclaration ExternalLanguageCreate(Domain OwnerEntity, IList <ExternalLanguageDeclaration> EditedList) { if (!ProductDirector.ValidateEditionPermission(AppExec.LIC_EDITION_PROFESSIONAL, "create External Languages declarations")) { return(null); } int NewNumber = EditedList.Count + 1; string NewName = "ExternalLanguage" + NewNumber.ToString(); var Definitor = new ExternalLanguageDeclaration(NewName, NewName.TextToIdentifier()); if (ExternalLanguageEdit(OwnerEntity, EditedList, Definitor)) { return(Definitor); } return(null); }
/// <summary> /// Gets the complete file generation Template for the specified Language, based on the Domain's global Template for this kind of Idea Definition, /// concatenated to the local Template. // POSTPONED: Support multiple templates (from multiple sections in the template-text, separated by config-prefix). /// </summary> public string GetGenerationFinalTemplate(ExternalLanguageDeclaration Language, string ExplicitTemplateText = null, bool?ExplicitExtendsBaseTemplate = null) { var BaseTemplate = (this is Domain ? null : (this is ConceptDefinition ? this.OwnerDomain.OutputTemplatesForConcepts.FirstOrDefault(tpl => tpl.Language == Language) : this.OwnerDomain.OutputTemplatesForRelationships.FirstOrDefault(tpl => tpl.Language == Language))); var BaseTemplateText = (BaseTemplate == null ? "" : BaseTemplate.Text); // Notice that overwrite (non extension) is performed only when the template is not empty at the Idea-Def level. var Template = this.OutputTemplates.FirstOrDefault(tpl => tpl.Language == Language); var TemplateText = ExplicitTemplateText.NullDefault(Template == null ? "" : Template.Text); var ExtendsBaseTemplate = ExplicitExtendsBaseTemplate.NullDefaultTo(Template == null ? true : Template.ExtendsBaseTemplate); var ExtensionPlaceMark = GenerationManager.GENPAR_PREFIX + GenerationManager.GENKEY_POS_EXTENSION; var ExtensionPosition = TemplateText.IndexOf(ExtensionPlaceMark, StringComparison.OrdinalIgnoreCase); if (ExtendsBaseTemplate) { if (ExtensionPosition < 0) { TemplateText = BaseTemplateText + TemplateText; } else { TemplateText = BaseTemplateText.ReplaceAt(ExtensionPosition, ExtensionPlaceMark.Length, TemplateText); } } else if (ExtensionPosition >= 0) // Don't forget to remove the place-mark { TemplateText = BaseTemplateText.ReplaceAt(ExtensionPosition, ExtensionPlaceMark.Length, ""); } return(TemplateText); }
public static bool ExternalLanguageDelete(Domain OwnerEntity, IList <ExternalLanguageDeclaration> EditedList, ExternalLanguageDeclaration ExternalLang) { if (EditedList.Count <= 1) { Display.DialogMessage("Attention!", "At least one External Language must exist."); return(false); } var Result = Display.DialogMessage("Confirmation", "Are you sure you want to Delete the '" + ExternalLang.Name + "' External Language declaration?", EMessageType.Question, System.Windows.MessageBoxButton.YesNo, System.Windows.MessageBoxResult.No); return(Result == MessageBoxResult.Yes); }
public static bool ExternalLanguageEdit(Domain OwnerEntity, IList <ExternalLanguageDeclaration> EditedList, ExternalLanguageDeclaration ExternalLang) { var InstanceController = EntityInstanceController.AssignInstanceController(ExternalLang); InstanceController.StartEdit(); var EditPanel = Display.CreateEditPanel(ExternalLang, null, true, null, null, true, false, true, false /* Maybe some day the Tech-Spec could store particularities of the language */); var Result = InstanceController.Edit(EditPanel, "Edit External Language declaration - " + ExternalLang.ToString()).IsTrue(); if (Result) { OwnerEntity.CurrentExternalLanguage = ExternalLang; } return(Result); }
public static ExternalLanguageDeclaration ExternalLanguageClone(Domain OwnerEntity, IList <ExternalLanguageDeclaration> EditedList, ExternalLanguageDeclaration ExternalLang) { var Result = ExternalLang.CreateClone(ECloneOperationScope.Deep, null); var NamesWereEquivalent = (Result.TechName == Result.Name.TextToIdentifier()); Result.Name = Result.Name + "(copy)"; // Auto-update of TechName when equivalents if (!NamesWereEquivalent) { Result.TechName = Result.TechName + "_copy"; } return(Result); }