Esempio n. 1
0
        private void KeyPictureBoxDragOver(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent("KeyMapper.KeyMapping") == false)
            {
                e.Effect = DragDropEffects.None;
                return;
            }

            var draggedmap = (KeyMapping)e.Data.GetData("KeyMapper.KeyMapping");

            if (draggedmap.To.ScanCode >= 0)
            {
                // Can't drop a mapped key onto another key
                e.Effect = DragDropEffects.None;
                return;
            }

            if (draggedmap.From == Map.From)
            {
                return; // No need to redraw self
            }

            // Console.WriteLine("Dragover: " + scanCode)

            SetImage(ButtonImages.GetButtonImage
                         (draggedmap.From.ScanCode, draggedmap.From.Extended,
                         button, horizontalStretch, verticalStretch, scale, ButtonEffect.MappedPending));

            e.Effect = DragDropEffects.Copy;
        }
Esempio n. 2
0
        private void BlankButtonClick(object sender, EventArgs e)
        {
            UpdateMatrix(new ColorMatrix());
            fontColour = ButtonImages.GetFontColour(ButtonEffect.None, true);

            SaveSetting();
        }
Esempio n. 3
0
        public override void OnInitialize()
        {
            buttonList      = new List <UIColorImageButton>();
            buttonImageList = new List <UIColorImage>();
            selectedButtons = new List <int>
            {
                0
            };
            buttonFrontFrame = ButtonImages.Frame(1, ButtonAmount);
            circleCenter     = Main.MouseScreen - new Vector2(20, 20);

            for (int i = 0; i < ButtonAmount; i++)
            {
                buttonList.Add(new UIColorImageButton(ButtonOffImage, (i == 0) ? Color.White : NoHoverColor));
                buttonImageList.Add(new UIColorImage(ButtonImages, (i == 0) ? Color.White : NoHoverColor, buttonFrontFrame));

                double angle = Math.PI * 2 * i / ButtonAmount;
                double x     = circleCenter.X + (CircleRadius * Math.Cos(angle));
                double y     = circleCenter.Y + (CircleRadius * Math.Sin(angle));

                buttonList[i].Left.Set((float)x, 0f);
                buttonList[i].Top.Set((float)y, 0f);

                buttonFrontFrame.Y += buttonFrontFrame.Height;

                int index = i;
                buttonList[i].OnClick     += (evt, element) => ButtonClicked(index);
                buttonList[i].OnMouseOver += (evt, element) => ButtonHover(index);
                buttonList[i].OnMouseOut  += (evt, element) => ButtonLeave(index);

                buttonList[i].Append(buttonImageList[i]);
                Append(buttonList[i]);
            }
        }
Esempio n. 4
0
        public Image this[ButtonImages button]
        {
            get
            {
                int len = Enum.GetValues(typeof(ButtonImages)).Length;

                if (this.buttonImages == null)
                {
                    this.buttonImages = new Tuple <Stream, Image> [len];
                }

                Tuple <Stream, Image> tuple = this.buttonImages[(int)button];

                if (tuple == null)
                {
                    Type   type    = typeof(frmMain);
                    string resName = string.Format("{0}.{1}.png", ImageServer.ImagesPath, button.ToString());
                    Stream stream  = type.Module.Assembly.GetManifestResourceStream(type, resName);
                    Image  image   = Image.FromStream(stream);
                    this.buttonImages[(int)button] = new Tuple <Stream, Image>(stream, image);
                }

                return(this.buttonImages[(int)button].Item2);
            }
        }
        private void FillControlLists()
        {
            ButtonImages.Add(ButtonImage1);
            ButtonImages.Add(ButtonImage2);
            ButtonImages.Add(ButtonImage3);
            ButtonImages.Add(ButtonImage4);
            ButtonImages.Add(ButtonImage5);
            ButtonImages.Add(ButtonImage6);
            ButtonImages.Add(ButtonImage7);
            ButtonImages.Add(ButtonImage8);
            ButtonImages.Add(ButtonImage9);
            ButtonImages.Add(ButtonImage10);
            ButtonImages.Add(ButtonImage11);
            ButtonImages.Add(ButtonImage12);
            ButtonImages.Add(ButtonImage13);
            ButtonImages.Add(ButtonImage14);
            ButtonImages.Add(ButtonImage15);

            DotImages.Add(DotImage1);
            DotImages.Add(DotImage2);
            DotImages.Add(DotImage3);
            DotImages.Add(DotImage4);
            DotImages.Add(DotImage5);
            DotImages.Add(DotImage6);
            DotImages.Add(DotImage7);
            DotImages.Add(DotImage8);
            DotImages.Add(DotImage9);
            DotImages.Add(DotImage10);
            DotImages.Add(DotImage11);
            DotImages.Add(DotImage12);
            DotImages.Add(DotImage13);
            DotImages.Add(DotImage14);
            DotImages.Add(DotImage15);
        }
