From 58305ca59fc5dffce7491afd24ef9db5b607ebfb Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sat, 7 May 2016 10:30:05 -0700 Subject: [PATCH] Update OmniXAML --- .gitmodules | 3 ++ Perspex.sln | 3 -- .../Context/PerspexObjectAssembler.cs | 21 +++++++++++++- .../MarkupExtensions/StaticExtension.cs | 2 +- .../MarkupExtensions/TypeExtension.cs | 2 +- src/Markup/Perspex.Markup.Xaml/OmniXAML | 2 +- .../Perspex.Markup.Xaml.csproj | 28 ++++++++++++------- src/Markup/Perspex.Markup.Xaml/glass | 1 + .../Perspex.Markup.Xaml/packages.config | 1 + 9 files changed, 46 insertions(+), 17 deletions(-) create mode 160000 src/Markup/Perspex.Markup.Xaml/glass diff --git a/.gitmodules b/.gitmodules index 057007f213..daef52a069 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,3 +8,6 @@ [submodule "src/Markup/Perspex.Markup.Xaml/OmniXAML"] path = src/Markup/Perspex.Markup.Xaml/OmniXAML url = https://github.com/Perspex/OmniXAML.git +[submodule "src/Markup/Perspex.Markup.Xaml/glass"] + path = src/Markup/Perspex.Markup.Xaml/glass + url = https://github.com/SuperJMN/glass diff --git a/Perspex.sln b/Perspex.sln index 62c59b8aed..c081e1ed22 100644 --- a/Perspex.sln +++ b/Perspex.sln @@ -60,9 +60,6 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Perspex.Markup.Xaml", "src\Markup\Perspex.Markup.Xaml\Perspex.Markup.Xaml.csproj", "{3E53A01A-B331-47F3-B828-4A5717E77A24}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{9B9E3891-2366-4253-A952-D08BCEB71098}" - ProjectSection(SolutionItems) = preProject - samples\ControlCatalog\ControlCatalog.csproj = samples\ControlCatalog\ControlCatalog.csproj - EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestApplication", "samples\TestApplication\TestApplication.csproj", "{E3A1060B-50D0-44E8-88B6-F44EF2E5BD72}" ProjectSection(ProjectDependencies) = postProject diff --git a/src/Markup/Perspex.Markup.Xaml/Context/PerspexObjectAssembler.cs b/src/Markup/Perspex.Markup.Xaml/Context/PerspexObjectAssembler.cs index d8f40b3fe4..7e4320be93 100644 --- a/src/Markup/Perspex.Markup.Xaml/Context/PerspexObjectAssembler.cs +++ b/src/Markup/Perspex.Markup.Xaml/Context/PerspexObjectAssembler.cs @@ -7,6 +7,8 @@ using OmniXaml.ObjectAssembler; using OmniXaml.ObjectAssembler.Commands; using OmniXaml.TypeConversion; using Perspex.Markup.Xaml.Templates; +using System.Collections.Generic; +using System.Collections.ObjectModel; namespace Perspex.Markup.Xaml.Context { @@ -27,7 +29,8 @@ namespace Perspex.Markup.Xaml.Context mapping.Map(x => x.Content, new TemplateLoader()); mapping.Map(x => x.Content, new TemplateLoader()); - var valueContext = new ValueContext(typeSource, topDownValueContext); + var parsingDictionary = GetDictionary(settings); + var valueContext = new ValueContext(typeSource, topDownValueContext, parsingDictionary); assembler = new ObjectAssembler(typeSource, valueContext, settings); objectAssembler = new TemplateHostingObjectAssembler(assembler, mapping); } @@ -55,5 +58,21 @@ namespace Perspex.Markup.Xaml.Context { objectAssembler.OverrideInstance(instance); } + + private static IReadOnlyDictionary GetDictionary(Settings settings) + { + IReadOnlyDictionary dict; + + if (settings != null) + { + dict = settings.ParsingContext; + } + else + { + dict = new ReadOnlyDictionary(new Dictionary()); + } + + return dict; + } } } \ No newline at end of file diff --git a/src/Markup/Perspex.Markup.Xaml/MarkupExtensions/StaticExtension.cs b/src/Markup/Perspex.Markup.Xaml/MarkupExtensions/StaticExtension.cs index 11b0296d1e..ff01f8a461 100644 --- a/src/Markup/Perspex.Markup.Xaml/MarkupExtensions/StaticExtension.cs +++ b/src/Markup/Perspex.Markup.Xaml/MarkupExtensions/StaticExtension.cs @@ -24,7 +24,7 @@ namespace Perspex.Markup.Xaml.MarkupExtensions public override object ProvideValue(MarkupExtensionContext markupExtensionContext) { - var typeRepository = markupExtensionContext.TypeRepository; + var typeRepository = markupExtensionContext.ValueContext.TypeRepository; var typeAndMember = GetTypeAndMember(Identifier); var prefixAndType = GetPrefixAndType(typeAndMember.Item1); var xamlType = typeRepository.GetByPrefix(prefixAndType.Item1, prefixAndType.Item2); diff --git a/src/Markup/Perspex.Markup.Xaml/MarkupExtensions/TypeExtension.cs b/src/Markup/Perspex.Markup.Xaml/MarkupExtensions/TypeExtension.cs index 83d951fece..65373e55cb 100644 --- a/src/Markup/Perspex.Markup.Xaml/MarkupExtensions/TypeExtension.cs +++ b/src/Markup/Perspex.Markup.Xaml/MarkupExtensions/TypeExtension.cs @@ -43,7 +43,7 @@ namespace Perspex.Markup.Xaml.MarkupExtensions return Type; } - return ResolveFromString(TypeName, markupExtensionContext.TypeRepository); + return ResolveFromString(TypeName, markupExtensionContext.ValueContext.TypeRepository); } } } \ No newline at end of file diff --git a/src/Markup/Perspex.Markup.Xaml/OmniXAML b/src/Markup/Perspex.Markup.Xaml/OmniXAML index 75e0dc32fe..b122549406 160000 --- a/src/Markup/Perspex.Markup.Xaml/OmniXAML +++ b/src/Markup/Perspex.Markup.Xaml/OmniXAML @@ -1 +1 @@ -Subproject commit 75e0dc32fe9a6d97f5b59d2b7d689db2475f444f +Subproject commit b122549406107170bbe6e67c0d6a1a4252beef77 diff --git a/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj b/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj index 0c003e4f75..cb5ec505ac 100644 --- a/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj +++ b/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj @@ -81,22 +81,22 @@ + + + + + + + + + + - - - - - - - - - - @@ -275,6 +275,7 @@ + @@ -316,6 +317,10 @@ + + ..\..\..\packages\Glass.1.6.0.113\lib\portable45-net45+win8\Glass.dll + True + ..\..\..\packages\Sprache.2.0.0.50\lib\portable-net4+netcore45+win8+wp8+sl5+MonoAndroid+Xamarin.iOS10+MonoTouch\Sprache.dll True @@ -333,6 +338,9 @@ ..\..\..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll + + +