|
1 | | -using System; |
| 1 | +using EmptyKeys.UserInterface.Designer; |
| 2 | +using System; |
2 | 3 | using System.CodeDom; |
3 | | -using System.Collections; |
4 | 4 | using System.Collections.Generic; |
5 | 5 | using System.ComponentModel; |
6 | 6 | using System.IO; |
7 | | -using System.Linq; |
8 | 7 | using System.Reflection; |
9 | | -using System.Text; |
10 | | -using System.Threading.Tasks; |
11 | 8 | using System.Windows; |
12 | 9 | using System.Windows.Controls; |
13 | 10 | using System.Windows.Controls.Primitives; |
|
16 | 13 | using System.Windows.Media; |
17 | 14 | using System.Windows.Media.Animation; |
18 | 15 | using System.Windows.Media.Imaging; |
19 | | -using EmptyKeys.UserInterface.Designer; |
20 | | -using EmptyKeys.UserInterface.Designer.Interactions; |
21 | 16 |
|
22 | 17 | namespace EmptyKeys.UserInterface.Generator |
23 | 18 | { |
@@ -89,6 +84,7 @@ static CodeComHelper() |
89 | 84 | ignoredProperties.Add("IsSelectionActive"); |
90 | 85 | ignoredProperties.Add("XmlSpace"); |
91 | 86 | ignoredProperties.Add("DataType"); |
| 87 | + ignoredProperties.Add("DataTypeString"); |
92 | 88 | ignoredProperties.Add("Mode"); |
93 | 89 | } |
94 | 90 |
|
@@ -574,7 +570,12 @@ public static CodeExpression GenerateBitmapImageValue(CodeMemberMethod method, U |
574 | 570 | } |
575 | 571 |
|
576 | 572 | string extension = Path.GetExtension(imageAsset); |
577 | | - imageAsset = imageAsset.Replace(extension, string.Empty).TrimStart(Path.DirectorySeparatorChar, '/'); |
| 573 | + if (!ImageAssets.Instance.GenerateWithExtensions) |
| 574 | + { |
| 575 | + imageAsset = imageAsset.Replace(extension, string.Empty); |
| 576 | + } |
| 577 | + |
| 578 | + imageAsset = imageAsset.TrimStart(Path.DirectorySeparatorChar, '/'); |
578 | 579 |
|
579 | 580 | CodeVariableDeclarationStatement bitmapVariable = new CodeVariableDeclarationStatement( |
580 | 581 | "BitmapImage", variableName, |
@@ -975,7 +976,7 @@ public static void GenerateAttachedProperties(CodeMemberMethod method, CodeExpre |
975 | 976 | new CodePrimitiveExpression(valueColor.G), |
976 | 977 | new CodePrimitiveExpression(valueColor.B), |
977 | 978 | new CodePrimitiveExpression(valueColor.A))); |
978 | | - method.Statements.Add(setValue); |
| 979 | + method.Statements.Add(setValue); |
979 | 980 | } |
980 | 981 | else |
981 | 982 | { |
@@ -1194,12 +1195,84 @@ public static void GenerateTriggers(CodeTypeDeclaration parentClass, CodeMemberM |
1194 | 1195 | continue; |
1195 | 1196 | } |
1196 | 1197 |
|
| 1198 | + MultiTrigger multiTrigger = triggerBase as MultiTrigger; |
| 1199 | + if (multiTrigger != null) |
| 1200 | + { |
| 1201 | + GenerateMultiTrigger(parentClass, method, variableName, targetType, triggerIndex, multiTrigger); |
| 1202 | + triggerIndex++; |
| 1203 | + continue; |
| 1204 | + } |
| 1205 | + |
1197 | 1206 | string errorText = string.Format("Trigger type {0} not supported.", triggerBase.GetType().Name); |
1198 | 1207 | Console.WriteLine(errorText); |
1199 | 1208 | GenerateError(method, errorText); |
1200 | 1209 | } |
1201 | 1210 | } |
1202 | 1211 |
|
| 1212 | + private static void GenerateMultiTrigger(CodeTypeDeclaration parentClass, CodeMemberMethod method, string parentName, Type targetType, int triggerIndex, MultiTrigger trigger) |
| 1213 | + { |
| 1214 | + string triggerVarName = parentName + "_MT_" + triggerIndex; |
| 1215 | + CodeVariableDeclarationStatement triggerVar = |
| 1216 | + new CodeVariableDeclarationStatement("MultiTrigger", triggerVarName, new CodeObjectCreateExpression("MultiTrigger")); |
| 1217 | + method.Statements.Add(triggerVar); |
| 1218 | + |
| 1219 | + for (int i = 0; i < trigger.Conditions.Count; i++) |
| 1220 | + { |
| 1221 | + var condition = trigger.Conditions[i]; |
| 1222 | + string conditionVarName = triggerVarName + "_C_" + i; |
| 1223 | + CodeVariableDeclarationStatement conditionVar = |
| 1224 | + new CodeVariableDeclarationStatement("TriggerCondition", conditionVarName, new CodeObjectCreateExpression("TriggerCondition")); |
| 1225 | + method.Statements.Add(conditionVar); |
| 1226 | + |
| 1227 | + CodeAssignStatement triggerProperty = new CodeAssignStatement( |
| 1228 | + new CodeFieldReferenceExpression(new CodeVariableReferenceExpression(conditionVarName), "Property"), |
| 1229 | + new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(targetType.Name), condition.Property.Name + "Property")); |
| 1230 | + method.Statements.Add(triggerProperty); |
| 1231 | + |
| 1232 | + CodeExpression triggerValueExpr = GetValueExpression(parentClass, method, condition.Value, conditionVarName); |
| 1233 | + |
| 1234 | + CodeAssignStatement triggerValue = new CodeAssignStatement( |
| 1235 | + new CodeFieldReferenceExpression(new CodeVariableReferenceExpression(conditionVarName), "Value"), |
| 1236 | + triggerValueExpr); |
| 1237 | + method.Statements.Add(triggerValue); |
| 1238 | + |
| 1239 | + CodeMethodInvokeExpression addCondition = new CodeMethodInvokeExpression( |
| 1240 | + new CodeVariableReferenceExpression(triggerVarName), "Conditions.Add", new CodeVariableReferenceExpression(conditionVarName)); |
| 1241 | + method.Statements.Add(addCondition); |
| 1242 | + } |
| 1243 | + |
| 1244 | + |
| 1245 | + int setterIndex = 0; |
| 1246 | + foreach (var setterBase in trigger.Setters) |
| 1247 | + { |
| 1248 | + Setter setter = setterBase as Setter; |
| 1249 | + if (setter != null) |
| 1250 | + { |
| 1251 | + string setterVarName = triggerVarName + "_S_" + setterIndex; |
| 1252 | + |
| 1253 | + GenerateSetter(parentClass, method, targetType, setter, setterVarName); |
| 1254 | + |
| 1255 | + CodeMethodInvokeExpression addSetter = new CodeMethodInvokeExpression( |
| 1256 | + new CodeVariableReferenceExpression(triggerVarName), "Setters.Add", new CodeVariableReferenceExpression(setterVarName)); |
| 1257 | + method.Statements.Add(addSetter); |
| 1258 | + |
| 1259 | + setterIndex++; |
| 1260 | + } |
| 1261 | + else |
| 1262 | + { |
| 1263 | + string errorText = string.Format("Setter type {0} not supported.", setterBase.GetType().Name); |
| 1264 | + Console.WriteLine(errorText); |
| 1265 | + |
| 1266 | + CodeSnippetStatement error = new CodeSnippetStatement("#error " + errorText); |
| 1267 | + method.Statements.Add(error); |
| 1268 | + } |
| 1269 | + } |
| 1270 | + |
| 1271 | + CodeMethodInvokeExpression addTrigger = new CodeMethodInvokeExpression( |
| 1272 | + new CodeVariableReferenceExpression(parentName), "Triggers.Add", new CodeVariableReferenceExpression(triggerVarName)); |
| 1273 | + method.Statements.Add(addTrigger); |
| 1274 | + } |
| 1275 | + |
1203 | 1276 | private static void GenerateTrigger(CodeTypeDeclaration parentClass, CodeMemberMethod method, string parentName, Type targetType, int triggerIndex, Trigger trigger) |
1204 | 1277 | { |
1205 | 1278 | string triggerVarName = parentName + "_T_" + triggerIndex; |
@@ -1265,7 +1338,7 @@ public static void GenerateSetter(CodeTypeDeclaration parentClass, CodeMemberMet |
1265 | 1338 | { |
1266 | 1339 | setterValue = Convert.ToSingle(setterValue); // TODO maybe there is better solution for this |
1267 | 1340 | } |
1268 | | - |
| 1341 | + |
1269 | 1342 | CodeExpression setterValueExpr = GetValueExpression(parentClass, method, setterValue, setterVarName); |
1270 | 1343 | if (setterValueExpr != null) |
1271 | 1344 | { |
|
0 commit comments