예제 #1
0
        public void Save(string _filename, string _exeRef = null)
        {
            BeforeSave(_exeRef);
            string filepath = Path.GetDirectoryName(_filename);

            try
            {
                if (!Directory.Exists(filepath))
                {
                    Directory.CreateDirectory(filepath);
                }

                XmlSerializer serializer = new XmlSerializer(typeof(Config));
                using (TextWriter writer = new StreamWriter(_filename))
                {
                    serializer.Serialize(writer, this);
                }
            }
            catch (Exception e)
            {
                Loggers.WriteError(LogTags.Congif, "Exception while saving config file : \n    " + _filename + "\n" + e.Message);
            }
        }
예제 #2
0
 //=========================================================================================
 // txt file
 //
 static TaxonTreeNode LoadTxt(string _filename)
 {
     try
     {
         int ch = 0;
         using (StreamReader sr = new StreamReader(_filename))
         {
             ch = (int)sr.Read();
             while (ch != -1)
             {
                 if (ch == '(')
                 {
                     break;
                 }
                 if (ch == (int)Keys.Return || ch == '>')
                 {
                     break;
                 }
                 ch = (int)sr.Read();
             }
         }
         if (ch == '(')
         {
             return(LoadNewick(_filename));
         }
         if (ch == (int)Keys.Return || ch == '>')
         {
             return(LoadJacFile(_filename));
         }
         Loggers.WriteError(LogTags.Data, "Cannot recognize file forma : \n    " + _filename);
         return(null);
     }
     catch
     {
         return(null);
     }
 }
예제 #3
0
        public void SaveBin(string _fileName)
        {
            TaxonUtils.LockMainWindow();
            try
            {
                using (ProgressDialog progressDlg = new ProgressDialog())
                {
                    progressDlg.StartPosition = FormStartPosition.CenterScreen;
                    progressDlg.Show();

                    ProgressItem piSave = progressDlg.Add("Saving ...", null, 0, Count());
                    using (FileStream fs = File.Create(_fileName, 65536, FileOptions.None))
                    {
                        using (DeflateStream deflateStream = new DeflateStream(fs, CompressionMode.Compress))
                        {
                            using (BinaryWriter w = new BinaryWriter(deflateStream))
                            //using (BinaryWriter w = new BinaryWriter(fs))
                            {
                                w.Write(SaveBinVersion);
                                SaveBin(w, new SaveBinProgress(piSave));
                                w.Close();
                                deflateStream.Close();
                                fs.Close();
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Loggers.WriteError(LogTags.Data, "Exception while saving config file : \n    " + _fileName + "\n" + e.Message);
            }
            finally
            {
                TaxonUtils.UnlockMainWindow();
            }
        }
예제 #4
0
 //méthode load
 public static TaxonTreeNode LoadXML(string _fileName)
 {
     try
     {
         XmlSerializer deserializer = new XmlSerializer(typeof(TaxonTreeNode));
         TextReader    reader       = new StreamReader(_fileName);
         object        obj          = deserializer.Deserialize(reader);
         reader.Close();
         (obj as TaxonTreeNode).UpdateFather();
         (obj as TaxonTreeNode).Visible = true;
         return(obj as TaxonTreeNode);
     }
     catch (Exception e)
     {
         string message = "Exception while loading " + _fileName + " : \n\n";
         message += e.Message;
         if (e.InnerException != null)
         {
             message += "\n" + e.InnerException.Message;
         }
         Loggers.WriteError(LogTags.Data, message);
     }
     return(null);
 }
예제 #5
0
        //=========================================================================================
        // Jac File load
        //
        static TaxonTreeNode LoadJacFile(string _filename)
        {
            try
            {
                using (StreamReader sr = new StreamReader(_filename))
                {
                    TaxonTreeNode root        = new TaxonTreeNode(new TaxonDesc("__ignore__"));
                    TaxonTreeNode currentNode = root;
                    int           currentTab  = 0;
                    int           currentLine = 0;

                    string line;
                    // read header line
                    while ((line = sr.ReadLine()) != null)
                    {
                        currentLine++;
                        int tab = 0;
                        while (line.StartsWith("\t"))
                        {
                            tab++; line = line.Substring(1);
                        }
                        if (tab > currentTab)
                        {
                            if (tab - currentTab > 1 || currentNode.Children.Count == 0)
                            {
                                Loggers.WriteError(LogTags.Data, _filename + "(" + currentLine.ToString() + ") too many tabs");
                                return(null);
                            }
                            currentTab  = tab;
                            currentNode = currentNode.Children[currentNode.Children.Count - 1];
                        }
                        else if (tab < currentTab)
                        {
                            while (currentTab != tab)
                            {
                                if (currentNode == root)
                                {
                                    Loggers.WriteError(LogTags.Data, _filename + "(" + currentLine.ToString() + ") tabulation error");
                                    return(null);
                                }
                                currentTab--;
                                currentNode = currentNode.Father;
                            }
                        }

                        string[]      parts   = line.Split('>');
                        TaxonTreeNode newNode = new TaxonTreeNode(new TaxonDesc()
                        {
                            RefMultiName    = new Helpers.MultiName(parts[0]),
                            FrenchMultiName = parts.Length < 2 || String.IsNullOrWhiteSpace(parts[1]) ? null : new Helpers.MultiName(parts[1]),
                            ClassicRank     = parts.Length < 3 || String.IsNullOrWhiteSpace(parts[2]) ? ClassicRankEnum.None : ClassicRankEnumExt.FromString(parts[2]),
                            Flags           = (parts.Length < 4 || String.IsNullOrWhiteSpace(parts[3])) ? 0 : FlagsEnumExt.FromString(parts[3]),
                            RedListCategory = (parts.Length < 5 || String.IsNullOrWhiteSpace(parts[4])) ? RedListCategoryEnum.NotEvaluated : RedListCategoryExt.FromString(parts[4]),
                        }
                                                                  );
                        currentNode.AddChild(newNode);
                    }

                    return(root);
                }
            }
            catch (Exception e)
            {
                Loggers.WriteError(LogTags.Data, "Exception raised while reading file " + _filename + "\n   " + e.Message);
                return(null);
            }
        }