Esempio n. 1
0
 public TextView(byte[] data, RPFLib.Common.File entry)
 {
     InitializeComponent();
     fileEntry = entry;
     textBox.Text = System.Text.Encoding.UTF8.GetString(data);
     textBox.Select(0, 0);
 }
Esempio n. 2
0
 public override List<fileSystemObject> search(RPFLib.Common.Directory dir, string searchText)
 {
     List<fileSystemObject> searchList = new List<fileSystemObject>();
     searchList.AddRange((from pv in dir._fsObjectsByName
                          where pv.Key.Contains(searchText)
                          select pv.Value));
     subsearch(dir, searchList, searchText);
     return searchList;
 }
Esempio n. 3
0
 public Saving(FileStream newRPF, RPFLib.RPF6.File file)
 {
     InitializeComponent();
     newRPFStream = newRPF;
     rpfFile = file;
     backgroundWorker1.WorkerSupportsCancellation = true;
     backgroundWorker1.WorkerReportsProgress = true;
     backgroundWorker1.DoWork += new DoWorkEventHandler(bgWorker_DoWork);
     backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(bgWorker_ProgressChanged);
     backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgWorker_RunWorkerCompleted);
 }
Esempio n. 4
0
 public void subsearch(RPFLib.Common.Directory dir, List<fileSystemObject> searchList, string searchText)
 {
     foreach (fileSystemObject item in dir)
     {
         if (item.IsDirectory)
         {
             var subdir = item as RPFLib.Common.Directory;
             searchList.AddRange((from pv in subdir._fsObjectsByName
                                  where pv.Key.Contains(searchText)
                                  select pv.Value));
             subsearch(subdir, searchList, searchText);
         }
     }
 }
Esempio n. 5
0
 public int CountFilesInHier(RPFLib.Common.Directory dir)
 {
     foreach (RPFLib.Common.fileSystemObject d in dir)
     {
         if (d.IsDirectory)
         {
             Task taskA = Task.Factory.StartNew(() => CountFilesInHier(d as RPFLib.Common.Directory));
             taskA.Wait();
         }
         else
         {
             countOfFiles++;
         }
     }
     return countOfFiles;
 }
Esempio n. 6
0
 public void BrowseHier(RPFLib.Common.Directory dir, RPFLib.Common.Directory rDir)
 {
     foreach (RPFLib.Common.fileSystemObject d in dir)
     {
         if (d.IsDirectory)
         {
             BrowseHier(d as RPFLib.Common.Directory, rDir);
             System.IO.Directory.CreateDirectory(extrPath + "\\" + rDir.Name + "\\" + d.FullName.Replace(rDir.FullName + "\\", ""));
         }
         else
         {
             currentCount++;
             RPFLib.Common.File file = d as RPFLib.Common.File;
             byte[] data = file.GetData(false);
             if (!(System.IO.Directory.Exists(extrPath + "\\" + rDir.Name + "\\" + file.FullName.Replace(rDir.FullName + "\\", "").Replace(file.Name, ""))))
                 System.IO.Directory.CreateDirectory(extrPath + "\\" + rDir.Name + "\\" + file.FullName.Replace(rDir.FullName + "\\", "").Replace(file.Name, ""));
             System.IO.File.WriteAllBytes(extrPath + "\\" + rDir.Name + "\\" + file.FullName.Replace(rDir.FullName + "\\", ""), data);
         }
     }
 }
Esempio n. 7
0
        private void buildlist(RPFLib.Common.Directory dir)
        {
            masterlist.Clear();
            currentDir = dir;

            //Setup return dir
            if (dir.ParentDirectory != null)
            {
                RPFLib.Common.ReturnDir returnDir = new ReturnDir();
                returnDir.Tag = dir.ParentDirectory;
                masterlist.Add(returnDir);
            }
            foreach (fileSystemObject item in dir)
            {
                if (item.IsDirectory)
                {
                    var subdir = item as RPFLib.Common.Directory;
                    masterlist.Add(item);
                }
                else
                {
                    var subFile = item as RPFLib.Common.File;
                    masterlist.Add(item);
                }
            }
            setViewObjects(masterlist);
        }
Esempio n. 8
0
 public override List<fileSystemObject> search(RPFLib.Common.Directory dir, string searchText)
 {
     List<fileSystemObject> searchList = new List<fileSystemObject>();
     subsearch(dir, searchList, searchText);
     return searchList;
 }
