예제 #1
0
        private void MenuItem_Invoked(RadialControllerMenuItem sender, object args)
        {
            if (sender?.DisplayText == "Undo")
            {
                //TODO reset image to tempFile
                return;
            }

            var selectedEffect = PageViewModel.VideoEffects.FirstOrDefault(e => e.DisplayName == sender?.DisplayText);

            if (selectedEffect == null)
            {
                return;
            }

            // If the selected effect was already selected, then remove the effect from the video stream
            if (selectedEffect == PageViewModel.SelectedEffect)
            {
                PageViewModel.SelectedEffect = null;
                return;
            }

            // Set the currently selected effect
            PageViewModel.SelectedEffect = selectedEffect;
        }
        public MainPage()
        {
            this.InitializeComponent();

            controller = RadialController.CreateForCurrentView();

            controller.UseAutomaticHapticFeedback = false;

            controller.RotationResolutionInDegrees = 1;

            customItem = RadialControllerMenuItem.CreateFromKnownIcon("Rotate", RadialControllerMenuKnownIcon.Ruler);
            controller.Menu.Items.Add(customItem);

            controller.Menu.SelectMenuItem(customItem);

            config = RadialControllerConfiguration.GetForCurrentView();
            config.ActiveControllerWhenMenuIsSuppressed = controller;
            config.SetDefaultMenuItems(new[] { RadialControllerSystemMenuItemKind.Volume, RadialControllerSystemMenuItemKind.Scroll });

            //comment these three lines to supress menu scenario
            controller.ControlLost     += Controller_ControlLost;
            controller.ControlAcquired += Controller_ControlAcquired;
            controller.RotationChanged += Controller_RotationChanged;

            //uncomment it to supress the default menu
            //config.IsMenuSuppressed = true;
            //controller.ButtonHolding += Controller_ButtonHolding;
        }
예제 #3
0
        private async Task AddMenuItemInternalAsync(string moniker, string iconFilePath)
        {
            await Task.Yield();

            await TaskScheduler.Default;

            StorageFile file = await StorageFile.GetFileFromPathAsync(iconFilePath);

            var stream   = RandomAccessStreamReference.CreateFromFile(file);
            var menuItem = RadialControllerMenuItem.CreateFromIcon(moniker, stream);

            menuItem.Invoked += (sender, args) =>
            {
                _status.Text = sender.DisplayText;
                _controllers.FirstOrDefault(c => c.Moniker == moniker)?.OnActivate();
            };

            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            foreach (var controller in controllersMapping.Values)
            {
                if (!controller.Menu.Items.Any(i => i.DisplayText == moniker))
                {
                    controller.Menu.Items.Add(menuItem);
                }
            }
        }
예제 #4
0
        public OnScreenVisualPage()
        {
            this.InitializeComponent();

            RadialControllerConfiguration myConfiguration = RadialControllerConfiguration.GetForCurrentView();

            myConfiguration.SetDefaultMenuItems(new[]
            {
                RadialControllerSystemMenuItemKind.Volume,
                RadialControllerSystemMenuItemKind.Scroll
            });

            // Create a reference to the RadialController.
            myController = RadialController.CreateForCurrentView();

            // Create an icon for the custom tool.
            RandomAccessStreamReference icon =
                RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/dial_icon_custom_visual.png"));

            // Create a menu item for the custom tool.
            screenColorMenuItem =
                RadialControllerMenuItem.CreateFromIcon("Screen Color", icon);

            // Add the custom tool to the RadialController menu.
            myController.Menu.Items.Add(screenColorMenuItem);

            screenColorMenuItem.Invoked += ColorMenuItem_Invoked;

            myController.ScreenContactStarted   += MyController_ScreenContactStarted;
            myController.ScreenContactContinued += MyController_ScreenContactContinued;
            myController.ScreenContactEnded     += MyController_ScreenContactEnded;

            myController.RotationChanged += MyController_RotationChanged;
        }
