示例#1
0
        public void OnFolderTreeSelect(object sender, TreeViewEventArgs e)
        {
            FolderTreeNode folderNode = (FolderTreeNode)e.Node;

            fsFolderInfoFullName.Text = "";
            fsFolderInfoIsolationCombo.SelectedIndex = -1;
            if (folderNode == null)
            {
                return;
            }
            fsFolderInfoIsolationCombo.Enabled = true;     //(folderNode != fsFolderTree.Nodes[0]);
            VirtFsNode virtFsNode = folderNode.virtFsNode; // Avoids CS1690

            // Fill info panel
            String fullName = treeHelper.GetFullNodeName(folderNode);

            fsFolderInfoFullName.Text = "[" + Win32Function.StrFormatByteSize64(virtFsNode.EndOfFile) + "] " + fullName;
            fsFolderInfoIsolationCombo.SelectedIndex = treeHelper.SandboxFlagsToComboIndex(
                virtPackage.GetFileSandbox(fullName, false));

            // Fill fsFilesList
            fsFilesList.Items.Clear();
            if (folderNode.childFiles != null)
            {
                for (int i = folderNode.childFiles.Count - 1; i >= 0; i--)
                {
                    FileData         childFile = folderNode.childFiles[i];
                    FileListViewItem newItem   = new FileListViewItem();
                    newItem.Text = Path.GetFileName(childFile.virtFsNode.FileName);
                    newItem.SubItems.Add(Win32Function.StrFormatByteSize64(childFile.virtFsNode.EndOfFile));

                    newItem.flags = (VIRT_FILE_FLAGS)childFile.virtFsNode.FileFlags;

                    if ((newItem.flags & VirtPackageAPI.VIRT_FILE_FLAGS.DEPLOY_UPON_PRELOAD) != 0)
                    {
                        newItem.ImageIndex = 7;
                    }
                    else
                    {
                        newItem.ImageIndex = 6;
                    }
                    //ListViewItem.ListViewSubItem x = new ListViewItem.ListViewSubItem();
                    //x.Text = ((VIRT_FILE_FLAGS)childFile.virtFsNode.FileFlags).ToString();
                    //newItem.SubItems.Add(x);
                    newItem.SubItems.Add(Path.GetExtension(newItem.Text));

                    newItem.fileSize = childFile.virtFsNode.EndOfFile;
                    if (childFile.addedFrom != "")
                    {
                        if (folderNode.deleted)
                        {
                            folderNode.childFiles.Remove(childFile);       // Added file in a Removed folder. Forbidden!!
                            continue;
                        }
                        else
                        {
                            newItem.ForeColor = Color.Green;               // Newly-added
                        }
                    }
                    else if (folderNode.ImageIndex == 5)                   // deleted
                    {
                        newItem.ForeColor = Color.Red;
                    }
                    else if (childFile.deleted)
                    {
                        newItem.ForeColor = Color.Red;
                    }
                    fsFilesList.Items.Add(newItem);
                }
            }
        }