Esempio n. 6
0
        private void HamburgerControl_OnSizeChanged(object sender, SizeChangedEventArgs e)
        {
            if (e.NewSize.Width == 250.0) //opened
            {
                ViewModel.HamburgerWidthChanged(true);
                MidSeparator.Width  = BottomSeparator.Width = 250;
                Mid2Separator.Width = BottomSeparator.Width = 250;

                //double column
                ButtonImages.SetValue(Grid.RowProperty, 0);
                ButtonImages.SetValue(Grid.ColumnProperty, 1);
                ButtonImages.SetValue(Grid.ColumnSpanProperty, 1);
                ButtonForums.SetValue(Grid.ColumnSpanProperty, 1);

                ButtonNews.SetValue(Grid.RowProperty, 0);
                ButtonNews.SetValue(Grid.ColumnProperty, 1);
                ButtonNews.SetValue(Grid.ColumnSpanProperty, 1);
                ButtonArticles.SetValue(Grid.ColumnSpanProperty, 1);

                SubProfileSection.Visibility = Visibility.Visible;
            }
            else //closed
            {
                ViewModel.HamburgerWidthChanged(false);
                MidSeparator.Width  = BottomSeparator.Width = 48;
                Mid2Separator.Width = BottomSeparator.Width = 48;
                if (_topCategoriesExpanded)
                {
                    CollapseTopAnimeCategoriesStoryboard.Begin();
                    RotateBackTopAnimeCategoriesStoryboard.Begin();
                    _topCategoriesExpanded = false;
                }
                if (_animeFiltersExpanded)
                {
                    CollapseAnimeListFiltersStoryboard.Begin();
                    RotateBackAnimeListFiltersStoryboard.Begin();
                    _animeFiltersExpanded = false;
                }
                if (_mangaFiltersExpanded)
                {
                    CollapseMangaListFiltersStoryboard.Begin();
                    RotateBackMangaListFiltersStoryboard.Begin();
                    _mangaFiltersExpanded = false;
                }

                //double column
                ButtonImages.SetValue(Grid.RowProperty, 1);
                ButtonImages.SetValue(Grid.ColumnProperty, 0);
                ButtonImages.SetValue(Grid.ColumnSpanProperty, 2);
                ButtonForums.SetValue(Grid.ColumnSpanProperty, 2);

                ButtonNews.SetValue(Grid.RowProperty, 1);
                ButtonNews.SetValue(Grid.ColumnProperty, 0);
                ButtonNews.SetValue(Grid.ColumnSpanProperty, 2);
                ButtonArticles.SetValue(Grid.ColumnSpanProperty, 2);

                SubProfileSection.Visibility = Visibility.Collapsed;
            }
        }
Esempio n. 7
0
        private void ResetButtonClick(object sender, EventArgs e)
        {
            // Passing true to ignore user colours and fonts.
            UpdateMatrix(ButtonImages.GetMatrix(Effect, true));
            fontColour = ButtonImages.GetFontColour(Effect, true);

            SaveSetting();
        }
