private void load_category(XmlNode categories, XmlNode components) { components_objectses objectses = new components_objectses(); sources_inernal = new components_sources(); genuses_inernal = new components_genuses(categories, components, objectses, sources_inernal); face = new components_colors(categories["face"]); hair = new components_colors(categories["hair"]); foreach (components_genus genus in genuses_inernal.Values) { ListViewGroup group = new ListViewGroup(genus.name); group.Tag = genus; foreach (components_species species in genus.Values) { ListViewItem item = new ListViewItem(species.name, group); item.Tag = species; category.Items.Add(item); } category.Groups.Add(group); } category.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); if (0 < category.Items.Count) { category.Items[0].Selected = true; } }
internal components_objects exists(string location, XmlNode componentses, components_sources sources) { components_objects objects; location = location.ToLower(); if (!TryGetValue(location, out objects)) { objects = new components_objects(location, componentses, sources); Add(location, objects); } return(objects); }
//TODO: ParsePackage internal components_objects(string location, XmlNode componentses, components_sources sources) { string[] entries = location.Split(new char[] { '\\', }, StringSplitOptions.RemoveEmptyEntries); for (int index = 0; index < componentses.ChildNodes.Count; ++index) { XmlNode components = componentses.ChildNodes[index]; if (entries[0] == components.Name) { var package = sources.exists(Path.GetFullPath(components.Attributes["location"].Value))[entries[0]]; for (int entry = 1; entry < entries.Length; ++entry) { components = components[entries[entry]]; Console.WriteLine("Parse:" + entries[entry]); if (null != package) { package = package[match_species(entries[entry])]; } } if (components != null) { foreach (XmlNode component in components) { if ("object" == component.Name) { string id = component.Attributes["id"].Value; if (!ContainsKey(id)) { Add(id, new components_object(component, package)); } } } } } } }
internal components_species(XmlNode species, XmlNode componentses, components_objectses objectses, components_sources sources) { properties = new object[] { species.Attributes["name"].Value, species.Attributes["type"].Value, species.Attributes["etc"].Value, species.Attributes["location"].Value, objectses.exists(species.Attributes["location"].Value, componentses, sources), }; }
internal components_genus(XmlNode genus, XmlNode componentses, components_objectses objectses, components_sources sources) { properties = new object[] { genus.Attributes["name"].Value, genus.Attributes["type"].Value, }; foreach (XmlNode species in genus) { if ("species" == species.Name) { Add(species.Attributes["type"].Value, new components_species(species, componentses, objectses, sources)); } } }
internal components_genuses(XmlNode categories, XmlNode components, components_objectses objectses, components_sources sources) { foreach (XmlNode genus in categories) { if ("genus" == genus.Name) { Add(genus.Attributes["type"].Value, new components_genus(genus, components, objectses, sources)); } } }