public bool SearchInPdb(out string filename, out int lineNumber, RenamedBase item) { filename = null; lineNumber = -1; string s = item.NameOldPlain; int i = s.LastIndexOf('.'); if (i == -1) { return(false); } string className = s.Substring(0, i); string itemName = s.Substring(i + 1); CodeLocation location = null; foreach (PdbFile file in pdbfiles) { location = file.Resolver.FindLocation(className, itemName); if (location != null) { break; } } if (location == null) { return(false); } filename = location.FileName; lineNumber = (int)location.Line; return(true); }
private bool DetectMarkersForVS(out string filename, out int lineNumber, RenamedBase item) { filename = null; lineNumber = -1; if (pdbfiles.Count == 0 || item.EntityType != EntityType.Method) { return(false); } return(SearchInPdb(out filename, out lineNumber, item)); }
private void ptvElements_NodeSelect(object sender, NodeSelectEventArgs e) { focusedItem = null; if (e.Node != null && e.Node.Selected) { focusedItem = e.Node.Tag as RenamedBase; } EnableSelectionActions(focusedItem != null); slblSelected.Text = focusedItem == null ? "" : focusedItem.TransformSimple; commandManager.SetEnabled(Actions.OpenInEditor, focusedItem != null && DetectMarkersForVS(out focusedFilename, out focusedLine, focusedItem)); }
private void BuildResult(RenamedBase item) { ListViewItem l = new ListViewItem(item.NameOldSimple); l.ImageIndex = TreeBuilder.GetIconForEntity(item.EntityType, mainForm); lvResults.Items.Add(l); ItemDescriptor d = new ItemDescriptor(item); l.Tag = d; string tip; if (item is RenamedClass) { tip = TreeBuilder.BuildHintForClass((RenamedClass)item); } else { tip = TreeBuilder.BuildHintForItem((RenamedItem)item); } if (!mainForm.HavePdb) { tip += "Unable to map to source code, no PDB files attached."; } else { if (item.EntityType != EntityType.Method) { tip += "Mapping to source code works only for methods."; } else { string filename; int line; if (mainForm.SearchInPdb(out filename, out line, item)) { tip += "Source position:\n" + filename + ":" + line + " (Ctrl+Click to open)"; d.Filename = filename; d.Line = line; } else { tip += "Unable to map to source code."; } } } tip += "\nDouble-click to select in classes tree."; l.ToolTipText = tip; }
public void UpdateGenericParams(IEntitySearcher searcher) { if (genericParams == null) { return; } for (int i = 0; i < genericParams.Length; i++) { if (genericParams[i].@namespace != null && (string.Compare(genericParams[i].nsCache[0], "System", StringComparison.Ordinal) != 0 || searcher.HaveSystemEntities)) { RenamedBase renamedBase = searcher.SearchForOldName(genericParams[i]); if (renamedBase != null) { genericParams[i].AssignName(renamedBase.Name.NameNew); } genericParams[i].UpdateGenericParams(searcher); } } }
public Entity(Entity entity, RenamedBase item, IList <EntityName> methodParams) { this.methodParams = new List <EntityName>(methodParams); result = entity.result; name = item.NameOldFull + "." + entity.name.Name; }
public ItemDescriptor(RenamedBase item) { this.item = item; }
public Entity(Entity entity, RenamedBase item, IList<EntityName> methodParams) { this.methodParams = new List<EntityName>(methodParams); result = entity.result; name = item.NameOldFull + "." + entity.name.Name; }
private void BuildResult(RenamedBase item) { ListViewItem l = new ListViewItem(item.NameOldSimple); l.ImageIndex = TreeBuilder.GetIconForEntity(item.EntityType); lvResults.Items.Add(l); ItemDescriptor d = new ItemDescriptor(item); l.Tag = d; string tip; if (item is RenamedClass) tip = TreeBuilder.BuildHintForClass((RenamedClass)item); else tip = TreeBuilder.BuildHintForItem((RenamedItem)item); if (!mainForm.HavePdb) tip += "Unable to map to source code, no PDB files attached."; else { if (item.EntityType != EntityType.Method) tip += "Mapping to source code works only for methods."; else { string filename; int line; if (mainForm.SearchInPdb(out filename, out line, item)) { tip += "Source position:\n" + filename + ":" + line + " (Ctrl+Click to open)"; d.Filename = filename; d.Line = line; } else tip += "Unable to map to source code."; } } tip += "\nDouble-click to select in classes tree."; l.ToolTipText = tip; }
public ItemDescriptor(INamedEntity entity) { this.entity = entity; renamed = entity as RenamedBase; }
public PineappleTreeNode FindNode(RenamedBase renamed) { return(nodesMap.TryGetValue(renamed, out PineappleTreeNode node) ? node : null); }
public void MapRenamed(RenamedBase renamed, PineappleTreeNode node) { nodesMap.Add(renamed, node); }
private void BuildNormalNode(PineappleTreeNode node, INamedEntity entity, string originalLine) { node.ImageIndex = TreeBuilder.GetIconForEntity(entity.EntityType, mainForm); ItemDescriptor descriptor = new ItemDescriptor(entity); string tooltip = descriptor.GetToolTip(); node.Tag = descriptor; RenamedItem item = entity as RenamedItem; if (item != null) { node.Text += "\nOwner class: " + item.Owner.NameOldFull; } RenamedBase renamedBase = (RenamedBase)entity; if (tbtnShort.Checked) { node.Text += "\nNew name: " + renamedBase.NameNew; } if (tbtnSimple.Checked) { node.Text += "\nNew name: " + renamedBase.NameNewSimple; } if (tbtnFull.Checked) { node.Text += "\nNew name: " + renamedBase.NameNewFull; } if (originalLine != null && Configs.Instance.ShowOriginal) { node.Text += "\nOriginal line: " + originalLine; } if (!mainForm.HavePdb) { tooltip += "Unable to map to source code, no PDB files attached."; } else { if (entity.EntityType != EntityType.Method) { tooltip += "Mapping to source code works only for methods."; } else { ProcessPdb(descriptor); if (descriptor.Filename != null) { node.Text += "\n" + PathUtils.ShortenPath(descriptor.Filename, 100) + ":" + descriptor.Line; tooltip += descriptor.Filename + ":" + descriptor.Line; } else { tooltip += "Unable to map to source code."; } } } node.ToolTipText = tooltip; }