Esempio n. 8
0
 private void SetDragCursor(Bitmap bmp)
 {
     ReleaseIconResources();
     bmp        = ButtonImages.ResizeBitmap(bmp, dragIconScale, false);
     hicon      = bmp.GetHicon();
     dragcursor = new Cursor(hicon);
     bmp.Dispose();
 }
Esempio n. 9
0
        private void DrawKey()
        {
            var bmp = ButtonImages.GetButtonImage(BlankButton.MediumWideBlank, 0.75F, caption, currentMatrix, fontColour);

            KeyBox.Image?.Dispose();

            KeyBox.Image = bmp;
        }
Esempio n. 10
0
    private void ToggleButtonImage(Button button, ButtonImages images)
    {
        button.GetComponent <Image>().sprite = images.sprite;
        SpriteState spriteState = new SpriteState {
            pressedSprite = images.pressedSprite
        };

        button.spriteState = spriteState;
    }
Esempio n. 11
0
        private void FillControlLists()
        {
            FindVisualChildren <StreamDeckImage>(GridButtons).ToList()
            .ForEach(x => ButtonImages.Add(x));

            FindVisualChildren <Image>(GridButtons).ToList().Where(x => x.Name.StartsWith("DotImage")).ToList()
            .ForEach(x => DotImages.Add(x));

            CheckButtonControlListValidity();
        }
Esempio n. 12
0
        private void DrawKey()
        {
            Bitmap bmp = ButtonImages.GetButtonImage(BlankButton.MediumWideBlank, 0.75F, this._caption, this._currentMatrix, this._fontColour);

            if (this.KeyBox.Image != null)
            {
                this.KeyBox.Image.Dispose();
            }

            this.KeyBox.Image = bmp;
        }
Esempio n. 13
0
 private void LoadButtonImages()
 {
     ButtonImages.Add(ButtonType.BackgroundImage, new BitmapImage(new Uri(@"Resources/Images/UI/PauseMenuBackground.png", UriKind.Relative)));
     ButtonImages.Add(ButtonType.QuitToMainMenu, new BitmapImage(new Uri(@"Resources/Images/UI/QuitToMenu.png", UriKind.Relative)));
     ButtonImages.Add(ButtonType.Resume, new BitmapImage(new Uri(@"Resources/Images/UI/Resume.png", UriKind.Relative)));
     ButtonImages.Add(ButtonType.SaveGame, new BitmapImage(new Uri(@"Resources/Images/UI/SaveGame.png", UriKind.Relative)));
     ButtonImages.Add(ButtonType.LoadGame, new BitmapImage(new Uri(@"Resources/Images/UI/LoadGame.png", UriKind.Relative)));
     ButtonImages.Add(ButtonType.Select, new BitmapImage(new Uri(@"Resources/Images/UI/SelectButton.png", UriKind.Relative)));
     ButtonImages.Add(ButtonType.Back, new BitmapImage(new Uri(@"Resources/Images/UI/BackButton.png", UriKind.Relative)));
     ButtonImages.Add(ButtonType.Confirm, new BitmapImage(new Uri(@"Resources/Images/UI/ConfirmButton.png", UriKind.Relative)));
 }
Esempio n. 14
0
        private void AddButton(string text, ButtonEffect effect)
        {
            var pb = new PictureBox
            {
                Image = ButtonImages.GetButtonImage
                            (BlankButton.MediumWideBlank, buttonScaleFactor, text, effect)
            };

            pb.Height = pb.Image.Height;
            pb.Width  = pb.Image.Width;

            // If there is only one button, contain it in the centre of the form (the minimum size for a form
            // is bigger than a button until button scale gets to 0.6 or so which is too big for small resolutions)

            if (buttonCount == 1)
            {
                // Forms have a minimum size of 123. Applying a slight kludge factor too.
                pb.Left = (((123 - SystemInformation.BorderSize.Width - buttonWidth) / 2) - 5);
                pb.Top  = padding;
            }
            else
            {
                int position;
                int line;

                // First, see which line the button is in and what position in the line it occupies.
                if (numberOfLines == 1 || currentButton <= buttonsPerLine)
                {
                    position = currentButton;
                    line     = 1;
                }
                else
                {
                    position = currentButton - buttonsPerLine;
                    line     = 2;
                }

                pb.Left = ((position - 1) * buttonWidth) + (position * padding);
                pb.Top  = ((line - 1) * buttonHeight) + (line * padding);
            }

            pb.Tag = effect.ToString() + " " + text;

            if (AppController.UserCannotWriteToApplicationRegistryKey == false)
            {
                pb.DoubleClick += PictureBoxDoubleClick;
            }

            Controls.Add(pb);
            toolTip.SetToolTip(pb, toolTipText);

            currentButton++;
        }