예제 #5
0
        /// <summary>
        /// When a Surface Dial TextBox gets focus, ensure the proper events are setup, and connect the Surface Dial itself.
        /// </summary>
        /// <param name="sender">The TextBox in being affected.</param>
        /// <param name="e">The event arguments.</param>
        private static void TextBox_GotFocus(object sender, RoutedEventArgs e)
        {
            _textBox = sender as TextBox;

            if (_textBox == null)
            {
                return;
            }

            if (!IsSupported)
            {
                return;
            }

            _controller = _controller ?? RadialController.CreateForCurrentView();

            if (GetForceMenuItem(_textBox))
            {
                _stepTextMenuItem = RadialControllerMenuItem.CreateFromKnownIcon("Step Text Box", GetIcon(_textBox));
                _controller.Menu.Items.Add(_stepTextMenuItem);
                _controller.Menu.SelectMenuItem(_stepTextMenuItem);
            }

            _controller.UseAutomaticHapticFeedback  = GetEnableHapticFeedback(_textBox);
            _controller.RotationResolutionInDegrees = 1;
            _controller.RotationChanged            += Controller_RotationChanged;
            if (GetEnableTapToNextControl(_textBox))
            {
                _controller.ButtonClicked += Controller_ButtonClicked;
            }
        }
        public MenuItemPage()
        {
            this.InitializeComponent();

            RadialControllerConfiguration myConfiguration = RadialControllerConfiguration.GetForCurrentView();

            //determine which operating system menu items should be shown
            myConfiguration.SetDefaultMenuItems(new[]
            {
                RadialControllerSystemMenuItemKind.Volume,
                RadialControllerSystemMenuItemKind.NextPreviousTrack,
                RadialControllerSystemMenuItemKind.Scroll
            });

            // Create a reference to the RadialController.
            myController = RadialController.CreateForCurrentView();

            // Create an icon for the custom tool.
            RandomAccessStreamReference icon =
                RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/dial_icon_custom_item.png"));

            // Create a menu item for the custom tool.
            selectImageMenuItem =
                RadialControllerMenuItem.CreateFromIcon("Select Image", icon);

            // Add the custom tool to the RadialController menu.
            myController.Menu.Items.Add(selectImageMenuItem);

            // Declare input handlers for the RadialController.
            myController.RotationChanged += MyController_RotationChanged;

            selectImageMenuItem.Invoked += SelectImageItem_Invoked;
        }
예제 #7
0
        private void StarController()
        {
            var interop = (IRadialControllerInterop)System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMarshal
                          .GetActivationFactory(typeof(RadialController));

            Guid guid = typeof(RadialController).GetInterface("IRadialController").GUID;

            Window window = Window.GetWindow(this);
            var    wih    = new WindowInteropHelper(window);
            IntPtr hWnd   = wih.Handle;

            controller = interop.CreateForWindow(hWnd, ref guid);
            controller.ControlAcquired += Controller_ControlAcquired;
            controller.ControlLost     += Controller_ControlLost;
            controller.RotationChanged += Controller_RotationChanged;
            controller.ButtonClicked   += Controller_ButtonClicked;

            controller.RotationResolutionInDegrees = 1;
            var button = RadialControllerMenuItem.CreateFromKnownIcon("Item 1", RadialControllerMenuKnownIcon.Ruler);

            var button2 = RadialControllerMenuItem.CreateFromKnownIcon("Item 2", RadialControllerMenuKnownIcon.PenType);

            button.Invoked  += Button_Invoked;
            button2.Invoked += Button_Invoked;
            controller.Menu.Items.Add(button);
            controller.Menu.Items.Add(button2);
            mainClicks = 0;
        }
예제 #8
0
        private void SetupController()
        {
            if (null == Controller)
            {
                Controller = RadialController.CreateForCurrentView();
            }

            RadialControllerConfiguration _dialConfiguration = RadialControllerConfiguration.GetForCurrentView();

            // Remove standard menu items
            _dialConfiguration.SetDefaultMenuItems(new RadialControllerSystemMenuItemKind[] { });

            // Create an icon for the custom tool.
            RandomAccessStreamReference icon =
                RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/List/specs_creative.png"));

            // Create a menu item for the custom tool.
            _brushColorMenuItem = RadialControllerMenuItem.CreateFromIcon("Brush Color", icon);

            // Add the custom tool to the RadialController menu.
            Controller.Menu.Items.Add(_brushColorMenuItem);

            // Set rotation degrees
            Controller.RotationResolutionInDegrees = ROTATION_DEGREES;

            // Bind dial controls to local methods
            _brushColorMenuItem.Invoked       += ColorMenuItem_Invoked;
            Controller.RotationChanged        += Controller_RotationChanged;
            Controller.ButtonClicked          += Controller_ButtonClicked;
            Controller.ScreenContactStarted   += Controller_ScreenContactStarted;
            Controller.ScreenContactContinued += Controller_ScreenContactContinued;
            Controller.ScreenContactEnded     += Controller_ScreenContactEnded;
        }
