Beispiel #1
0
        public Task <object> GetDescriptionAsync(IAsyncCompletionSession session, CompletionItem item, CancellationToken token)
        {
            if (item.Properties.TryGetProperty("knownmoniker", out string name))
            {
                try
                {
                    PropertyInfo property = typeof(KnownMonikers).GetProperty(name, BindingFlags.Static | BindingFlags.Public);
                    var          moniker  = (ImageMoniker)property.GetValue(null, null);

                    var image = new CrispImage
                    {
                        Source = moniker.ToBitmap(100),
                        Height = 100,
                        Width  = 100,
                    };

                    return(Task.FromResult <object>(image));
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.Write(ex);
                }
            }

            return(Task.FromResult <object>(null));
        }
 public static void BeforeAny(TestContext context)
 {
     // Ensure Microsoft.VisualStudio.ImageCatalog and Microsoft.VisualStudio.Images are references.
     // ReSharper disable once AssignmentIsFullyDiscarded
     _ = new CrispImage {
         Moniker = KnownMonikers.StatusWarning
     };
 }
Beispiel #3
0
                static CrispImage CreateEnlargedIcon(CrispImage icon)
                {
                    var bgIcon = new CrispImage {
                        Moniker = icon.Moniker, Width = 48, Height = 48
                    };

                    bgIcon.SetBackgroundForCrispImage(ThemeHelper.TitleBackgroundColor);
                    return(bgIcon);
                }
        public FrameworkElement Create()
        {
            var image = new CrispImage
            {
                Moniker = _glyph.GetImageMoniker(),
            };

            // Inform the ImageService of the background color so that images have the correct background.
            var binding = new Binding("Background")
            {
                Converter      = new BrushToColorConverter(),
                RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(QuickInfoDisplayPanel), 1)
            };

            image.SetBinding(ImageThemingUtilities.ImageBackgroundColorProperty, binding);
            return(image);
        }
        public FrameworkElement Create()
        {
            var image = new CrispImage
            {
                Moniker = _glyph.GetImageMoniker(),
            };

            // Inform the ImageService of the background color so that images have the correct background.
            var binding = new Binding("Background")
            {
                Converter = new BrushToColorConverter(),
                RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(QuickInfoDisplayPanel), 1)
            };

            image.SetBinding(ImageThemingUtilities.ImageBackgroundColorProperty, binding);
            return image;
        }
        /// <summary>
        /// Creates an element to display within the TableControl comprised of both an image and text string.
        /// </summary>
        internal static FrameworkElement CreateGridElement(
            ImageMoniker imageMoniker,
            string text,
            bool isBold
            )
        {
            var stackPanel = new StackPanel
            {
                Orientation         = Orientation.Horizontal,
                HorizontalAlignment = HorizontalAlignment.Stretch
            };

            var block = new TextBlock {
                VerticalAlignment = VerticalAlignment.Center
            };

            block.Inlines.Add(
                new Run(text)
            {
                FontWeight = isBold ? FontWeights.Bold : FontWeights.Normal
            }
                );

            if (!imageMoniker.IsNullImage())
            {
                // If we have an image and text, then create some space between them.
                block.Margin = new Thickness(5.0, 0.0, 0.0, 0.0);

                var image = new CrispImage
                {
                    VerticalAlignment = VerticalAlignment.Center,
                    Moniker           = imageMoniker,
                    Width             = 16.0,
                    Height            = 16.0
                };

                stackPanel.Children.Add(image);
            }

            // Always add the textblock last so it can follow the image.
            stackPanel.Children.Add(block);

            return(stackPanel);
        }