示例#2
0
        internal bool Open(List <FileData> files)
        {
            this.files = files;
            bool            result = false;
            String          fileNames = null;
            ulong           totalSize = 0;
            String          dirStr = "", itemsStr;
            VIRT_FILE_FLAGS min = VIRT_FILE_FLAGS.ALL_FLAGS;
            VIRT_FILE_FLAGS max = VIRT_FILE_FLAGS.NO_FLAGS;

            foreach (FileData fd in files)
            {
                totalSize += fd.virtFsNode.EndOfFile;
                min       &= (VIRT_FILE_FLAGS)fd.virtFsNode.FileFlags;
                max       |= (VIRT_FILE_FLAGS)fd.virtFsNode.FileFlags;
                fileNames += (fileNames == null ? "" : ", ") + Path.GetFileName(fd.virtFsNode.FileName);
            }
            String sizeStr = Win32Function.StrFormatByteSize64(totalSize);

            this.Text       = fileNames;
            tbFullPath.Text = files[0].virtFsNode.FileName;

            if (((VIRT_FILE_FLAGS)files[0].virtFsNode.FileFlags & VIRT_FILE_FLAGS.ISFILE) == 0)
            {
                dirStr   = " (directory)";
                itemsStr = "directories";
            }
            else
            {
                itemsStr = "files";
            }
            if (files.Count == 1)
            {
                groupBox.Text = Path.GetFileName(files[0].virtFsNode.FileName) + dirStr + ": " + sizeStr;
            }
            else
            {
                groupBox.Text = files.Count + " " + itemsStr + ": " + sizeStr;
            }

            chkFileFlagDEPLOYED.CheckState     = getCheckedState(VIRT_FILE_FLAGS.DEPLOY_UPON_PRELOAD, min, max);
            chkFileFlagDEPLOYED_RAM.CheckState = getCheckedState(VIRT_FILE_FLAGS.DEPLOY_RAM_MODE, min, max);
            chkFileFlagDELETED.CheckState      = getCheckedState(VIRT_FILE_FLAGS.DELETED, min, max);
            chkFileFlagISFILE.CheckState       = getCheckedState(VIRT_FILE_FLAGS.ISFILE, min, max);
            chkFileFlagPKG_FILE.CheckState     = getCheckedState(VIRT_FILE_FLAGS.PKG_FILE, min, max);
            chkFileFlagDISCONNECTED.CheckState = getCheckedState(VIRT_FILE_FLAGS.DISCONNECTED, min, max);
            if (ShowDialog() == DialogResult.OK)
            {
                min = VIRT_FILE_FLAGS.NO_FLAGS;
                max = VIRT_FILE_FLAGS.ALL_FLAGS;
                if (chkFileFlagDEPLOYED.CheckState == CheckState.Checked)
                {
                    min |= VIRT_FILE_FLAGS.DEPLOY_UPON_PRELOAD;
                }
                if (chkFileFlagDEPLOYED.CheckState == CheckState.Unchecked)
                {
                    max &= ~VIRT_FILE_FLAGS.DEPLOY_UPON_PRELOAD;
                }
                if (chkFileFlagDEPLOYED_RAM.CheckState == CheckState.Checked)
                {
                    min |= VIRT_FILE_FLAGS.DEPLOY_RAM_MODE;
                }
                if (chkFileFlagDEPLOYED_RAM.CheckState == CheckState.Unchecked)
                {
                    max &= ~VIRT_FILE_FLAGS.DEPLOY_RAM_MODE;
                }
                if (chkFileFlagDELETED.CheckState == CheckState.Checked)
                {
                    min |= VIRT_FILE_FLAGS.DELETED;
                }
                if (chkFileFlagDELETED.CheckState == CheckState.Unchecked)
                {
                    max &= ~VIRT_FILE_FLAGS.DELETED;
                }
                if (chkFileFlagISFILE.CheckState == CheckState.Checked)
                {
                    min |= VIRT_FILE_FLAGS.ISFILE;
                }
                if (chkFileFlagISFILE.CheckState == CheckState.Unchecked)
                {
                    max &= ~VIRT_FILE_FLAGS.ISFILE;
                }
                if (chkFileFlagPKG_FILE.CheckState == CheckState.Checked)
                {
                    min |= VIRT_FILE_FLAGS.PKG_FILE;
                }
                if (chkFileFlagPKG_FILE.CheckState == CheckState.Unchecked)
                {
                    max &= ~VIRT_FILE_FLAGS.PKG_FILE;
                }
                if (chkFileFlagDISCONNECTED.CheckState == CheckState.Checked)
                {
                    min |= VIRT_FILE_FLAGS.DISCONNECTED;
                }
                if (chkFileFlagDISCONNECTED.CheckState == CheckState.Unchecked)
                {
                    max &= ~VIRT_FILE_FLAGS.DISCONNECTED;
                }

                foreach (FileData fd in files)
                {
                    VIRT_FILE_FLAGS flags = fd.virtFsNode.FileFlags;
                    flags |= min;
                    flags &= max;
                    fd.virtFsNode.FileFlags = flags;
                }
                result = true;
            }
            return(result);
        }