@@ -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 }
0 commit comments