#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

61 lines
1.7 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
using System.ComponentModel;
using System.Globalization;
namespace SharpDevelop.XamlDesigner.Commanding
{
[TypeConverter(typeof(SimpleKeyGestureConverter))]
public class SimpleKeyGesture : InputGesture
{
public Key Key;
public ModifierKeys Modifiers;
static KeyConverter KeyConverter = new KeyConverter();
static ModifierKeysConverter ModifierKeysConverter = new ModifierKeysConverter();
public override bool Matches(object targetElement, InputEventArgs inputEventArgs)
{
KeyEventArgs e = inputEventArgs as KeyEventArgs;
return e != null && e.Key == Key && Keyboard.Modifiers == Modifiers;
}
public static SimpleKeyGesture FromString(string s)
{
var result = new SimpleKeyGesture();
var index = s.LastIndexOf('+');
if (index >= 0) {
result.Modifiers = (ModifierKeys)ModifierKeysConverter.ConvertFromString(s.Substring(0, index));
result.Key = (Key)KeyConverter.ConvertFromString(s.Substring(index + 1));
}
else {
result.Key = (Key)KeyConverter.ConvertFromString(s);
}
return result;
}
public override string ToString()
{
if (Modifiers == ModifierKeys.None) return KeyConverter.ConvertToString(Key);
return ModifierKeysConverter.ConvertToString(Modifiers) + "+" + KeyConverter.ConvertToString(Key);
}
}
class SimpleKeyGestureConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return sourceType == typeof(string);
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
return SimpleKeyGesture.FromString((string)value);
}
}
}