Skip to content
This repository was archived by the owner on Nov 25, 2023. It is now read-only.

Commit f43f45e

Browse files
authoredJul 24, 2019
Merge pull request #97 from Invvard/fix/issue-96-loading-revision
Fix/issue 96 loading revision
·
1.3.0-beta1.1.3
2 parents 049e5da + 67f1f50 commit f43f45e

File tree

10 files changed

+698
-661
lines changed

10 files changed

+698
-661
lines changed
 

‎src/InvvardDev.EZLayoutDisplay.Desktop/Helper/EZLayoutMaker.cs

Lines changed: 34 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,22 @@ public EZLayoutMaker()
2222
_keyDefinitionDictionary = new KeyDefinitionDictionary();
2323
}
2424

25-
public EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout)
25+
public EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout, string layoutRevisionIds)
2626
{
2727
Logger.TraceMethod();
2828
Logger.DebugInputParam(nameof(ergodoxLayout), ergodoxLayout);
2929

30-
var ezLayout = new EZLayout {
31-
HashId = ergodoxLayout.HashId,
32-
Name = ergodoxLayout.Title
33-
};
30+
var ezLayout = new EZLayout { HashId = ergodoxLayout.HashId, Name = ergodoxLayout.Title };
3431

35-
foreach (var ergodoxLayer in ergodoxLayout.Revisions.First().Layers)
32+
var ergodoxLayers = ergodoxLayout.Revisions.FirstOrDefault(r => r.HashId == layoutRevisionIds)?.Layers ?? ergodoxLayout.Revisions.First().Layers;
33+
34+
if (ergodoxLayers?.Any() != null)
3635
{
37-
EZLayer ezLayer = PrepareEZLayer(ergodoxLayer);
38-
ezLayout.EZLayers.Add(ezLayer);
36+
foreach (var ergodoxLayer in ergodoxLayers)
37+
{
38+
var ezLayer = PrepareEZLayer(ergodoxLayer);
39+
ezLayout.EZLayers.Add(ezLayer);
40+
}
3941
}
4042

4143
Logger.DebugOutputParam(nameof(ezLayout), ezLayout);
@@ -48,15 +50,11 @@ private EZLayer PrepareEZLayer(ErgodoxLayer ergodoxLayer)
4850
Logger.TraceMethod();
4951
Logger.DebugInputParam(nameof(ergodoxLayer), ergodoxLayer);
5052

51-
var layer = new EZLayer {
52-
Index = ergodoxLayer.Position,
53-
Name = ergodoxLayer.Title,
54-
Color = GetColor(ergodoxLayer.Color)
55-
};
53+
var layer = new EZLayer { Index = ergodoxLayer.Position, Name = ergodoxLayer.Title, Color = GetColor(ergodoxLayer.Color) };
5654

5755
foreach (var ergodoxKey in ergodoxLayer.Keys)
5856
{
59-
EZKey key = PrepareKeyLabels(ergodoxKey, layer.Color);
57+
var key = PrepareKeyLabels(ergodoxKey, layer.Color);
6058

6159
layer.EZKeys.Add(key);
6260
}
@@ -71,7 +69,7 @@ private EZKey PrepareKeyLabels(ErgodoxKey ergodoxKey, string layerColor)
7169
Logger.TraceMethod();
7270
Logger.DebugInputParam(nameof(ergodoxKey), ergodoxKey);
7371

74-
KeyDefinition keyDefinition = GetKeyDefinition(ergodoxKey.Code);
72+
var keyDefinition = GetKeyDefinition(ergodoxKey.Code);
7573

7674
/** Every category has a label, so no need to make a special case :
7775
*
@@ -88,37 +86,32 @@ private EZKey PrepareKeyLabels(ErgodoxKey ergodoxKey, string layerColor)
8886
* KeyCategory.System
8987
*
9088
**/
91-
EZKey key = new EZKey {
92-
KeyCategory = keyDefinition.KeyCategory,
93-
Label = new KeyLabel(keyDefinition.Label, keyDefinition.IsGlyph),
94-
Color = GetColor(ergodoxKey.GlowColor, layerColor),
95-
DisplayType = KeyDisplayType.SimpleLabel
96-
};
89+
var key = new EZKey
90+
{
91+
KeyCategory = keyDefinition.KeyCategory,
92+
Label = new KeyLabel(keyDefinition.Label, keyDefinition.IsGlyph),
93+
Color = GetColor(ergodoxKey.GlowColor, layerColor),
94+
DisplayType = KeyDisplayType.SimpleLabel
95+
};
9796

9897
switch (keyDefinition.KeyCategory)
9998
{
10099
case KeyCategory.DualFunction:
101100

102101
if (AddCommandLabel(ergodoxKey, key))
103-
{
104102
key.DisplayType = KeyDisplayType.ModifierUnder;
105-
}
106103
else
107-
{
108104
key.KeyCategory = KeyCategory.Modifier;
109-
}
110105

111106
break;
112107
case KeyCategory.Layer:
113108
case KeyCategory.LayerShortcuts:
114109
key.Label.Content = string.Format(key.Label.Content, ergodoxKey.Layer.ToString());
115110

116-
if (AddCommandLabel(ergodoxKey, key))
117-
{
118-
key.DisplayType = KeyDisplayType.ModifierUnder;
119-
}
111+
if (AddCommandLabel(ergodoxKey, key)) key.DisplayType = KeyDisplayType.ModifierUnder;
120112

121113
break;
114+
122115
case KeyCategory.Modifier:
123116

124117
if (ergodoxKey.Code == KeyCodeOsm && !IsCommandEmpty(ergodoxKey.Command))
@@ -137,6 +130,7 @@ private EZKey PrepareKeyLabels(ErgodoxKey ergodoxKey, string layerColor)
137130
key.DisplayType = KeyDisplayType.SimpleLabel;
138131

139132
break;
133+
140134
case KeyCategory.Shortcuts:
141135

142136
if (!IsCommandEmpty(ergodoxKey.Command))
@@ -196,10 +190,10 @@ private KeyDefinition GetKeyDefinition(string ergodoxKeyCode)
196190
}
197191

198192
/// <summary>
199-
/// Apply the command label.
193+
/// Apply the command label.
200194
/// </summary>
201-
/// <param name="ergodoxKey">The <see cref="ErgodoxKey"/> containing the command to be applied.</param>
202-
/// <param name="key">The <see cref="EZKey"/> to apply the command to.</param>
195+
/// <param name="ergodoxKey">The <see cref="ErgodoxKey" /> containing the command to be applied.</param>
196+
/// <param name="key">The <see cref="EZKey" /> to apply the command to.</param>
203197
/// <returns><c>True</c> if command has been applied.</returns>
204198
private bool AddCommandLabel(ErgodoxKey ergodoxKey, EZKey key)
205199
{
@@ -229,45 +223,21 @@ private List<EZModifier> GetModifiersApplied(ErgodoxModifiers ergodoxModifiers)
229223
var keyModifiers = new KeyModifierDictionary();
230224
var mods = new List<EZModifier>();
231225

232-
if (ergodoxModifiers.LeftAlt)
233-
{
234-
mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftAlt));
235-
}
226+
if (ergodoxModifiers.LeftAlt) mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftAlt));
236227

