Пример #1
0
        public static ISOV GetFromFile(string filename, bool fast)
        {
            while (IsUpdating)
            {
                Thread.Sleep(100);
            }
            ISOV resk = null;

            var s = ISOs.FirstOrDefault(x => Regex.IsMatch(Path.GetFileName(filename), x.Filename));

            /*if (s != null)
             * {
             *  resk = s.LatestVersion ?? new ISOV("nover", s.Name, "", s.Filename, true) {Parent=s};
             * }*/
            if (s != null && s.LatestVersion == null)
            {
                resk = new ISOV("nover", s.Name, "", s.Filename, true)
                {
                    Parent = s
                }
            }
            ;
            else
            {
                if (s != null && s.Versions.Count == 1)
                {
                    resk = s.LatestVersion;
                }
                else
                {
                    var sta = s == null?ISOs.SelectMany(x => x.Versions) : s.Versions;

                    var st =
                        sta.FirstOrDefault(
                            x =>
                            x.Filename.StartsWith("/")
                                    ? Regex.IsMatch(Path.GetFileName(filename), x.Filename.Substring(1))
                                    : string.Equals(Path.GetFileName(filename).Trim(), x.Filename.Trim(),
                                                    StringComparison.CurrentCultureIgnoreCase));
                    if (st == null)
                    {
                        var md5 = fast ? "" : Utils.FileHash(filename, "md5");
                        st = (fast
                            ? null
                            : sta.FirstOrDefault(
                                  x =>
                                  x.Hash ==
                                  (x.Hash.Contains(':') ? Utils.FileHash(filename, x.Hash.Split(':')[0]) : md5)));
                    }

                    resk = st ?? (s == null ? null : new ISOV("nover", s.Name, "", s.Filename, true)
                    {
                        Parent = s
                    });
                }
            }

            return(resk);
        }
Пример #2
0
        public void AddImage(string filePath, ISOV ver = null)
        {
            if (CurImages.Count(x => x.FilePath == filePath) != 0)
            {
                return;
            }

            var name = Path.GetFileNameWithoutExtension(filePath);
            var desc = "";
            var cat  = "";

            if (ver?.Hash == "nover")
            {
                name = ver.Parent.Name;
                desc = ver.Parent.Description;
                cat  = ver.Parent.CategoryTxt;
            }
            else
            {
                if (automaticallyAddISOInfoToolStripMenuItem.Checked && ver?.Hash != "other")
                {
                    ver = ver ?? (ISOInfo.GetFromFile(filePath, new FileInfo(filePath).Length > 750000000));
                    if (ver == null)
                    {
                        MessageBox.Show(Path.GetFileName(filePath) + "\n\n" + Strings.CouldntDetect, "SharpBoot",
                                        MessageBoxButtons.OK,
                                        MessageBoxIcon.Information);
                    }
                    else
                    {
                        name = ver.Name;
                        desc = ver.Parent.Description;
                        cat  = ver.Parent.CategoryTxt;
                    }
                }
            }


            var im = new ImageLine(name, filePath, desc, cat,
                                   typ: filePath.ToLower().EndsWith("img") ? EntryType.IMG : EntryType.ISO);

            CurImages.Add(im);

            SetSize();


            lvIsos.Rows.Add(name, Program.GetFileSizeString(filePath), cat, desc, filePath);
        }
Пример #3
0
 private void cbxDetIso_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (changing)
     {
         return;
     }
     if (cbxDetIso.SelectedIndex != -1 && cbxDetIso.SelectedItem != null)
     {
         IsoV = cbxDetIso.SelectedIndex == 0
             ? new ISOV("other", "")
             : (selinfo2 == null
                 ? null
                 : (selinfo2.LatestVersion ??
                    new ISOV("nover", selinfo2.Name, "", selinfo2.Filename, true)
         {
             Parent = selinfo2
         }));
     }
 }
Пример #4
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            if (IsDownload)
            {
                IsoV = selinfoversion();
                if (IsoV != null && IsoV.DownloadLink != "")
                {
                    sfdIso.FileName = Path.GetFileName(IsoV.DownloadLink);
                }
                if (sfdIso.ShowDialog(this) == DialogResult.OK)
                {
                    btnOK.Enabled = false;
                    ControlBox    = false;

                    DownFile = sfdIso.FileName;
                    DownloadStuff();
                }
            }
        }