예제 #9
0
        private void AddCustomItems()
        {
            radialController.Menu.Items.Add(RadialControllerMenuItem.CreateFromKnownIcon("Ruler", RadialControllerMenuKnownIcon.Ruler));

            AddItemFromImage();
            AddItemsFromFont();
        }
예제 #10
0
        private async void MenuItem_Invoked(RadialControllerMenuItem sender, object args)
        {
            var selectedEffect = PageViewModel.VideoEffects.FirstOrDefault(e => e.DisplayName == sender?.DisplayText);

            if (selectedEffect == null)
            {
                return;
            }

            // If the selected effect was already selected, then remove the effect from the video stream
            if (selectedEffect == PageViewModel.SelectedEffect)
            {
                await ClearVideoEffectsAsync();

                PageViewModel.SelectedEffect = null;

                return;
            }

            // Set the currently selected effect
            PageViewModel.SelectedEffect = selectedEffect;

            // Clear previous effect
            await ClearVideoEffectsAsync();

            // Apply new effect
            await ApplyVideoEffectAsync();
        }
예제 #11
0
        private void InitializeDial()
        {
            radialController = RadialController.CreateForCurrentView();

            // Set rotation resolution to 1 degree of sensitivity.
            radialController.RotationResolutionInDegrees = 36;

            // create new dial menu item
            //ToggleMenuItem =
            //    RadialControllerMenuItem.CreateFromFontGlyph("Toggle Light", "\xE793", "Segoe MDL2 Assets");
            //radialController.Menu.Items.Add(ToggleMenuItem);

            BrightnessMenuItem =
                RadialControllerMenuItem.CreateFromFontGlyph("Brightness", "\xE706", "Segoe MDL2 Assets");
            radialController.Menu.Items.Add(BrightnessMenuItem);

            ColorMenuItem =
                RadialControllerMenuItem.CreateFromFontGlyph("Color", "\xE790", "Segoe MDL2 Assets");
            radialController.Menu.Items.Add(ColorMenuItem);

            // clear all default item
            RadialControllerConfiguration config = RadialControllerConfiguration.GetForCurrentView();

            config.SetDefaultMenuItems(new RadialControllerSystemMenuItemKind[] { });

            // bind dial menu item to CurrentTool Enum
            //ToggleMenuItem.Invoked += (sender, args) => thisTool = CurrentTool.ToggleItem;
            BrightnessMenuItem.Invoked += (sender, args) => thisTool = CurrentTool.BrightnessItem;
            ColorMenuItem.Invoked      += (sender, args) => thisTool = CurrentTool.ColorItem;

            // subscribe click and rotation of the dial
            radialController.ButtonClicked   += (sender, args) => { RadialController_ButtonClicked(sender, args); };
            radialController.RotationChanged += (sender, args) => { RadialController_RotationChanged(sender, args); };
        }
        private void InitializeSurfaceDial()
        {
            _radialController = RadialController.CreateForCurrentView();

            _radialController.ButtonClicked   += _radialController_ButtonClicked;
            _radialController.RotationChanged += _radialController_RotationChanged;

            var bluricon       = RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/Blur.png"));
            var fogicon        = RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/Fog.png"));
            var hueicon        = RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/Hue.png"));
            var saturationicon = RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/Saturation.png"));
            var sepiaicon      = RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/Sepia.png"));

            var blurItem = RadialControllerMenuItem.CreateFromIcon(TAGS.Blur, bluricon);

            blurItem.Tag = blurItem.DisplayText;
            var fogItem = RadialControllerMenuItem.CreateFromIcon(TAGS.Fog, fogicon);

            fogItem.Tag = fogItem.DisplayText;
            var hueItem = RadialControllerMenuItem.CreateFromIcon(TAGS.Hue, hueicon);

            hueItem.Tag = hueItem.DisplayText;
            var saturationItem = RadialControllerMenuItem.CreateFromIcon(TAGS.Saturation, saturationicon);

            saturationItem.Tag = saturationItem.DisplayText;
            var sepiaItem = RadialControllerMenuItem.CreateFromIcon(TAGS.Sepia, sepiaicon);

            sepiaItem.Tag = sepiaItem.DisplayText;

            _radialController.Menu.Items.Add(blurItem);
            _radialController.Menu.Items.Add(fogItem);
            _radialController.Menu.Items.Add(hueItem);
            _radialController.Menu.Items.Add(saturationItem);
            _radialController.Menu.Items.Add(sepiaItem);
        }
