Ejemplo n.º 1
0
        public void MultiKeyGesture_Matches(bool expected, int secMaxDelay, int millisecondsTimeout)
        {
            //NOTE: do not test modifiers, because they are taken from Keyboard.Modifiers static property.
            var g = new MultiKeyGesture(new Gesture[]
            {
                new Gesture(Key.T),
                new Gesture(Key.E),
                new Gesture(Key.S),
                new Gesture(Key.T),
            }, TimeSpan.FromSeconds(secMaxDelay));

            var e1 = BuildKeyEventArgs(Key.T);
            var e2 = BuildKeyEventArgs(Key.E);
            var e3 = BuildKeyEventArgs(Key.S);
            var e4 = BuildKeyEventArgs(Key.T);

            var r1 = g.Matches(null, e1);
            var r2 = g.Matches(null, e2);
            var r3 = g.Matches(null, e3);

            Thread.Sleep(millisecondsTimeout);
            var r4 = g.Matches(null, e4);

            Assert.IsTrue(e1.Handled);
            Assert.IsFalse(r1);

            Assert.IsTrue(e2.Handled);
            Assert.IsFalse(r2);

            Assert.IsTrue(e3.Handled);
            Assert.IsFalse(r3);

            Assert.AreNotEqual(expected, e4.Handled);
            Assert.AreEqual(expected, r4);
        }
Ejemplo n.º 2
0
 public void MultiKeyGesture_constructor_ArgumentNullException_onlyInvalidGestures()
 {
     var l = new List <Gesture>()
     {
         new Gesture(Key.None, ModifierKeys.None)
     };
     var g = new MultiKeyGesture(l);
 }
        protected override void Configure()
        {
            _container.Instance <SimpleContainer>(_container);

            _container.Singleton <IWindowManager, WindowManager>(key: nameof(WindowManager))
            .Singleton <IEventAggregator, EventAggregator>(key: nameof(EventAggregator))
            .Singleton <IDialogServiceEx, DialogService>(key: nameof(DialogService))
            .Singleton <ILogService, LogService>(key: nameof(LogService));

            _container.Singleton <ShellViewModel>(key: nameof(ShellViewModel))
            .PerRequest <DragDropViewModel>(key: nameof(DragDropViewModel))
            .Singleton <MainViewModel>(key: nameof(MainViewModel))
            .Singleton <SettingViewModel>(key: nameof(SettingViewModel))
            .Singleton <ConductorViewModel>(key: nameof(ConductorViewModel))
            .Singleton <SampleViewModel>(key: nameof(SampleViewModel))
            .Singleton <WinMsgViewModel>(key: nameof(WinMsgViewModel));

            // Key Bindings Convertion
            /*********************************************************************************************/
            Func <DependencyObject, string, System.Windows.Interactivity.TriggerBase> defaultCreateTrigger = Parser.CreateTrigger;

            Parser.CreateTrigger = (target, triggerText) =>
            {
                if (triggerText == null)
                {
                    return(defaultCreateTrigger(target, null));
                }

                string triggerDetail = triggerText.Replace("[", string.Empty).Replace("]", string.Empty);

                string[] splits = triggerDetail.Split((char[])null, StringSplitOptions.RemoveEmptyEntries);

                switch (splits[0])
                {
                case "Key":
                    Key key = (Key)Enum.Parse(typeof(Key), splits[1], true);
                    return(new KeyTrigger {
                        Key = key
                    });

                case "Gesture":
                    MultiKeyGesture mkg = (MultiKeyGesture) new MultiKeyGestureConverter().ConvertFrom(splits[1]);
                    return(new KeyTrigger {
                        Modifiers = mkg.KeySequences[0].Modifiers, Key = mkg.KeySequences[0].Keys[0]
                    });

                default: break;
                }

                return(defaultCreateTrigger(target, triggerText));
            };

            MessageBinder.SpecialValues.Add("$sender", ctx => ctx.Source);
            /*********************************************************************************************/
        }
Ejemplo n.º 4
0
        public void CanConvertToStringTest()
        {
            var s = new MultiKeyGestureSerializer();
            var g = new MultiKeyGesture(new[]
            {
                new Gesture(Key.None, ModifierKeys.Control),
                new Gesture(Key.T),
                new Gesture(Key.E),
                new Gesture(Key.S),
                new Gesture(Key.T),
            });

            Assert.IsTrue(s.CanConvertToString(g, null));
        }