Esempio n. 15
0
        private void FillControlLists()
        {
            ButtonImages.Add(ButtonImage1);
            ButtonImages.Add(ButtonImage2);
            ButtonImages.Add(ButtonImage3);
            ButtonImages.Add(ButtonImage4);
            ButtonImages.Add(ButtonImage5);
            ButtonImages.Add(ButtonImage6);

            DotImages.Add(DotImage1);
            DotImages.Add(DotImage2);
            DotImages.Add(DotImage3);
            DotImages.Add(DotImage4);
            DotImages.Add(DotImage5);
            DotImages.Add(DotImage6);
        }
Esempio n. 16
0
        private void KeyPictureBoxQueryContinueDrag(object sender, QueryContinueDragEventArgs e)
        {
            //  e.Action = DragAction.Continue;

            bool wasOutsideAlready = outsideForm;

            IsControlOutsideForm(sender);

            if (wasOutsideAlready && !outsideForm)
            {
                // Have reentered form
                SetDragCursor(
                    ButtonImages.GetButtonImage(
                        scanCode, extended, button, horizontalStretch, verticalStretch, scale, ButtonEffect.None));
            }

            if (outsideForm)
            {
                if (mapped)
                {
                    // Change icon to be original.
                    SetDragCursor(
                        ButtonImages.GetButtonImage(
                            scanCode, extended, button, horizontalStretch, verticalStretch, scale, ButtonEffect.None));
                }
                else
                {
                    // Show disabled
                    SetDragCursor(
                        ButtonImages.GetButtonImage(
                            scanCode, extended, button, horizontalStretch, verticalStretch, scale, ButtonEffect.Disabled));
                }
            }

            if (e.EscapePressed)
            {
                e.Action      = DragAction.Cancel;
                escapePressed = true;
            }
            else
            {
                escapePressed = false;
            }
        }
Esempio n. 17
0
 private void LoadSetting()
 {
     UpdateMatrix(ButtonImages.GetMatrix(Effect));
     fontColour = ButtonImages.GetFontColour(Effect);
     DrawKey();
 }
