示例#1
0
        private void loadDirectory(TreeView treeView, string path)
        {
            _mc2repo.TypeDirs.Clear(); _mc2repo.Model = _myModel;
            TreeNode rootNode = new TreeNode(cbMCModel.Text);

            foreach (DirectoryInfo typeDir in new DirectoryInfo(path).GetDirectories())
            {
                Multicore2TypeDirectory mc2TDir = new Multicore2TypeDirectory()
                {
                    Name = typeDir.Name
                };
                TreeNode typeNode = new TreeNode(typeDir.Name);
                foreach (DirectoryInfo hardDir in typeDir.GetDirectories())
                {
                    MulticoreDirectory MCDir = new MulticoreDirectory()
                    {
                        DirInfo = hardDir
                    };
                    foreach (FileInfo file in hardDir.GetFiles())
                    {
                        if (file.Name.ToUpper().Equals("README.MD"))
                        {
                            MCDir.Readme = File.ReadAllText(file.FullName);
                        }

                        if (file.Extension.ToUpper().Equals(".ZIP"))
                        {
                            TreeNode itemNode    = new TreeNode(file.Name.ToUpper().Replace(".ZIP", ""));
                            bool     haveAll     = true;
                            string   zipContents = "";
                            using (ZipFile zip = ZipFile.Read(file.FullName))
                            {
                                foreach (ZipEntry e in zip)
                                {
                                    haveAll     &= ((from FileInfo fi in this._sdCardFiles where fi.Name == e.FileName select fi.Name).FirstOrDefault() != null);
                                    zipContents += e.FileName + "\r\n";
                                    //if (!haveAll) break;
                                }
                                itemNode.Tag     = file;
                                itemNode.Checked = haveAll;
                            }
                            typeNode.Nodes.Add(itemNode);
                        }
                        MCDir.Cores.Add(new MulticoreCoreZipFile()
                        {
                            FileInfo = file
                        });
                    }
                    mc2TDir.Directories.Add(MCDir);
                } //hardwareDir
                rootNode.Nodes.Add(typeNode);
                _mc2repo.TypeDirs.Add(mc2TDir);
            } // typeDir
            treeView.Nodes.Add(rootNode);
        }
示例#2
0
        private void loadRepository(string path)
        {
            _mc2repo.TypeDirs.Clear(); _mc2repo.Model = _myModel;

            foreach (DirectoryInfo typeDir in new DirectoryInfo(path).GetDirectories())
            {
                Multicore2TypeDirectory mc2TDir = new Multicore2TypeDirectory()
                {
                    Name     = typeDir.Name,
                    HaveRoms = TYPES_WITH_ROMS.Contains(typeDir.Name)
                };

                foreach (DirectoryInfo hardDir in typeDir.GetDirectories())
                {
                    MulticoreDirectory MCDir = new MulticoreDirectory()
                    {
                        DirInfo = hardDir,
                        TypeDir = mc2TDir
                    };
                    foreach (FileInfo file in hardDir.GetFiles())
                    {
                        if ((file.Name.ToUpper().Equals("README.MD")) || (file.Name.ToUpper().Equals("README.TXT")))
                        {
                            MCDir.Readme = File.ReadAllText(file.FullName);
                        }
                        else
                        {
                            if (file.Extension.ToUpper().Equals(".ZIP"))
                            {
                                //bool haveAll = true;
                                string zipContents = "";
                                using (ZipFile zip = ZipFile.Read(file.FullName))
                                {
                                    foreach (ZipEntry e in zip)
                                    {
                                        //haveAll &= ((from FileInfo fi in this._sdCardFiles where fi.Name == e.FileName select fi.Name).FirstOrDefault() != null);
                                        zipContents += e.FileName + "\r\n";
                                        //if (!haveAll) break;
                                    }
                                }
                                MulticoreCoreZipFile core = new MulticoreCoreZipFile()
                                {
                                    FileInfo    = file,
                                    ZipContents = zipContents,//.Split(new char[] { '\r', '\n' }),
                                    HardDir     = MCDir
                                };
                                if (_romsPath.ContainsKey(file.Name))
                                {
                                    core.RomsFolder = _romsPath[file.Name];
                                }
                                MCDir.Cores.Add(core);
                            }
                        }
                    }
                    mc2TDir.Directories.Add(MCDir);
                } //hardwareDir
                _mc2repo.TypeDirs.Add(mc2TDir);
            }     // typeDir

            #region detect cores with repeating names
            //var dups = _mc2repo.Cores.GroupBy(n => n.FileInfo.Name).Where(c => c.Count() > 1).Select(x => x).ToList();
            List <string> dups = _mc2repo.Cores.GroupBy(n => n.FileInfo.Name).SelectMany(g => g.Skip(1)).Distinct().Select(s => s.FileInfo.Name).ToList();
            if (dups.Count > 0)
            {
                foreach (string corename in dups)
                {
                    foreach (MulticoreCoreZipFile core in _mc2repo.Cores.Where(c => c.FileInfo.Name.Equals(corename)).Select(s => s).ToList())
                    {
                        core.SameName = true;
                    }
                }
            }
            #endregion detect cores with repeating names

            this.updateCoresRomPaths();
        }