-
Notifications
You must be signed in to change notification settings - Fork 73
/
Bootstrapper.cs
50 lines (43 loc) · 1.61 KB
/
Bootstrapper.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using App004.CustomTrigger.ViewModels;
using Caliburn.Micro;
using System;
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Input;
namespace App004.CustomTrigger
{
public class Bootstrapper : BootstrapperBase
{
#region Private Variables
private const string X_ACTION = "ACTION";
private const string X_KEY = "KEY";
private const string X_SHORTCUT = "SHORTCUT";
#endregion
#region Constructor
public Bootstrapper() => Initialize();
#endregion
#region Overrides
protected override void OnStartup(object sender, StartupEventArgs e) => DisplayRootViewFor<ShellViewModel>();
#endregion
protected override void Configure()
{
var defaultCreateTrigger = Parser.CreateTrigger;
Parser.CreateTrigger = (target, triggerText) =>
{
if (string.IsNullOrEmpty(triggerText)) return defaultCreateTrigger(target, null);
var regex = new Regex($@"^\[(?<{X_ACTION}>[a-zA-Z]+)\s(?<{X_SHORTCUT}>[a-zA-Z0-9]+)\]$");
var matches = regex.Match(triggerText.Trim());
switch (matches.Groups[X_ACTION].Value.ToUpper())
{
case X_KEY:
return new KeyTrigger
{
Key = (Key)Enum.Parse(typeof(Key), matches.Groups[X_SHORTCUT].Value, true),
};
default:
return defaultCreateTrigger(target, triggerText); ;
}
};
}
}
}