public void AddExternalReference(string symbol, IVsObjectList2 listToUse) { bool found = false; foreach (var c in root.Children) { if (string.Compare(symbol, c.UniqueName, false) == 0) { c.ListToReference = listToUse; found = true; break; } foreach (var c2 in c.Children) { if (string.Compare(symbol, c2.UniqueName, false) == 0) { c2.ListToReference = listToUse; found = true; break; } } } if (!found) { throw new IndexOutOfRangeException(String.Format("Could not find symbol with text {0}", symbol)); } }
void GetListItemInfo(IVsObjectList2 subList, uint j, out string text, out ushort image, out bool isProcessing) { // Get Text IVsNavInfoNode navInfoNode; subList.GetNavInfoNode(j, out navInfoNode); navInfoNode.get_Name(out text); if (text == null) { text = ""; } // Get icon, indicating reference type VSTREEDISPLAYDATA[] displayData = new VSTREEDISPLAYDATA[1]; subList.GetDisplayData(j, displayData); isProcessing = false; isProcessing |= text.Contains("Please Wait..."); isProcessing |= text.Contains("% of items left to process"); image = displayData[0].Image; if (image == 8 || image == 7) { isProcessing = true; } }
public void AddExternalReference(string symbol, IVsObjectList2 listToUse) { bool found = false; foreach (var c in root.Children) { if (string.Compare(symbol, c.UniqueName, false) == 0) { c.ListToReference = listToUse; found = true; break; } foreach (var c2 in c.Children) { if (string.Compare(symbol, c2.UniqueName, false) == 0) { c2.ListToReference = listToUse; found = true; break; } //foreach (var c3 in c2.Children) // if (string.Compare(symbol, c3.SymbolText, false) == 0) // { // c3.ListToReference = listToUse; // found = true; // break; // } } } if(!found) throw new IndexOutOfRangeException(String.Format("Could not find symbol with text {0}", symbol)); }
int IVsLibrary2.GetList2( uint listType, uint flags, VSOBSEARCHCRITERIA2[] pobSrch, out IVsObjectList2 ppIVsObjectList2 ) { ppIVsObjectList2 = null; return(VSConstants.E_NOTIMPL); }
public static IVsObjectList2 SearchIVsLibrary(IVsLibrary2 library, string keyword, VSOBSEARCHTYPE searchType) { VSOBSEARCHCRITERIA2[] searchCriteria = new VSOBSEARCHCRITERIA2[1]; searchCriteria[0].eSrchType = searchType; searchCriteria[0].szName = keyword; IVsObjectList2 objectList = null; library.GetList2((uint)_LIB_LISTTYPE.LLT_CLASSES, (uint)_LIB_LISTFLAGS.LLF_USESEARCHFILTER, searchCriteria, out objectList); return(objectList); }
public static uint IVsObjectList2Count(IVsObjectList2 list) { if (list == null) { throw new ArgumentNullException("list"); } uint count; list.GetItemCount(out count); return(count); }
/// <summary> /// Constructor /// </summary> /// <param name="list"></param> /// <param name="idx"></param> public SearchResult(IVsObjectList2 list, uint idx) { this.list = list; this.idx = idx; }
private void LogListSupportedCategories(uint childIndex, IVsObjectList2 csLib) { uint outVal = 0; string tempStr = string.Empty; /* * LIB_CATEGORY : * LC_MEMBERTYPE = 1, LC_MEMBERACCESS = 2, LC_CLASSTYPE = 3, LC_CLASSACCESS = 4, LC_ACTIVEPROJECT = 5, LC_LISTTYPE = 6, LC_VISIBILITY = 7, LC_MODIFIER = 8, LC_NODETYPE = 9, */ Logger.Log("** GetCategoryField2"); csLib.GetCategoryField2(childIndex, (int)LIB_CATEGORY.LC_ACTIVEPROJECT, out outVal); tempStr = string.Empty; foreach (_LIBCAT_ACTIVEPROJECT e in Enum.GetValues(typeof(_LIBCAT_ACTIVEPROJECT))) if (((_LIBCAT_ACTIVEPROJECT)outVal & e) == e) tempStr += "|" + Enum.GetName(typeof(_LIBCAT_ACTIVEPROJECT), e); Logger.Log(string.Format("LIB_CATEGORY.LC_ACTIVEPROJECT: (_LIBCAT_ACTIVEPROJECT)({0}){1}", outVal, tempStr)); csLib.GetCategoryField2(childIndex, (int)LIB_CATEGORY.LC_LISTTYPE, out outVal); tempStr = string.Empty; foreach (_LIB_LISTTYPE e in Enum.GetValues(typeof(_LIB_LISTTYPE))) if (((_LIB_LISTTYPE)outVal & e) == e) tempStr += "|" + Enum.GetName(typeof(_LIB_LISTTYPE), e); Logger.Log(string.Format("LIB_CATEGORY.LC_LISTTYPE: (_LIB_LISTTYPE)({0}){1}", outVal, tempStr)); // crashed VS //csLib.GetCategoryField2(childIndex, (int)LIB_CATEGORY.LC_CLASSACCESS, out outVal); //Logger.Log(string.Format("C# LIB_CATEGORY {0} - {1}({2})", "LC_CLASSACCESS", Enum.GetName(typeof(_LIBCAT_CLASSACCESS), outVal), outVal)); tempStr = string.Empty; csLib.GetCategoryField2(childIndex, (int)LIB_CATEGORY.LC_CLASSTYPE, out outVal); foreach (_LIBCAT_CLASSTYPE2 e in Enum.GetValues(typeof(_LIBCAT_CLASSTYPE2))) if (((_LIBCAT_CLASSTYPE2)outVal & e) == e) tempStr += "|" + Enum.GetName(typeof(_LIBCAT_CLASSTYPE), e); Logger.Log(string.Format("LIB_CATEGORY.LC_CLASSTYPE: (_LIBCAT_CLASSTYPE2)({0}){1}", outVal, tempStr)); tempStr = string.Empty; foreach (_LIBCAT_CLASSTYPE e in Enum.GetValues(typeof(_LIBCAT_CLASSTYPE))) if (((_LIBCAT_CLASSTYPE)outVal & e) == e) tempStr += "|" + Enum.GetName(typeof(_LIBCAT_CLASSTYPE), e); Logger.Log(string.Format("LIB_CATEGORY.LC_CLASSTYPE: (_LIBCAT_CLASSTYPE)({0}){1}", outVal, tempStr)); csLib.GetCategoryField2(childIndex, (int)LIB_CATEGORY.LC_MEMBERACCESS, out outVal); tempStr = string.Empty; foreach (_LIBCAT_MEMBERACCESS e in Enum.GetValues(typeof(_LIBCAT_MEMBERACCESS))) if (((_LIBCAT_MEMBERACCESS)outVal & e) == e) tempStr += "|" + Enum.GetName(typeof(_LIBCAT_CLASSTYPE), e); Logger.Log(string.Format("LIB_CATEGORY.LC_MEMBERACCESS: (_LIBCAT_MEMBERACCESS)({0}){1}", outVal, tempStr)); csLib.GetCategoryField2(childIndex, (int)LIB_CATEGORY.LC_MEMBERTYPE, out outVal); tempStr = string.Empty; foreach (_LIBCAT_MEMBERTYPE e in Enum.GetValues(typeof(_LIBCAT_MEMBERTYPE))) if (((_LIBCAT_MEMBERTYPE)outVal & e) == e) tempStr += "|" + Enum.GetName(typeof(_LIBCAT_CLASSTYPE), e); Logger.Log(string.Format("LIB_CATEGORY.LC_MEMBERTYPE: (_LIBCAT_MEMBERTYPE)({0}){1}", outVal, tempStr)); csLib.GetCategoryField2(childIndex, (int)LIB_CATEGORY.LC_MODIFIER, out outVal); tempStr = string.Empty; foreach (_LIBCAT_MODIFIERTYPE e in Enum.GetValues(typeof(_LIBCAT_MODIFIERTYPE))) if (((_LIBCAT_MODIFIERTYPE)outVal & e) == e) tempStr += "|" + Enum.GetName(typeof(_LIBCAT_CLASSTYPE), e); Logger.Log(string.Format("LIB_CATEGORY.LC_MODIFIER: (_LIBCAT_MODIFIERTYPE)({0}){1}", outVal, tempStr)); // csLib.GetSupportedCategoryFields2((int)LIB_CATEGORY.LC_NODETYPE, out outVal); //Logger.Log(string.Format("C# LIB_CATEGORY {0} - {1}({2})", "LC_NODETYPE", Enum.GetName(typeof()), outVal)); csLib.GetCategoryField2(childIndex, (int)LIB_CATEGORY.LC_VISIBILITY, out outVal); tempStr = string.Empty; foreach (_LIBCAT_VISIBILITY e in Enum.GetValues(typeof(_LIBCAT_VISIBILITY))) if (((_LIBCAT_VISIBILITY)outVal & e) == e) tempStr += "|" + Enum.GetName(typeof(_LIBCAT_CLASSTYPE), e); Logger.Log(string.Format("LIB_CATEGORY.LC_VISIBILITY: (_LIBCAT_VISIBILITY)({0}){1}", outVal, tempStr)); csLib.GetCategoryField2(childIndex, (int)_LIB_CATEGORY2.LC_HIERARCHYTYPE, out outVal); tempStr = string.Empty; foreach (_LIBCAT_HIERARCHYTYPE2 e in Enum.GetValues(typeof(_LIBCAT_HIERARCHYTYPE2))) if (((_LIBCAT_HIERARCHYTYPE2)outVal & e) == e) tempStr += "|" + Enum.GetName(typeof(_LIBCAT_HIERARCHYTYPE2), e); Logger.Log(string.Format("LIB_CATEGORY._LIBCAT_HIERARCHYTYPE2: (_LIBCAT_HIERARCHYTYPE2)({0}){1}", outVal, tempStr)); tempStr = string.Empty; foreach (_LIBCAT_HIERARCHYTYPE e in Enum.GetValues(typeof(_LIBCAT_HIERARCHYTYPE))) if (((_LIBCAT_HIERARCHYTYPE)outVal & e) == e) tempStr += "|" + Enum.GetName(typeof(_LIBCAT_CLASSTYPE), e); Logger.Log(string.Format("LIB_CATEGORY._LIBCAT_HIERARCHYTYPE: (_LIBCAT_HIERARCHYTYPE)({0}){1}", outVal, tempStr)); csLib.GetCategoryField2(childIndex, (int)_LIB_CATEGORY2.LC_Last2, out outVal); Logger.Log(string.Format("C# LIB_CATEGORY {0} - {1}({2})", "LC_Last2", outVal, outVal)); csLib.GetCategoryField2(childIndex, (int)_LIB_CATEGORY2.LC_MEMBERINHERITANCE, out outVal); tempStr = string.Empty; foreach (_LIBCAT_MEMBERINHERITANCE e in Enum.GetValues(typeof(_LIBCAT_MEMBERINHERITANCE))) if (((_LIBCAT_MEMBERINHERITANCE)outVal & e) == e) tempStr += "|" + Enum.GetName(typeof(_LIBCAT_MEMBERINHERITANCE), e); Logger.Log(string.Format("LIB_CATEGORY.LC_MEMBERINHERITANCE: (_LIBCAT_MEMBERINHERITANCE)({0}){1}", outVal, tempStr)); csLib.GetCategoryField2(childIndex, (int)_LIB_CATEGORY2.LC_NIL, out outVal); Logger.Log(string.Format("C# LIB_CATEGORY {0} - {1}({2})", "LC_NIL", outVal, outVal)); csLib.GetCategoryField2(childIndex, (int)_LIB_CATEGORY2.LC_PHYSICALCONTAINERTYPE, out outVal); tempStr = string.Empty; foreach (_LIBCAT_PHYSICALCONTAINERTYPE e in Enum.GetValues(typeof(_LIBCAT_PHYSICALCONTAINERTYPE))) if (((_LIBCAT_PHYSICALCONTAINERTYPE)outVal & e) == e) tempStr += "|" + Enum.GetName(typeof(_LIBCAT_PHYSICALCONTAINERTYPE), e); Logger.Log(string.Format("LIB_CATEGORY.LC_PHYSICALCONTAINERTYPE: (_LIBCAT_PHYSICALCONTAINERTYPE)({0}){1}", outVal, tempStr)); csLib.GetCategoryField2(childIndex, (int)_LIB_CATEGORY2.LC_SEARCHMATCHTYPE, out outVal); tempStr = string.Empty; foreach (_LIBCAT_SEARCHMATCHTYPE e in Enum.GetValues(typeof(_LIBCAT_SEARCHMATCHTYPE))) if (((_LIBCAT_SEARCHMATCHTYPE)outVal & e) == e) tempStr += "|" + Enum.GetName(typeof(_LIBCAT_SEARCHMATCHTYPE), e); Logger.Log(string.Format("LIB_CATEGORY.LC_SEARCHMATCHTYPE: (_LIBCAT_SEARCHMATCHTYPE)({0}){1}", outVal, tempStr)); }
/// <summary> /// /// </summary> /// <param name="list"></param> /// <param name="title"></param> /// <param name="itemsToDo">number of items to explore, set -1 to explore all (this would take a LOT of time and space),</param> private void ExploreListStructure(IVsObjectList2 list, string title, int itemsToDo) { Logger.Log("\r\n-------------------------------\r\nDetails for list '" + title + "'\r\n------------------------------- "); string tempStr = string.Empty; uint temp = 0, itemCount = 0; list.GetItemCount(out itemCount); Logger.Log(string.Format("* Child item count: {0}", itemCount)); Logger.Log(string.Format("* GetCapabilities2", itemCount)); list.GetCapabilities2(out temp); tempStr = string.Empty; foreach (_LIB_LISTCAPABILITIES2 e in Enum.GetValues(typeof(_LIB_LISTCAPABILITIES2))) if (((_LIB_LISTCAPABILITIES2)temp & e) == e) tempStr += "|" + Enum.GetName(typeof(_LIB_LISTCAPABILITIES2), e); Logger.Log(string.Format("_LIB_LISTCAPABILITIES2: ({0}){1}", temp, tempStr)); tempStr = string.Empty; foreach (_LIB_LISTCAPABILITIES e in Enum.GetValues(typeof(_LIB_LISTCAPABILITIES))) if (((_LIB_LISTCAPABILITIES)temp & e) == e) tempStr += "|" + Enum.GetName(typeof(_LIB_LISTCAPABILITIES), e); Logger.Log(string.Format("_LIB_LISTCAPABILITIES: ({0}){1}", temp, tempStr)); Logger.Log(string.Format("* GetFlags", itemCount)); temp = 0; list.GetFlags(out temp); tempStr = string.Empty; foreach (_VSTREEFLAGS2 e in Enum.GetValues(typeof(_VSTREEFLAGS2))) if (((_VSTREEFLAGS2)temp & e) == e) tempStr += "|" + Enum.GetName(typeof(_VSTREEFLAGS2), e); Logger.Log(string.Format("_VSTREEFLAGS2: ({0}){1}", temp, tempStr)); tempStr = string.Empty; foreach (_VSTREEFLAGS e in Enum.GetValues(typeof(_VSTREEFLAGS))) if (((_VSTREEFLAGS)temp & e) == e) tempStr += "|" + Enum.GetName(typeof(_VSTREEFLAGS), e); Logger.Log(string.Format("_VSTREEFLAGS: ({0}){1}", temp, tempStr)); // children items if (itemCount > 0) if (itemsToDo > -1 && itemsToDo < itemCount) itemCount = (uint)itemsToDo; for (uint i = 0; i < itemCount; i++) { Logger.Log(string.Format("* Details of child item {0}", i)); object prop; string listName = string.Empty; list.GetProperty(i, (int)_VSOBJLISTELEMPROPID.VSOBJLISTELEMPROPID_FULLNAME, out prop); Logger.Log(string.Format("VSOBJLISTELEMPROPID_FULLNAME: {0}", prop)); listName = prop.ToString(); list.GetProperty(i, (int)_VSOBJLISTELEMPROPID.VSOBJLISTELEMPROPID_HELPKEYWORD, out prop); Logger.Log(string.Format("VSOBJLISTELEMPROPID_HELPKEYWORD: {0}", prop)); list.GetProperty(i, (int)_VSOBJLISTELEMPROPID.VSOBJLISTELEMPROPID_LEAFNAME, out prop); Logger.Log(string.Format("VSOBJLISTELEMPROPID_LEAFNAME: {0}", prop)); list.GetProperty(i, (int)_VSOBJLISTELEMPROPID.VSOBJLISTELEMPROPID_SUPPORTSCALLSFROM, out prop); Logger.Log(string.Format("VSOBJLISTELEMPROPID_SUPPORTSCALLSFROM: {0}", prop)); list.GetProperty(i, (int)_VSOBJLISTELEMPROPID.VSOBJLISTELEMPROPID_SUPPORTSCALLSTO, out prop); Logger.Log(string.Format("VSOBJLISTELEMPROPID_SUPPORTSCALLSTO: {0}", prop)); list.GetProperty(i, (int)_VSOBJLISTELEMPROPID.VSOBJLISTELEMPROPID_COMPONENTPATH, out prop); Logger.Log(string.Format("VSOBJLISTELEMPROPID_COMPONENTPATH: {0}", prop)); //SI: Crashes VS //list.GetText(i, VSTREETEXTOPTIONS.TTO_BASETEXT, out tempStr); //Logger.Log(string.Format("Base text: {0}", tempStr)); LogListSupportedCategories(i, list); IVsObjectList2 childList = null; uint childItemCount = 0; //list.GetList2( // i, // (uint)_LIB_LISTTYPE.LLT_MEMBERS, // 16, // new[] // { // new VSOBSEARCHCRITERIA2 // { // eSrchType = VSOBSEARCHTYPE.SO_ENTIREWORD, // grfOptions = (uint) _VSOBSEARCHOPTIONS.VSOBSO_LOOKINREFS, // 2 // szName = "*" // } // }, // out chldList); foreach (_LIB_LISTTYPE en in Enum.GetValues(typeof(_LIB_LISTTYPE))) { list.GetList2(i, (uint)en, 0, null, out childList); if (childList == null) continue; ExploreListStructure( childList, string.Format("Child {0} of list {1}", i, title), -1); } } Logger.Log(string.Format("End of list {0}\r\n-------------------------------\r\n", title)); }
private void AddNested(TreeViewItem parent, IVsObjectList2 objects) { uint count; ErrorHandler.Succeeded(objects.GetItemCount(out count)); for (var i = (uint)0; i < count; i++) { object propValue; ErrorHandler.Succeeded(objects.GetProperty(i, (int)_VSOBJLISTELEMPROPID.VSOBJLISTELEMPROPID_LEAFNAME, out propValue)); var item = new TreeViewItem { Header = (string)propValue }; ErrorHandler.Succeeded(objects.GetProperty(i, (int)_VSOBJLISTELEMPROPID.VSOBJLISTELEMPROPID_FULLNAME, out propValue)); item.Items.Add("Full Name " + (string)propValue); ErrorHandler.Succeeded(objects.GetProperty(i, (int)_VSOBJLISTELEMPROPID.VSOBJLISTELEMPROPID_COMPONENTPATH, out propValue)); item.Items.Add("Path " + (string)propValue); parent.Items.Add(item); } }
int IVsLibrary2.GetList2(uint ListType, uint flags, VSOBSEARCHCRITERIA2[] pobSrch, out IVsObjectList2 ppIVsObjectList2) { Logger.Log(string.Format("GetList2 : Library ListType:{0}({1}) flags: {2}", Enum.GetName(typeof(_LIB_LISTTYPE2), ListType), Enum.GetName(typeof(_LIB_LISTTYPE), ListType), Enum.GetName(typeof(_LIB_LISTFLAGS), flags))); if (pobSrch != null) { ppIVsObjectList2 = root.FilterView((SymbolNode2.LibraryNodeType)ListType, pobSrch); } else { ppIVsObjectList2 = objRoot; } return(VSConstants.S_OK); }
/// <summary> /// Returns a child IVsObjectList2 for the specified category. /// </summary> /// <param name="index"></param> /// <param name="ListType"></param> /// <param name="flags"></param> /// <param name="pobSrch"></param> /// <param name="ppIVsObjectList2"></param> /// <returns></returns> int IVsObjectList2.GetList2(uint index, uint ListType, uint flags, VSOBSEARCHCRITERIA2[] pobSrch, out IVsObjectList2 ppIVsObjectList2) { //Logger.Log(string.Format( //"ResultList.GetList2 index:{0} ListType: {1}", //index, //Enum.GetName(typeof(_LIB_LISTTYPE), ListType))); ppIVsObjectList2 = children[(int)index].FilterView((LibraryNodeType)ListType, pobSrch); return VSConstants.S_OK; }
/// <summary> /// Returns a child IVsObjectList2 for the specified category. /// </summary> /// <param name="index"></param> /// <param name="ListType"></param> /// <param name="flags"></param> /// <param name="pobSrch"></param> /// <param name="ppIVsObjectList2"></param> /// <returns></returns> int IVsObjectList2.GetList2(uint index, uint ListType, uint flags, VSOBSEARCHCRITERIA2[] pobSrch, out IVsObjectList2 ppIVsObjectList2) { //Logger.Log(string.Format( //"ResultList.GetList2 index:{0} ListType: {1}", //index, //Enum.GetName(typeof(_LIB_LISTTYPE), ListType))); ppIVsObjectList2 = children[(int)index].FilterView((LibraryNodeType)ListType, pobSrch); return(VSConstants.S_OK); }
int IVsLibrary2.GetList2(uint listType, uint flags, VSOBSEARCHCRITERIA2[] pobSrch, out IVsObjectList2 ppIVsObjectList2) { ppIVsObjectList2 = null; return VSConstants.E_NOTIMPL; }