private void BuildResource(RenamedResource resource, ref PineappleTreeNode resourcesNode) { PineappleTreeNode node = CreateNode(resource.NameOld); node.Tag = resource; node.ImageIndex = mainForm.ICON_RESOURCE; node.ToolTipText = BuildHintForResource(resource); PineappleTreeNode ownerNode; string ownerClass = resource.TryGetOwnerClassOld(); if (!groupResources || ownerClass == null || !classNodesMap.TryGetValue(ownerClass, out ownerNode)) { if (resourcesNode == null) { resourcesNode = CreateNode("Resources"); resourcesNode.ImageIndex = mainForm.ICON_RESOURCES; tree.Nodes.Add(resourcesNode); } ownerNode = resourcesNode; } ownerNode.Nodes.Add(node); string subItemText = null; if (resource.NameNew != null) { subItemText = resource.NameNew; } else { node.HighlightColorIndex = (int)Highlights.NotRenamed; } if (subItemText != null) { if (Configs.Instance.UseColumns) { node.Subitems.Add(new PineappleTreeSubitem(subItemText)); } else { node.Text += "\n" + subItemText; } } }
public static string BuildHintForResource(RenamedResource resource) { StringBuilder sb = new StringBuilder(); sb.AppendLine("Old name:"); sb.AppendLine(resource.NameOld); if (resource.SkipReason != null) { sb.AppendLine("Skip reason:"); sb.AppendLine(resource.SkipReason); } else { sb.AppendLine("New name:"); sb.AppendLine(resource.NameNew); } return(sb.ToString()); }
private void LoadFile(IMappingReader reader) { loadTime = 0; LoadTimer timer = new LoadTimer("File Parsing"); reader.Load(); loadTime += timer.Stop(); timer = new LoadTimer("Items Processing"); modules.Clear(); namespaces.Clear(); namespacesObfuscated.Clear(); classes.Clear(); classesCache.Clear(); haveSystemEntities = false; methodsCount = classesCount = subclassesCount = skippedCount = 0; List <RenamedClass> subclasses = new List <RenamedClass>(); foreach (IMappingEntity entity in reader.Entities) { if (entity.Type == EntityType.Resource) { RenamedResource resource = new RenamedResource(entity); resources.Add(resource); continue; } RenamedClass c = new RenamedClass(entity, this); classesCount++; if (c.SkipReason != null) { skippedCount++; } if (c.OwnerClassName == null) { classes.Add(c); if (c.Name.NameOld != null && c.Name.NameOld.Namespace != null) { haveSystemEntities |= c.Name.NameOld.Namespace.StartsWith("System."); } } else { subclasses.Add(c); } methodsCount += c.MethodsCount; if (c.ModuleNew != null) { modules.Add(c.ModuleNew); } if (c.Name.NameOld != null) { classesCache[c.NameOld] = c; classesCache[c.NameOldFull] = c; if (!string.IsNullOrEmpty(c.Name.NameOld.Namespace)) { namespaces.Add(c.Name.NameOld.Namespace); } } if (c.Name.NameNew != null) { classesCache[c.NameNew] = c; classesCache[c.NameNewFull] = c; if (!string.IsNullOrEmpty(c.Name.NameNew.Namespace)) { namespacesObfuscated.Add(c.Name.NameNew.Namespace); } } } loadTime += timer.Stop(); timer = new LoadTimer("Subclasses Processing"); foreach (RenamedClass subclass in subclasses) { RenamedClass c; if (classesCache.TryGetValue(subclass.OwnerClassName, out c)) { c.Items.Add(subclass); subclass.OwnerClass = c; subclassesCount++; continue; } Debug.WriteLine("Failed to find root class: " + subclass.OwnerClassName); classes.Add(subclass); } loadTime += timer.Stop(); timer = new LoadTimer("Values Updating"); foreach (RenamedClass c in classes) { c.UpdateNewNames(this); } loadTime += timer.Stop(); Debug.WriteLine("Total Elapsed: {0} ms", loadTime); }