237-
if (ergodoxModifiers.LeftCtrl)
238-
{
239-
mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftCtrl));
240-
}
228+
if (ergodoxModifiers.LeftCtrl) mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftCtrl));
241229

242-
if (ergodoxModifiers.LeftShift)
243-
{
244-
mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftShift));
245-
}
230+
if (ergodoxModifiers.LeftShift) mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftShift));
246231

247-
if (ergodoxModifiers.LeftWin)
248-
{
249-
mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftWin));
250-
}
232+
if (ergodoxModifiers.LeftWin) mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.LeftWin));
251233

252-
if (ergodoxModifiers.RightAlt)
253-
{
254-
mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightAlt));
255-
}
234+
if (ergodoxModifiers.RightAlt) mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightAlt));
256235

257-
if (ergodoxModifiers.RightCtrl)
258-
{
259-
mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightCtrl));
260-
}
236+
if (ergodoxModifiers.RightCtrl) mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightCtrl));
261237

262-
if (ergodoxModifiers.RightShift)
263-
{
264-
mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightShift));
265-
}
238+
if (ergodoxModifiers.RightShift) mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightShift));
266239

267-
if (ergodoxModifiers.RightWin)
268-
{
269-
mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightWin));
270-
}
240+
if (ergodoxModifiers.RightWin) mods.Add(keyModifiers.EZModifiers.First(m => m.KeyModifier == KeyModifier.RightWin));
271241

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

‎src/InvvardDev.EZLayoutDisplay.Desktop/Model/Revision.cs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,18 @@ public class Revision
1111
[JsonProperty("hashId")]
1212
public string HashId { get; set; }
1313

