示例#1
0
        /// <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];
            }
        }
示例#2
0
        /// <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];
            }
        }
示例#3
0
        /// <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;
        }
示例#7
0
        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);
        }