/// <summary> /// Creates image list and image monikers for project icons. /// Must be called on UI thread. /// </summary> public static void LoadProjectImages() { if (_monikerImageList == null) { IVsImageService2 imageService = VisualRustPackage.GetGlobalService(typeof(SVsImageService)) as IVsImageService2; if (_imageList == null) { _imageList = new ImageList(); } _imageList.Images.Add(Resources.RustProjectNode); _imageList.Images.Add(Resources.RustFileNode); _imageList.Images.Add(Resources.CargoManifestNode); _monikerImageList = imageService.CreateMonikerImageListFromHIMAGELIST(_imageList.Handle); imageService.AddCustomImageList(_monikerImageList); ImageMoniker[] monikers = new ImageMoniker[3]; _monikerImageList.GetImageMonikers(0, 3, monikers); ProjectNodeImage = monikers[0]; RustFileNodeImage = monikers[1]; CargoManifestNodeImage = monikers[2]; } }
/// <summary> /// Creates image list and image monikers for project icons. /// Must be called on UI thread. /// </summary> public static void LoadProjectImages() { if (_monikerImageList == null) { IVsImageService2 imageService = VsAppShell.Current.GetGlobalService <IVsImageService2>(typeof(SVsImageService)); _imageList = new ImageList(); foreach (var b in _bitmaps) { _imageList.Images.Add(b); } _monikerImageList = imageService.CreateMonikerImageListFromHIMAGELIST(_imageList.Handle); imageService.AddCustomImageList(_monikerImageList); ImageMoniker[] monikers = new ImageMoniker[_bitmaps.Length]; _monikerImageList.GetImageMonikers(0, _bitmaps.Length, monikers); ProjectNodeImage = monikers[0]; RFileNodeImage = monikers[1]; RDataFileNodeImage = monikers[2]; RdFileNodeImage = monikers[3]; RMarkdownFileNodeImage = monikers[4]; SqlFileNodeImage = monikers[5]; SqlProcFileNodeImage = monikers[6]; } }
/// <summary> /// Creates image list and image monikers for project icons. /// Must be called on UI thread. /// </summary> public static void LoadProjectImages() { if (_monikerImageList == null) { IVsImageService2 imageService = VsAppShell.Current.GetGlobalService <IVsImageService2>(typeof(SVsImageService)); if (_imageList == null) { _imageList = new ImageList(); } _imageList.Images.Add(Resources.RProjectNode); _imageList.Images.Add(Resources.RFileNode); _imageList.Images.Add(Resources.RDataNode); _monikerImageList = imageService.CreateMonikerImageListFromHIMAGELIST(_imageList.Handle); imageService.AddCustomImageList(_monikerImageList); ImageMoniker[] monikers = new ImageMoniker[3]; _monikerImageList.GetImageMonikers(0, 3, monikers); ProjectNodeImage = monikers[0]; RFileNodeImage = monikers[1]; RDataFileNodeImage = monikers[2]; } }
static void EnsureImageListHandle(IVsImageService2 imageService) { if (ImageListHandle != null) { return; } var imageList = new ImageMonikerImageList( ImageMonikers.ProjectNode, ImageMonikers.TaskDeclaration, ImageMonikers.TaskDefinition, ImageMonikers.SignalTrigger); ImageListHandle = imageService.AddCustomImageList(imageList); }
private static bool TryGetImageListAndIndex(this IVsHierarchy hierarchy, IVsImageService2 imageService, uint itemId, out IntPtr imageList, out ushort index) { var itemIdToImageHandle = s_hierarchyToItemIdToImageHandle.GetValue(hierarchy, s_createValue); // Get the actual image moniker that the vs hierarchy is using to in solution explorer. var imageMoniker = imageService.GetImageMonikerForHierarchyItem(hierarchy, itemId, (int)__VSHIERARCHYIMAGEASPECT.HIA_Icon); var monikerImageList = new VsImageMonikerImageList(imageMoniker); // Get an image handle to this image moniker, and keep it around for the lifetime of the // hierarchy itself. var imageHandle = imageService.AddCustomImageList(monikerImageList); itemIdToImageHandle[itemId] = imageHandle; // Now, we want to get an HIMAGELIST ptr for that image. var uiObject = imageService.GetImage(imageHandle.Moniker, new ImageAttributes { StructSize = Marshal.SizeOf(typeof(ImageAttributes)), Dpi = 96, LogicalWidth = 16, LogicalHeight = 16, ImageType = (uint)_UIImageType.IT_ImageList, Format = (uint)_UIDataFormat.DF_Win32, Flags = (uint)_ImageAttributesFlags.IAF_RequiredFlags, }); if (uiObject != null) { var imageListData = Microsoft.Internal.VisualStudio.PlatformUI.Utilities.GetObjectData(uiObject) as IVsUIWin32ImageList; if (imageListData != null) { int imageListInt; if (ErrorHandler.Succeeded(imageListData.GetHIMAGELIST(out imageListInt))) { imageList = (IntPtr)imageListInt; index = 0; return(true); } } } imageList = default(IntPtr); index = 0; return(false); }
private static bool TryGetImageListAndIndex(this IVsHierarchy hierarchy, IVsImageService2 imageService, uint itemId, out IntPtr imageList, out ushort index) { var itemIdToImageHandle = s_hierarchyToItemIdToImageHandle.GetValue(hierarchy, s_createValue); // Get the actual image moniker that the vs hierarchy is using to in solution explorer. var imageMoniker = imageService.GetImageMonikerForHierarchyItem(hierarchy, itemId, (int)__VSHIERARCHYIMAGEASPECT.HIA_Icon); var monikerImageList = new VsImageMonikerImageList(imageMoniker); // Get an image handle to this image moniker, and keep it around for the lifetime of the // hierarchy itself. var imageHandle = imageService.AddCustomImageList(monikerImageList); itemIdToImageHandle[itemId] = imageHandle; // Now, we want to get an HIMAGELIST ptr for that image. var uiObject = imageService.GetImage(imageHandle.Moniker, new ImageAttributes { StructSize = Marshal.SizeOf(typeof(ImageAttributes)), Dpi = 96, LogicalWidth = 16, LogicalHeight = 16, ImageType = (uint)_UIImageType.IT_ImageList, Format = (uint)_UIDataFormat.DF_Win32, Flags = (uint)_ImageAttributesFlags.IAF_RequiredFlags, }); if (uiObject != null) { var imageListData = Microsoft.Internal.VisualStudio.PlatformUI.Utilities.GetObjectData(uiObject) as IVsUIWin32ImageList; if (imageListData != null) { int imageListInt; if (ErrorHandler.Succeeded(imageListData.GetHIMAGELIST(out imageListInt))) { imageList = (IntPtr)imageListInt; index = 0; return true; } } } imageList = default(IntPtr); index = 0; return false; }
public static IVsImageService2 Create() { IVsImageService2 svc = Substitute.For <IVsImageService2>(); IImageHandle h = ImageHandleMock.Create(); svc.AddCustomImage(null).ReturnsForAnyArgs(h); svc.AddCustomImageList(null).ReturnsForAnyArgs(h); IVsUIObject uiObj = VsUiObjectMock.Create(); svc.GetImage(Arg.Any <ImageMoniker>(), Arg.Any <ImageAttributes>()).ReturnsForAnyArgs(uiObj); svc.GetImageMonikerForFile(null).ReturnsForAnyArgs(KnownMonikers.AboutBox); svc.GetImageMonikerForHierarchyItem(null, 0u, 0).ReturnsForAnyArgs(KnownMonikers.AboutBox); svc.GetImageMonikerForName(null).ReturnsForAnyArgs(KnownMonikers.AboutBox); svc.GetImageMonikerType(Arg.Any <ImageMoniker>()).ReturnsForAnyArgs(0u); IVsImageMonikerImageList mock = VsImageMonikerImageListMock.Create(); svc.CreateMonikerImageListFromHIMAGELIST(IntPtr.Zero).ReturnsForAnyArgs(mock); svc.GetImageListImageMonikers(Arg.Any <ImageMoniker>()).ReturnsForAnyArgs(mock); return(svc); }