14+
/// <summary>
15+
/// Gets or sets the keyboard revision comment.
16+
/// </summary>
17+
[JsonProperty("title")]
18+
public string Comment { get; set; }
19+
20+
/// <summary>
21+
/// Gets or sets the keyboard model.
22+
/// </summary>
23+
[JsonProperty("model")]
24+
public string Model { get; set; }
25+
1426
/// <summary>
1527
/// Gets or sets the keyboard layout HEX file URL.
1628
/// </summary>
@@ -23,12 +35,6 @@ public class Revision
2335
[JsonProperty("zipUrl")]
2436
public string SourcesUrl { get; set; }
2537

26-
/// <summary>
27-
/// Gets or sets the keyboard model.
28-
/// </summary>
29-
[JsonProperty("model")]
30-
public string Model { get; set; }
31-
3238
/// <summary>
3339
/// Gets or sets the list of <see cref="ErgodoxLayer"/>.
3440
/// </summary>

‎src/InvvardDev.EZLayoutDisplay.Desktop/Service/Design/LayoutService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public async Task<ErgodoxLayout> GetErgodoxLayout(string layoutHashId)
2727
}
2828

2929
/// <inheritdoc />
30-
public EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout)
30+
public EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout, string layoutRevisionIds)
3131
{
3232
Debug.WriteLine("Layout prepared");
3333

‎src/InvvardDev.EZLayoutDisplay.Desktop/Service/Implementation/LayoutService.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ public class LayoutService : ILayoutService
1717
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
1818

1919
private readonly string GetLayoutBody =
20-
"{{\"operationName\":\"getLayout\",\"variables\":{{\"hashId\":\"{0}\"}},\"query\":\"query getLayout($hashId: String!) {{\\n Layout(hashId: $hashId) {{\\n ...LayoutData\\n }}\\n}}\\n\\nfragment LayoutData on Layout {{\\n hashId\\n title\\n revisions {{\\n hashId\\n model\\n layers {{\\n hashId\\n keys\\n position\\n title\\n color\\n }}\\n}}\\n}}\\n\"}}";
20+
"{{\"operationName\":\"getLayout\",\"variables\":{{\"hashId\":\"{0}\"}},\"query\":\"query getLayout($hashId: String!) {{\\n Layout(hashId: $hashId) {{\\n ...LayoutData\\n }}\\n}}\\n\\nfragment LayoutData on Layout {{\\n geometry\\n hashId\\n title\\n tags {{\\n id\\n hashId\\n name\\n }}\\n revisions {{\\n ...RevisionData\\n }}\\n}}\\n\\nfragment RevisionData on Revision {{\\n hashId\\n model\\n title\\n swatch\\n hexUrl\\n zipUrl\\n layers {{\\n hashId\\n keys\\n position\\n title\\n color\\n}}\\n}}\\n\"}}";
2121

2222
private readonly string GetLayoutInfoRequestBody =
23-
"{{\"operationName\":\"getLayout\",\"variables\":{{\"hashId\":\"{0}\"}},\"query\":\"query getLayout($hashId: String!) {{\\n Layout(hashId: $hashId) {{\\n ...LayoutData\\n __typename\\n }}\\n}}\\n\\nfragment LayoutData on Layout {{\\n geometry\\n hashId\\n title\\n tags {{\\n id\\n hashId\\n name\\n }}\\n revisions {{\\n hexUrl\\n model\\n zipUrl\\n layers {{\\n position\\n title\\n }}\\n }}\\n __typename\\n}}\\n\"}}";
23+
"{{\"operationName\":\"getLayout\",\"variables\":{{\"hashId\":\"{0}\"}},\"query\":\"query getLayout($hashId: String!) {{\\n Layout(hashId: $hashId) {{\\n ...LayoutData\\n __typename\\n }}\\n}}\\n\\nfragment LayoutData on Layout {{\\n geometry\\n hashId\\n title\\n tags {{\\n id\\n hashId\\n name\\n }}\\n revisions {{\\n hashId\\n title\\n hexUrl\\n model\\n zipUrl\\n layers {{\\n position\\n title\\n }}\\n }}\\n __typename\\n}}\\n\"}}";
2424

2525
private const string GetLayoutRequestUri = "https://oryx.ergodox-ez.com/graphql";
2626

@@ -53,12 +53,12 @@ public async Task<ErgodoxLayout> GetErgodoxLayout(string layoutHashId)
5353
}
5454

5555
/// <inheritdoc />
56-
public EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout)
56+
public EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout, string layoutRevisionId)
5757
{
5858
Logger.TraceMethod();
5959

6060
var ezLayoutMaker = new EZLayoutMaker();
61-
EZLayout ezLayout = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
61+
EZLayout ezLayout = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, layoutRevisionId);
6262

