Skip to content

Commit b63c4a4

Browse files
committed
Version 3.2
1 parent 8f03721 commit b63c4a4

16 files changed

Lines changed: 245 additions & 64 deletions

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,3 +172,7 @@ UpgradeLog*.htm
172172

173173
# Microsoft Fakes
174174
FakesAssemblies/
175+
.vs/EmptyKeys.UserInterface.Generator/v15/Server/sqlite3/db.lock
176+
.vs/EmptyKeys.UserInterface.Generator/v15/Server/sqlite3/storage.ide
177+
.vs/EmptyKeys.UserInterface.Generator/v15/Server/sqlite3/storage.ide-shm
178+
.vs/EmptyKeys.UserInterface.Generator/v15/Server/sqlite3/storage.ide-wal

EmptyKeys.UserInterface.Designer/EmptyKeys.UserInterface.Designer.csproj

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@
99
<AppDesignerFolder>Properties</AppDesignerFolder>
1010
<RootNamespace>EmptyKeys.UserInterface.Designer</RootNamespace>
1111
<AssemblyName>EmptyKeys.UserInterface.Designer</AssemblyName>
12-
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
12+
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
1313
<FileAlignment>512</FileAlignment>
1414
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
1515
<WarningLevel>4</WarningLevel>
1616
<SccProjectName>SAK</SccProjectName>
1717
<SccLocalPath>SAK</SccLocalPath>
1818
<SccAuxPath>SAK</SccAuxPath>
1919
<SccProvider>SAK</SccProvider>
20+
<TargetFrameworkProfile />
2021
</PropertyGroup>
2122
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
2223
<DebugSymbols>true</DebugSymbols>
@@ -35,6 +36,24 @@
3536
<ErrorReport>prompt</ErrorReport>
3637
<WarningLevel>4</WarningLevel>
3738
</PropertyGroup>
39+
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
40+
<DebugSymbols>true</DebugSymbols>
41+
<OutputPath>bin\x64\Debug\</OutputPath>
42+
<DefineConstants>DEBUG;TRACE</DefineConstants>
43+
<DebugType>full</DebugType>
44+
<PlatformTarget>x64</PlatformTarget>
45+
<ErrorReport>prompt</ErrorReport>
46+
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
47+
</PropertyGroup>
48+
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
49+
<OutputPath>bin\x64\Release\</OutputPath>
50+
<DefineConstants>TRACE</DefineConstants>
51+
<Optimize>true</Optimize>
52+
<DebugType>pdbonly</DebugType>
53+
<PlatformTarget>x64</PlatformTarget>
54+
<ErrorReport>prompt</ErrorReport>
55+
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
56+
</PropertyGroup>
3857
<ItemGroup>
3958
<Reference Include="System" />
4059
<Reference Include="System.Data" />

EmptyKeys.UserInterface.Designer/GeneratedBindings.cs

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ public static void SetDataType(DependencyObject obj, Type value)
4141
obj.SetValue(DataTypeProperty, value);
4242
}
4343

44-
4544
/// <summary>
4645
/// The mode property
4746
/// </summary>
@@ -67,6 +66,33 @@ public static GeneratedBindingsMode GetMode(DependencyObject obj)
6766
public static void SetMode(DependencyObject obj, GeneratedBindingsMode value)
6867
{
6968
obj.SetValue(ModeProperty, value);
70-
}
69+
}
70+
71+
/// <summary>
72+
/// The data type string property (assembly;full typename)
73+
/// </summary>
74+
public static readonly DependencyProperty DataTypeStringProperty =
75+
DependencyProperty.RegisterAttached("DataTypeString", typeof(string), typeOfThis,
76+
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.None));
77+
78+
/// <summary>
79+
/// Gets the type (string) of the data.
80+
/// </summary>
81+
/// <param name="obj">The object.</param>
82+
/// <returns></returns>
83+
public static string GetDataTypeString(DependencyObject obj)
84+
{
85+
return (string)obj.GetValue(DataTypeProperty);
86+
}
87+
88+
/// <summary>
89+
/// Sets the type (string) of the data.
90+
/// </summary>
91+
/// <param name="obj">The object.</param>
92+
/// <param name="value">The value.</param>
93+
public static void SetDataTypeString(DependencyObject obj, string value)
94+
{
95+
obj.SetValue(DataTypeProperty, value);
96+
}
7197
}
7298
}

EmptyKeys.UserInterface.Designer/Properties/Resources.Designer.cs

Lines changed: 4 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

EmptyKeys.UserInterface.Designer/Properties/Settings.Designer.cs

Lines changed: 6 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

GlobalAssemblyInfo.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
#endif
99

1010
[assembly: AssemblyCompany("Empty Keys")]
11-
[assembly: AssemblyCopyright("Copyright © 2016 Empty Keys, Filip Dušek")]
11+
[assembly: AssemblyCopyright("Copyright © 2019 Empty Keys, Filip Dušek")]
1212
[assembly: AssemblyTrademark("Empty Keys ™")]
1313

1414
[assembly: NeutralResourcesLanguage("en")]
1515