Esempio n. 9
0
        private void BuildFSDirectory(DirectoryEntry dirEntry, RPFLib.Common.Directory fsDirectory)
        {
            try
            {
                fsDirectory.Name = GetName(dirEntry);
                for (int i = 0; i < dirEntry.ContentEntryCount; i++)
                {

                    TOCEntry entry = _rpfFile.TOC[dirEntry.ContentEntryIndex + i];
                    if (entry.IsDirectory)
                    {
                        var subdirEntry = entry as DirectoryEntry;
                        var dir = new RPFLib.Common.Directory();
                        dir._Contentcount = nCount => subdirEntry.setContentcount(nCount);
                        dir._ContentIndex = ContentIndex => subdirEntry.setContentIndex(ContentIndex);
                        dir._Index = NewContentIndex => subdirEntry.setNewContentIndex(NewContentIndex);
                        dir.Attributes = "Folder";
                        //dir.entryNum = dirEntry.ContentEntryIndex + i;
                        dir.ParentDirectory = fsDirectory;
                        BuildFSDirectory(entry as DirectoryEntry, dir);
                        fsDirectory.AddObject(dir);
                    }
                    else
                    {
                        var fileEntry = entry as FileEntry;
                        var file = new Common.File();
                        file._dataLoad = getCustom => LoadData(fileEntry, getCustom);
                        file._dataStore = data => StoreData(fileEntry, data);
                        file._dataCustom = () => fileEntry.CustomData != null;
                        file.d1 = () => fileEntry.getSize();
                        file._Index = nIndex => fileEntry.setIndex(nIndex);
                        file._delete = () => fileEntry.Delete();

                        //file.entryNum = dirEntry.ContentEntryIndex + i;
                        file.CompressedSize = fileEntry.SizeInArchive;
                        file.IsCompressed = fileEntry.IsCompressed;
                        file.Name = GetName(fileEntry);
                        //file.Size = fileEntry.Size;
                        file.IsResource = fileEntry.IsResourceFile;
                        file.ParentDirectory = fsDirectory;
                        StringBuilder attributes = new StringBuilder();
                        if (file.IsResource)
                        {
                            attributes.Append(string.Format("Resource [Version {0}", fileEntry.ResourceType));
                            if (file.IsCompressed)
                            {
                                attributes.Append("Compressed");
                            }
                            attributes.Append("]");
                        }
                        else if (file.IsCompressed)
                        {
                            attributes.Append("Compressed");
                        }
                        else
                            attributes.Append("None");
                        fsDirectory.AddObject(file);
                    }
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message + Environment.NewLine + ex.StackTrace);
            }
        }
Esempio n. 10
0
 private int FolderCount(RPFLib.Common.Directory directory)
 {
     int ctr = 0;
     foreach (fileSystemObject x in directory)
     {
         if (x.IsDirectory)
         {
             ctr++;
         }
     }
     return ctr;
 }
Esempio n. 11
0
 private void ExtractToPath(RPFLib.Common.Directory dir, string path, DoWorkEventArgs e)
 {
     foreach (fileSystemObject item in dir)
     {
         if ((backgroundWorker1.CancellationPending == true))
         {
             e.Cancel = true;
             break;
         }
         if (item.IsReturnDirectory)
             continue;
         else if (item.IsDirectory)
         {
             try
             {
                 System.IO.Directory.CreateDirectory(path + item.Name);
                 ExtractToPath(item as RPFLib.Common.Directory, Path.Combine(path, item.Name) + "\\", e);
             }
             catch (Exception ex)
             {
                 MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }
         }
         else
         {
             try
             {
                 int test = Convert.ToInt32(((double)fileprogress / filecount) * 100.0);
                 backgroundWorker1.ReportProgress(test);
                 var file = item as RPFLib.Common.File;
                 this.Invoke(new MethodInvoker(delegate { label_filename.Text = "Extracting: " + file.Name; }));
                 byte[] data = file.GetData(false);
                 System.IO.File.WriteAllBytes(Path.Combine(path, file.Name), data);
                 fileprogress++;
             }
             catch (Exception ex)
             {
                 MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }
         }
     }
 }
Esempio n. 12
0
 public abstract List<fileSystemObject> search(RPFLib.Common.Directory dir, string searchText);
