Exemple #1
0
        public void CompileTemplates()
        {
            HashSet <string> templateNames = new HashSet <string>();

            try
            {
                stg = new TemplateGroupString(Template);

                AccumulatingTemplateErrorListener listener = new AccumulatingTemplateErrorListener();
                RenderError = "";
                listener.PropertyChanged += (s, e) => RenderError = listener.Error;
                stg.ErrorManager          = new Antlr4.StringTemplate.Misc.ErrorManager(listener);

                templateNames  = stg.GetTemplateNames();
                StatusTemplate = "Template(s) compiled";
            }
            catch (Exception e)
            {
                StatusTemplate = $"Error compiling template ({e.Message})";
            }

            // update templates list
            foreach (var t in templateNames)
            {
                if (Templates.Count(tp => tp.Name == t) == 0)
                {
                    Templates.Add(new TemplateListItem()
                    {
                        Name = t
                    });
                }
            }
            // .ToList() forces enumeration before templates are removed, as to not change a collection being enumerated over
            foreach (var tp in Templates.Where(tp => tp.Deleted).ToList())
            {
                Templates.Remove(tp);
            }
            foreach (var tp in Templates.Where(tp => !templateNames.Contains(tp.Name)))
            {
                tp.Deleted = true;
            }

            // if no or invalid selection, select the first valid template if it exists
            if (TemplateSelected == null || TemplateSelected.Deleted)
            {
                TemplateSelected = Templates.FirstOrDefault(t => !t.Deleted);
            }
        }
Exemple #2
0
 public bool CanCreateFromTemplate()
 {
     return(Templates != null && Templates.Count(r => r.IsSelected) == 1 && Transaction.Amount != 0);
 }