Ejemplo n.º 5
0
        public void ConvertToStringTest()
        {
            var s = new MultiKeyGestureSerializer();
            var g = new MultiKeyGesture(new[]
            {
                new Gesture(Key.None, ModifierKeys.Control),
                new Gesture(Key.T),
                new Gesture(Key.E),
                new Gesture(Key.S),
                new Gesture(Key.T),
            });
            var res = s.ConvertToString(g, null);

            Assert.AreEqual("Control T E S T".ToLowerInvariant(), res.ToLowerInvariant());
        }
Ejemplo n.º 6
0
 private bool ValidateBasicKeyInput(Key key)
 {
     if (key == Key.None)
     {
         return(false);
     }
     if (!IsValidGestureKey(key))
     {
         return(false);
     }
     if (MultiKeyGesture.IsModifierKey(key))
     {
         return(false);
     }
     return(true);
 }
Ejemplo n.º 7
0
        private static void InitializeMenus(ObjectModelRoot root)
        {
            var menus = (ISEMenuItemCollection)root.CurrentPowerShellTab.AddOnsMenu.Submenus;

            //Add MenuItem(FormatDocument)
            {
                const string name    = "Format Document";
                var          gesture = new MultiKeyGesture(new[]
                {
                    new KeyGesture(Key.K, ModifierKeys.Control),
                    new KeyGesture(Key.D, ModifierKeys.Control),
                }, "Ctrl+K, Ctrl+D");
                var scriptBlock = ScriptBlock.Create("Format-CurrentDocument -Range Document");

                var item = menus.SingleOrDefault(p => p.DisplayName == name);
                if (item != null)
                {
                    menus.Remove(item);
                }
                menus.Add(name, scriptBlock, gesture);
            }
            //typeof(PowerShellTab).GetProperty("StatusText").SetValue(root.CurrentPowerShellTab, "TestTest");

            //TODO:Support RangeFormatter
            //Add MenuItem(FormatDocument)
            {
                const string name    = "Format Selection";
                var          gesture = new MultiKeyGesture(new[]
                {
                    new KeyGesture(Key.K, ModifierKeys.Control),
                    new KeyGesture(Key.F, ModifierKeys.Control),
                }, "Ctrl+K, Ctrl+F");
                var scriptBlock = ScriptBlock.Create("Format-CurrentDocument -Range Selection");

                var item = menus.SingleOrDefault(p => p.DisplayName == name);
                if (item != null)
                {
                    menus.Remove(item);
                }
                menus.Add(name, scriptBlock, gesture);
            }
        }
        public void ShouldConvertGestureToString()
        {
            MultiKeyGesture          gesture   = new MultiKeyGesture(new[] { Key.A, Key.B, Key.C }, ModifierKeys.Control, "My Display String");
            MultiKeyGestureConverter converter = (MultiKeyGestureConverter)TypeDescriptor.GetConverter(gesture);

            Assert.IsTrue(converter.CanConvertTo(typeof(string)));
            string s = converter.ConvertTo(gesture, typeof(string)) as string;

            Assert.IsNotNull(s);
            Assert.AreEqual("Ctrl+A, Ctrl+B, Ctrl+C:My Display String", s);

            gesture = new MultiKeyGesture(new[] { Key.A, Key.B, Key.C }, ModifierKeys.Control, "");
            s       = converter.ConvertTo(gesture, typeof(string)) as string;
            Assert.IsNotNull(s);
            Assert.AreEqual("Ctrl+A, Ctrl+B, Ctrl+C", s);

            gesture = new MultiKeyGesture(new[] { Key.A, Key.B, Key.C }, ModifierKeys.None, "");
            s       = converter.ConvertTo(gesture, typeof(string)) as string;
            Assert.IsNotNull(s);
            Assert.AreEqual("A, B, C", s);

            gesture = new MultiKeyGesture(new[] { Key.A }, ModifierKeys.None, "");
            s       = converter.ConvertTo(gesture, typeof(string)) as string;
            Assert.IsNotNull(s);
            Assert.AreEqual("A", s);

            gesture = new MultiKeyGesture(new[] { Key.None }, ModifierKeys.None, "");
            s       = converter.ConvertTo(gesture, typeof(string)) as string;
            Assert.IsNotNull(s);
            Assert.AreEqual("", s);

            gesture = new MultiKeyGesture(new[] { Key.A, Key.B, Key.C }, ModifierKeys.Control | ModifierKeys.Shift, "");
            s       = converter.ConvertTo(gesture, typeof(string)) as string;
            Assert.IsNotNull(s);
            Assert.AreEqual("Ctrl+Shift+A, Ctrl+Shift+B, Ctrl+Shift+C", s);
        }
