Esempio n. 1
0
 public void Init(string periodicData, HandleProgress progress)
 {
     progress(0, "Searching for cached table...");
     if (File.Exists(periodicData))
     {
         Stream file = File.Open(periodicData, FileMode.OpenOrCreate);
         this.elements = (Element[])serializer.Deserialize(file);
     }
     else
     {
         List <Element> elements = new List <Element>();
         XmlDocument    resolver = new XmlDocument();
         resolver.LoadXml(table.GetAtoms());
         XmlNodeList nodes = resolver.GetElementsByTagName("ElementName");
         int         i     = 0;
         foreach (XmlNode tag in nodes)
         {
             Element element = new Element()
             {
                 Name = tag.InnerXml
             };
             resolver.LoadXml(table.GetAtomicNumber(element.Name));
             element.Symbol = resolver.GetElementsByTagName("Symbol")[0].InnerXml;
             element.Atomic = int.Parse(resolver.GetElementsByTagName("AtomicNumber")[0].InnerXml);
             elements.Add(element);
             progress((double)i++ / (double)nodes.Count, "Downloaded " + tag.InnerXml);
         }
         this.elements = elements.OrderByDescending(e => e.Symbol.Length).ToArray();
         Stream file = File.Open(periodicData, FileMode.OpenOrCreate);
         serializer.Serialize(file, this.elements);
         progress(1, "Complete");
         IsInit = true;
     }
 }