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); } }
public bool CanCreateFromTemplate() { return(Templates != null && Templates.Count(r => r.IsSelected) == 1 && Transaction.Amount != 0); }