Exemple #1
0
        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);
        }
Exemple #2
0
        public void TemplateLanguageSelection(ExternalLanguageDeclaration NewLanguage)
        {
            this.Apply();

            this.BaseDomain.CurrentExternalLanguage = NewLanguage;

            this.Refresh();
        }
Exemple #3
0
        /// <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;
        }
Exemple #4
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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);
        }