Esempio n. 18
0
        private void FillControlLists()
        {
            ButtonImages.Add(ButtonImage1);
            ButtonImages.Add(ButtonImage2);
            ButtonImages.Add(ButtonImage3);
            ButtonImages.Add(ButtonImage4);
            ButtonImages.Add(ButtonImage5);
            ButtonImages.Add(ButtonImage6);
            ButtonImages.Add(ButtonImage7);
            ButtonImages.Add(ButtonImage8);
            ButtonImages.Add(ButtonImage9);
            ButtonImages.Add(ButtonImage10);
            ButtonImages.Add(ButtonImage11);
            ButtonImages.Add(ButtonImage12);
            ButtonImages.Add(ButtonImage13);
            ButtonImages.Add(ButtonImage14);
            ButtonImages.Add(ButtonImage15);
            ButtonImages.Add(ButtonImage16);
            ButtonImages.Add(ButtonImage17);
            ButtonImages.Add(ButtonImage18);
            ButtonImages.Add(ButtonImage19);
            ButtonImages.Add(ButtonImage20);
            ButtonImages.Add(ButtonImage21);
            ButtonImages.Add(ButtonImage22);
            ButtonImages.Add(ButtonImage23);
            ButtonImages.Add(ButtonImage24);
            ButtonImages.Add(ButtonImage25);
            ButtonImages.Add(ButtonImage26);
            ButtonImages.Add(ButtonImage27);
            ButtonImages.Add(ButtonImage28);
            ButtonImages.Add(ButtonImage29);
            ButtonImages.Add(ButtonImage30);
            ButtonImages.Add(ButtonImage31);
            ButtonImages.Add(ButtonImage32);

            DotImages.Add(DotImage1);
            DotImages.Add(DotImage2);
            DotImages.Add(DotImage3);
            DotImages.Add(DotImage4);
            DotImages.Add(DotImage5);
            DotImages.Add(DotImage6);
            DotImages.Add(DotImage7);
            DotImages.Add(DotImage8);
            DotImages.Add(DotImage9);
            DotImages.Add(DotImage10);
            DotImages.Add(DotImage11);
            DotImages.Add(DotImage12);
            DotImages.Add(DotImage13);
            DotImages.Add(DotImage14);
            DotImages.Add(DotImage15);
            DotImages.Add(DotImage16);
            DotImages.Add(DotImage17);
            DotImages.Add(DotImage18);
            DotImages.Add(DotImage19);
            DotImages.Add(DotImage20);
            DotImages.Add(DotImage21);
            DotImages.Add(DotImage22);
            DotImages.Add(DotImage23);
            DotImages.Add(DotImage24);
            DotImages.Add(DotImage25);
            DotImages.Add(DotImage26);
            DotImages.Add(DotImage27);
            DotImages.Add(DotImage28);
            DotImages.Add(DotImage29);
            DotImages.Add(DotImage30);
            DotImages.Add(DotImage31);
            DotImages.Add(DotImage32);
        }
Esempio n. 19
0
        private void DrawKey()
        {
            int scanCode = this.scanCode;
            int extended = this.extended;

            ButtonEffect effect;

            if (MappingsManager.IsEmptyMapping(Map) == false)
            {
                //  Remapped or disabled?
                if (MappingsManager.IsDisabledMapping(Map))
                {
                    // Disabled
                    if (MappingsManager.IsMappingPending(Map))
                    {
                        effect = ButtonEffect.DisabledPending;
                    }
                    else
                    {
                        effect = ButtonEffect.Disabled;
                    }
                }
                else
                {
                    // Is this key mapped under the current filter?
                    if (MappingsManager.IsMappingPending(Map))
                    {
                        effect = ButtonEffect.MappedPending;
                    }
                    else
                    {
                        effect = ButtonEffect.Mapped;
                    }

                    // Either way, we want the button to show what it is (will be) mapped to:
                    scanCode = Map.To.ScanCode;
                    extended = Map.To.Extended;
                }
            }
            else
            {
                // Not mapped now, but was this key mapped before under the current filter??
                var km = MappingsManager.GetClearedMapping(scanCode, extended);
                if (MappingsManager.IsEmptyMapping(km))
                {
                    effect = ButtonEffect.None;
                }
                else if (MappingsManager.IsDisabledMapping(km))
                {
                    effect = ButtonEffect.EnabledPending;
                }
                else
                {
                    effect = ButtonEffect.UnmappedPending;
                }
            }

            var keybmp = ButtonImages.GetButtonImage(
                scanCode, extended, button, horizontalStretch, verticalStretch, scale, effect);

            SetImage(keybmp);
        }