Ejemplo n.º 9
0
 public CommandGestureScopeMapping(GestureScope scope, CommandDefinition command,
                                   MultiKeyGesture gesture) : this(command, new GestureScopeMapping(scope, gesture))
 {
 }
        public void ShouldConvertGestureFromString()
        {
            MultiKeyGestureConverter converter = (MultiKeyGestureConverter)TypeDescriptor.GetConverter(typeof(MultiKeyGesture));
            string s = "";

            Assert.IsTrue(converter.CanConvertFrom(typeof(string)));
            MultiKeyGesture gesture = converter.ConvertFrom(s) as MultiKeyGesture;

            Assert.IsNotNull(gesture);
            Assert.IsNotNull(gesture.Keys);
            Assert.AreEqual(ModifierKeys.None, gesture.Modifiers);
            Assert.AreEqual(Key.None, gesture.Key);
            Assert.AreEqual(1, gesture.Keys.Count);
            Assert.AreEqual(Key.None, gesture.Keys[0]);
            Assert.AreEqual("", gesture.DisplayString);

            s       = "A";
            gesture = converter.ConvertFrom(s) as MultiKeyGesture;
            Assert.IsNotNull(gesture);
            Assert.IsNotNull(gesture.Keys);
            Assert.AreEqual(ModifierKeys.None, gesture.Modifiers);
            Assert.AreEqual(Key.None, gesture.Key);
            Assert.AreEqual(1, gesture.Keys.Count);
            Assert.AreEqual(Key.A, gesture.Keys[0]);
            Assert.AreEqual("A", gesture.DisplayString);

            s       = "A,B,C";
            gesture = converter.ConvertFrom(s) as MultiKeyGesture;
            Assert.IsNotNull(gesture);
            Assert.IsNotNull(gesture.Keys);
            Assert.AreEqual(ModifierKeys.None, gesture.Modifiers);
            Assert.AreEqual(Key.None, gesture.Key);
            Assert.AreEqual(3, gesture.Keys.Count);
            Assert.AreEqual(Key.A, gesture.Keys[0]);
            Assert.AreEqual(Key.B, gesture.Keys[1]);
            Assert.AreEqual(Key.C, gesture.Keys[2]);
            Assert.AreEqual("A, B, C", gesture.DisplayString);

            s       = "Ctrl+A, Ctrl+B,Ctrl+C";
            gesture = converter.ConvertFrom(s) as MultiKeyGesture;
            Assert.IsNotNull(gesture);
            Assert.IsNotNull(gesture.Keys);
            Assert.AreEqual(ModifierKeys.Control, gesture.Modifiers);
            Assert.AreEqual(Key.None, gesture.Key);
            Assert.AreEqual(3, gesture.Keys.Count);
            Assert.AreEqual(Key.A, gesture.Keys[0]);
            Assert.AreEqual(Key.B, gesture.Keys[1]);
            Assert.AreEqual(Key.C, gesture.Keys[2]);
            Assert.AreEqual("Ctrl+A, Ctrl+B, Ctrl+C", gesture.DisplayString);

            s       = "Ctrl+A, Ctrl+B, Ctrl+C:My Display String";
            gesture = converter.ConvertFrom(s) as MultiKeyGesture;
            Assert.IsNotNull(gesture);
            Assert.IsNotNull(gesture.Keys);
            Assert.AreEqual(ModifierKeys.Control, gesture.Modifiers);
            Assert.AreEqual(Key.None, gesture.Key);
            Assert.AreEqual(3, gesture.Keys.Count);
            Assert.AreEqual(Key.A, gesture.Keys[0]);
            Assert.AreEqual(Key.B, gesture.Keys[1]);
            Assert.AreEqual(Key.C, gesture.Keys[2]);
            Assert.AreEqual("My Display String", gesture.DisplayString);

            s       = "Ctrl+Shift+A, Ctrl+Shift+B, Ctrl+Shift+C:My Display String";
            gesture = converter.ConvertFrom(s) as MultiKeyGesture;
            Assert.IsNotNull(gesture);
            Assert.IsNotNull(gesture.Keys);
            Assert.AreEqual(ModifierKeys.Control | ModifierKeys.Shift, gesture.Modifiers);
            Assert.AreEqual(Key.None, gesture.Key);
            Assert.AreEqual(3, gesture.Keys.Count);
            Assert.AreEqual(Key.A, gesture.Keys[0]);
            Assert.AreEqual(Key.B, gesture.Keys[1]);
            Assert.AreEqual(Key.C, gesture.Keys[2]);
            Assert.AreEqual("My Display String", gesture.DisplayString);
        }
        public void LoadFromTest_wasNotEmpty()
        {
            var gestureInitial = new KeyGesture(Key.T, ModifierKeys.Control);
            var gestureAfter   = new MultiKeyGesture(new[] { new Gesture(Key.None, ModifierKeys.Control), new Gesture(Key.T) });
            var m   = new Manager();
            var key = "Test";
            var c   = new Configs()
            {
                new Config()
                {
                    Name    = "Test.Help",
                    Gesture = new KeyGesture(Key.F1)
                },
                new Config()
                {
                    Name    = "Test.Fullscreen",
                    Gesture = new KeyGesture(Key.F11)
                },
                new Config()
                {
                    Name    = key,
                    Gesture = gestureInitial
                }
            };

            m.LoadFrom(c, ManagerUpdateMode.Full);

            int pc = 0;

            m.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == "Item[]")
                {
                    ++pc;
                }
            };

            var c1 = new Configs()
            {
                new Config()
                {
                    Name    = "Test.NotExisting",
                    Gesture = new KeyGesture(Key.F12)
                },
                new Config()
                {
                    Name    = key,
                    Gesture = gestureAfter
                }
            };

            m.LoadFrom(c1, ManagerUpdateMode.OnlyUpdateExisting);
            Assert.IsNull(m["Test.NotExisting"]);
            Assert.AreEqual(3, m.Configs.Count);
            Assert.AreEqual(1, pc);
            Assert.AreEqual(m[key], gestureAfter);

            foreach (var config in m.Configs)
            {
                Assert.IsTrue(config.IsLocked);
            }
        }