6363
return ezLayout;
6464
}

‎src/InvvardDev.EZLayoutDisplay.Desktop/Service/Interface/ILayoutService.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@ public interface ILayoutService
2424
/// Transforms an <see cref="ErgodoxLayout"/> into a <see cref="EZLayout"/>.
2525
/// </summary>
2626
/// <param name="ergodoxLayout">The <see cref="ErgodoxLayout"/> to be transformed.</param>
27+
/// <param name="layoutRevisionId">The layout revision identifier.</param>
2728
/// <returns>The <see cref="EZLayout"/> transformed into.</returns>
28-
EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout);
29+
EZLayout PrepareEZLayout(ErgodoxLayout ergodoxLayout, string layoutRevisionId);
2930

3031
/// <summary>
3132
/// Gets the list of <see cref="KeyTemplate"/> from the local repository.

‎src/InvvardDev.EZLayoutDisplay.Desktop/ViewModel/SettingsViewModel.cs

Lines changed: 42 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public class SettingsViewModel : ViewModelBase
2121
#region Constants
2222

2323
private const string TagSearchBaseUri = "https://configure.ergodox-ez.com/{0}/search?q={1}";
24+
private const string DefaultLatestRevisionId = "latest";
2425

2526
#endregion
2627

@@ -41,6 +42,8 @@ public class SettingsViewModel : ViewModelBase
4142
private ICommand _closeSettingsCommand;
4243
private ICommand _cancelSettingsCommand;
4344

45+
private string _currentLayoutHashId;
46+
private string _currentLayoutRevisionId;
4447
private string _layoutTitle;
4548
private string _keyboardModel;
4649
private string _layoutStatus;
@@ -218,6 +221,18 @@ private Hotkey HotkeyShowLayout
218221
set => Set(ref _hotkeyDisplayLayout, value);
219222
}
220223

224+
public string CurrentLayoutHashId
225+
{
226+
get => _currentLayoutHashId;
227+
set => Set(ref _currentLayoutHashId, value);
228+
}
229+
230+
public string CurrentLayoutRevisionId
231+
{
232+
get => _currentLayoutRevisionId;
233+
set => Set(ref _currentLayoutRevisionId, value);
234+
}
235+
221236
#endregion
222237

223238
#region Constructor
@@ -385,17 +400,18 @@ private async void UpdateErgoDoxInfo()
385400
{
386401
Logger.TraceMethod();
387402

388-
var layoutHashId = ExtractLayoutHashId(LayoutUrlContent);
403+
(CurrentLayoutHashId, CurrentLayoutRevisionId) = ExtractLayoutUrlIds(LayoutUrlContent);
389404

390405
try
391406
{
392-
var layoutInfo = await _layoutService.GetLayoutInfo(layoutHashId);
407+
var layoutInfo = await _layoutService.GetLayoutInfo(CurrentLayoutHashId);
393408
Logger.Debug("LayoutInfo = {@value0}", layoutInfo);
394409

395410
ClearLayoutInfo();
396411

397412
if (layoutInfo != null)
398413
{
414+
CheckLatestRevisionId(layoutInfo);
399415
UpdateLayoutInfo(layoutInfo);
400416
}
401417
}
@@ -411,6 +427,16 @@ private async void UpdateErgoDoxInfo()
411427
}
412428
}
413429

430+
private void CheckLatestRevisionId(ErgodoxLayout layoutInfo)
431+
{
432+
if (CurrentLayoutRevisionId.ToLower() != DefaultLatestRevisionId)
433+
{
434+
return;
435+
}
436+
437+
CurrentLayoutRevisionId = layoutInfo.Revisions.Last().HashId;
438+
}
439+
414440
private void ClearLayoutInfo()
415441
{
416442
Tags.Clear();
@@ -436,9 +462,9 @@ private void UpdateLayoutInfo(ErgodoxLayout layoutInfo)
436462
Tags = new ObservableCollection<string>(layoutInfo.Tags.Select(t => t.Name));
437463
}
438464