Esempio n. 20
0
        private void setupCheckButtonImages()
        {
            const float sat = 2f;

            float sampleHandOpacity = 0.6f;

            _buttons.SetupButton(_buttonSampleHandNew,
                                 new ButtonImages(
                                     null,
                                     Resources.hand_48.SetOpacity(sampleHandOpacity),
                                     null,
                                     Resources.hand_48,
                                     areImagesDoubleSized: true));

            _buttons.SetupButton(_buttonSampleHandDraw,
                                 new ButtonImages(
                                     null,
                                     Resources.draw_48.SetOpacity(sampleHandOpacity),
                                     null,
                                     Resources.draw_48,
                                     areImagesDoubleSized: true));

            _buttons.SetupButton(_buttonSampleHandMulligan,
                                 new ButtonImages(
                                     null,
                                     Resources.mulligan_48.SetOpacity(sampleHandOpacity),
                                     null,
                                     Resources.mulligan_48,
                                     areImagesDoubleSized: true));

            _buttons.SetupButton(_buttonShowDuplicates,
                                 new ButtonImages(
                                     Resources.clone_48.TransformColors(saturation: 0f),
                                     Resources.clone_48,
                                     Resources.clone_48.TransformColors(saturation: 0.9f),
                                     Resources.clone_48.TransformColors(saturation: 2.5f),
                                     areImagesDoubleSized: true));

            _buttons.SetupButton(_buttonShowProhibit,
                                 new ButtonImages(
                                     Resources.exclude_hidden_24,
                                     Resources.exclude_shown_24,
                                     Resources.exclude_hidden_24.TransformColors(sat, 1.2f),
                                     Resources.exclude_shown_24.TransformColors(sat, 1.2f),
                                     areImagesDoubleSized: true));

            _buttons.SetupButton(_buttonExcludeManaAbility,
                                 new ButtonImages(
                                     Resources.include_plus_24,
                                     Resources.exclude_minus_24,
                                     Resources.include_plus_24.TransformColors(sat, 1f),
                                     Resources.exclude_minus_24.TransformColors(sat, 1.2f),
                                     areImagesDoubleSized: true));

            _buttons.SetupButton(_buttonExcludeManaCost,
                                 new ButtonImages(
                                     Resources.include_plus_24,
                                     Resources.exclude_minus_24,
                                     Resources.include_plus_24.TransformColors(sat, 1f),
                                     Resources.exclude_minus_24.TransformColors(sat, 1.2f),
                                     areImagesDoubleSized: true));

            _buttons.SetupButton(_buttonHideDeck,
                                 new ButtonImages(
                                     Resources.shown_40,
                                     Resources.hidden_40,
                                     Resources.shown_40.TransformColors(brightness: 0.1f),
                                     Resources.hidden_40.TransformColors(brightness: 0.1f),
                                     areImagesDoubleSized: true));

            var scrollImages = new ButtonImages(
                Resources.scroll_shown_40,
                Resources.scroll_hidden_40,
                Resources.scroll_hidden_40.TransformColors(brightness: 1.05f),
                Resources.scroll_shown_40.TransformColors(brightness: 1.05f),
                areImagesDoubleSized: true);

            _buttons.SetupButton(_buttonHideScrollCards, scrollImages);
            _buttons.SetupButton(_buttonHideScrollDeck, scrollImages);

            _buttons.SetupButton(_buttonHidePartialCards,
                                 new ButtonImages(
                                     Resources.partial_card_enabled_40,
                                     Resources.partial_card_disabled_40,
                                     Resources.partial_card_enabled_40.TransformColors(brightness: 0.1f),
                                     Resources.partial_card_disabled_40.TransformColors(brightness: 0.1f),
                                     areImagesDoubleSized: true));

            _buttons.SetupButton(_buttonHideText,
                                 new ButtonImages(
                                     Resources.text_enabled_40,
                                     Resources.text_disabled_40,
                                     Resources.text_enabled_40.TransformColors(brightness: 0.1f),
                                     Resources.text_disabled_40.TransformColors(brightness: 0.1f),
                                     areImagesDoubleSized: true));

            _buttons.SetupButton(_buttonSearchExamplesDropDown,
                                 new ButtonImages(
                                     null,
                                     Resources.book_40,
                                     null,
                                     Resources.book_40_hovered,
                                     areImagesDoubleSized: true));
        }