16-
[assembly: AssemblyVersion("3.0.0.0")]
17-
[assembly: AssemblyFileVersion("3.0.0.0")]
16+
[assembly: AssemblyVersion("3.2.0.0")]
17+
[assembly: AssemblyFileVersion("3.2.0.0")]

UIGenerator/CodeComHelper.cs

Lines changed: 83 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
1-
using System;
1+
using EmptyKeys.UserInterface.Designer;
2+
using System;
23
using System.CodeDom;
3-
using System.Collections;
44
using System.Collections.Generic;
55
using System.ComponentModel;
66
using System.IO;
7-
using System.Linq;
87
using System.Reflection;
9-
using System.Text;
10-
using System.Threading.Tasks;
118
using System.Windows;
129
using System.Windows.Controls;
1310
using System.Windows.Controls.Primitives;
@@ -16,8 +13,6 @@
1613
using System.Windows.Media;
1714
using System.Windows.Media.Animation;
1815
using System.Windows.Media.Imaging;
19-
using EmptyKeys.UserInterface.Designer;
20-
using EmptyKeys.UserInterface.Designer.Interactions;
2116

2217
namespace EmptyKeys.UserInterface.Generator
2318
{
@@ -89,6 +84,7 @@ static CodeComHelper()
8984
ignoredProperties.Add("IsSelectionActive");
9085
ignoredProperties.Add("XmlSpace");
9186
ignoredProperties.Add("DataType");
87+
ignoredProperties.Add("DataTypeString");
9288
ignoredProperties.Add("Mode");
9389
}
9490

@@ -574,7 +570,12 @@ public static CodeExpression GenerateBitmapImageValue(CodeMemberMethod method, U
574570
}
575571

576572
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, '/');
578579

579580
CodeVariableDeclarationStatement bitmapVariable = new CodeVariableDeclarationStatement(
580581
"BitmapImage", variableName,
@@ -975,7 +976,7 @@ public static void GenerateAttachedProperties(CodeMemberMethod method, CodeExpre
975976
new CodePrimitiveExpression(valueColor.G),
976977
new CodePrimitiveExpression(valueColor.B),
977978
new CodePrimitiveExpression(valueColor.A)));
978-
method.Statements.Add(setValue);
979+
method.Statements.Add(setValue);
979980
}
980981
else
981982
{
@@ -1194,12 +1195,84 @@ public static void GenerateTriggers(CodeTypeDeclaration parentClass, CodeMemberM
11941195
continue;
11951196
}
11961197

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+
11971206
string errorText = string.Format("Trigger type {0} not supported.", triggerBase.GetType().Name);
11981207
Console.WriteLine(errorText);
11991208
GenerateError(method, errorText);
12001209
}
12011210
}
12021211

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+
12031276
private static void GenerateTrigger(CodeTypeDeclaration parentClass, CodeMemberMethod method, string parentName, Type targetType, int triggerIndex, Trigger trigger)
12041277
{
12051278
string triggerVarName = parentName + "_T_" + triggerIndex;
@@ -1265,7 +1338,7 @@ public static void GenerateSetter(CodeTypeDeclaration parentClass, CodeMemberMet
12651338
{
12661339
setterValue = Convert.ToSingle(setterValue); // TODO maybe there is better solution for this
12671340
}
1268-
1341+
12691342
CodeExpression setterValueExpr = GetValueExpression(parentClass, method, setterValue, setterVarName);
12701343
if (setterValueExpr != null)
12711344
{

UIGenerator/EmptyKeys.UserInterface.Generator.csproj

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<AppDesignerFolder>Properties</AppDesignerFolder>
1010
<RootNamespace>EmptyKeys.UserInterface.Generator</RootNamespace>
1111
<AssemblyName>EmptyKeys.UserInterface.Generator</AssemblyName>
12-
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
12+
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
1313
<FileAlignment>512</FileAlignment>
1414
<SccProjectName>SAK</SccProjectName>
1515
<SccLocalPath>SAK</SccLocalPath>
@@ -37,6 +37,26 @@
3737
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
3838
<DocumentationFile>bin\Release\EmptyKeys.UserInterface.Generator.XML</DocumentationFile>
3939
</PropertyGroup>
40+
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
41+
<DebugSymbols>true</DebugSymbols>
42+
<OutputPath>bin\x64\Debug\</OutputPath>
43+
<DefineConstants>DEBUG;TRACE</DefineConstants>
44+
<DebugType>full</DebugType>
45+
<PlatformTarget>x64</PlatformTarget>
46+
<ErrorReport>prompt</ErrorReport>
47+
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
48+
</PropertyGroup>
49+
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
50+
<OutputPath>bin\x64\Release\</OutputPath>
51+
<DefineConstants>TRACE</DefineConstants>
52+
<DocumentationFile>bin\Release\EmptyKeys.UserInterface.Generator.XML</DocumentationFile>
53+
<Optimize>true</Optimize>
54+
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
55+
<DebugType>pdbonly</DebugType>
56+
<PlatformTarget>x64</PlatformTarget>
57+
<ErrorReport>prompt</ErrorReport>
58+
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
59+
</PropertyGroup>
4060
<ItemGroup>
4161
<Reference Include="PresentationCore" />
4262
<Reference Include="PresentationFramework" />

0 commit comments

Comments
 (0)