public static IList <NexonArchiveFileEntry> GetFilesRecursive(TreeNode node, IList <NexonArchiveFileEntry> files) { if (node == null) { throw new ArgumentNullException("node"); } if (files == null) { throw new ArgumentNullException("files"); } if (node.Tag is IList <NexonArchiveFileEntry> directoryFiles) { foreach (NexonArchiveFileEntry file in directoryFiles) { files.Add(file); } } foreach (object obj in node.Nodes) { TreeNode childNode = (TreeNode)obj; FolderTreeView.GetFilesRecursive(childNode, files); } return(files); }
public void LoadArchive(NexonArchive narFile) { Nodes.Clear(); if (narFile == null) { return; } TreeNode rootNode = new TreeNode("(NAR File)"); foreach (NexonArchiveFileEntry entry in narFile.FileEntries) { TreeNode node = FolderTreeView.FindOrCreateNodePath(rootNode, Path.GetDirectoryName(entry.Path)); if (!(node.Tag is IList <NexonArchiveFileEntry> nodeList)) { nodeList = new List <NexonArchiveFileEntry>(); node.Tag = nodeList; } nodeList.Add(entry); } rootNode.Expand(); Nodes.Add(rootNode); SelectedNode = rootNode; }
private void Extract_Click(object sender, EventArgs e) { if (SelectedNode != null) { List <NexonArchiveFileEntry> file = new List <NexonArchiveFileEntry>(); FolderTreeView.GetFilesRecursive(base.SelectedNode, file); OnExtractFolder(new FilesEventArgs(FolderTreeView.GetFullPath(base.SelectedNode), file)); } }
private void VerifyStrip_Click(object sender, EventArgs e) { if (Nar != null && FolderTree.TopNode != null) { List <NexonArchiveFileEntry> files = new List <NexonArchiveFileEntry>(); FolderTreeView.GetFilesRecursive(FolderTree.TopNode, files); VerifyFiles(this, new FilesEventArgs(FolderTreeView.GetFullPath(FolderTree.TopNode), files)); } }
private static TreeNode FindOrCreateNodePath(TreeNode rootNode, string path) { if (path.Length == 0) { return(rootNode); } int startIndex = 0; while (path[startIndex] == '/' || path[startIndex] == '\\') { startIndex++; } int separatorIndex = path.IndexOfAny(new char[] { '/', '\\' }, startIndex); string name; if (separatorIndex >= 0) { name = path.Substring(startIndex, separatorIndex - startIndex); } else { name = path.Substring(startIndex); } TreeNode finalNode = null; foreach (object obj in rootNode.Nodes) { TreeNode node = (TreeNode)obj; if (string.Compare(node.Name, name, StringComparison.OrdinalIgnoreCase) == 0) { finalNode = node; break; } } if (finalNode == null) { finalNode = new TreeNode(name); finalNode.Name = name; rootNode.Nodes.Add(finalNode); } if (separatorIndex >= 0) { return(FolderTreeView.FindOrCreateNodePath(finalNode, path.Substring(separatorIndex + 1))); } return(finalNode); }
public static string GetFullPath(TreeNode node) { if (node == null || node.Parent == null) { return(String.Empty); } if (node.Parent != null && node.Parent.Parent != null) { return(FolderTreeView.GetFullPath(node.Parent) + "/" + node.Text); } return(node.Text); }
private void FolderTreeView_AfterSelect(object sender, TreeViewEventArgs e) { OnShowFolder(new FilesEventArgs(FolderTreeView.GetFullPath(e.Node), e.Node.Tag as List <NexonArchiveFileEntry>)); }
public TreeSort(FolderTreeView folderTreeView) { ftv = folderTreeView; }