Пример #1
0
 static public bool LoadKeyValuePairs(
     this NullSafeOfStringDictionary <string> list,
     string filePath,
     string separator,
     bool showError = true)
 {
     try
     {
         list.Clear();
         foreach (string line in File.ReadAllLines(filePath))
         {
             if (!line.IsCommentedText())
             {
                 var parts = line.SplitNoEmptyLines(separator);
                 if (parts.Length == 1)
                 {
                     list.Add(parts[0].Trim(), string.Empty);
                 }
                 else
                 if (parts.Length == 2)
                 {
                     list.Add(parts[0].Trim(), parts[1].Trim());
                 }
                 else
                 if (parts.Length > 2)
                 {
                     list.Add(parts[0].Trim(), parts.Skip(1).Join(separator));
                 }
             }
         }
         return(true);
     }
     catch (FileNotFoundException)
     {
         if (showError)
         {
             MessageBox.Show(SysTranslations.FileNotFound.GetLang(filePath),
                             Globals.AssemblyTitle,
                             MessageBoxButtons.OK,
                             MessageBoxIcon.Warning);
         }
         return(false);
     }
     catch (Exception ex)
     {
         if (showError)
         {
             MessageBox.Show(SysTranslations.LoadFileError.GetLang(filePath, ex.Message),
                             Globals.AssemblyTitle,
                             MessageBoxButtons.OK,
                             MessageBoxIcon.Warning);
         }
         return(false);
     }
 }
Пример #2
0
    static private (Version, string) GetVersionAndChecksum(WebClientEx client, bool useGitHub)
    {
        SystemManager.CheckServerCertificate(useGitHub ? Globals.CheckUpdateGitHubURL : Globals.CheckUpdateURL, useGitHub, true);
        List <string> lines;

        try
        {
            string path = useGitHub ? Globals.CheckUpdateGitHubURL : Globals.CheckUpdateURL;
            lines = client.DownloadString(path).SplitNoEmptyLines(useGitHub).Take(2).ToList();
        }
        catch (Exception ex)
        {
            throw new WebException(SysTranslations.CheckUpdateReadError.GetLang(ex.Message));
        }
        LoadingForm.Instance.DoProgress();
        var list = new NullSafeOfStringDictionary <string>();

        foreach (string line in lines)
        {
            var parts = line.Split(':');
            if (parts.Length != 2)
            {
                continue;
            }
            list.Add(parts[0].Trim(), parts[1].Trim());
        }
        string fileVersion  = list["Version"];
        string fileChecksum = list["Checksum"];

        if (fileVersion.IsNullOrEmpty() || fileChecksum.IsNullOrEmpty())
        {
            throw new WebException(SysTranslations.CheckUpdateFileError.GetLang(lines.AsMultiLine()));
        }
        var     partsVersion = fileVersion.Split('.');
        Version version;

        try
        {
            version = partsVersion.Length switch
            {
                2 => new Version(Convert.ToInt32(partsVersion[0]),
                                 Convert.ToInt32(partsVersion[1])),
                3 => new Version(Convert.ToInt32(partsVersion[0]),
                                 Convert.ToInt32(partsVersion[1]),
                                 Convert.ToInt32(partsVersion[2])),
                4 => new Version(Convert.ToInt32(partsVersion[0]),
                                 Convert.ToInt32(partsVersion[1]),
                                 Convert.ToInt32(partsVersion[2]),
                                 Convert.ToInt32(partsVersion[3])),
                _ => throw new ArgumentException(SysTranslations.CheckUpdateFileError.GetLang(lines.AsMultiLine())),
            };
        }
        catch (Exception ex)
        {
            throw new WebException(SysTranslations.CheckUpdateFileError.GetLang(lines.AsMultiLine()) + Globals.NL2 +
                                   ex.Message);
        }
        LoadingForm.Instance.DoProgress();
        return(version, fileChecksum);
    }
Пример #3
0
    /// <summary>
    /// Creates the export targets.
    /// </summary>
    /// <typeparam name="T"></typeparam>
    static public NullSafeOfStringDictionary <T> CreateExportTargets <T>(params T[] list)
        where T : struct, Enum
    {
        var result = new NullSafeOfStringDictionary <T>();

        foreach (var value in Enums.GetValues <T>())
        {
            if (list.Length == 0 || list.Contains(value))
            {
                result.Add(value, "." + value.ToString().ToLower());
            }
        }
        return(result);
    }