Beispiel #7
0
        /// <summary>
        /// Gets a themed <see cref="Image"/> from a value defined in <see cref="KnownImageIds"/>
        /// </summary>
        /// <param name="imageId">The image id.</param>
        public static CrispImage GetImage(int imageId, int size = 0)
        {
            var moniker = new ImageMoniker {
                Guid = KnownImageIds.ImageCatalogGuid,
                Id   = imageId
            };

            if (size < 1)
            {
                size = DefaultIconSize;
            }
            var image = new CrispImage {
                Moniker = moniker,
                Height  = size,
                Width   = size,
            };

            return(image);
        }
        public async Task <object> GetDescriptionAsync(IAsyncCompletionSession session, CompletionItem item, CancellationToken token)
        {
            if (item.Properties.TryGetProperty("knownmoniker", out string name))
            {
                try
                {
                    PropertyInfo property = typeof(KnownMonikers).GetProperty(name, BindingFlags.Static | BindingFlags.Public);
                    var          moniker  = (ImageMoniker)property.GetValue(null, null);

                    await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

                    var image = new CrispImage
                    {
                        Source = await moniker.ToBitmapSourceAsync(100),
                        Height = 100,
                        Width  = 100,
                    };

                    return(image);
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.Write(ex);
                }
            }
            else if (item.Properties.TryGetProperty("IsGlobal", out bool isGlobal) && isGlobal)
            {
                var img = GetFileName(item.DisplayText);

                if (!string.IsNullOrEmpty(img))
                {
                    await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

                    return(new Image
                    {
                        Source = new BitmapImage(new Uri(img)),
                        MaxHeight = 720 // VS minimum requirements is 1280x720
                    });
                }
            }

            return(null);
        }
Beispiel #9
0
        /// <summary>
        /// Gets a themed <see cref="Image"/> from a value defined in <see cref="KnownImageIds"/>
        /// </summary>
        /// <param name="imageId">The image id.</param>
        public static CrispImage GetImage(int imageId, int size = 0)
        {
            const int DEFAULT_SIZE = 16;
            var       moniker      = new ImageMoniker {
                Guid = KnownImageIds.ImageCatalogGuid,
                Id   = imageId
            };

            if (size < 1)
            {
                size = DEFAULT_SIZE;
            }
            var image = new CrispImage {
                Moniker = moniker,
                Height  = size,
                Width   = size,
            };

            return(image);
        }
        internal IntraTextGoToAdornment(IntraTextGoToTag goToTag, IWpfTextView textView, GoToLocationService goToLocationService) {

            _textView            = textView;
            _goToLocationService = goToLocationService;
            _crispImage          = new CrispImage();

            RenderOptions.SetBitmapScalingMode(_crispImage, BitmapScalingMode.NearestNeighbor);

            Width       = 20;
            Height      = 20;
            Background  = Brushes.Transparent;
            BorderBrush = Brushes.Transparent;
            Cursor      = Cursors.Hand;
            Margin      = new Thickness(0, 0, 0, 0);            
            Content     = _crispImage;

            Click += OnClick;
            
            Update(goToTag);
        }
