Ejemplo n.º 1
0
 protected ResourceNode(ITreeNodeGroup treeNodeGroup, Resource resource)
 {
     if (treeNodeGroup == null || resource == null)
         throw new ArgumentNullException();
     this.treeNodeGroup = treeNodeGroup;
     this.resource = resource;
 }
Ejemplo n.º 2
0
		public void CopyTo(Resource resource) {
			switch (ResourceType) {
			case dnlib.DotNet.ResourceType.Embedded:
				// Always cast it to catch errors
				var er = (EmbeddedResource)resource;
				break;

			case dnlib.DotNet.ResourceType.AssemblyLinked:
				var al = (AssemblyLinkedResource)resource;
				Debug.Assert(this.Assembly != null);
				al.Assembly = this.Assembly;
				break;

			case dnlib.DotNet.ResourceType.Linked:
				var lr = (LinkedResource)resource;
				Debug.Assert(this.File != null);
				lr.File = this.File;
				break;

			default:
				throw new InvalidOperationException();
			}

			resource.Name = this.Name;
			resource.Attributes = this.Attributes;
		}
Ejemplo n.º 3
0
 public static ILSpyTreeNode Create(Resource resource)
 {
     ILSpyTreeNode result = null;
     foreach (var factory in App.CompositionContainer.GetExportedValues<IResourceNodeFactory>()) {
         result = factory.CreateNode(resource);
         if (result != null)
             break;
     }
     return result ?? new ResourceTreeNode(resource);
 }
Ejemplo n.º 4
0
		public IResourceNode Create(ModuleDef module, Resource resource, ITreeNodeGroup treeNodeGroup) {
			var er = resource as EmbeddedResource;
			if (er == null)
				return null;

			er.Data.Position = 0;
			if (!CouldBeImage(er.Name, er.Data))
				return null;

			return new ImageResourceNode(treeNodeGroup, er);
		}
		public ResourceNode Create(ModuleDef module, Resource resource, ITreeNodeGroup treeNodeGroup) {
			var er = resource as EmbeddedResource;
			if (er == null)
				return null;
			er.Data.Position = 0;
			if (!ResourceReader.CouldBeResourcesFile(er.Data))
				return null;

			er.Data.Position = 0;
			return new ResourceElementSetNodeImpl(treeNodeGroup, module, er);
		}
Ejemplo n.º 6
0
 public IResourceNode Create(ModuleDef module, Resource resource, ITreeNodeGroup treeNodeGroup)
 {
     if (module == null || resource == null || treeNodeGroup == null)
         throw new ArgumentNullException();
     foreach (var creator in creators) {
         try {
             var node = creator.Value.Create(module, resource, treeNodeGroup);
             if (node != null)
                 return node;
         }
         catch {
         }
     }
     return new UnknownResourceNode(treeNodeGroup, resource);
 }
Ejemplo n.º 7
0
		public ResourceNode Create(ModuleDef module, Resource resource, ITreeNodeGroup treeNodeGroup) {
			if (module == null)
				throw new ArgumentNullException(nameof(module));
			if (resource == null)
				throw new ArgumentNullException(nameof(resource));
			if (treeNodeGroup == null)
				throw new ArgumentNullException(nameof(treeNodeGroup));
			foreach (var provider in resourceNodeProviders) {
				try {
					var node = provider.Value.Create(module, resource, treeNodeGroup);
					if (node != null)
						return node;
				}
				catch {
				}
			}
			return new UnknownResourceNodeImpl(treeNodeGroup, resource);
		}
Ejemplo n.º 8
0
		public ResourceOptions(Resource resource) {
			this.ResourceType = resource.ResourceType;
			this.Name = resource.Name ?? UTF8String.Empty;
			this.Attributes = resource.Attributes;
			switch (resource.ResourceType) {
			case ResourceType.Embedded:
				break;

			case ResourceType.AssemblyLinked:
				this.Assembly = ((AssemblyLinkedResource)resource).Assembly;
				break;

			case ResourceType.Linked:
				this.File = ((LinkedResource)resource).File;
				break;

			default:
				throw new InvalidOperationException();
			}
		}
Ejemplo n.º 9
0
			public void Replace() {
				Debug.Assert(this.Index < this.Module.Resources.Count && this.Module.Resources[this.Index] == this.Node.Resource);
				if (NewResource == null) {
					this.Node.RegenerateEmbeddedResource();
					this.NewResource = this.Node.Resource;
				}
				else
					this.Node.Resource = this.NewResource;
				this.Module.Resources[this.Index] = this.NewResource;
			}