Esempio n. 13
0
 private bool ReIndex(RPFLib.Common.Directory dir)
 {
     try
     {
         dir.Reorder();
         foreach (var fsobject in dir)
         {
             entryIndex++;
             if (fsobject is RPFLib.Common.File)
             {
                 var file = fsobject as RPFLib.Common.File;
                 file.SetIndex(entryIndex);
             }
             else if (fsobject is RPFLib.Common.Directory)
             {
                 var directory = fsobject as RPFLib.Common.Directory;
                 directory.SetNewContentIndex(entryIndex);
             }
         }
         if (dir._Contentcount != null)
             dir.SetContentCount();
         foreach (var fsobject in dir)
         {
             if (fsobject is RPFLib.Common.Directory)
             {
                 RPFLib.Common.Directory dirEntry = fsobject as RPFLib.Common.Directory;
                 dirEntry.SetContentIndex(entryIndex + 1);
                 if (!ReIndex(dirEntry))
                     return false;
             }
         }
         return true;
     }
     catch (Exception ex)
     {
         //throw new Exception(ex.Message, ex);
         return false;
     }
 }
Esempio n. 14
0
        private void Add(RPFLib.Common.Directory fsDirectory, byte[] data)
        {
            FileEntry newFileEntry = new FileEntry(_rpfFile.TOC);
            _rpfFile.TOC.Add(newFileEntry as TOCEntry);

            var file = new Common.File();
            file._dataLoad = getCustom => LoadData(newFileEntry, getCustom);
            file._dataStore = setdata => StoreData(newFileEntry, setdata);
            file._dataCustom = () => newFileEntry.CustomData != null;
            file.d1 = () => newFileEntry.getSize();
            file._Index = nIndex => newFileEntry.setIndex(nIndex);
            file._delete = () => newFileEntry.Delete();

            file.CompressedSize = newFileEntry.SizeInArchive;
            file.IsCompressed = newFileEntry.IsCompressed;
            file.Name = GetName(newFileEntry);
            file.IsResource = newFileEntry.IsResourceFile;
            file.ParentDirectory = fsDirectory;
            fsDirectory.AddObject(file);

            newFileEntry.SetCustomData(data);
        }
Esempio n. 15
0
        private void addBreadCrumb(RPFLib.Common.Directory directory)
        {
            try
            {
                BarStaticItem bartextItem = new BarStaticItem();
                bartextItem.Border = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
                bartextItem.Caption = ">";
                bartextItem.Alignment = BarItemLinkAlignment.Left;
                mainStatusbar.AddItem(bartextItem);

                BarButtonItem barItem = new BarButtonItem();
                barItem.Id = mainStatusbar.ItemLinks.Count + 1;
                barItem.Tag = directory;
                barItem.Caption = directory.Name;
                barItem.ItemClick += new ItemClickEventHandler(barButtonItem_ItemClick);
                barItem.Alignment = BarItemLinkAlignment.Left;
                mainStatusbar.AddItem(barItem);
            }
            catch
            {
                mainStatusbar.ItemLinks.Clear();
            }
        }
Esempio n. 16
0
        private void buildlist(RPFLib.Common.Directory dir)
        {
            masterlist.Clear();
            currentDir = dir;

            //Setup return dir
            foreach (fileSystemObject item in dir)
            {
                if (item.IsDirectory)
                {
                    var subdir = item as RPFLib.Common.Directory;
                    masterlist.Add(item);
                }
                else
                {
                    var subFile = item as RPFLib.Common.File;
                    masterlist.Add(item);
                }
            }
            setViewObjects(masterlist);
            pathLabel.Text = currentDir.FullName;
        }
Esempio n. 17
0
 private void startBreadCrumb(RPFLib.Common.Directory directory)
 {
     try
     {
         BarButtonItem barItem = new BarButtonItem();
         barItem.PaintStyle = BarItemPaintStyle.CaptionGlyph;
         barItem.Glyph = RPFTool.Properties.Resources.Home;
         barItem.Id = mainStatusbar.ItemLinks.Count + 1;
         barItem.Tag = directory;
         barItem.Caption = "Root";
         this.barManager.Items.Add(barItem);
         barItem.ItemClick += new ItemClickEventHandler(barButtonItem_ItemClick);
         mainStatusbar.AddItem(barItem);
     }
     catch
     {
         mainStatusbar.ItemLinks.Clear();
     }
 }
Esempio n. 18
0
 private int dirCount(RPFLib.Common.Directory dir, int filecount)
 {
     foreach (fileSystemObject item in dir)
     {
         if (item.IsReturnDirectory)
             continue;
         else if (item.IsDirectory)
         {
             filecount = dirCount(item as RPFLib.Common.Directory, filecount);
         }
         else
         {
             filecount++;
         }
     }
     return filecount;
 }