439-
if (layoutInfo.Revisions?.Any() != null)
465+
if (layoutInfo.Revisions.Any(r => r.HashId == CurrentLayoutRevisionId))
440466
{
441-
var revision = layoutInfo.Revisions.First();
467+
var revision = layoutInfo.Revisions.First(r => r.HashId == CurrentLayoutRevisionId);
442468

443469
KeyboardModel = GetKeyBoardDescription(_keyboardGeometry, revision.Model);
444470
UpdateLayoutButtons(revision);
@@ -490,14 +516,12 @@ private async Task UpdateLayout()
490516
{
491517
Logger.TraceMethod();
492518

493-
var layoutHashId = ExtractLayoutHashId(LayoutUrlContent);
494-
495519
try
496520
{
497-
var ergodoxLayout = await _layoutService.GetErgodoxLayout(layoutHashId);
521+
var ergodoxLayout = await _layoutService.GetErgodoxLayout(CurrentLayoutHashId);
498522
Logger.Debug("ergodoxLayout = {@value0}", ergodoxLayout);
499523

500-
var ezLayout = _layoutService.PrepareEZLayout(ergodoxLayout);
524+
var ezLayout = _layoutService.PrepareEZLayout(ergodoxLayout, CurrentLayoutRevisionId);
501525
Logger.Debug("ezLayout = {@value0}", ezLayout);
502526

503527
_settingsService.EZLayout = ezLayout;
@@ -514,26 +538,33 @@ private async Task UpdateLayout()
514538
}
515539
}
516540

517-
private string ExtractLayoutHashId(string layoutUrl)
541+
private (string layoutHashId, string layoutRevisionId) ExtractLayoutUrlIds(string layoutUrl)
518542
{
519543
Logger.TraceMethod();
520544

521545
var layoutHashIdGroupName = "layoutHashId";
522-
var pattern = $"https://configure.ergodox-ez.com/(?:ergodox|planck)-ez/layouts/(?<{layoutHashIdGroupName}>default|[a-zA-Z0-9]{{4,}})(?:/latest/[0-9])?";
546+
var layoutRevisionIdGroupName = "layoutRevisionId";
547+
var pattern =
548+
$"https://configure.ergodox-ez.com/(?:ergodox|planck)-ez/layouts/(?<{layoutHashIdGroupName}>default|[a-zA-Z0-9]{{4,}})(?:/(?<{layoutRevisionIdGroupName}>latest|[a-zA-Z0-9]+)(?:/[0-9]{{1,2}})?)?";
523549
var layoutHashId = "default";
550+
var layoutRevisionId = "latest";
524551

525552
var regex = new Regex(pattern);
526553
var match = regex.Match(layoutUrl);
527554

528555
if (match.Success)
529556
{
530557
layoutHashId = match.Groups[layoutHashIdGroupName].Value;
558+
559+
var revisionId = match.Groups[layoutRevisionIdGroupName].Value;
560+
layoutRevisionId = string.IsNullOrWhiteSpace(revisionId) ? layoutRevisionId : revisionId;
531561
}
532562

533563
Logger.Debug("Layout URL = {0}", layoutUrl);
534564
Logger.Debug("Layout Hash ID = {0}", layoutHashId);
565+
Logger.Debug("Layout Revision ID = {0}", layoutRevisionId);
535566

536-
return layoutHashId;
567+
return (layoutHashId, layoutRevisionId);
537568
}
538569

539570
#endregion

‎src/InvvardDev.EZLayoutDisplay.Tests/Helper/EZLayoutMakerTest.cs

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ namespace InvvardDev.EZLayoutDisplay.Tests.Helper
1010
{
1111
public class EZLayoutMakerTest
1212
{
13+
private const string HashId = "hashid-1";
14+
1315
private static ErgodoxLayout InitializeDataTree()
1416
{
1517
return new ErgodoxLayout
@@ -18,7 +20,7 @@ private static ErgodoxLayout InitializeDataTree()
1820
HashId = "",
1921
Revisions = new List<Revision>
2022
{
21-
new Revision { Layers = new List<ErgodoxLayer> { new ErgodoxLayer() { Color = "", Title = "", Position = 0, Keys = new List<ErgodoxKey>() } } }
23+
new Revision { HashId = HashId, Layers = new List<ErgodoxLayer> { new ErgodoxLayer() { Color = "", Title = "", Position = 0, Keys = new List<ErgodoxKey>() } } }
2224
}
2325
};
2426
}
@@ -29,13 +31,13 @@ public void PrepareEZLayout_InitializeEZLayout(string expectedTitle, string expe
2931
{
3032
// Arrange
3133
var revision = new Revision { Layers = new List<ErgodoxLayer>() };
32-
ErgodoxLayout ergodoxLayout = new ErgodoxLayout { Title = expectedTitle, HashId = expectedHashId, Revisions = new List<Revision>() };
34+
ErgodoxLayout ergodoxLayout = new ErgodoxLayout { Title = expectedTitle, HashId = expectedHashId, Revisions = new List<Revision> { new Revision { HashId = HashId } } };
3335
ergodoxLayout.Revisions.Add(revision);
3436
EZLayout ezLayoutResult;
3537

3638
// Act
3739
var ezLayoutMaker = new EZLayoutMaker();
38-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
40+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
3941

4042
// Assert
4143
Assert.Equal(expectedTitle, ezLayoutResult.Name);
@@ -48,13 +50,16 @@ public void PrepareEZLayout_InitializeEZLayer(int expectedIndex, string expected
4850
{
4951
// Arrange
5052
var ergodoxLayer = new ErgodoxLayer() { Color = expectedColor, Title = expectedTitle, Position = expectedIndex, Keys = new List<ErgodoxKey>() };
51-
ErgodoxLayout ergodoxLayout = new ErgodoxLayout { Title = "", HashId = "", Revisions = new List<Revision> { new Revision { Layers = new List<ErgodoxLayer> { ergodoxLayer } } } };
53+
ErgodoxLayout ergodoxLayout = new ErgodoxLayout
54+
{
55+
Title = "", HashId = "", Revisions = new List<Revision> { new Revision { HashId = HashId, Layers = new List<ErgodoxLayer> { ergodoxLayer } } }
56+
};
5257

5358
EZLayout ezLayoutResult;
5459

5560
// Act
5661
var ezLayoutMaker = new EZLayoutMaker();
57-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
62+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
5863

5964
// Assert
6065
Assert.Single(ezLayoutResult.EZLayers);
@@ -75,13 +80,16 @@ public void PrepareEZLayout_ColorKey(string layerColor, string keyColor, string
7580
{
7681
// Arrange
7782
var ergodoxLayer = new ErgodoxLayer { Color = layerColor, Keys = new List<ErgodoxKey> { new ErgodoxKey { GlowColor = keyColor } } };
78-
ErgodoxLayout ergodoxLayout = new ErgodoxLayout { Title = "", HashId = "", Revisions = new List<Revision> { new Revision { Layers = new List<ErgodoxLayer> { ergodoxLayer } } } };
83+
ErgodoxLayout ergodoxLayout = new ErgodoxLayout
84+
{
85+
Title = "", HashId = "", Revisions = new List<Revision> { new Revision { HashId = HashId, Layers = new List<ErgodoxLayer> { ergodoxLayer } } }
86+
};
7987

8088
EZLayout ezLayoutResult;
8189

8290
// Act
8391
var ezLayoutMaker = new EZLayoutMaker();
84-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
92+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
8593

8694
// Assert
8795
Assert.Equal(expectedColor, ezLayoutResult.EZLayers.First().EZKeys.First().Color);
@@ -99,7 +107,7 @@ public void PrepareEZLayout_KeyCodeUnknown()
99107

100108
// Act
101109
var ezLayoutMaker = new EZLayoutMaker();
102-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
110+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
103111

104112
// Assert
105113
Assert.Single(ezLayoutResult.EZLayers);
@@ -121,7 +129,7 @@ public void PrepareEZLayout_InitializeEZKey(string expectedKeyCode, string expec
121129

122130
// Act
123131
var ezLayoutMaker = new EZLayoutMaker();
124-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
132+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
125133

126134
// Assert
127135
Assert.Single(ezLayoutResult.EZLayers);
@@ -157,7 +165,7 @@ public void PrepareEZLayout_KeyCategoryWithSimpleLabel(string keyCode, string ex
157165

158166
// Act
159167
var ezLayoutMaker = new EZLayoutMaker();
160-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
168+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
161169

162170
// Assert
163171
Assert.Single(ezLayoutResult.EZLayers);
@@ -183,7 +191,7 @@ public void PrepareEZLayout_KeyCategoryOSM(string keyCode, string command, strin
183191

184192
// Act
185193
var ezLayoutMaker = new EZLayoutMaker();
186-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
194+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
187195

188196
// Assert
189197
Assert.Single(ezLayoutResult.EZLayers);
@@ -223,7 +231,7 @@ public void PrepareEZLayout_KeyCategoryLayer(string keyCode, string expectedLabe
223231

224232
// Act
225233
var ezLayoutMaker = new EZLayoutMaker();
226-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
234+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
227235

228236
// Assert
229237
Assert.Single(ezLayoutResult.EZLayers);
@@ -252,7 +260,7 @@ public void PrepareEZLayout_KeyCategoryLayerShortcut(string keyCode,
252260

253261
// Act
254262
var ezLayoutMaker = new EZLayoutMaker();
255-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
263+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
256264

257265
// Assert
258266
Assert.Single(ezLayoutResult.EZLayers);
@@ -294,7 +302,7 @@ public void PrepareEZLayout_KeyCategoryWithGlyphs(string keyCode, string expecte
294302

295303
// Act
296304
var ezLayoutMaker = new EZLayoutMaker();
297-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
305+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
298306

299307
// Assert
300308
Assert.Single(ezLayoutResult.EZLayers);
@@ -325,7 +333,7 @@ public void PrepareEZLayout_KeyCategoryDualFunction(string keyCode,
325333

326334
// Act
327335
var ezLayoutMaker = new EZLayoutMaker();
328-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
336+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
329337

330338
// Assert
331339
Assert.Single(ezLayoutResult.EZLayers);
@@ -359,7 +367,7 @@ public void PrepareEZLayout_KeyCategoryShortcuts(string keyCode, string command,
359367

360368
// Act
361369
var ezLayoutMaker = new EZLayoutMaker();
362-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
370+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
363371

364372
// Assert
365373
Assert.Single(ezLayoutResult.EZLayers);
@@ -428,7 +436,7 @@ public void PrepareEZLayout_ProcessModifiers(bool leftAlt,
428436

429437
// Act
430438
var ezLayoutMaker = new EZLayoutMaker();
431-
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);
439+
ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout, HashId);
432440

433441
// Assert
434442
Assert.Single(ezLayoutResult.EZLayers);

‎src/InvvardDev.EZLayoutDisplay.Tests/Service/LayoutServiceTest.cs

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-

2-
using System;
1+
using System;
32
using System.Collections.Generic;
43
using System.Linq;
54
using System.Threading.Tasks;
@@ -20,6 +19,7 @@ private static ErgodoxLayout InitializeDataTree()
2019
HashId = "",
2120
Revisions = new List<Revision> {
2221
new Revision {
22+
HashId = "hashId-1",
2323
Layers = new List<ErgodoxLayer> {
2424
new ErgodoxLayer() {
2525
Color = "",
@@ -45,8 +45,14 @@ public async Task GetLayoutInfo(string layoutHashId, bool exist)
4545
// Act
4646
ErgodoxLayout response = null;
4747

48-
if (exist) { response = await layoutService.GetLayoutInfo(layoutHashId); }
49-
else { await Assert.ThrowsAsync<ArgumentException>(() => layoutService.GetLayoutInfo(layoutHashId)); }
48+
if (exist)
49+
{
50+
response = await layoutService.GetLayoutInfo(layoutHashId);
51+
}
52+
else
53+
{
54+
await Assert.ThrowsAsync<ArgumentException>(() => layoutService.GetLayoutInfo(layoutHashId));
55+
}
5056

5157
// Assert
5258
if (exist)
@@ -71,8 +77,14 @@ public async Task GetErgodoxLayout(string layoutHashId, bool exist)
7177
// Act
7278
ErgodoxLayout response = null;
7379

74-
if (exist) { response = await layoutService.GetErgodoxLayout(layoutHashId); }
75-
else { await Assert.ThrowsAsync<ArgumentException>(() => layoutService.GetErgodoxLayout(layoutHashId)); }
80+
if (exist)
81+
{
82+
response = await layoutService.GetErgodoxLayout(layoutHashId);
83+
}
84+
else
85+
{
86+
await Assert.ThrowsAsync<ArgumentException>(() => layoutService.GetErgodoxLayout(layoutHashId));
87+
}
7688

7789
// Assert
7890
if (exist)
@@ -107,7 +119,7 @@ public void PrepareEZLayout_OneLayer_ManyKeys()
107119
EZLayout ezLayoutResult;
108120

109121
// Act
110-
ezLayoutResult = layoutService.PrepareEZLayout(ergodoxLayout);
122+
ezLayoutResult = layoutService.PrepareEZLayout(ergodoxLayout, ergodoxLayout.Revisions.First().HashId);
111123

112124
// Assert
113125
Assert.Single(ezLayoutResult.EZLayers);
@@ -161,7 +173,7 @@ public void PrepareEZLayout_TwoLayer_ManyKeys()
161173
EZLayout ezLayoutResult;
162174

163175
// Act
164-
ezLayoutResult = layoutService.PrepareEZLayout(ergodoxLayout);
176+
ezLayoutResult = layoutService.PrepareEZLayout(ergodoxLayout, ergodoxLayout.Revisions.First().HashId);
165177

166178
// Assert
167179
Assert.Equal(2, ezLayoutResult.EZLayers.Count);
@@ -183,16 +195,14 @@ public void PrepareEZLayout_TwoLayer_ManyKeys()
183195
Assert.Equal(KeyCategory.Spacing, layer1KeyResults[1].KeyCategory);
184196
}
185197

186-
[Fact]
198+
[ Fact ]
187199
public async Task GetErgodoxLayout_HashIdNull()
188200
{
189201
// Arrange
190202
ILayoutService layoutService = new LayoutService();
191203

192204
// Act
193205
await Assert.ThrowsAsync<ArgumentNullException>(() => layoutService.GetErgodoxLayout(""));
194-
195-
// Assert
196206
}
197207
}
198208
}

‎src/InvvardDev.EZLayoutDisplay.Tests/ViewModel/SettingsViewModelTest.cs

Lines changed: 556 additions & 545 deletions
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
22
<s:String x:Key="/Default/FilterSettingsManager/AttributeFilterXml/@EntryValue">&lt;data /&gt;</s:String>
3-
<s:String x:Key="/Default/FilterSettingsManager/CoverageFilterXml/@EntryValue">&lt;data&gt;&lt;IncludeFilters /&gt;&lt;ExcludeFilters&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.ViewModel.ViewModelLocator" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.View.*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Model.Enum.*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Design.*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="XamlGeneratedNamespace.*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Properties.*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Model.Service.Implementation.ApplicationService" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Model.Service.Implementation.SettingsService" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Model.Service.Implementation.WindowService" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Model.Dictionary.*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Model.Service.Implementation.KeyboardHookService" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Tests" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Service.Implementation.ApplicationService" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Service.Implementation.SettingsService" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Service.Implementation.WindowService" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Service.Implementation.KeyboardHookService" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Service.Design.*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.App" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.ViewModel.DisplayLayoutViewModel" FunctionMask="LoadDesignTimeModel" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Model.KeyCategoryDetail" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="*" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="False" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Console" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Service.Implementation.LayoutService" FunctionMask="GetLayoutTemplate" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Service.Implementation.LayoutService" FunctionMask="ReadLayoutDefinition" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Model.Hotkey" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Helper.KeyContentTemplateSelector" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.ViewModel.DisplayLayoutViewModel" FunctionMask="LoadCompleteLayout" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Service.Implementation.ProcessService" FunctionMask="*" IsEnabled="True" /&gt;&lt;/ExcludeFilters&gt;&lt;/data&gt;</s:String>
3+
<s:String x:Key="/Default/FilterSettingsManager/CoverageFilterXml/@EntryValue">&lt;data&gt;&lt;IncludeFilters /&gt;&lt;ExcludeFilters&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.ViewModel.ViewModelLocator" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.View.*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Model.Enum.*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Design.*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="XamlGeneratedNamespace.*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Properties.*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Model.Service.Implementation.ApplicationService" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Model.Service.Implementation.SettingsService" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Model.Service.Implementation.WindowService" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Model.Dictionary.*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Model.Service.Implementation.KeyboardHookService" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Tests" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Service.Implementation.ApplicationService" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Service.Implementation.SettingsService" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Service.Implementation.WindowService" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Service.Implementation.KeyboardHookService" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Service.Design.*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.App" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.ViewModel.DisplayLayoutViewModel" FunctionMask="LoadDesignTimeModel" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Model.KeyCategoryDetail" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="*" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="False" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Console" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Service.Implementation.LayoutService" FunctionMask="GetLayoutTemplate" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Service.Implementation.LayoutService" FunctionMask="ReadLayoutDefinition" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Model.Hotkey" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Helper.KeyContentTemplateSelector" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.ViewModel.DisplayLayoutViewModel" FunctionMask="LoadCompleteLayout" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.Service.Implementation.ProcessService" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="InvvardDev.EZLayoutDisplay.Desktop" ModuleVersionMask="*" ClassMask="InvvardDev.EZLayoutDisplay.Desktop.ViewModel.SettingsViewModel" FunctionMask="SetDesignTimeLabelUi" IsEnabled="True" /&gt;&lt;/ExcludeFilters&gt;&lt;/data&gt;</s:String>
44
<s:Boolean x:Key="/Default/UserDictionary/Words/=hotkey/@EntryIndexedValue">True</s:Boolean>
55
<s:Boolean x:Key="/Default/UserDictionary/Words/=Invvard/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

0 commit comments

Comments
 (0)
This repository has been archived.