Ejemplo n.º 10
0
		public void Execute() {
			Debug.Assert(resource == rsrcSetNode.Resource);
			Debug.Assert(module.Resources[resourceIndex] == resource);
			if (nameChanged) {
				bool b = origParentChildIndex < rsrcSetNode.TreeNode.Children.Count && rsrcSetNode.TreeNode.Children[origParentChildIndex] == rsrcElNode.TreeNode;
				Debug.Assert(b);
				if (!b)
					throw new InvalidOperationException();
				rsrcSetNode.TreeNode.Children.RemoveAt(origParentChildIndex);
				rsrcElNode.UpdateData(newOptions);

				rsrcSetNode.TreeNode.AddChild(rsrcElNode.TreeNode);
			}
			else
				rsrcElNode.UpdateData(newOptions);

			if (newResource == null) {
				rsrcSetNode.RegenerateEmbeddedResource();
				newResource = rsrcSetNode.Resource;
			}
			else
				rsrcSetNode.Resource = newResource;
			module.Resources[resourceIndex] = newResource;
			rsrcElNode.TreeNode.RefreshUI();
		}
Ejemplo n.º 11
0
			public ModuleInfo(IResourceElementSetNode node) {
				if (node == null)
					throw new InvalidOperationException();
				this.Node = node;
				var module = node.GetModule();
				Debug.Assert(module != null);
				if (module == null)
					throw new InvalidOperationException();
				this.Module = module;
				this.Index = module.Resources.IndexOf(node.Resource);
				Debug.Assert(this.Index >= 0);
				if (this.Index < 0)
					throw new InvalidOperationException();
				this.Resource = node.Resource;
			}
Ejemplo n.º 12
0
				public ModelInfo(ModuleDef module, Resource rsrc) {
					this.OwnerModule = module;
					this.Index = module.Resources.IndexOf(rsrc);
					Debug.Assert(this.Index >= 0);
					if (this.Index < 0)
						throw new InvalidOperationException();
				}
Ejemplo n.º 13
0
		protected ResourceElementSettingsBaseCommand(IResourceElementNode rsrcElNode, ResourceElementOptions options) {
			this.rsrcSetNode = (IResourceElementSetNode)rsrcElNode.TreeNode.Parent.Data;
			this.rsrcElNode = rsrcElNode;
			this.newOptions = options.Create();
			this.origOptions = rsrcElNode.ResourceElement;

			this.module = rsrcSetNode.GetModule();
			Debug.Assert(this.module != null);
			this.resource = rsrcSetNode.Resource;
			this.resourceIndex = module.Resources.IndexOf(this.resource);
			Debug.Assert(this.resourceIndex >= 0);
			if (this.resourceIndex < 0)
				throw new InvalidOperationException();

			this.origParentChildIndex = this.rsrcSetNode.TreeNode.Children.IndexOf(rsrcElNode.TreeNode);
			Debug.Assert(this.origParentChildIndex >= 0);
			if (this.origParentChildIndex < 0)
				throw new InvalidOperationException();

			this.nameChanged = origOptions.Name != newOptions.Name;
		}
Ejemplo n.º 14
0
 public RenameInfo(Resource resource, TypeInfo typeInfo, string newResourceName)
 {
     this.resource = resource;
     this.typeInfo = typeInfo;
     this.newResourceName = newResourceName;
 }
Ejemplo n.º 15
0
 public ILSpyTreeNode CreateNode(Resource resource)
 {
     return null;
 }
Ejemplo n.º 16
0
 public ILSpyTreeNode CreateNode(Resource resource)
 {
     EmbeddedResource er = resource as EmbeddedResource;
     if (er != null)
         return CreateNode(er.Name, er.GetResourceStream());
     return null;
 }
Ejemplo n.º 17
0
		/// <summary>
		/// Constructor
		/// </summary>
		/// <param name="treeNodeGroup">Treenode group</param>
		/// <param name="resource">Resource</param>
		protected ResourceElementSetNode(ITreeNodeGroup treeNodeGroup, Resource resource)
			: base(treeNodeGroup, resource) {
		}
