Example #1
0
        public void PrepareEZLayout_ProcessModifiers(bool leftAlt,
                                                     bool leftCtrl,
                                                     bool leftShift,
                                                     bool leftWin,
                                                     bool rightAlt,
                                                     bool rightCtrl,
                                                     bool rightShift,
                                                     bool rightWin,
                                                     string expectedSubLabel,
                                                     KeyDisplayType expectedDisplayType)
        {
            // Arrange
            var modifiers = new ErgodoxModifiers
            {
                LeftAlt    = leftAlt,
                LeftCtrl   = leftCtrl,
                LeftShift  = leftShift,
                LeftWin    = leftWin,
                RightAlt   = rightAlt,
                RightCtrl  = rightCtrl,
                RightShift = rightShift,
                RightWin   = rightWin
            };
            var ergodoxKey = new ErgodoxKey()
            {
                GlowColor = "", Code = "KC_A", Modifiers = modifiers
            };
            ErgodoxLayout ergodoxLayout = InitializeDataTree();

            ergodoxLayout.Revision.Layers.First().Keys.Add(ergodoxKey);

            EZLayout ezLayoutResult;

            // Act
            var ezLayoutMaker = new EZLayoutMaker();

            ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);

            // Assert
            Assert.Single(ezLayoutResult.EZLayers);
            Assert.Single(ezLayoutResult.EZLayers.First().EZKeys);
            var keyResult = ezLayoutResult.EZLayers.First().EZKeys.First();

            Assert.Equal("A", keyResult.Label.Content);

            if (expectedDisplayType == KeyDisplayType.SimpleLabel)
            {
                Assert.Null(keyResult.Modifier);
            }
            else
            {
                Assert.Equal(expectedSubLabel, keyResult.Modifier.Content);
                Assert.False(keyResult.Modifier.IsGlyph);
            }

            Assert.Equal(expectedDisplayType, keyResult.DisplayType);
        }
        private List <EZModifier> GetModifiersApplied(ErgodoxModifiers ergodoxModifiers)
        {
            var keyModifiers = new KeyModifierDictionary();
            var mods         = new List <EZModifier>();

            if (ergodoxModifiers.LeftAlt)
            {
                mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftAlt));
            }

            if (ergodoxModifiers.LeftCtrl)
            {
                mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftCtrl));
            }

            if (ergodoxModifiers.LeftShift)
            {
                mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftShift));
            }

            if (ergodoxModifiers.LeftWin)
            {
                mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftWin));
            }

            if (ergodoxModifiers.RightAlt)
            {
                mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightAlt));
            }

            if (ergodoxModifiers.RightCtrl)
            {
                mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightCtrl));
            }

            if (ergodoxModifiers.RightShift)
            {
                mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightShift));
            }

            if (ergodoxModifiers.RightWin)
            {
                mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightWin));
            }

            return(mods.OrderBy(m => m.Index).ToList());
        }