Esempio n. 21
0
        private void MapSelected()
        {
            if (disabled)
            {
                // Nono - Can't map while disabled. Shouldn't be here anyway!
                return;
            }

            if (mapped)
            {
                // Unmap.
                MappingsManager.DeleteMapping(map);
                SetMapToBlankMapping();
                Close();
                return;
            }

            if (capturingToKey)
            {
                // Ah, but have we caught a "to" key yet?
                if (!map.IsValid())
                {
                    return;
                }

                capturingToKey = false;
                StopCapture();
                MappingsManager.AddMapping(map);
                Close();
                return;
            }

            if (selectingFromKeyFromLists)
            {
                Key selectedKey = GetKeyFromListboxValue();

                // Have we been sent a dud??
                if (selectedKey.Scancode == 0)
                {
                    // Something went wrong.
                    map = new KeyMapping();
                }
                else
                {
                    SetMapToBlankMapping(selectedKey.Scancode, selectedKey.Extended);
                    // Need to move panel back to where it was and set the image in the picturebox
                    KeyListsPanel.Location = savedPanelLocation;

                    FromKeyPictureBox.SetImage(ButtonImages.GetButtonImage(map.From.Scancode, map.From.Extended));
                    selectingFromKeyFromLists = false;
                    keyThreshold = 1;
                    SetListOptionsComboIndex();
                    SetupForm();
                    return;
                }
            }

            if (capturingFromKey == false)
            {
                // Not mapped, not capturing From or To keys, so this is mapping from list.
                // Need to call method to create map from name.
                if (CreateMappingFromListboxValue())
                {
                    MappingsManager.AddMapping(map);
                    Close();
                }
                return;
            }
            else
            {
                // Setting the From key. Map has already been created from keypress
                capturingFromKey = false;
                StopCapture();
                direction = FadeDirection.FromBlankToUnmapped;
                SetupForm();
                Transition();
            }
        }
Esempio n. 22
0
        private void SetButtonImages()
        {
            // Set the buttons' bitmap as required. Always call SetImage as that
            // handles releasing the existing bitmap if any..

            // From key is straightforward.

            float scale = (DpiInfo.Dpi / 96F);

            if (FromKeyPictureBox.Image == null && map.IsEmpty())
            {
                FromKeyPictureBox.SetImage(ButtonImages.GetButtonImage
                                               (-1, -1, BlankButton.Blank, 0, 0, scale, ButtonEffect.None));
            }
            else
            {
                FromKeyPictureBox.SetImage(ButtonImages.GetButtonImage
                                               (map.From.Scancode, map.From.Extended, BlankButton.Blank, 0, 0, scale, ButtonEffect.None));
            }

            // To Key depends more on state
            int          scancode = 0;
            int          extended = 0;
            ButtonEffect effect   = ButtonEffect.None;

            //  'Disabled' is a special case of 'Mapped'
            if (disabled)
            {
                effect = MappingsManager.IsMappingPending(map) ? ButtonEffect.DisabledPending : ButtonEffect.Disabled;
            }
            else
            {
                if (!mapped)
                {
                    // Not mapped. What are we doing then??
                    if (capturingToKey)
                    {
                        scancode = map.To.Scancode;
                        extended = map.To.Extended;

                        if (map.To.Scancode == 0)
                        {
                            // Can't map to a disabled key - show button as disabled..
                            effect = ButtonEffect.Disabled;
                        }
                        else
                        {
                            effect = ButtonEffect.MappedPending;
                        }
                    }
                    else if (capturingFromKey)
                    {
                        if (map.IsEmpty())
                        {
                            // Show a blank key.
                            scancode = -1;
                            extended = -1;
                        }
                    }
                }
                else
                {
                    // Mapped to a specific key
                    scancode = map.To.Scancode;
                    extended = map.To.Extended;
                    effect   = MappingsManager.IsMappingPending(map) ? ButtonEffect.MappedPending : ButtonEffect.Mapped;
                }
            }

            ToKeyPictureBox.SetImage(ButtonImages.GetButtonImage(scancode, extended, BlankButton.Blank, 0, 0, scale, effect));
        }