Ejemplo n.º 12
0
 public void MultiKeyGesture_constructor_ArgumentNullException_empty()
 {
     var g = new MultiKeyGesture(new List <Gesture>());
 }
Ejemplo n.º 13
0
 public void MultiKeyGesture_constructor_ArgumentNullException_null()
 {
     var g = new MultiKeyGesture(null);
 }
        public void ShouldConvertGestureToString()
        {
            MultiKeyGesture gesture = new MultiKeyGesture(new[] { Key.A, Key.B, Key.C }, ModifierKeys.Control, "My Display String");
            MultiKeyGestureConverter converter = (MultiKeyGestureConverter)TypeDescriptor.GetConverter(gesture);
            Assert.IsTrue(converter.CanConvertTo(typeof(string)));
            string s = converter.ConvertTo(gesture, typeof(string)) as string;
            Assert.IsNotNull(s);
            Assert.AreEqual("Ctrl+A, Ctrl+B, Ctrl+C:My Display String", s);

            gesture = new MultiKeyGesture(new[] { Key.A, Key.B, Key.C }, ModifierKeys.Control, "");
            s = converter.ConvertTo(gesture, typeof(string)) as string;
            Assert.IsNotNull(s);
            Assert.AreEqual("Ctrl+A, Ctrl+B, Ctrl+C", s);

            gesture = new MultiKeyGesture(new[] { Key.A, Key.B, Key.C }, ModifierKeys.None, "");
            s = converter.ConvertTo(gesture, typeof(string)) as string;
            Assert.IsNotNull(s);
            Assert.AreEqual("A, B, C", s);

            gesture = new MultiKeyGesture(new[] { Key.A }, ModifierKeys.None, "");
            s = converter.ConvertTo(gesture, typeof(string)) as string;
            Assert.IsNotNull(s);
            Assert.AreEqual("A", s);

            gesture = new MultiKeyGesture(new[] { Key.None }, ModifierKeys.None, "");
            s = converter.ConvertTo(gesture, typeof(string)) as string;
            Assert.IsNotNull(s);
            Assert.AreEqual("", s);

            gesture = new MultiKeyGesture(new[] { Key.A, Key.B, Key.C }, ModifierKeys.Control | ModifierKeys.Shift, "");
            s = converter.ConvertTo(gesture, typeof(string)) as string;
            Assert.IsNotNull(s);
            Assert.AreEqual("Ctrl+Shift+A, Ctrl+Shift+B, Ctrl+Shift+C", s);
        }