Пример #5
0
        public void AddImage(string filePath, ISOV ver = null)
        {
            if (CurImages.Count(x => x.FilePath == filePath) != 0)
                return;

            var name = Path.GetFileNameWithoutExtension(filePath);
            var desc = "";
            var cat = "";

            if (ver?.Hash == "nover")
            {
                name = ver.Parent.Name;
                desc = ver.Parent.Description;
                cat = ver.Parent.CategoryTxt;
            }
            else
            {
                if (automaticallyAddISOInfoToolStripMenuItem.Checked && ver?.Hash != "other")
                {
                    ver = ver ?? (ISOInfo.GetFromFile(filePath, new FileInfo(filePath).Length > 750000000));
                    if (ver == null)
                    {
                        MessageBox.Show(Path.GetFileName(filePath) + "\n\n" + Strings.CouldntDetect, "SharpBoot",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Information);
                    }
                    else
                    {
                        name = ver.Name;
                        desc = ver.Parent.Description;
                        cat = ver.Parent.CategoryTxt;
                    }
                }
            }

            var im = new ImageLine(name, filePath, desc, cat,
                typ: filePath.ToLower().EndsWith("img") ? EntryType.IMG : EntryType.ISO);
            CurImages.Add(im);

            SetSize();

            lvIsos.Rows.Add(name, Program.GetFileSizeString(filePath), cat, desc, filePath);
        }
Пример #6
0
        public static ISOV GetFromFile(string filename, bool fast)
        {
            while (IsUpdating) Thread.Sleep(100);
            ISOV resk = null;

            var s = ISOs.FirstOrDefault(x => Regex.IsMatch(Path.GetFileName(filename), x.Filename));
            /*if (s != null)
            {
                resk = s.LatestVersion ?? new ISOV("nover", s.Name, "", s.Filename, true) {Parent=s};
            }*/
            if (s != null && s.LatestVersion == null)
                resk = new ISOV("nover", s.Name, "", s.Filename, true) {Parent = s};
            else
            {
                if (s != null && s.Versions.Count == 1)
                {
                    resk = s.LatestVersion;
                }
                else
                {
                    var sta = s == null ? ISOs.SelectMany(x => x.Versions) : s.Versions;
                    var st =
                        sta.FirstOrDefault(
                            x =>
                                x.Filename.StartsWith("/")
                                    ? Regex.IsMatch(Path.GetFileName(filename), x.Filename.Substring(1))
                                    : string.Equals(Path.GetFileName(filename).Trim(), x.Filename.Trim(),
                                        StringComparison.CurrentCultureIgnoreCase));
                    if (st == null)
                    {
                        var md5 = fast ? "" : Utils.FileHash(filename, "md5");
                        st = (fast
                            ? null
                            : sta.FirstOrDefault(
                                x =>
                                    x.Hash ==
                                    (x.Hash.Contains(':') ? Utils.FileHash(filename, x.Hash.Split(':')[0]) : md5)));
                    }

                    resk = st ?? (s == null ? null : new ISOV("nover", s.Name, "", s.Filename, true) {Parent = s});
                }
            }

            return resk;
        }
Пример #7
0
        private void md5stuff()
        {
            th = new Thread(() =>
            {
                Invoke((MethodInvoker) (() => pbxLoading.Visible = true));

                var resk = ISOInfo.GetFromFile(ISOPath, false);

                Invoke((MethodInvoker) (() =>
                {
                    if (resk == null)
                    {
                        cbxDetIso.SelectedIndex = 0;
                    }
                    else
                    {
                        IsoV = resk;
                        for (var index = 0; index < cbxDetIso.Items.Count; index++)
                        {
                            dynamic it = cbxDetIso.Items[index];
                            if (it.Val == resk.Parent)
                            {
                                changing = true;
                                cbxDetIso.SelectedIndex = index;

                                break;
                            }
                        }
                    }
                    pbxLoading.Visible = false;
                }));
                changing = false;
            })
            {
                CurrentCulture = CultureInfo.CurrentCulture,
                CurrentUICulture = CultureInfo.CurrentUICulture
            };
            th.Start();
        }
Пример #8
0
 private void Client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
 {
     sw.Stop();
     pbxPrg.Visible = lblPercent.Visible = lblSpeed.Visible = lblProg.Visible = false;
     if (!e.Cancelled) MessageBox.Show(Strings.DownComplete, "SharpBoot");
     pbxPrg.Value = 100;
     btnOK.Enabled = true;
     ControlBox = true;
     ISOPath = DownFile;
     IsoV = selinfoversion();
     DialogResult = DialogResult.OK;
     Close();
 }
Пример #9
0
 private void cbxDetIso_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (changing) return;
     if (cbxDetIso.SelectedIndex != -1 && cbxDetIso.SelectedItem != null)
     {
         IsoV = cbxDetIso.SelectedIndex == 0
             ? new ISOV("other", "")
             : (selinfo2 == null
                 ? null
                 : (selinfo2.LatestVersion ??
                    new ISOV("nover", selinfo2.Name, "", selinfo2.Filename, true) {Parent = selinfo2}));
     }
 }
Пример #10
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            if (IsDownload)
            {
                IsoV = selinfoversion();
                if (IsoV != null && IsoV.DownloadLink != "")
                {
                    sfdIso.FileName = Path.GetFileName(IsoV.DownloadLink);
                }
                if (sfdIso.ShowDialog(this) == DialogResult.OK)
                {
                    btnOK.Enabled = false;
                    ControlBox = false;

                    DownFile = sfdIso.FileName;
                    DownloadStuff();
                }
            }
        }