예제 #13
0
        private void CreateMenuItems()
        {
            menuItems = new List <RadialControllerMenuItem>
            {
                RadialControllerMenuItem.CreateFromKnownIcon("Item0", RadialControllerMenuKnownIcon.InkColor),
                RadialControllerMenuItem.CreateFromKnownIcon("Item1", RadialControllerMenuKnownIcon.NextPreviousTrack),
                RadialControllerMenuItem.CreateFromKnownIcon("Item2", RadialControllerMenuKnownIcon.Volume),
                RadialControllerMenuItem.CreateFromIcon("Item3", RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/Item3.png"))),
                RadialControllerMenuItem.CreateFromIcon("Item4", RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/Item4.png"))),
                RadialControllerMenuItem.CreateFromIcon("Item5", RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/Item5.png")))
            };
            sliders = new List <Slider> {
                Slider0, Slider1, Slider2, Slider3, Slider4, Slider5
            };
            toggles = new List <ToggleSwitch> {
                Toggle0, Toggle1, Toggle2, Toggle3, Toggle4, Toggle5
            };

            for (int i = 0; i < menuItems.Count; ++i)
            {
                RadialControllerMenuItem radialControllerItem = menuItems[i];
                int index = i;

                radialControllerItem.Invoked += (sender, args) => { OnItemInvoked(index); };
            }
        }
예제 #14
0
        public void AddMenuItem(string moniker, string iconFilePath)
        {
            if (_radialController.Menu.Items.Any(i => i.DisplayText == moniker))
            {
                return;
            }

            IAsyncOperation <StorageFile> operation = StorageFile.GetFileFromPathAsync(iconFilePath);

            operation.Completed += (asyncInfo, asyncStatus) =>
            {
                if (asyncStatus == AsyncStatus.Completed)
                {
                    StorageFile file     = asyncInfo.GetResults();
                    var         stream   = RandomAccessStreamReference.CreateFromFile(file);
                    var         menuItem = RadialControllerMenuItem.CreateFromIcon(moniker, stream);

                    menuItem.Invoked += (sender, args) =>
                    {
                        _status.UpdateSelectedItem(sender.DisplayText);
                        _controllers.FirstOrDefault(c => c.Moniker == moniker)?.OnActivate();
                    };

                    ThreadHelper.Generic.BeginInvoke(DispatcherPriority.Normal, () =>
                    {
                        _radialController.Menu.Items.Add(menuItem);
                    });
                }
            };
        }
예제 #15
0
 public void RemoveMenuItem(RadialControllerMenuItem item)
 {
     if (RadialController != null && RadialController.Menu.Items.Contains(item))
     {
         RadialController.Menu.Items.Remove(item);
     }
 }
예제 #16
0
 public void AddMenuItem(RadialControllerMenuItem item)
 {
     if (RadialController != null && !RadialController.Menu.Items.Contains(item))
     {
         RadialController.Menu.Items.Add(item);
     }
 }
예제 #17
0
        private void ConfigureRadialController()
        {
            if (!RadialControllerConfiguration.IsAppControllerEnabled)
            {
                return;
            }

            // Setup DialController
            dialController = RadialController.CreateForCurrentView();
            dialController.RotationResolutionInDegrees = 1;

            // Wireup event handler for rotation
            dialController.RotationChanged += DialController_RotationChanged;
            dialController.ButtonClicked   += DialController_ButtonClicked;

            // Remove the default items to make more room for our custom items
            var config = RadialControllerConfiguration.GetForCurrentView();

            config.SetDefaultMenuItems(new[] { RadialControllerSystemMenuItemKind.Scroll });

            // Add a custom menu item for each of the video effects
            foreach (VideoEffectItemViewModel effect in PageViewModel.VideoEffects)
            {
                // Create a menu item, using the effect's name and thumbnail
                var menuItem = RadialControllerMenuItem.CreateFromIcon(effect.DisplayName,
                                                                       RandomAccessStreamReference.CreateFromUri(new Uri(effect.IconImagePath)));

                // Hook up the menu item's invoked (aka clicked/selected) event handler
                menuItem.Invoked += MenuItem_Invoked;

                // Add it to the RadialDial
                dialController.Menu.Items.Add(menuItem);
            }
        }
예제 #18
0
 private void ColorMenuItem_Invoked(RadialControllerMenuItem sender, object args)
 {
     if (!IsActive)
     {
         IsActive = true;
     }
 }
예제 #19
0
#pragma warning restore VSTHRD200 // Use "Async" suffix for async methods

        internal static async Task <RadialControllerMenuItem> CreateMenuItemAsync(string moniker, string iconFilePath)
        {
            StorageFile file = await StorageFile.GetFileFromPathAsync(iconFilePath);

            var stream = RandomAccessStreamReference.CreateFromFile(file);

            return(RadialControllerMenuItem.CreateFromIcon(moniker, stream));
        }
예제 #20
0
        public async void AddMenuItem(string title, Texture2D icon)
        {
            var memStream = await GetRandomAccessStreamReferenceForIcon(icon);

            var menuItem = RadialControllerMenuItem.CreateFromIcon(title, memStream);

            _controller.Menu.Items.Add(menuItem);
        }
예제 #21
0
 private void OnImageFileFound(IAsyncOperation <StorageFile> asyncInfo, AsyncStatus asyncStatus)
 {
     if (asyncStatus == AsyncStatus.Completed)
     {
         StorageFile imageFile = asyncInfo.GetResults();
         radialController.Menu.Items.Add(RadialControllerMenuItem.CreateFromIcon("Custom Image", RandomAccessStreamReference.CreateFromFile(imageFile)));
     }
 }
예제 #22
0
        public MainPage()
        {
            this.InitializeComponent();
            UpdatePreview();
            highlightedItem = RValue;
            myCanvas.InkPresenter.InputDeviceTypes = Windows.UI.Core.CoreInputDeviceTypes.Pen | Windows.UI.Core.CoreInputDeviceTypes.Touch;

            RValue.ValueChanged += Slider_ValueChanged;
            GValue.ValueChanged += Slider_ValueChanged;
            BValue.ValueChanged += Slider_ValueChanged;

            //Hide our custom tool's UI until it is activated
            ToolPanel.Visibility = Visibility.Collapsed;

            // Create a reference to the RadialController.
            myController = RadialController.CreateForCurrentView();

            // Create a menu item for the custom tool.

            //RadialControllerMenuItem myItem =
            //  RadialControllerMenuItem.CreateFromKnownIcon("Background", RadialControllerMenuKnownIcon.InkColor);

            RadialControllerMenuItem myItem =
                RadialControllerMenuItem.CreateFromFontGlyph("Background", "\xE7B5", "Segoe MDL2 Assets");


            //Add the custom tool's menu item to the menu
            myController.Menu.Items.Add(myItem);

            //Create a handler for when the menu item is selected
            myItem.Invoked += MyItem_Invoked;

            //Create handlers for button and rotational input
            myController.RotationChanged += MyController_RotationChanged;
            myController.ButtonClicked   += MyController_ButtonClicked;

            myController.ButtonPressed  += MyController_ButtonPressed;
            myController.ButtonReleased += MyController_ButtonReleased;

            //Remove Scroll/Zoom/Undo tools as app doesn't support them
            RadialControllerConfiguration config = RadialControllerConfiguration.GetForCurrentView();

            config.SetDefaultMenuItems(new RadialControllerSystemMenuItemKind[] { RadialControllerSystemMenuItemKind.Volume });

            //Query user's handedness for on-screen UI
            Windows.UI.ViewManagement.UISettings settings = new Windows.UI.ViewManagement.UISettings();
            isRightHanded = (settings.HandPreference == Windows.UI.ViewManagement.HandPreference.RightHanded);

            //Create handlers for when RadialController provides an on-screen position
            myController.ScreenContactStarted   += MyController_ScreenContactStarted;
            myController.ScreenContactContinued += MyController_ScreenContactContinued;
            myController.ScreenContactEnded     += MyController_ScreenContactEnded;

            //Create handlers for when RadialController focus changes
            myController.ControlAcquired += MyController_ControlAcquired;
            myController.ControlLost     += MyController_ControlLost;
        }
예제 #23
0
        private void RemoveItem(object sender, RoutedEventArgs e)
        {
            RadialControllerMenuItem radialControllerMenuItem = GetRadialControllerMenuItemFromSender(sender);

            if (Controller.Menu.Items.Contains(radialControllerMenuItem))
            {
                Controller.Menu.Items.Remove(radialControllerMenuItem);
            }
        }
        public Scenario2_SystemDefaultMenu()
        {
            this.InitializeComponent();

            controller = RadialController.CreateForCurrentView();
            controller.RotationChanged += Controller_RotationChanged;

            customItem = RadialControllerMenuItem.CreateFromKnownIcon("Item1", RadialControllerMenuKnownIcon.InkColor);
        }
        public Scenario2_SystemDefaultMenu()
        {
            this.InitializeComponent();

            controller = RadialController.CreateForCurrentView();
            controller.RotationChanged += Controller_RotationChanged;

            customItem = RadialControllerMenuItem.CreateFromKnownIcon("Item1", RadialControllerMenuKnownIcon.InkColor);
        }
        public BookmarksController(RadialControllerMenuItem menuItem, DTE2 dte) : base(menuItem)
        {
            _commands = dte.Commands;
            // Switched in provider
#pragma warning disable VSTHRD010 // Invoke single-threaded types on Main thread
            _events = dte.Events.WindowEvents;
            _events.WindowActivated += OnToolWindowActivated;
#pragma warning restore VSTHRD010 // Invoke single-threaded types on Main thread
        }
예제 #27
0
        public void RequestActivation(string moniker)
        {
            RadialControllerMenuItem item = _radialController.Menu.Items.FirstOrDefault(i => i.DisplayText == moniker);

            if (item != null)
            {
                _radialController.Menu.SelectMenuItem(item);
            }
        }
예제 #28
0
        public void RemoveMenuItem(string moniker)
        {
            RadialControllerMenuItem item = _radialController.Menu.Items.FirstOrDefault(i => i.DisplayText == moniker);

            if (item != null && _radialController.Menu.Items.Contains(item))
            {
                _radialController.Menu.Items.Remove(item);
            }
        }
        public ErrorsController(RadialControllerMenuItem menuItem, DTE2 dte) : base(menuItem)
        {
            _dte = dte;
            // Switched in provider
#pragma warning disable VSTHRD010 // Invoke single-threaded types on Main thread
            _errorList = _dte.ToolWindows.ErrorList as IErrorList;
            _events    = _dte.Events.WindowEvents;
            _events.WindowActivated += OnToolWindowActivated;
#pragma warning restore VSTHRD010 // Invoke single-threaded types on Main thread
        }
예제 #30
0
        private void AddItemsFromFont()
        {
            // Using custom font
            string fontFilePath = GetSharedFilePath("Symbols.ttf");

            radialController.Menu.Items.Add(RadialControllerMenuItem.CreateFromFontGlyph("Custom Font Icon", "\xe102", "Symbols", new Uri(fontFilePath)));

            // Using system font
            radialController.Menu.Items.Add(RadialControllerMenuItem.CreateFromFontGlyph("System Font Icon", "\xD83D\xDC31\x200D\xD83D\xDC64", "Segoe UI Emoji"));
        }
        public DebugController(RadialControllerMenuItem menuItem, DTE2 dte) : base(menuItem)
        {
            _dte = dte;
            // Switched in provider
#pragma warning disable VSTHRD010 // Invoke single-threaded types on Main thread
            _events = dte.Events.DebuggerEvents;
            _events.OnEnterBreakMode  += delegate { DialPackage.DialControllerHost.RequestActivation(this); };
            _events.OnEnterDesignMode += delegate { DialPackage.DialControllerHost.ReleaseActivation(); };
#pragma warning restore VSTHRD010 // Invoke single-threaded types on Main thread
        }