private void LoadTreeFromXML(XElement xele, TmTreeView tv) { TmNode node; string themelist = Enum.GetName(typeof(TmNodeType), TmNodeType.ThemeList).ToLower(); foreach (XElement xnode in xele.Elements(themelist)) { node = new TmNode(TmNodeType.ThemeList); node.Load(xnode, false); // Add only the first node tv.Add(node); } string category = Enum.GetName(typeof(TmNodeType), TmNodeType.Category).ToLower(); foreach (XElement xnode in xele.Elements(category)) { node = new TmNode(TmNodeType.Category); node.Load(xnode, true); // Add entire branch node.UpdateImageIndex(true); tv.Add(node); } string theme = Enum.GetName(typeof(TmNodeType), TmNodeType.Theme).ToLower(); foreach (XElement xnode in xele.Elements(theme)) { node = new TmNode(TmNodeType.Theme); node.Load(xnode, true); // Add entire branch node.UpdateImageIndex(true); tv.Add(node); } tv.TextSortInit((string)xele.Attribute("sortorder")); }
public void Load(XElement xele, bool recurse) { if (xele == null) throw new ArgumentNullException("xele"); //Kind was already set when node was created. Set all other properties Name = (string)xele.Attribute("name"); XElement data; data = xele.Element("tags"); Tags = data == null ? null : data.Value; data = xele.Element("summary"); Summary = data == null ? null : data.Value; data = xele.Element("description"); Description = data == null ? null : data.Value; data = xele.Element("pubdate"); if (data != null) { DateTime temp; if (DateTime.TryParse(data.Value, out temp)) PubDate = temp; } data = xele.Element("data"); if (data != null) { // Ignore the path in the data element for themelists. if (IsThemeList && !string.IsNullOrEmpty(Data.Path)) data.Value = Data.Path; Data = ThemeData.Load(data); } data = xele.Element("metadata"); if (data != null) Metadata = Metadata.Load(data); if (recurse) { TmNode childNode; string category = Enum.GetName(typeof(TmNodeType), TmNodeType.Category).ToLower(); foreach (XElement xnode in xele.Elements(category)) { childNode = new TmNode(TmNodeType.Category); Add(childNode); childNode.Load(xnode); } string theme = Enum.GetName(typeof(TmNodeType), TmNodeType.Theme).ToLower(); foreach (XElement xnode in xele.Elements(theme)) { childNode = new TmNode(TmNodeType.Theme); Add(childNode); childNode.Load(xnode); } } }