Ejemplo n.º 18
0
 public ILSpyTreeNode CreateNode(Resource resource)
 {
     EmbeddedResource er = resource as EmbeddedResource;
     if (er != null && er.Name.String.EndsWith(".resources", StringComparison.OrdinalIgnoreCase)) {
         return new ResourcesFileTreeNode(er);
     }
     return null;
 }
Ejemplo n.º 19
0
 public UnknownResourceTreeNode(Resource resource)
     : base(resource)
 {
 }
Ejemplo n.º 20
0
 public UnknownResourceNode(ITreeNodeGroup treeNodeGroup, Resource resource)
     : base(treeNodeGroup, resource)
 {
 }
Ejemplo n.º 21
0
			public void Replace() {
				Debug.Assert(Index < Module.Resources.Count && Module.Resources[Index] == Node.Resource);
				if (NewResource == null) {
					Node.RegenerateEmbeddedResource();
					NewResource = Node.Resource;
				}
				else
					Node.Resource = NewResource;
				Module.Resources[Index] = NewResource;
			}
Ejemplo n.º 22
0
 public ResourceTreeNode(Resource r)
 {
     if (r == null)
         throw new ArgumentNullException("r");
     this.r = r;
 }
Ejemplo n.º 23
0
			public void Restore() {
				Debug.Assert(this.Index < this.Module.Resources.Count && this.Module.Resources[this.Index] == this.Node.Resource);
				this.Node.Resource = this.Resource;
				this.Module.Resources[this.Index] = this.Resource;
			}
Ejemplo n.º 24
0
		protected CreateResourceElementCommandBase(IResourceElementSetNode rsrcSetNode, IResourceElementNode[] nodes) {
			this.module = rsrcSetNode.GetModule();
			Debug.Assert(this.module != null);
			this.rsrcSetNode = rsrcSetNode;
			this.nodes = nodes;
			this.resource = rsrcSetNode.Resource;
			this.resourceIndex = module.Resources.IndexOf(this.resource);
			Debug.Assert(this.resourceIndex >= 0);
			if (this.resourceIndex < 0)
				throw new InvalidOperationException();
		}
Ejemplo n.º 25
0
			public bool Add(Resource resource) {
				var name = resource.Name.String;
				int index = name.LastIndexOf('.');
				string ext;
				if (index < 0)
					ext = name;
				else
					ext = name.Substring(index + 1);
				uint extNum;
				if (!uint.TryParse(ext, out extNum))
					return false;
				var ns = index < 0 ? string.Empty : name.Substring(0, index);

				resources.Add(new Key(extNum, ns), resource);
				return true;
			}
Ejemplo n.º 26
0
		public void Execute() {
			Debug.Assert(resource == rsrcSetNode.Resource);
			Debug.Assert(module.Resources[resourceIndex] == resource);
			foreach (var node in nodes)
				rsrcSetNode.TreeNode.AddChild(node.TreeNode);
			if (newResource == null) {
				rsrcSetNode.RegenerateEmbeddedResource();
				newResource = rsrcSetNode.Resource;
			}
			else
				rsrcSetNode.Resource = newResource;
			module.Resources[resourceIndex] = newResource;
		}
Ejemplo n.º 27
0
		protected ResourceTreeNode(Resource r) {
			this.r = r;
		}
Ejemplo n.º 28
0
		public IResourceNode Create(ModuleDef module, Resource resource, ITreeNodeGroup treeNodeGroup) {
			return null;
		}
Ejemplo n.º 29
0
        public ILSpyTreeNode FindResourceNode(Resource resource)
        {
            if (resource == null)
                return null;
            foreach (AssemblyTreeNode node in this.Children)
            {
                if (node.LoadedAssembly.IsLoaded)
                {
                    node.EnsureLazyChildren();
                    foreach (var item in node.Children.OfType<ResourceListTreeNode>())
                    {
                        var founded = item.Children.OfType<ResourceTreeNode>().Where(x => x.Resource == resource).FirstOrDefault();
                        if (founded != null)
                            return founded;

                        var foundedResEntry = item.Children.OfType<ResourceEntryNode>().Where(x => resource.Name.Equals(x.ToString())).FirstOrDefault();
                        if (foundedResEntry != null)
                            return foundedResEntry;
                    }
                }
            }
            return null;
        }
Ejemplo n.º 30
0
		internal static bool IsPublicAPIInternal(Resource r) {
			return (r.Attributes & ManifestResourceAttributes.VisibilityMask) != ManifestResourceAttributes.Private;
		}