public void LoadLedger() { Active = null; Xml = XDocument.Load(File); //add missing total attributes foreach (var node in Xml.Descendants(XmlFormat.Node)) { if (node.Attribute(XmlFormat.Total) == null) { node.SetAttributeValue(XmlFormat.Total, TimeSpan.Zero); } } //add missing leaf values, search for default foreach (var node in Xml.Descendants(XmlFormat.Leaf)) { if (string.IsNullOrWhiteSpace(node.Value)) { node.SetValue(TimeSpan.Zero); } if (node.Attribute(XmlFormat.Default) != null) { active = node; ActiveChanged(XmlFormat.Name(node)); } } LedgerChanged(); }
IEnumerable <ToolStripMenuItem> BuildChildMenu(XElement element) { var leaves = element.Elements(XmlFormat.Leaf).Select(leaf => { ToolStripMenuItem item = new ToolStripMenuItem(XmlFormat.Name(leaf)); item.Click += delegate { controller.Select(leaf); }; return(item); }); var nodes = element.Elements(XmlFormat.Node).Select(node => new ToolStripMenuItem(XmlFormat.Name(node), null, BuildChildMenu(node).ToArray())); return(nodes.Concat(leaves)); }