Beispiel #11
0
        /// <summary>
        /// Creates a GraphicsResult object which is the error block based on the geometry and formatting set for the item.
        /// </summary>
        public override GraphicsResult GetGraphics(IWpfTextView view, Geometry unused, TextFormattingRunProperties format)
        {
            var block = new TextBlock
            {
                FontFamily = format.Typeface.FontFamily,
                FontSize   = 0.75 * format.FontRenderingEmSize,
                FontStyle  = FontStyles.Normal,
                Foreground = format.ForegroundBrush,
                Padding    = new Thickness(left: 2, top: 0, right: 2, bottom: 0),
            };

            var idRun = GetRunForId(out var hyperlink);

            if (hyperlink is null)
            {
                block.Inlines.Add(idRun);
            }
            else
            {
                // Match the hyperlink color to what the classification is set to by the user
                var linkColor = _classificationFormatMap.GetTextProperties(_classificationType);
                hyperlink.Foreground = linkColor.ForegroundBrush;

                block.Inlines.Add(hyperlink);
                hyperlink.RequestNavigate += HandleRequestNavigate;
            }

            block.Inlines.Add(": " + _diagnostic.Message);

            var lineHeight = Math.Floor(format.Typeface.FontFamily.LineSpacing * block.FontSize);
            var image      = new CrispImage
            {
                Moniker   = GetMoniker(),
                MaxHeight = lineHeight,
                Margin    = new Thickness(1, 0, 5, 0)
            };

            var border = new Border
            {
                BorderBrush     = format.BackgroundBrush,
                BorderThickness = new Thickness(1),
                Background      = Brushes.Transparent,
                Child           = new StackPanel
                {
                    Height      = lineHeight,
                    Orientation = Orientation.Horizontal,
                    Children    = { image, block }
                },
                CornerRadius = new CornerRadius(2),
                // Highlighting lines are 2px buffer. So shift us up by one from the bottom so we feel centered between them.
                Margin  = new Thickness(10, top: 0, right: 0, bottom: 1),
                Padding = new Thickness(1)
            };

            // This is used as a workaround to the moniker issues in blue theme
            var editorBackground = (Color)_editorFormatMap.GetProperties("TextView Background")["BackgroundColor"];

            ImageThemingUtilities.SetImageBackgroundColor(border, editorBackground);

            border.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
            view.LayoutChanged += View_LayoutChanged;

            return(new GraphicsResult(border, dispose:
                                      () =>
            {
                if (hyperlink is not null)
                {
                    hyperlink.RequestNavigate -= HandleRequestNavigate;
                }

                view.LayoutChanged -= View_LayoutChanged;
            }));

            void View_LayoutChanged(object sender, TextViewLayoutChangedEventArgs e)
            {
                if (Location is InlineDiagnosticsLocations.PlacedAtEndOfEditor)
                {
                    Canvas.SetLeft(border, view.ViewportRight - border.DesiredSize.Width);
                }
            }

            void HandleRequestNavigate(object sender, RoutedEventArgs e)
            {
                var uri = hyperlink.NavigateUri;

                _         = _navigateToLinkService.TryNavigateToLinkAsync(uri, CancellationToken.None);
                e.Handled = true;
            }

            Run GetRunForId(out Hyperlink?link)
            {
                var id = new Run(_diagnostic.Id);

                link = null;

                var helpLinkUri = _diagnostic.GetValidHelpLinkUri();

                if (helpLinkUri != null)
                {
                    link = new Hyperlink(id)
                    {
                        NavigateUri = helpLinkUri
                    };
                }

                return(id);
            }
        }
        private static bool TryGetImageElement(CoCoImageKind image, out UIElement imageElement)
        {
            var id =
                image == CoCoImageKind.ClassPublic ? KnownImageIds.ClassPublic :
                image == CoCoImageKind.ClassInternal ? KnownImageIds.ClassInternal :
                image == CoCoImageKind.ClassProtected ? KnownImageIds.ClassProtected :
                image == CoCoImageKind.ClassPrivate ? KnownImageIds.ClassPrivate :

                image == CoCoImageKind.ConstPublic ? KnownImageIds.ConstantPublic :
                image == CoCoImageKind.ConstInternal ? KnownImageIds.ConstantInternal :
                image == CoCoImageKind.ConstProtected ? KnownImageIds.ConstantProtected :
                image == CoCoImageKind.ConstPrivate ? KnownImageIds.ConstantPrivate :

                image == CoCoImageKind.DelegatePublic ? KnownImageIds.DelegatePublic :
                image == CoCoImageKind.DelegateInternal ? KnownImageIds.DelegateInternal :
                image == CoCoImageKind.DelegateProtected ? KnownImageIds.DelegateProtected :
                image == CoCoImageKind.DelegatePrivate ? KnownImageIds.DelegatePrivate :

                image == CoCoImageKind.EnumPublic ? KnownImageIds.EnumerationPublic :
                image == CoCoImageKind.EnumInternal ? KnownImageIds.EnumerationInternal :
                image == CoCoImageKind.EnumProtected ? KnownImageIds.EnumerationProtected :
                image == CoCoImageKind.EnumPrivate ? KnownImageIds.EnumerationPrivate :

                image == CoCoImageKind.EnumMemberPublic ? KnownImageIds.EnumerationItemPublic :
                image == CoCoImageKind.EnumMemberInternal ? KnownImageIds.EnumerationItemInternal :
                image == CoCoImageKind.EnumMemberProtected ? KnownImageIds.EnumerationItemProtected :
                image == CoCoImageKind.EnumMemberPrivate ? KnownImageIds.EnumerationItemPrivate :

                image == CoCoImageKind.EventPublic ? KnownImageIds.EventPublic :
                image == CoCoImageKind.EventInternal ? KnownImageIds.EventInternal :
                image == CoCoImageKind.EventProtected ? KnownImageIds.EventProtected :
                image == CoCoImageKind.EventPrivate ? KnownImageIds.EventPrivate :

                image == CoCoImageKind.ExtensionMethodPublic ? KnownImageIds.ExtensionMethod :
                image == CoCoImageKind.ExtensionMethodInternal ? KnownImageIds.ExtensionMethod :
                image == CoCoImageKind.ExtensionMethodProtected ? KnownImageIds.ExtensionMethod :
                image == CoCoImageKind.ExtensionMethodPrivate ? KnownImageIds.ExtensionMethod :

                image == CoCoImageKind.FieldPublic ? KnownImageIds.FieldPublic :
                image == CoCoImageKind.FieldInternal ? KnownImageIds.FieldInternal :
                image == CoCoImageKind.FieldProtected ? KnownImageIds.FieldProtected :
                image == CoCoImageKind.FieldPrivate ? KnownImageIds.FieldPrivate :

                image == CoCoImageKind.InterfacePublic ? KnownImageIds.InterfacePublic :
                image == CoCoImageKind.InterfaceInternal ? KnownImageIds.InterfaceInternal :
                image == CoCoImageKind.InterfaceProtected ? KnownImageIds.InterfaceProtected :
                image == CoCoImageKind.InterfacePrivate ? KnownImageIds.InterfacePrivate :

                image == CoCoImageKind.MethodPublic ? KnownImageIds.MethodPublic :
                image == CoCoImageKind.MethodInternal ? KnownImageIds.MethodInternal :
                image == CoCoImageKind.MethodProtected ? KnownImageIds.MethodProtected :
                image == CoCoImageKind.MethodPrivate ? KnownImageIds.MethodPrivate :

                image == CoCoImageKind.ModulePublic ? KnownImageIds.ModulePublic :
                image == CoCoImageKind.ModuleInternal ? KnownImageIds.ModuleInternal :
                image == CoCoImageKind.ModuleProtected ? KnownImageIds.ModuleProtected :
                image == CoCoImageKind.ModulePrivate ? KnownImageIds.ModulePrivate :

                image == CoCoImageKind.PropertyPublic ? KnownImageIds.PropertyPublic :
                image == CoCoImageKind.PropertyInternal ? KnownImageIds.PropertyPublic :
                image == CoCoImageKind.PropertyProtected ? KnownImageIds.PropertyProtected :
                image == CoCoImageKind.PropertyPrivate ? KnownImageIds.PropertyPrivate :

                image == CoCoImageKind.StructPublic ? KnownImageIds.ValueTypePublic :
                image == CoCoImageKind.StructInternal ? KnownImageIds.ValueTypeInternal :
                image == CoCoImageKind.StructProtected ? KnownImageIds.ValueTypeProtected :
                image == CoCoImageKind.StructPrivate ? KnownImageIds.ValueTypePrivate :

                image == CoCoImageKind.Label ? KnownImageIds.Label :
                image == CoCoImageKind.Local ? KnownImageIds.LocalVariable :
                image == CoCoImageKind.Namespace ? KnownImageIds.Namespace :
                image == CoCoImageKind.Parameter ? KnownImageIds.Parameter :
                image == CoCoImageKind.TypeParameter ? KnownImageIds.Type :
                image == CoCoImageKind.RangeVariable ? KnownImageIds.FieldPublic :
                image == CoCoImageKind.Error ? KnownImageIds.StatusError :

                image == CoCoImageKind.Keyword ? KnownImageIds.IntellisenseKeyword :
                -27;

            if (id == -27)
            {
                imageElement = default;
                return(false);
            }

            imageElement = new CrispImage
            {
                Moniker = new ImageMoniker {
                    Guid = KnownImageIds.ImageCatalogGuid, Id = id
                },
                HorizontalAlignment = HorizontalAlignment.Left,
                VerticalAlignment   = VerticalAlignment.Top,
                Margin = new Thickness(0, 0, 4, 4),
            };
            return(true);
        }