コード例 #1
0
ファイル: Main.cs プロジェクト: jam1garner/Sm4shExplorer
        private void contextMenuTreeView_Opening(object sender, CancelEventArgs e)
        {
            TreeNode selNode = (TreeNode)treeView.GetNodeAt(treeView.PointToClient(Cursor.Position));

            if (selNode == null || selNode.Parent == null)
            {
                e.Cancel = true;
                return;
            }

            extractToolStripMenuItem.Enabled             = true;
            removeModToolStripMenuItem.Enabled           = false;
            unlocalizeToolStripMenuItem.Enabled          = false;
            removeUnlocalizeToolStripMenuItem.Enabled    = false;
            packThisFolderToolStripMenuItem.Enabled      = false;
            removeResourceToolStripMenuItem.Enabled      = false;
            reintroduceResourceToolStripMenuItem.Enabled = false;
            doNotPackThisFolderToolStripMenuItem.Enabled = false;
            if (selNode != null)
            {
                //Mod File
                string filePath = GetWorkspaceFileFromNode(selNode);
                if (File.Exists(filePath))
                {
                    removeModToolStripMenuItem.Enabled = true;
                    return;
                }
                //Mod Folder
                if (Directory.Exists(filePath))
                {
                    removeModToolStripMenuItem.Enabled = true;

                    //Can pack
                    if (_ProjectManager.CanBePacked(selNode.Name))
                    {
                        ResourceCollection resCol       = _ProjectManager.GetResourceCollection(selNode.Name);
                        string             relativePath = _ProjectManager.GetRelativePath(selNode.Name);
                        if (_ProjectManager.CurrentProject.IsResourceToBePacked(resCol.PartitionName, relativePath))
                        {
                            doNotPackThisFolderToolStripMenuItem.Enabled = true;
                        }
                        else
                        {
                            packThisFolderToolStripMenuItem.Enabled = true;
                        }
                    }

                    return;
                }

                ResourceItem rItem = _ProjectManager.GetResource(selNode.Name);
                if (rItem != null)
                {
                    if (rItem.ResourceCollection.IsRegion && rItem.OffInPack == 0)
                    {
                        if (!_ProjectManager.CurrentProject.IsUnlocalized(rItem.ResourceCollection.PartitionName, rItem.RelativePath))
                        {
                            unlocalizeToolStripMenuItem.Enabled = true;
                        }
                        else
                        {
                            removeUnlocalizeToolStripMenuItem.Enabled = true;
                        }
                    }
                    if (!_ProjectManager.CurrentProject.IsResourceRemoved(rItem.ResourceCollection.PartitionName, rItem.RelativePath))
                    {
                        removeResourceToolStripMenuItem.Enabled = true;
                    }
                    else
                    {
                        reintroduceResourceToolStripMenuItem.Enabled = true;
                    }
                    return;
                }
            }
            e.Cancel = true;
        }