Browse Source

Merge branch 'locator'

pull/197/head
Nikita Tsukanov 11 years ago
parent
commit
3e0f4059cd
  1. 4
      samples/TestApplication/App.config
  2. 3
      samples/TestApplication/TestApplication.csproj
  3. 15
      samples/TestApplication/packages.config
  4. 7
      samples/XamlTestApplication/XamlTestApplication.csproj
  5. 2
      samples/XamlTestApplication/packages.config
  6. 7
      src/Gtk/Perspex.Cairo/CairoPlatform.cs
  7. 1
      src/Gtk/Perspex.Cairo/Media/FormattedTextImpl.cs
  8. 1
      src/Gtk/Perspex.Cairo/Media/StreamGeometryImpl.cs
  9. 3
      src/Gtk/Perspex.Cairo/Perspex.Cairo.csproj
  10. 7
      src/Gtk/Perspex.Cairo/packages.config
  11. 20
      src/Gtk/Perspex.Gtk/GtkPlatform.cs
  12. 3
      src/Gtk/Perspex.Gtk/Perspex.Gtk.csproj
  13. 7
      src/Gtk/Perspex.Gtk/packages.config
  14. 3
      src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs
  15. 3
      src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj
  16. 5
      src/Markup/Perspex.Markup.Xaml/PerspexXamlLoader.cs
  17. 1
      src/Markup/Perspex.Markup.Xaml/packages.config
  18. 22
      src/Perspex.Application/Application.cs
  19. 3
      src/Perspex.Application/Perspex.Application.csproj
  20. 1
      src/Perspex.Application/packages.config
  21. 4
      src/Perspex.Base/Perspex.Base.csproj
  22. 120
      src/Perspex.Base/PerspexLocator.cs
  23. 5
      src/Perspex.Base/Threading/DispatcherTimer.cs
  24. 3
      src/Perspex.Base/Threading/MainLoop.cs
  25. 1
      src/Perspex.Base/packages.config
  26. 3
      src/Perspex.Controls/Control.cs
  27. 18
      src/Perspex.Controls/MenuItem.cs
  28. 3
      src/Perspex.Controls/Perspex.Controls.csproj
  29. 3
      src/Perspex.Controls/Primitives/Popup.cs
  30. 5
      src/Perspex.Controls/Primitives/PopupRoot.cs
  31. 5
      src/Perspex.Controls/SystemDialog.cs
  32. 3
      src/Perspex.Controls/Templates/DataTemplateExtensions.cs
  33. 5
      src/Perspex.Controls/TextBox.cs
  34. 11
      src/Perspex.Controls/TopLevel.cs
  35. 3
      src/Perspex.Controls/Window.cs
  36. 1
      src/Perspex.Controls/packages.config
  37. 3
      src/Perspex.HtmlRenderer/Adapters/PerspexAdapter.cs
  38. 3
      src/Perspex.HtmlRenderer/Perspex.HtmlRenderer.csproj
  39. 1
      src/Perspex.HtmlRenderer/packages.config
  40. 3
      src/Perspex.Input/Cursors.cs
  41. 3
      src/Perspex.Input/FocusManager.cs
  42. 3
      src/Perspex.Input/InputManager.cs
  43. 7
      src/Perspex.Input/KeyboardDevice.cs
  44. 7
      src/Perspex.Input/MouseDevice.cs
  45. 3
      src/Perspex.Input/Perspex.Input.csproj
  46. 1
      src/Perspex.Input/packages.config
  47. 3
      src/Perspex.Interactivity/Perspex.Interactivity.csproj
  48. 1
      src/Perspex.Interactivity/packages.config
  49. 3
      src/Perspex.Layout/Perspex.Layout.csproj
  50. 1
      src/Perspex.Layout/packages.config
  51. 3
      src/Perspex.SceneGraph/Media/EllipseGeometry.cs
  52. 3
      src/Perspex.SceneGraph/Media/FormattedText.cs
  53. 7
      src/Perspex.SceneGraph/Media/Imaging/Bitmap.cs
  54. 3
      src/Perspex.SceneGraph/Media/Imaging/RenderTargetBitmap.cs
  55. 3
      src/Perspex.SceneGraph/Media/RectangleGeometry.cs
  56. 3
      src/Perspex.SceneGraph/Media/StreamGeometry.cs
  57. 3
      src/Perspex.SceneGraph/Perspex.SceneGraph.csproj
  58. 1
      src/Perspex.SceneGraph/packages.config
  59. 3
      src/Perspex.Styling/Perspex.Styling.csproj
  60. 3
      src/Perspex.Styling/Styling/Styler.cs
  61. 3
      src/Perspex.Themes.Default/Perspex.Themes.Default.csproj
  62. 1
      src/Perspex.Themes.Default/packages.config
  63. 7
      src/Shared/PlatformSupport/SharedPlatform.cs
  64. 14
      src/Windows/Perspex.Direct2D1/Direct2D1Platform.cs
  65. 3
      src/Windows/Perspex.Direct2D1/Media/FormattedTextImpl.cs
  66. 3
      src/Windows/Perspex.Direct2D1/Media/GeometryImpl.cs
  67. 5
      src/Windows/Perspex.Direct2D1/Media/StreamGeometryImpl.cs
  68. 3
      src/Windows/Perspex.Direct2D1/Perspex.Direct2D1.csproj
  69. 9
      src/Windows/Perspex.Direct2D1/Renderer.cs
  70. 1
      src/Windows/Perspex.Direct2D1/packages.config
  71. 3
      src/Windows/Perspex.Win32/Perspex.Win32.csproj
  72. 26
      src/Windows/Perspex.Win32/Win32Platform.cs
  73. 1
      src/Windows/Perspex.Win32/packages.config
  74. 3
      tests/Perspex.Base.UnitTests/Perspex.Base.UnitTests.csproj
  75. 1
      tests/Perspex.Base.UnitTests/packages.config
  76. 8
      tests/Perspex.Controls.UnitTests/ContentControlTests.cs
  77. 9
      tests/Perspex.Controls.UnitTests/ControlTests.cs
  78. 6
      tests/Perspex.Controls.UnitTests/DropDownTests.cs
  79. 3
      tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj
  80. 16
      tests/Perspex.Controls.UnitTests/Primitives/PopupTests.cs
  81. 6
      tests/Perspex.Controls.UnitTests/TemplatedControlTests.cs
  82. 57
      tests/Perspex.Controls.UnitTests/TopLevelTests.cs
  83. 1
      tests/Perspex.Controls.UnitTests/packages.config
  84. 5
      tests/Perspex.Direct2D1.UnitTests/Controls/Shapes/PathTests.cs
  85. 5
      tests/Perspex.Direct2D1.UnitTests/Media/GeometryTests.cs
  86. 3
      tests/Perspex.Direct2D1.UnitTests/Perspex.Direct2D1.UnitTests.csproj
  87. 1
      tests/Perspex.Direct2D1.UnitTests/packages.config
  88. 3
      tests/Perspex.Input.UnitTests/Perspex.Input.UnitTests.csproj
  89. 1
      tests/Perspex.Input.UnitTests/packages.config
  90. 3
      tests/Perspex.Interactivity.UnitTests/Perspex.Interactivity.UnitTests.csproj
  91. 1
      tests/Perspex.Interactivity.UnitTests/packages.config
  92. 24
      tests/Perspex.Layout.UnitTests/FullLayoutTests.cs
  93. 3
      tests/Perspex.Layout.UnitTests/Perspex.Layout.UnitTests.csproj
  94. 1
      tests/Perspex.Layout.UnitTests/packages.config
  95. 3
      tests/Perspex.RenderTests/Perspex.Cairo.RenderTests.csproj
  96. 1
      tests/Perspex.RenderTests/packages.config
  97. 3
      tests/Perspex.SceneGraph.UnitTests/Perspex.SceneGraph.UnitTests.csproj
  98. 1
      tests/Perspex.SceneGraph.UnitTests/packages.config
  99. 3
      tests/Perspex.Styling.UnitTests/Perspex.Styling.UnitTests.csproj
  100. 1
      tests/Perspex.Styling.UnitTests/packages.config

4
samples/TestApplication/App.config

@ -21,6 +21,10 @@
<assemblyIdentity name="SharpDX" publicKeyToken="b4dcf0f35e5521f1" culture="neutral" /> <assemblyIdentity name="SharpDX" publicKeyToken="b4dcf0f35e5521f1" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.3.0" newVersion="2.6.3.0" /> <bindingRedirect oldVersion="0.0.0.0-2.6.3.0" newVersion="2.6.3.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Mono.Cairo" publicKeyToken="0738eb9f132ed756" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
</assemblyBinding> </assemblyBinding>
</runtime> </runtime>
</configuration> </configuration>

3
samples/TestApplication/TestApplication.csproj

@ -66,9 +66,6 @@
<Reference Include="Serilog.FullNetFx, Version=1.5.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10"> <Reference Include="Serilog.FullNetFx, Version=1.5.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10">
<HintPath>..\..\packages\Serilog.1.5.9\lib\net45\Serilog.FullNetFx.dll</HintPath> <HintPath>..\..\packages\Serilog.1.5.9\lib\net45\Serilog.FullNetFx.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="App.cs" /> <Compile Include="App.cs" />

15
samples/TestApplication/packages.config

@ -1,11 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Rx-Core" version="2.2.5" targetFramework="net45" userInstalled="true" /> <package id="Rx-Core" version="2.2.5" targetFramework="net45" />
<package id="Rx-Interfaces" version="2.2.5" targetFramework="net45" userInstalled="true" /> <package id="Rx-Interfaces" version="2.2.5" targetFramework="net45" />
<package id="Rx-Linq" version="2.2.5" targetFramework="net45" userInstalled="true" /> <package id="Rx-Linq" version="2.2.5" targetFramework="net45" />
<package id="Rx-Main" version="2.2.5" targetFramework="net45" userInstalled="true" /> <package id="Rx-Main" version="2.2.5" targetFramework="net45" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="net45" userInstalled="true" /> <package id="Rx-PlatformServices" version="2.2.5" targetFramework="net45" />
<package id="Rx-XAML" version="2.2.5" targetFramework="net45" userInstalled="true" /> <package id="Rx-XAML" version="2.2.5" targetFramework="net45" />
<package id="Serilog" version="1.5.9" targetFramework="net45" userInstalled="true" /> <package id="Serilog" version="1.5.9" targetFramework="net45" />
<package id="Splat" version="1.6.2" targetFramework="net45" userInstalled="true" />
</packages> </packages>

7
samples/XamlTestApplication/XamlTestApplication.csproj

@ -36,6 +36,10 @@
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
@ -55,9 +59,6 @@
<Reference Include="Serilog.FullNetFx, Version=1.5.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10"> <Reference Include="Serilog.FullNetFx, Version=1.5.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10">
<HintPath>..\..\packages\Serilog.1.5.9\lib\net45\Serilog.FullNetFx.dll</HintPath> <HintPath>..\..\packages\Serilog.1.5.9\lib\net45\Serilog.FullNetFx.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
</Reference>
<Reference Include="Sprache, Version=2.0.0.47, Culture=neutral, PublicKeyToken=null"> <Reference Include="Sprache, Version=2.0.0.47, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Sprache.2.0.0.47\lib\portable-net4+netcore45+win8+wp8+sl5+MonoAndroid1+MonoTouch1\Sprache.dll</HintPath> <HintPath>..\..\packages\Sprache.2.0.0.47\lib\portable-net4+netcore45+win8+wp8+sl5+MonoAndroid1+MonoTouch1\Sprache.dll</HintPath>
</Reference> </Reference>

2
samples/XamlTestApplication/packages.config

@ -7,6 +7,6 @@
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="net46" /> <package id="Rx-PlatformServices" version="2.2.5" targetFramework="net46" />
<package id="Rx-XAML" version="2.2.5" targetFramework="net46" /> <package id="Rx-XAML" version="2.2.5" targetFramework="net46" />
<package id="Serilog" version="1.5.9" targetFramework="net46" /> <package id="Serilog" version="1.5.9" targetFramework="net46" />
<package id="Splat" version="1.6.2" targetFramework="net46" /> <package id="Splat" version="1.6.2" targetFramework="net45" />
<package id="Sprache" version="2.0.0.47" targetFramework="net451" /> <package id="Sprache" version="2.0.0.47" targetFramework="net451" />
</packages> </packages>

7
src/Gtk/Perspex.Cairo/CairoPlatform.cs

@ -6,7 +6,6 @@ using Perspex.Cairo.Media;
using Perspex.Cairo.Media.Imaging; using Perspex.Cairo.Media.Imaging;
using Perspex.Media; using Perspex.Media;
using Perspex.Platform; using Perspex.Platform;
using Splat;
namespace Perspex.Cairo namespace Perspex.Cairo
{ {
@ -19,11 +18,7 @@ namespace Perspex.Cairo
private static Pango.Context s_pangoContext = CreatePangoContext(); private static Pango.Context s_pangoContext = CreatePangoContext();
public static void Initialize() public static void Initialize() => PerspexLocator.CurrentMutable.Bind<IPlatformRenderInterface>().ToConstant(s_instance);
{
var locator = Locator.CurrentMutable;
locator.Register(() => s_instance, typeof(IPlatformRenderInterface));
}
public IBitmapImpl CreateBitmap(int width, int height) public IBitmapImpl CreateBitmap(int width, int height)
{ {

1
src/Gtk/Perspex.Cairo/Media/FormattedTextImpl.cs

@ -7,7 +7,6 @@ using System.Linq;
using System.Text; using System.Text;
using Perspex.Media; using Perspex.Media;
using Perspex.Platform; using Perspex.Platform;
using Splat;
namespace Perspex.Cairo.Media namespace Perspex.Cairo.Media
{ {

1
src/Gtk/Perspex.Cairo/Media/StreamGeometryImpl.cs

@ -4,7 +4,6 @@
using System; using System;
using Perspex.Media; using Perspex.Media;
using Perspex.Platform; using Perspex.Platform;
using Splat;
using System.Collections.Generic; using System.Collections.Generic;
namespace Perspex.Cairo.Media namespace Perspex.Cairo.Media

3
src/Gtk/Perspex.Cairo/Perspex.Cairo.csproj

@ -51,9 +51,6 @@
<HintPath>..\..\..\packages\Rx-Interfaces.2.2.5\lib\net45\System.Reactive.Interfaces.dll</HintPath> <HintPath>..\..\..\packages\Rx-Interfaces.2.2.5\lib\net45\System.Reactive.Interfaces.dll</HintPath>
</Reference> </Reference>
<Reference Include="atk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" /> <Reference Include="atk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="CairoPlatform.cs" /> <Compile Include="CairoPlatform.cs" />

7
src/Gtk/Perspex.Cairo/packages.config

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Rx-Core" version="2.2.5" targetFramework="net45" userInstalled="true" /> <package id="Rx-Core" version="2.2.5" targetFramework="net45" />
<package id="Rx-Interfaces" version="2.2.5" targetFramework="net45" userInstalled="true" /> <package id="Rx-Interfaces" version="2.2.5" targetFramework="net45" />
<package id="Splat" version="1.6.2" targetFramework="net45" userInstalled="true" /> </packages>
</packages>

20
src/Gtk/Perspex.Gtk/GtkPlatform.cs

@ -8,7 +8,6 @@ using Perspex.Input.Platform;
using Perspex.Input; using Perspex.Input;
using Perspex.Platform; using Perspex.Platform;
using Perspex.Shared.PlatformSupport; using Perspex.Shared.PlatformSupport;
using Splat;
namespace Perspex.Gtk namespace Perspex.Gtk
{ {
@ -29,15 +28,16 @@ namespace Perspex.Gtk
public static void Initialize() public static void Initialize()
{ {
var locator = Locator.CurrentMutable; PerspexLocator.CurrentMutable
locator.Register(() => new WindowImpl(), typeof(IWindowImpl)); .Bind<IWindowImpl>().ToTransient<WindowImpl>()
locator.Register(() => new PopupImpl(), typeof(IPopupImpl)); .Bind<IPopupImpl>().ToTransient<PopupImpl>()
locator.Register(() => new ClipboardImpl(), typeof(IClipboard)); .Bind<IClipboard>().ToSingleton<ClipboardImpl>()
locator.Register(() => CursorFactory.Instance, typeof(IStandardCursorFactory)); .Bind<IStandardCursorFactory>().ToConstant(CursorFactory.Instance)
locator.Register(() => GtkKeyboardDevice.Instance, typeof(IKeyboardDevice)); .Bind<IKeyboardDevice>().ToConstant(GtkKeyboardDevice.Instance)
locator.Register(() => s_instance, typeof(IPlatformSettings)); .Bind<IMouseDevice>().ToConstant(GtkMouseDevice.Instance)
locator.Register(() => s_instance, typeof(IPlatformThreadingInterface)); .Bind<IPlatformSettings>().ToConstant(s_instance)
locator.Register(() => new SystemDialogImpl(), typeof (ISystemDialogImpl)); .Bind<IPlatformThreadingInterface>().ToConstant(s_instance)
.Bind<ISystemDialogImpl>().ToSingleton<SystemDialogImpl>();
SharedPlatform.Register(); SharedPlatform.Register();
} }

3
src/Gtk/Perspex.Gtk/Perspex.Gtk.csproj

@ -44,9 +44,6 @@
<HintPath>..\..\..\packages\Rx-Linq.2.2.5\lib\net45\System.Reactive.Linq.dll</HintPath> <HintPath>..\..\..\packages\Rx-Linq.2.2.5\lib\net45\System.Reactive.Linq.dll</HintPath>
</Reference> </Reference>
<Reference Include="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" /> <Reference Include="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="ClipboardImpl.cs" /> <Compile Include="ClipboardImpl.cs" />

7
src/Gtk/Perspex.Gtk/packages.config

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Rx-Core" version="2.2.5" targetFramework="net45" userInstalled="true" /> <package id="Rx-Core" version="2.2.5" targetFramework="net45" />
<package id="Rx-Interfaces" version="2.2.5" targetFramework="net45" userInstalled="true" /> <package id="Rx-Interfaces" version="2.2.5" targetFramework="net45" />
<package id="Rx-Linq" version="2.2.5" targetFramework="net45" userInstalled="true" /> <package id="Rx-Linq" version="2.2.5" targetFramework="net45" />
<package id="Splat" version="1.6.2" targetFramework="net45" userInstalled="true" />
</packages> </packages>

3
src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs

@ -20,7 +20,6 @@ using Perspex.Media.Imaging;
using Perspex.Metadata; using Perspex.Metadata;
using Perspex.Platform; using Perspex.Platform;
using Perspex.Styling; using Perspex.Styling;
using Splat;
namespace Perspex.Markup.Xaml.Context namespace Perspex.Markup.Xaml.Context
{ {
@ -52,7 +51,7 @@ namespace Perspex.Markup.Xaml.Context
foreach (var nsa in foreach (var nsa in
forcedAssemblies forcedAssemblies
.Concat(Locator.Current.GetService<IPclPlatformWrapper>().GetLoadedAssemblies()) .Concat(PerspexLocator.Current.GetService<IPclPlatformWrapper>().GetLoadedAssemblies())
.Distinct() .Distinct()
.SelectMany(asm .SelectMany(asm
=> asm.GetCustomAttributes<XmlnsDefinitionAttribute>().Select(attr => new {asm, attr})) => asm.GetCustomAttributes<XmlnsDefinitionAttribute>().Select(attr => new {asm, attr}))

3
src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj

@ -291,9 +291,6 @@
<Reference Include="Serilog, Version=1.5.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10"> <Reference Include="Serilog, Version=1.5.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10">
<HintPath>..\..\..\packages\Serilog.1.5.9\lib\portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Serilog.dll</HintPath> <HintPath>..\..\..\packages\Serilog.1.5.9\lib\portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Serilog.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll</HintPath>
</Reference>
<Reference Include="Sprache, Version=2.0.0.47, Culture=neutral, PublicKeyToken=null"> <Reference Include="Sprache, Version=2.0.0.47, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\..\packages\Sprache.2.0.0.47\lib\portable-net4+netcore45+win8+wp8+sl5+MonoAndroid1+MonoTouch1\Sprache.dll</HintPath> <HintPath>..\..\..\packages\Sprache.2.0.0.47\lib\portable-net4+netcore45+win8+wp8+sl5+MonoAndroid1+MonoTouch1\Sprache.dll</HintPath>
</Reference> </Reference>

5
src/Markup/Perspex.Markup.Xaml/PerspexXamlLoader.cs

@ -8,7 +8,6 @@ using System.Reflection;
using OmniXaml; using OmniXaml;
using Perspex.Markup.Xaml.Context; using Perspex.Markup.Xaml.Context;
using Perspex.Platform; using Perspex.Platform;
using Splat;
namespace Perspex.Markup.Xaml namespace Perspex.Markup.Xaml
{ {
@ -57,7 +56,7 @@ namespace Perspex.Markup.Xaml
// HACK: Currently Visual Studio is forcing us to change the extension of xaml files // HACK: Currently Visual Studio is forcing us to change the extension of xaml files
// in certain situations, so we try to load .xaml and if that's not found we try .paml. // in certain situations, so we try to load .xaml and if that's not found we try .paml.
// Ideally we'd be able to use .xaml everywhere // Ideally we'd be able to use .xaml everywhere
var assetLocator = Locator.Current.GetService<IAssetLoader>(); var assetLocator = PerspexLocator.Current.GetService<IAssetLoader>();
if (assetLocator == null) if (assetLocator == null)
{ {
throw new InvalidOperationException( throw new InvalidOperationException(
@ -86,7 +85,7 @@ namespace Perspex.Markup.Xaml
/// <returns>The loaded object.</returns> /// <returns>The loaded object.</returns>
public object Load(Uri uri, object rootInstance = null) public object Load(Uri uri, object rootInstance = null)
{ {
var assetLocator = Locator.Current.GetService<IAssetLoader>(); var assetLocator = PerspexLocator.Current.GetService<IAssetLoader>();
if (assetLocator == null) if (assetLocator == null)
{ {

1
src/Markup/Perspex.Markup.Xaml/packages.config

@ -6,6 +6,5 @@
<package id="Rx-Main" version="2.2.5" targetFramework="portable46-net451+win81" /> <package id="Rx-Main" version="2.2.5" targetFramework="portable46-net451+win81" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable46-net451+win81" /> <package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable46-net451+win81" />
<package id="Serilog" version="1.5.9" targetFramework="portable46-net451+win81" /> <package id="Serilog" version="1.5.9" targetFramework="portable46-net451+win81" />
<package id="Splat" version="1.6.2" targetFramework="portable46-net451+win81" />
<package id="Sprache" version="2.0.0.47" targetFramework="portable45-net45+win8" /> <package id="Sprache" version="2.0.0.47" targetFramework="portable45-net45+win8" />
</packages> </packages>

22
src/Perspex.Application/Application.cs

@ -12,7 +12,6 @@ using Perspex.Layout;
using Perspex.Rendering; using Perspex.Rendering;
using Perspex.Styling; using Perspex.Styling;
using Perspex.Threading; using Perspex.Threading;
using Splat;
namespace Perspex namespace Perspex
{ {
@ -40,7 +39,7 @@ namespace Perspex
private DataTemplates _dataTemplates; private DataTemplates _dataTemplates;
private readonly Lazy<IClipboard> _clipboard = private readonly Lazy<IClipboard> _clipboard =
new Lazy<IClipboard>(() => (IClipboard)Locator.Current.GetService(typeof(IClipboard))); new Lazy<IClipboard>(() => (IClipboard)PerspexLocator.Current.GetService(typeof(IClipboard)));
/// <summary> /// <summary>
/// The styler that will be used to apply styles to controls. /// The styler that will be used to apply styles to controls.
@ -157,15 +156,16 @@ namespace Perspex
FocusManager = new FocusManager(); FocusManager = new FocusManager();
InputManager = new InputManager(); InputManager = new InputManager();
Locator.CurrentMutable.Register(() => new AccessKeyHandler(), typeof(IAccessKeyHandler)); PerspexLocator.CurrentMutable
Locator.CurrentMutable.Register(() => this, typeof(IGlobalDataTemplates)); .Bind<IAccessKeyHandler>().ToTransient<AccessKeyHandler>()
Locator.CurrentMutable.Register(() => this, typeof(IGlobalStyles)); .Bind<IGlobalDataTemplates>().ToConstant(this)
Locator.CurrentMutable.Register(() => FocusManager, typeof(IFocusManager)); .Bind<IGlobalStyles>().ToConstant(this)
Locator.CurrentMutable.Register(() => InputManager, typeof(IInputManager)); .Bind<IFocusManager>().ToConstant(FocusManager)
Locator.CurrentMutable.Register(() => new KeyboardNavigationHandler(), typeof(IKeyboardNavigationHandler)); .Bind<IInputManager>().ToConstant(InputManager)
Locator.CurrentMutable.Register(() => _styler, typeof(IStyler)); .Bind<IKeyboardNavigationHandler>().ToTransient<KeyboardNavigationHandler>()
Locator.CurrentMutable.Register(() => new LayoutManager(), typeof(ILayoutManager)); .Bind<IStyler>().ToConstant(_styler)
Locator.CurrentMutable.Register(() => new RenderManager(), typeof(IRenderManager)); .Bind<ILayoutManager>().ToTransient<LayoutManager>()
.Bind<IRenderManager>().ToTransient<RenderManager>();
} }
/// <summary> /// <summary>

3
src/Perspex.Application/Perspex.Application.csproj

@ -89,9 +89,6 @@
<Reference Include="System.Reactive.PlatformServices"> <Reference Include="System.Reactive.PlatformServices">
<HintPath>..\..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll</HintPath> <HintPath>..\..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="app.config" /> <None Include="app.config" />

1
src/Perspex.Application/packages.config

@ -5,5 +5,4 @@
<package id="Rx-Linq" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-Linq" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Rx-Main" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-Main" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Splat" version="1.6.2" targetFramework="portable45-net45+win8" />
</packages> </packages>

4
src/Perspex.Base/Perspex.Base.csproj

@ -46,6 +46,7 @@
<Compile Include="Diagnostics\PerspexObjectExtensions.cs" /> <Compile Include="Diagnostics\PerspexObjectExtensions.cs" />
<Compile Include="IObservablePropertyBag.cs" /> <Compile Include="IObservablePropertyBag.cs" />
<Compile Include="IPropertyBag.cs" /> <Compile Include="IPropertyBag.cs" />
<Compile Include="PerspexLocator.cs" />
<Compile Include="Metadata\XmlnsDefinitionAttribute.cs" /> <Compile Include="Metadata\XmlnsDefinitionAttribute.cs" />
<Compile Include="PerspexObjectExtensions.cs" /> <Compile Include="PerspexObjectExtensions.cs" />
<Compile Include="PerspexProperty`1.cs" /> <Compile Include="PerspexProperty`1.cs" />
@ -93,9 +94,6 @@
<Reference Include="Serilog, Version=1.5.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10"> <Reference Include="Serilog, Version=1.5.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10">
<HintPath>..\..\packages\Serilog.1.5.9\lib\portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Serilog.dll</HintPath> <HintPath>..\..\packages\Serilog.1.5.9\lib\portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Serilog.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="app.config" /> <None Include="app.config" />

120
src/Perspex.Base/PerspexLocator.cs

@ -0,0 +1,120 @@
using System;
using System.Collections.Generic;
using System.Reactive.Disposables;
#pragma warning disable CS1591 // Enable me later
namespace Perspex
{
public class PerspexLocator : IPerspexDependencyResolver
{
private readonly IPerspexDependencyResolver _parentScope;
public static IPerspexDependencyResolver Current { get; set; }
public static PerspexLocator CurrentMutable { get; set; }
private readonly Dictionary<Type, Func<object>> _registry = new Dictionary<Type, Func<object>>();
static PerspexLocator()
{
Current = CurrentMutable = new PerspexLocator();
}
public PerspexLocator()
{
}
public PerspexLocator(IPerspexDependencyResolver parentScope)
{
_parentScope = parentScope;
}
public object GetService(Type t)
{
Func<object> rv;
return _registry.TryGetValue(t, out rv) ? rv() : _parentScope?.GetService(t);
}
public class RegistrationHelper<TService>
{
private PerspexLocator _locator;
public RegistrationHelper(PerspexLocator locator)
{
_locator = locator;
}
public PerspexLocator ToConstant<TImpl>(TImpl constant) where TImpl : TService
{
_locator._registry[typeof (TService)] = () => constant;
return _locator;
}
public PerspexLocator ToFunc<TImlp>(Func<TImlp> func) where TImlp : TService
{
_locator._registry[typeof (TService)] = () => func();
return _locator;
}
public PerspexLocator ToSingleton<TImpl>() where TImpl : class, TService, new()
{
TImpl instance = null;
return ToFunc(() => instance ?? (instance = new TImpl()));
}
public PerspexLocator ToTransient<TImpl>() where TImpl : class, TService, new() => ToFunc(() => new TImpl());
}
public RegistrationHelper<T> Bind<T>() => new RegistrationHelper<T>(this);
public PerspexLocator BindToSelf<T>(T constant)
=> Bind<T>().ToConstant(constant);
public PerspexLocator BindToSelfSingleton<T>() where T : class, new() => Bind<T>().ToSingleton<T>();
class ResolverDisposable : IDisposable
{
private readonly IPerspexDependencyResolver _resolver;
private readonly PerspexLocator _mutable;
public ResolverDisposable(IPerspexDependencyResolver resolver, PerspexLocator mutable)
{
_resolver = resolver;
_mutable = mutable;
}
public void Dispose()
{
Current = _resolver;
CurrentMutable = _mutable;
}
}
public static IDisposable EnterScope()
{
return Disposable.Empty;
//Switch to that code when we are ready to fix tests
/*
var d = new ResolverDisposable(Current, CurrentMutable);
Current = CurrentMutable = new PerspexLocator(Current);
return d;
*/
}
}
public interface IPerspexDependencyResolver
{
object GetService(Type t);
}
public static class LocatorExtensions
{
public static T GetService<T>(this IPerspexDependencyResolver resolver)
{
return (T) resolver.GetService(typeof (T));
}
}
}

5
src/Perspex.Base/Threading/DispatcherTimer.cs

@ -4,7 +4,6 @@
using System; using System;
using System.Reactive.Disposables; using System.Reactive.Disposables;
using Perspex.Platform; using Perspex.Platform;
using Splat;
namespace Perspex.Threading namespace Perspex.Threading
{ {
@ -175,7 +174,7 @@ namespace Perspex.Threading
{ {
if (!IsEnabled) if (!IsEnabled)
{ {
IPlatformThreadingInterface threading = Locator.Current.GetService<IPlatformThreadingInterface>(); IPlatformThreadingInterface threading = PerspexLocator.Current.GetService<IPlatformThreadingInterface>();
_timer = threading.StartTimer(Interval, InternalTick); _timer = threading.StartTimer(Interval, InternalTick);
} }
} }
@ -187,7 +186,7 @@ namespace Perspex.Threading
{ {
if (IsEnabled) if (IsEnabled)
{ {
IPlatformThreadingInterface threading = Locator.Current.GetService<IPlatformThreadingInterface>(); IPlatformThreadingInterface threading = PerspexLocator.Current.GetService<IPlatformThreadingInterface>();
_timer.Dispose(); _timer.Dispose();
_timer = null; _timer = null;
} }

3
src/Perspex.Base/Threading/MainLoop.cs

@ -7,7 +7,6 @@ using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Perspex.Platform; using Perspex.Platform;
using Perspex.Threading; using Perspex.Threading;
using Splat;
namespace Perspex.Win32.Threading namespace Perspex.Win32.Threading
{ {
@ -25,7 +24,7 @@ namespace Perspex.Win32.Threading
/// </summary> /// </summary>
static MainLoop() static MainLoop()
{ {
s_platform = Locator.Current.GetService<IPlatformThreadingInterface>(); s_platform = PerspexLocator.Current.GetService<IPlatformThreadingInterface>();
} }
/// <summary> /// <summary>

1
src/Perspex.Base/packages.config

@ -6,5 +6,4 @@
<package id="Rx-Main" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-Main" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Serilog" version="1.5.9" targetFramework="portable45-net45+win8" /> <package id="Serilog" version="1.5.9" targetFramework="portable45-net45+win8" />
<package id="Splat" version="1.6.2" targetFramework="portable45-net45+win8" />
</packages> </packages>

3
src/Perspex.Controls/Control.cs

@ -12,7 +12,6 @@ using Perspex.Interactivity;
using Perspex.LogicalTree; using Perspex.LogicalTree;
using Perspex.Rendering; using Perspex.Rendering;
using Perspex.Styling; using Perspex.Styling;
using Splat;
namespace Perspex.Controls namespace Perspex.Controls
{ {
@ -397,7 +396,7 @@ namespace Perspex.Controls
{ {
base.OnAttachedToVisualTree(root); base.OnAttachedToVisualTree(root);
IStyler styler = Locator.Current.GetService<IStyler>(); IStyler styler = PerspexLocator.Current.GetService<IStyler>();
styler.ApplyStyles(this); styler.ApplyStyles(this);
} }

18
src/Perspex.Controls/MenuItem.cs

@ -14,7 +14,6 @@ using Perspex.Input;
using Perspex.Interactivity; using Perspex.Interactivity;
using Perspex.Threading; using Perspex.Threading;
using Perspex.VisualTree; using Perspex.VisualTree;
using Splat;
namespace Perspex.Controls namespace Perspex.Controls
{ {
@ -489,7 +488,7 @@ namespace Perspex.Controls
/// <summary> /// <summary>
/// A dependency resolver which returns a <see cref="MenuItemAccessKeyHandler"/>. /// A dependency resolver which returns a <see cref="MenuItemAccessKeyHandler"/>.
/// </summary> /// </summary>
private class DependencyResolver : IDependencyResolver private class DependencyResolver : IPerspexDependencyResolver
{ {
/// <summary> /// <summary>
/// Gets the default instance of <see cref="DependencyResolver"/>. /// Gets the default instance of <see cref="DependencyResolver"/>.
@ -509,7 +508,7 @@ namespace Perspex.Controls
/// <param name="serviceType">The service type.</param> /// <param name="serviceType">The service type.</param>
/// <param name="contract">An optional contract.</param> /// <param name="contract">An optional contract.</param>
/// <returns>A service of the requested type.</returns> /// <returns>A service of the requested type.</returns>
public object GetService(Type serviceType, string contract = null) public object GetService(Type serviceType)
{ {
if (serviceType == typeof(IAccessKeyHandler)) if (serviceType == typeof(IAccessKeyHandler))
{ {
@ -517,20 +516,9 @@ namespace Perspex.Controls
} }
else else
{ {
return Locator.Current.GetService(serviceType, contract); return PerspexLocator.Current.GetService(serviceType);
} }
} }
/// <summary>
/// Gets collection of services of the specified type.
/// </summary>
/// <param name="serviceType">The service type.</param>
/// <param name="contract">An optional contract.</param>
/// <returns>A collection of services of the requested type.</returns>
public IEnumerable<object> GetServices(Type serviceType, string contract = null)
{
return Locator.Current.GetServices(serviceType, contract);
}
} }
} }
} }

3
src/Perspex.Controls/Perspex.Controls.csproj

@ -187,9 +187,6 @@
<Reference Include="Serilog, Version=1.5.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10"> <Reference Include="Serilog, Version=1.5.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10">
<HintPath>..\..\packages\Serilog.1.5.9\lib\portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Serilog.dll</HintPath> <HintPath>..\..\packages\Serilog.1.5.9\lib\portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Serilog.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="app.config" /> <None Include="app.config" />

3
src/Perspex.Controls/Primitives/Popup.cs

@ -5,7 +5,6 @@ using System;
using Perspex.Interactivity; using Perspex.Interactivity;
using Perspex.Rendering; using Perspex.Rendering;
using Perspex.VisualTree; using Perspex.VisualTree;
using Splat;
namespace Perspex.Controls.Primitives namespace Perspex.Controls.Primitives
{ {
@ -94,7 +93,7 @@ namespace Perspex.Controls.Primitives
/// This property allows a client to customize the behaviour of the popup by injecting /// This property allows a client to customize the behaviour of the popup by injecting
/// a specialized dependency resolver into the <see cref="PopupRoot"/>'s constructor. /// a specialized dependency resolver into the <see cref="PopupRoot"/>'s constructor.
/// </remarks> /// </remarks>
public IDependencyResolver DependencyResolver public IPerspexDependencyResolver DependencyResolver
{ {
get; get;
set; set;

5
src/Perspex.Controls/Primitives/PopupRoot.cs

@ -8,7 +8,6 @@ using Perspex.Interactivity;
using Perspex.Media; using Perspex.Media;
using Perspex.Platform; using Perspex.Platform;
using Perspex.VisualTree; using Perspex.VisualTree;
using Splat;
namespace Perspex.Controls.Primitives namespace Perspex.Controls.Primitives
{ {
@ -41,8 +40,8 @@ namespace Perspex.Controls.Primitives
/// <param name="dependencyResolver"> /// <param name="dependencyResolver">
/// The dependency resolver to use. If null the default dependency resolver will be used. /// The dependency resolver to use. If null the default dependency resolver will be used.
/// </param> /// </param>
public PopupRoot(IDependencyResolver dependencyResolver) public PopupRoot(IPerspexDependencyResolver dependencyResolver)
: base(Locator.Current.GetService<IPopupImpl>(), dependencyResolver) : base(PerspexLocator.Current.GetService<IPopupImpl>(), dependencyResolver)
{ {
GetObservable(ParentProperty).Subscribe(x => InheritanceParent = (PerspexObject)x); GetObservable(ParentProperty).Subscribe(x => InheritanceParent = (PerspexObject)x);
} }

5
src/Perspex.Controls/SystemDialog.cs

@ -2,7 +2,6 @@
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Perspex.Controls.Platform; using Perspex.Controls.Platform;
using Splat;
namespace Perspex.Controls namespace Perspex.Controls
{ {
@ -20,7 +19,7 @@ namespace Perspex.Controls
public async Task<string> ShowAsync(Window window = null) public async Task<string> ShowAsync(Window window = null)
=> =>
((await Locator.Current.GetService<ISystemDialogImpl>().ShowFileDialogAsync(this, window?.PlatformImpl)) ?? ((await PerspexLocator.Current.GetService<ISystemDialogImpl>().ShowFileDialogAsync(this, window?.PlatformImpl)) ??
new string[0]).FirstOrDefault(); new string[0]).FirstOrDefault();
} }
@ -29,7 +28,7 @@ namespace Perspex.Controls
public bool AllowMultiple { get; set; } public bool AllowMultiple { get; set; }
public Task<string[]> ShowAsync(Window window = null) public Task<string[]> ShowAsync(Window window = null)
=> Locator.Current.GetService<ISystemDialogImpl>().ShowFileDialogAsync(this, window?.PlatformImpl); => PerspexLocator.Current.GetService<ISystemDialogImpl>().ShowFileDialogAsync(this, window?.PlatformImpl);
} }
public abstract class SystemDialog public abstract class SystemDialog

3
src/Perspex.Controls/Templates/DataTemplateExtensions.cs

@ -3,7 +3,6 @@
using System.Linq; using System.Linq;
using Perspex.LogicalTree; using Perspex.LogicalTree;
using Splat;
namespace Perspex.Controls.Templates namespace Perspex.Controls.Templates
{ {
@ -63,7 +62,7 @@ namespace Perspex.Controls.Templates
} }
} }
IGlobalDataTemplates global = Locator.Current.GetService<IGlobalDataTemplates>(); IGlobalDataTemplates global = PerspexLocator.Current.GetService<IGlobalDataTemplates>();
if (global != null) if (global != null)
{ {

5
src/Perspex.Controls/TextBox.cs

@ -2,7 +2,6 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information. // Licensed under the MIT license. See licence.md file in the project root for full license information.
using Perspex.Input.Platform; using Perspex.Input.Platform;
using Splat;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -150,13 +149,13 @@ namespace Perspex.Controls
private async void Copy() private async void Copy()
{ {
await ((IClipboard)Locator.Current.GetService(typeof(IClipboard))) await ((IClipboard)PerspexLocator.Current.GetService(typeof(IClipboard)))
.SetTextAsync(GetSelection()); .SetTextAsync(GetSelection());
} }
private async void Paste() private async void Paste()
{ {
var text = await ((IClipboard)Locator.Current.GetService(typeof(IClipboard))).GetTextAsync(); var text = await ((IClipboard)PerspexLocator.Current.GetService(typeof(IClipboard))).GetTextAsync();
if (text == null) if (text == null)
{ {
return; return;

11
src/Perspex.Controls/TopLevel.cs

@ -12,7 +12,6 @@ using Perspex.Platform;
using Perspex.Rendering; using Perspex.Rendering;
using Perspex.Styling; using Perspex.Styling;
using Perspex.Threading; using Perspex.Threading;
using Splat;
namespace Perspex.Controls namespace Perspex.Controls
{ {
@ -87,7 +86,7 @@ namespace Perspex.Controls
/// </summary> /// </summary>
/// <param name="impl">The platform-specific window implementation.</param> /// <param name="impl">The platform-specific window implementation.</param>
public TopLevel(ITopLevelImpl impl) public TopLevel(ITopLevelImpl impl)
: this(impl, Locator.Current) : this(impl, PerspexLocator.Current)
{ {
} }
@ -98,7 +97,7 @@ namespace Perspex.Controls
/// <param name="dependencyResolver"> /// <param name="dependencyResolver">
/// The dependency resolver to use. If null the default dependency resolver will be used. /// The dependency resolver to use. If null the default dependency resolver will be used.
/// </param> /// </param>
public TopLevel(ITopLevelImpl impl, IDependencyResolver dependencyResolver) public TopLevel(ITopLevelImpl impl, IPerspexDependencyResolver dependencyResolver)
{ {
if (impl == null) if (impl == null)
{ {
@ -108,7 +107,7 @@ namespace Perspex.Controls
PlatformImpl = impl; PlatformImpl = impl;
dependencyResolver = dependencyResolver ?? Locator.Current; dependencyResolver = dependencyResolver ?? PerspexLocator.Current;
var renderInterface = TryGetService<IPlatformRenderInterface>(dependencyResolver); var renderInterface = TryGetService<IPlatformRenderInterface>(dependencyResolver);
var styler = TryGetService<IStyler>(dependencyResolver); var styler = TryGetService<IStyler>(dependencyResolver);
_accessKeyHandler = TryGetService<IAccessKeyHandler>(dependencyResolver); _accessKeyHandler = TryGetService<IAccessKeyHandler>(dependencyResolver);
@ -327,13 +326,13 @@ namespace Perspex.Controls
} }
/// <summary> /// <summary>
/// Tries to get a service from an <see cref="IDependencyResolver"/>, throwing an /// Tries to get a service from an <see cref="IPerspexDependencyResolver"/>, throwing an
/// exception if not found. /// exception if not found.
/// </summary> /// </summary>
/// <typeparam name="T">The service type.</typeparam> /// <typeparam name="T">The service type.</typeparam>
/// <param name="resolver">The resolver.</param> /// <param name="resolver">The resolver.</param>
/// <returns>The service.</returns> /// <returns>The service.</returns>
private static T TryGetService<T>(IDependencyResolver resolver) where T : class private static T TryGetService<T>(IPerspexDependencyResolver resolver) where T : class
{ {
var result = resolver.GetService<T>(); var result = resolver.GetService<T>();

3
src/Perspex.Controls/Window.cs

@ -8,7 +8,6 @@ using Perspex.Input;
using Perspex.Media; using Perspex.Media;
using Perspex.Platform; using Perspex.Platform;
using Perspex.Styling; using Perspex.Styling;
using Splat;
namespace Perspex.Controls namespace Perspex.Controls
{ {
@ -72,7 +71,7 @@ namespace Perspex.Controls
/// Initializes a new instance of the <see cref="Window"/> class. /// Initializes a new instance of the <see cref="Window"/> class.
/// </summary> /// </summary>
public Window() public Window()
: base(Locator.Current.GetService<IWindowImpl>()) : base(PerspexLocator.Current.GetService<IWindowImpl>())
{ {
_maxPlatformClientSize = this.PlatformImpl.MaxClientSize; _maxPlatformClientSize = this.PlatformImpl.MaxClientSize;
} }

1
src/Perspex.Controls/packages.config

@ -6,5 +6,4 @@
<package id="Rx-Main" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-Main" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Serilog" version="1.5.9" targetFramework="portable45-net45+win8" /> <package id="Serilog" version="1.5.9" targetFramework="portable45-net45+win8" />
<package id="Splat" version="1.6.2" targetFramework="portable45-net45+win8" />
</packages> </packages>

3
src/Perspex.HtmlRenderer/Adapters/PerspexAdapter.cs

@ -9,7 +9,6 @@ using Perspex;
using Perspex.Input.Platform; using Perspex.Input.Platform;
using Perspex.Media; using Perspex.Media;
using Perspex.Media.Imaging; using Perspex.Media.Imaging;
using Splat;
using TheArtOfDev.HtmlRenderer.Adapters; using TheArtOfDev.HtmlRenderer.Adapters;
using TheArtOfDev.HtmlRenderer.Adapters.Entities; using TheArtOfDev.HtmlRenderer.Adapters.Entities;
using TheArtOfDev.HtmlRenderer.Perspex.Utilities; using TheArtOfDev.HtmlRenderer.Perspex.Utilities;
@ -118,7 +117,7 @@ namespace TheArtOfDev.HtmlRenderer.Perspex.Adapters
protected override void SetToClipboardInt(string text) protected override void SetToClipboardInt(string text)
{ {
Locator.Current.GetService<IClipboard>().SetTextAsync(text); PerspexLocator.Current.GetService<IClipboard>().SetTextAsync(text);
} }
protected override void SetToClipboardInt(RImage image) protected override void SetToClipboardInt(RImage image)

3
src/Perspex.HtmlRenderer/Perspex.HtmlRenderer.csproj

@ -172,9 +172,6 @@
<None Include="packages.config" /> <None Include="packages.config" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Splat">
<HintPath>..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
</Reference>
<Reference Include="System.Reactive.Core, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> <Reference Include="System.Reactive.Core, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<HintPath>..\..\packages\Rx-Core.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll</HintPath> <HintPath>..\..\packages\Rx-Core.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll</HintPath>
</Reference> </Reference>

1
src/Perspex.HtmlRenderer/packages.config

@ -4,5 +4,4 @@
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="portable45-net45+win8" /> <package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="portable45-net45+win8" />
<package id="Rx-Core" version="2.2.5" targetFramework="portable45-net45+win8" /> <package id="Rx-Core" version="2.2.5" targetFramework="portable45-net45+win8" />
<package id="Rx-Interfaces" version="2.2.5" targetFramework="portable45-net45+win8" /> <package id="Rx-Interfaces" version="2.2.5" targetFramework="portable45-net45+win8" />
<package id="Splat" version="1.6.2" targetFramework="portable45-net45+win8" />
</packages> </packages>

3
src/Perspex.Input/Cursors.cs

@ -1,7 +1,6 @@
// Copyright (c) The Perspex Project. All rights reserved. // Copyright (c) The Perspex Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information. // Licensed under the MIT license. See licence.md file in the project root for full license information.
using Splat;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -50,7 +49,7 @@ namespace Perspex.Input
public Cursor(StandardCursorType cursorType) public Cursor(StandardCursorType cursorType)
: this( : this(
((IStandardCursorFactory)Locator.Current.GetService(typeof(IStandardCursorFactory))).GetCursor( ((IStandardCursorFactory)PerspexLocator.Current.GetService(typeof(IStandardCursorFactory))).GetCursor(
cursorType)) cursorType))
{ {
} }

3
src/Perspex.Input/FocusManager.cs

@ -6,7 +6,6 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using Perspex.Interactivity; using Perspex.Interactivity;
using Perspex.VisualTree; using Perspex.VisualTree;
using Splat;
namespace Perspex.Input namespace Perspex.Input
{ {
@ -35,7 +34,7 @@ namespace Perspex.Input
/// <summary> /// <summary>
/// Gets the instance of the <see cref="IFocusManager"/>. /// Gets the instance of the <see cref="IFocusManager"/>.
/// </summary> /// </summary>
public static IFocusManager Instance => Locator.Current.GetService<IFocusManager>(); public static IFocusManager Instance => PerspexLocator.Current.GetService<IFocusManager>();
/// <summary> /// <summary>
/// Gets the currently focused <see cref="IInputElement"/>. /// Gets the currently focused <see cref="IInputElement"/>.

3
src/Perspex.Input/InputManager.cs

@ -6,7 +6,6 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reactive.Subjects; using System.Reactive.Subjects;
using Perspex.Input.Raw; using Perspex.Input.Raw;
using Splat;
namespace Perspex.Input namespace Perspex.Input
{ {
@ -16,7 +15,7 @@ namespace Perspex.Input
private readonly Subject<RawInputEventArgs> _postProcess = new Subject<RawInputEventArgs>(); private readonly Subject<RawInputEventArgs> _postProcess = new Subject<RawInputEventArgs>();
public static IInputManager Instance => Locator.Current.GetService<IInputManager>(); public static IInputManager Instance => PerspexLocator.Current.GetService<IInputManager>();
public IObservable<RawInputEventArgs> RawEventReceived => _rawEventReceived; public IObservable<RawInputEventArgs> RawEventReceived => _rawEventReceived;

7
src/Perspex.Input/KeyboardDevice.cs

@ -8,7 +8,6 @@ using System.Reactive.Linq;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using Perspex.Input.Raw; using Perspex.Input.Raw;
using Perspex.Interactivity; using Perspex.Interactivity;
using Splat;
namespace Perspex.Input namespace Perspex.Input
{ {
@ -26,11 +25,11 @@ namespace Perspex.Input
public event PropertyChangedEventHandler PropertyChanged; public event PropertyChangedEventHandler PropertyChanged;
public static IKeyboardDevice Instance => Locator.Current.GetService<IKeyboardDevice>(); public static IKeyboardDevice Instance => PerspexLocator.Current.GetService<IKeyboardDevice>();
public IInputManager InputManager => Locator.Current.GetService<IInputManager>(); public IInputManager InputManager => PerspexLocator.Current.GetService<IInputManager>();
public IFocusManager FocusManager => Locator.Current.GetService<IFocusManager>(); public IFocusManager FocusManager => PerspexLocator.Current.GetService<IFocusManager>();
public IInputElement FocusedElement public IInputElement FocusedElement
{ {

7
src/Perspex.Input/MouseDevice.cs

@ -9,7 +9,6 @@ using Perspex.Input.Raw;
using Perspex.Interactivity; using Perspex.Interactivity;
using Perspex.Platform; using Perspex.Platform;
using Perspex.VisualTree; using Perspex.VisualTree;
using Splat;
namespace Perspex.Input namespace Perspex.Input
{ {
@ -31,7 +30,7 @@ namespace Perspex.Input
.Subscribe(ProcessRawEvent); .Subscribe(ProcessRawEvent);
} }
public static IMouseDevice Instance => Locator.Current.GetService<IMouseDevice>(); public static IMouseDevice Instance => PerspexLocator.Current.GetService<IMouseDevice>();
public IInputElement Captured public IInputElement Captured
{ {
@ -39,7 +38,7 @@ namespace Perspex.Input
protected set; protected set;
} }
public IInputManager InputManager => Locator.Current.GetService<IInputManager>(); public IInputManager InputManager => PerspexLocator.Current.GetService<IInputManager>();
public Point Position public Point Position
{ {
@ -107,7 +106,7 @@ namespace Perspex.Input
if (source != null) if (source != null)
{ {
var settings = Locator.Current.GetService<IPlatformSettings>(); var settings = PerspexLocator.Current.GetService<IPlatformSettings>();
var doubleClickTime = settings.DoubleClickTime.TotalMilliseconds; var doubleClickTime = settings.DoubleClickTime.TotalMilliseconds;
if (!_lastClickRect.Contains(p) || timestamp - _lastClickTime > doubleClickTime) if (!_lastClickRect.Contains(p) || timestamp - _lastClickTime > doubleClickTime)

3
src/Perspex.Input/Perspex.Input.csproj

@ -126,9 +126,6 @@
<Reference Include="System.Reactive.PlatformServices"> <Reference Include="System.Reactive.PlatformServices">
<HintPath>..\..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll</HintPath> <HintPath>..\..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="app.config" /> <None Include="app.config" />

1
src/Perspex.Input/packages.config

@ -5,5 +5,4 @@
<package id="Rx-Linq" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-Linq" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Rx-Main" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-Main" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Splat" version="1.6.2" targetFramework="portable45-net45+win8" />
</packages> </packages>

3
src/Perspex.Interactivity/Perspex.Interactivity.csproj

@ -81,9 +81,6 @@
<Reference Include="System.Reactive.PlatformServices"> <Reference Include="System.Reactive.PlatformServices">
<HintPath>..\..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll</HintPath> <HintPath>..\..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="app.config" /> <None Include="app.config" />

1
src/Perspex.Interactivity/packages.config

@ -5,5 +5,4 @@
<package id="Rx-Linq" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-Linq" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Rx-Main" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-Main" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Splat" version="1.6.2" targetFramework="portable45-net45+win8" />
</packages> </packages>

3
src/Perspex.Layout/Perspex.Layout.csproj

@ -80,9 +80,6 @@
<Reference Include="Serilog, Version=1.5.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10"> <Reference Include="Serilog, Version=1.5.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10">
<HintPath>..\..\packages\Serilog.1.5.9\lib\portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Serilog.dll</HintPath> <HintPath>..\..\packages\Serilog.1.5.9\lib\portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Serilog.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="app.config" /> <None Include="app.config" />

1
src/Perspex.Layout/packages.config

@ -6,5 +6,4 @@
<package id="Rx-Main" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-Main" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Serilog" version="1.5.9" targetFramework="portable45-net45+win8" /> <package id="Serilog" version="1.5.9" targetFramework="portable45-net45+win8" />
<package id="Splat" version="1.6.2" targetFramework="portable45-net45+win8" />
</packages> </packages>

3
src/Perspex.SceneGraph/Media/EllipseGeometry.cs

@ -3,7 +3,6 @@
using System; using System;
using Perspex.Platform; using Perspex.Platform;
using Splat;
namespace Perspex.Media namespace Perspex.Media
{ {
@ -18,7 +17,7 @@ namespace Perspex.Media
/// <param name="rect">The rectangle that the ellipse should fill.</param> /// <param name="rect">The rectangle that the ellipse should fill.</param>
public EllipseGeometry(Rect rect) public EllipseGeometry(Rect rect)
{ {
IPlatformRenderInterface factory = Locator.Current.GetService<IPlatformRenderInterface>(); IPlatformRenderInterface factory = PerspexLocator.Current.GetService<IPlatformRenderInterface>();
IStreamGeometryImpl impl = factory.CreateStreamGeometry(); IStreamGeometryImpl impl = factory.CreateStreamGeometry();
using (IStreamGeometryContextImpl ctx = impl.Open()) using (IStreamGeometryContextImpl ctx = impl.Open())

3
src/Perspex.SceneGraph/Media/FormattedText.cs

@ -4,7 +4,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Perspex.Platform; using Perspex.Platform;
using Splat;
namespace Perspex.Media namespace Perspex.Media
{ {
@ -37,7 +36,7 @@ namespace Perspex.Media
FontWeight = fontWeight; FontWeight = fontWeight;
TextAlignment = textAlignment; TextAlignment = textAlignment;
var platform = Locator.Current.GetService<IPlatformRenderInterface>(); var platform = PerspexLocator.Current.GetService<IPlatformRenderInterface>();
PlatformImpl = platform.CreateFormattedText( PlatformImpl = platform.CreateFormattedText(
text, text,

7
src/Perspex.SceneGraph/Media/Imaging/Bitmap.cs

@ -3,7 +3,6 @@
using System.IO; using System.IO;
using Perspex.Platform; using Perspex.Platform;
using Splat;
namespace Perspex.Media.Imaging namespace Perspex.Media.Imaging
{ {
@ -18,7 +17,7 @@ namespace Perspex.Media.Imaging
/// <param name="fileName">The filename of the bitmap.</param> /// <param name="fileName">The filename of the bitmap.</param>
public Bitmap(string fileName) public Bitmap(string fileName)
{ {
IPlatformRenderInterface factory = Locator.Current.GetService<IPlatformRenderInterface>(); IPlatformRenderInterface factory = PerspexLocator.Current.GetService<IPlatformRenderInterface>();
PlatformImpl = factory.LoadBitmap(fileName); PlatformImpl = factory.LoadBitmap(fileName);
} }
@ -28,7 +27,7 @@ namespace Perspex.Media.Imaging
/// <param name="stream">The stream to read the bitmap from.</param> /// <param name="stream">The stream to read the bitmap from.</param>
public Bitmap(Stream stream) public Bitmap(Stream stream)
{ {
IPlatformRenderInterface factory = Locator.Current.GetService<IPlatformRenderInterface>(); IPlatformRenderInterface factory = PerspexLocator.Current.GetService<IPlatformRenderInterface>();
PlatformImpl = factory.LoadBitmap(stream); PlatformImpl = factory.LoadBitmap(stream);
} }
@ -39,7 +38,7 @@ namespace Perspex.Media.Imaging
/// <param name="height">The height of the bitmap, in pixels.</param> /// <param name="height">The height of the bitmap, in pixels.</param>
public Bitmap(int width, int height) public Bitmap(int width, int height)
{ {
IPlatformRenderInterface factory = Locator.Current.GetService<IPlatformRenderInterface>(); IPlatformRenderInterface factory = PerspexLocator.Current.GetService<IPlatformRenderInterface>();
PlatformImpl = factory.CreateBitmap(width, height); PlatformImpl = factory.CreateBitmap(width, height);
} }

3
src/Perspex.SceneGraph/Media/Imaging/RenderTargetBitmap.cs

@ -3,7 +3,6 @@
using System; using System;
using Perspex.Platform; using Perspex.Platform;
using Splat;
namespace Perspex.Media.Imaging namespace Perspex.Media.Imaging
{ {
@ -55,7 +54,7 @@ namespace Perspex.Media.Imaging
/// <returns>The platform-specific implementation.</returns> /// <returns>The platform-specific implementation.</returns>
private static IBitmapImpl CreateImpl(int width, int height) private static IBitmapImpl CreateImpl(int width, int height)
{ {
IPlatformRenderInterface factory = Locator.Current.GetService<IPlatformRenderInterface>(); IPlatformRenderInterface factory = PerspexLocator.Current.GetService<IPlatformRenderInterface>();
return factory.CreateRenderTargetBitmap(width, height); return factory.CreateRenderTargetBitmap(width, height);
} }
} }

3
src/Perspex.SceneGraph/Media/RectangleGeometry.cs

@ -2,7 +2,6 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information. // Licensed under the MIT license. See licence.md file in the project root for full license information.
using Perspex.Platform; using Perspex.Platform;
using Splat;
namespace Perspex.Media namespace Perspex.Media
{ {
@ -17,7 +16,7 @@ namespace Perspex.Media
/// <param name="rect">The rectangle bounds.</param> /// <param name="rect">The rectangle bounds.</param>
public RectangleGeometry(Rect rect) public RectangleGeometry(Rect rect)
{ {
IPlatformRenderInterface factory = Locator.Current.GetService<IPlatformRenderInterface>(); IPlatformRenderInterface factory = PerspexLocator.Current.GetService<IPlatformRenderInterface>();
IStreamGeometryImpl impl = factory.CreateStreamGeometry(); IStreamGeometryImpl impl = factory.CreateStreamGeometry();
using (IStreamGeometryContextImpl context = impl.Open()) using (IStreamGeometryContextImpl context = impl.Open())

3
src/Perspex.SceneGraph/Media/StreamGeometry.cs

@ -2,7 +2,6 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information. // Licensed under the MIT license. See licence.md file in the project root for full license information.
using Perspex.Platform; using Perspex.Platform;
using Splat;
namespace Perspex.Media namespace Perspex.Media
{ {
@ -16,7 +15,7 @@ namespace Perspex.Media
/// </summary> /// </summary>
public StreamGeometry() public StreamGeometry()
{ {
IPlatformRenderInterface factory = Locator.Current.GetService<IPlatformRenderInterface>(); IPlatformRenderInterface factory = PerspexLocator.Current.GetService<IPlatformRenderInterface>();
PlatformImpl = factory.CreateStreamGeometry(); PlatformImpl = factory.CreateStreamGeometry();
} }

3
src/Perspex.SceneGraph/Perspex.SceneGraph.csproj

@ -143,9 +143,6 @@
<Reference Include="Serilog, Version=1.5.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10"> <Reference Include="Serilog, Version=1.5.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10">
<HintPath>..\..\packages\Serilog.1.5.9\lib\portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Serilog.dll</HintPath> <HintPath>..\..\packages\Serilog.1.5.9\lib\portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Serilog.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="app.config" /> <None Include="app.config" />

1
src/Perspex.SceneGraph/packages.config

@ -6,5 +6,4 @@
<package id="Rx-Main" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-Main" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Serilog" version="1.5.9" targetFramework="portable45-net45+win8" /> <package id="Serilog" version="1.5.9" targetFramework="portable45-net45+win8" />
<package id="Splat" version="1.6.2" targetFramework="portable45-net45+win8" />
</packages> </packages>

3
src/Perspex.Styling/Perspex.Styling.csproj

@ -77,9 +77,6 @@
<Reference Include="System.Reactive.PlatformServices"> <Reference Include="System.Reactive.PlatformServices">
<HintPath>..\..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll</HintPath> <HintPath>..\..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="app.config" /> <None Include="app.config" />

3
src/Perspex.Styling/Styling/Styler.cs

@ -4,7 +4,6 @@
using System; using System;
using System.Linq; using System.Linq;
using Perspex.VisualTree; using Perspex.VisualTree;
using Splat;
namespace Perspex.Styling namespace Perspex.Styling
{ {
@ -17,7 +16,7 @@ namespace Perspex.Styling
.GetSelfAndVisualAncestors() .GetSelfAndVisualAncestors()
.OfType<IStyleHost>() .OfType<IStyleHost>()
.FirstOrDefault(); .FirstOrDefault();
IGlobalStyles global = Locator.Current.GetService<IGlobalStyles>(); IGlobalStyles global = PerspexLocator.Current.GetService<IGlobalStyles>();
if (global != null) if (global != null)
{ {

3
src/Perspex.Themes.Default/Perspex.Themes.Default.csproj

@ -118,9 +118,6 @@
<Reference Include="System.Reactive.PlatformServices"> <Reference Include="System.Reactive.PlatformServices">
<HintPath>..\..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll</HintPath> <HintPath>..\..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="app.config" /> <None Include="app.config" />

1
src/Perspex.Themes.Default/packages.config

@ -5,5 +5,4 @@
<package id="Rx-Linq" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-Linq" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Rx-Main" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-Main" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable-net45+win8" /> <package id="Rx-PlatformServices" version="2.2.5" targetFramework="portable-net45+win8" />
<package id="Splat" version="1.6.2" targetFramework="portable45-net45+win8" />
</packages> </packages>

7
src/Shared/PlatformSupport/SharedPlatform.cs

@ -2,7 +2,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using Perspex.Platform; using Perspex.Platform;
using Splat;
namespace Perspex.Shared.PlatformSupport namespace Perspex.Shared.PlatformSupport
{ {
@ -10,9 +9,9 @@ namespace Perspex.Shared.PlatformSupport
{ {
public static void Register() public static void Register()
{ {
var locator = Locator.CurrentMutable; PerspexLocator.CurrentMutable
locator.Register(() => new PclPlatformWrapper(), typeof(IPclPlatformWrapper)); .Bind<IPclPlatformWrapper>().ToSingleton<PclPlatformWrapper>()
locator.RegisterConstant(new AssetLoader(), typeof(IAssetLoader)); .Bind<IAssetLoader>().ToSingleton<AssetLoader>();
} }
} }
} }

14
src/Windows/Perspex.Direct2D1/Direct2D1Platform.cs

@ -6,7 +6,6 @@ using System.IO;
using Perspex.Direct2D1.Media; using Perspex.Direct2D1.Media;
using Perspex.Media; using Perspex.Media;
using Perspex.Platform; using Perspex.Platform;
using Splat;
namespace Perspex.Direct2D1 namespace Perspex.Direct2D1
{ {
@ -20,14 +19,11 @@ namespace Perspex.Direct2D1
private static readonly SharpDX.WIC.ImagingFactory s_imagingFactory = new SharpDX.WIC.ImagingFactory(); private static readonly SharpDX.WIC.ImagingFactory s_imagingFactory = new SharpDX.WIC.ImagingFactory();
public static void Initialize() public static void Initialize() => PerspexLocator.CurrentMutable
{ .Bind<IPlatformRenderInterface>().ToConstant(s_instance)
var locator = Locator.CurrentMutable; .BindToSelf(s_d2D1Factory)
locator.Register(() => s_instance, typeof(IPlatformRenderInterface)); .BindToSelf(s_dwfactory)
locator.Register(() => s_d2D1Factory, typeof(SharpDX.Direct2D1.Factory)); .BindToSelf(s_imagingFactory);
locator.Register(() => s_dwfactory, typeof(SharpDX.DirectWrite.Factory));
locator.Register(() => s_imagingFactory, typeof(SharpDX.WIC.ImagingFactory));
}
public IBitmapImpl CreateBitmap(int width, int height) public IBitmapImpl CreateBitmap(int width, int height)
{ {

3
src/Windows/Perspex.Direct2D1/Media/FormattedTextImpl.cs

@ -6,7 +6,6 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using Perspex.Media; using Perspex.Media;
using Perspex.Platform; using Perspex.Platform;
using Splat;
using DWrite = SharpDX.DirectWrite; using DWrite = SharpDX.DirectWrite;
namespace Perspex.Direct2D1.Media namespace Perspex.Direct2D1.Media
@ -21,7 +20,7 @@ namespace Perspex.Direct2D1.Media
TextAlignment textAlignment, TextAlignment textAlignment,
FontWeight fontWeight) FontWeight fontWeight)
{ {
var factory = Locator.Current.GetService<DWrite.Factory>(); var factory = PerspexLocator.Current.GetService<DWrite.Factory>();
var format = new DWrite.TextFormat( var format = new DWrite.TextFormat(
factory, factory,

3
src/Windows/Perspex.Direct2D1/Media/GeometryImpl.cs

@ -3,7 +3,6 @@
using Perspex.Platform; using Perspex.Platform;
using SharpDX.Direct2D1; using SharpDX.Direct2D1;
using Splat;
namespace Perspex.Direct2D1.Media namespace Perspex.Direct2D1.Media
{ {
@ -59,7 +58,7 @@ namespace Perspex.Direct2D1.Media
if (!value.IsIdentity) if (!value.IsIdentity)
{ {
Factory factory = Locator.Current.GetService<Factory>(); Factory factory = PerspexLocator.Current.GetService<Factory>();
_transformed = new TransformedGeometry( _transformed = new TransformedGeometry(
factory, factory,
DefiningGeometry, DefiningGeometry,

5
src/Windows/Perspex.Direct2D1/Media/StreamGeometryImpl.cs

@ -4,7 +4,6 @@
using Perspex.Media; using Perspex.Media;
using Perspex.Platform; using Perspex.Platform;
using SharpDX.Direct2D1; using SharpDX.Direct2D1;
using Splat;
using D2DGeometry = SharpDX.Direct2D1.Geometry; using D2DGeometry = SharpDX.Direct2D1.Geometry;
namespace Perspex.Direct2D1.Media namespace Perspex.Direct2D1.Media
@ -21,7 +20,7 @@ namespace Perspex.Direct2D1.Media
/// </summary> /// </summary>
public StreamGeometryImpl() public StreamGeometryImpl()
{ {
Factory factory = Locator.Current.GetService<Factory>(); Factory factory = PerspexLocator.Current.GetService<Factory>();
_path = new PathGeometry(factory); _path = new PathGeometry(factory);
} }
@ -46,7 +45,7 @@ namespace Perspex.Direct2D1.Media
/// <returns>A cloned geometry.</returns> /// <returns>A cloned geometry.</returns>
public IStreamGeometryImpl Clone() public IStreamGeometryImpl Clone()
{ {
Factory factory = Locator.Current.GetService<Factory>(); Factory factory = PerspexLocator.Current.GetService<Factory>();
var result = new PathGeometry(factory); var result = new PathGeometry(factory);
var sink = result.Open(); var sink = result.Open();
_path.Stream(sink); _path.Stream(sink);

3
src/Windows/Perspex.Direct2D1/Perspex.Direct2D1.csproj

@ -64,9 +64,6 @@
<Reference Include="System.Reactive.PlatformServices"> <Reference Include="System.Reactive.PlatformServices">
<HintPath>..\..\..\packages\Rx-PlatformServices.2.2.5\lib\net45\System.Reactive.PlatformServices.dll</HintPath> <HintPath>..\..\..\packages\Rx-PlatformServices.2.2.5\lib\net45\System.Reactive.PlatformServices.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="..\..\Shared\SharedAssemblyInfo.cs"> <Compile Include="..\..\Shared\SharedAssemblyInfo.cs">

9
src/Windows/Perspex.Direct2D1/Renderer.cs

@ -8,7 +8,6 @@ using Perspex.Platform;
using Perspex.Rendering; using Perspex.Rendering;
using SharpDX; using SharpDX;
using SharpDX.Direct2D1; using SharpDX.Direct2D1;
using Splat;
using DwFactory = SharpDX.DirectWrite.Factory; using DwFactory = SharpDX.DirectWrite.Factory;
namespace Perspex.Direct2D1 namespace Perspex.Direct2D1
@ -28,8 +27,8 @@ namespace Perspex.Direct2D1
/// <param name="height">The height of the window.</param> /// <param name="height">The height of the window.</param>
public Renderer(IntPtr hwnd, double width, double height) public Renderer(IntPtr hwnd, double width, double height)
{ {
Direct2DFactory = Locator.Current.GetService<Factory>(); Direct2DFactory = PerspexLocator.Current.GetService<Factory>();
DirectWriteFactory = Locator.Current.GetService<DwFactory>(); DirectWriteFactory = PerspexLocator.Current.GetService<DwFactory>();
RenderTargetProperties renderTargetProperties = new RenderTargetProperties RenderTargetProperties renderTargetProperties = new RenderTargetProperties
{ {
@ -54,8 +53,8 @@ namespace Perspex.Direct2D1
/// <param name="renderTarget">The render target.</param> /// <param name="renderTarget">The render target.</param>
public Renderer(RenderTarget renderTarget) public Renderer(RenderTarget renderTarget)
{ {
Direct2DFactory = Locator.Current.GetService<Factory>(); Direct2DFactory = PerspexLocator.Current.GetService<Factory>();
DirectWriteFactory = Locator.Current.GetService<DwFactory>(); DirectWriteFactory = PerspexLocator.Current.GetService<DwFactory>();
_renderTarget = renderTarget; _renderTarget = renderTarget;
} }

1
src/Windows/Perspex.Direct2D1/packages.config

@ -6,5 +6,4 @@
<package id="SharpDX" version="2.6.3" targetFramework="net45" /> <package id="SharpDX" version="2.6.3" targetFramework="net45" />
<package id="SharpDX.Direct2D1" version="2.6.3" targetFramework="net45" /> <package id="SharpDX.Direct2D1" version="2.6.3" targetFramework="net45" />
<package id="SharpDX.DXGI" version="2.6.3" targetFramework="net45" /> <package id="SharpDX.DXGI" version="2.6.3" targetFramework="net45" />
<package id="Splat" version="1.6.2" targetFramework="net45" />
</packages> </packages>

3
src/Windows/Perspex.Win32/Perspex.Win32.csproj

@ -58,9 +58,6 @@
<Reference Include="System.Reactive.PlatformServices"> <Reference Include="System.Reactive.PlatformServices">
<HintPath>..\..\..\packages\Rx-PlatformServices.2.2.5\lib\net45\System.Reactive.PlatformServices.dll</HintPath> <HintPath>..\..\..\packages\Rx-PlatformServices.2.2.5\lib\net45\System.Reactive.PlatformServices.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="..\..\Shared\SharedAssemblyInfo.cs"> <Compile Include="..\..\Shared\SharedAssemblyInfo.cs">

26
src/Windows/Perspex.Win32/Win32Platform.cs

@ -14,7 +14,6 @@ using Perspex.Platform;
using Perspex.Shared.PlatformSupport; using Perspex.Shared.PlatformSupport;
using Perspex.Win32.Input; using Perspex.Win32.Input;
using Perspex.Win32.Interop; using Perspex.Win32.Interop;
using Splat;
namespace Perspex.Win32 namespace Perspex.Win32
{ {
@ -41,29 +40,28 @@ namespace Perspex.Win32
private static void InitializeInternal() private static void InitializeInternal()
{ {
var locator = Locator.CurrentMutable; PerspexLocator.CurrentMutable
locator.Register(() => new SystemDialogImpl(), typeof (ISystemDialogImpl)); .Bind<IPopupImpl>().ToTransient<PopupImpl>()
locator.Register(() => new PopupImpl(), typeof(IPopupImpl)); .Bind<IClipboard>().ToSingleton<ClipboardImpl>()
locator.Register(() => new ClipboardImpl(), typeof(IClipboard)); .Bind<IStandardCursorFactory>().ToConstant(CursorFactory.Instance)
locator.Register(() => WindowsKeyboardDevice.Instance, typeof(IKeyboardDevice)); .Bind<IKeyboardDevice>().ToConstant(WindowsKeyboardDevice.Instance)
locator.Register(() => WindowsMouseDevice.Instance, typeof(IMouseDevice)); .Bind<IMouseDevice>().ToConstant(WindowsMouseDevice.Instance)
locator.Register(() => CursorFactory.Instance, typeof(IStandardCursorFactory)); .Bind<IPlatformSettings>().ToConstant(s_instance)
locator.Register(() => s_instance, typeof(IPlatformSettings)); .Bind<IPlatformThreadingInterface>().ToConstant(s_instance)
locator.Register(() => s_instance, typeof(IPlatformThreadingInterface)); .Bind<ISystemDialogImpl>().ToSingleton<SystemDialogImpl>();
SharedPlatform.Register(); SharedPlatform.Register();
} }
public static void Initialize() public static void Initialize()
{ {
var locator = Locator.CurrentMutable; PerspexLocator.CurrentMutable.Bind<IWindowImpl>().ToTransient<WindowImpl>();
locator.Register(() => new WindowImpl(), typeof(IWindowImpl));
InitializeInternal(); InitializeInternal();
} }
public static void InitializeEmbedded() public static void InitializeEmbedded()
{ {
var locator = Locator.CurrentMutable; PerspexLocator.CurrentMutable.Bind<IWindowImpl>().ToTransient<EmbeddedWindowImpl>();
locator.Register(() => new EmbeddedWindowImpl(), typeof(IWindowImpl));
InitializeInternal(); InitializeInternal();
} }

1
src/Windows/Perspex.Win32/packages.config

@ -5,5 +5,4 @@
<package id="Rx-Linq" version="2.2.5" targetFramework="net45" /> <package id="Rx-Linq" version="2.2.5" targetFramework="net45" />
<package id="Rx-Main" version="2.2.5" targetFramework="net45" /> <package id="Rx-Main" version="2.2.5" targetFramework="net45" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="net45" /> <package id="Rx-PlatformServices" version="2.2.5" targetFramework="net45" />
<package id="Splat" version="1.6.2" targetFramework="net45" />
</packages> </packages>

3
tests/Perspex.Base.UnitTests/Perspex.Base.UnitTests.csproj

@ -47,9 +47,6 @@
<Reference Include="xunit.core"> <Reference Include="xunit.core">
<HintPath>..\..\packages\xunit.extensibility.core.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.core.dll</HintPath> <HintPath>..\..\packages\xunit.extensibility.core.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.core.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
</Reference>
<Reference Include="System.Reactive.Core"> <Reference Include="System.Reactive.Core">
<HintPath>..\..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll</HintPath> <HintPath>..\..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll</HintPath>
</Reference> </Reference>

1
tests/Perspex.Base.UnitTests/packages.config

@ -3,7 +3,6 @@
<package id="Rx-Core" version="2.2.5" targetFramework="net45" /> <package id="Rx-Core" version="2.2.5" targetFramework="net45" />
<package id="Rx-Interfaces" version="2.2.5" targetFramework="net45" /> <package id="Rx-Interfaces" version="2.2.5" targetFramework="net45" />
<package id="Rx-Linq" version="2.2.5" targetFramework="net45" /> <package id="Rx-Linq" version="2.2.5" targetFramework="net45" />
<package id="Splat" version="1.6.2" targetFramework="net45" />
<package id="xunit" version="2.0.0" targetFramework="net45" /> <package id="xunit" version="2.0.0" targetFramework="net45" />
<package id="xunit.abstractions" version="2.0.0" targetFramework="net45" /> <package id="xunit.abstractions" version="2.0.0" targetFramework="net45" />
<package id="xunit.assert" version="2.0.0" targetFramework="net45" /> <package id="xunit.assert" version="2.0.0" targetFramework="net45" />

8
tests/Perspex.Controls.UnitTests/ContentControlTests.cs

@ -13,7 +13,6 @@ using Perspex.Styling;
using Perspex.VisualTree; using Perspex.VisualTree;
using Ploeh.AutoFixture; using Ploeh.AutoFixture;
using Ploeh.AutoFixture.AutoMoq; using Ploeh.AutoFixture.AutoMoq;
using Splat;
using Xunit; using Xunit;
namespace Perspex.Controls.UnitTests namespace Perspex.Controls.UnitTests
@ -49,7 +48,7 @@ namespace Perspex.Controls.UnitTests
var target = new ContentControl(); var target = new ContentControl();
var styler = new Mock<IStyler>(); var styler = new Mock<IStyler>();
Locator.CurrentMutable.Register(() => styler.Object, typeof(IStyler)); PerspexLocator.CurrentMutable.Bind<IStyler>().ToConstant(styler.Object);
target.Content = "Foo"; target.Content = "Foo";
target.Template = GetTemplate(); target.Template = GetTemplate();
root.Child = target; root.Child = target;
@ -281,10 +280,11 @@ namespace Perspex.Controls.UnitTests
private IDisposable RegisterServices() private IDisposable RegisterServices()
{ {
var result = Locator.CurrentMutable.WithResolver(); var result = PerspexLocator.EnterScope();
var fixture = new Fixture().Customize(new AutoMoqCustomization()); var fixture = new Fixture().Customize(new AutoMoqCustomization());
var renderInterface = fixture.Create<IPlatformRenderInterface>(); var renderInterface = fixture.Create<IPlatformRenderInterface>();
Locator.CurrentMutable.RegisterConstant(renderInterface, typeof(IPlatformRenderInterface)); PerspexLocator.CurrentMutable
.Bind<IPlatformRenderInterface>().ToConstant(renderInterface);
return result; return result;
} }
} }

9
tests/Perspex.Controls.UnitTests/ControlTests.cs

@ -7,7 +7,6 @@ using Perspex.Layout;
using Perspex.Platform; using Perspex.Platform;
using Perspex.Rendering; using Perspex.Rendering;
using Perspex.Styling; using Perspex.Styling;
using Splat;
using Xunit; using Xunit;
namespace Perspex.Controls.UnitTests namespace Perspex.Controls.UnitTests
@ -25,13 +24,13 @@ namespace Perspex.Controls.UnitTests
[Fact] [Fact]
public void Adding_Control_To_IRenderRoot_Should_Style_Control() public void Adding_Control_To_IRenderRoot_Should_Style_Control()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
var root = new TestRoot(); var root = new TestRoot();
var target = new Control(); var target = new Control();
var styler = new Mock<IStyler>(); var styler = new Mock<IStyler>();
Locator.CurrentMutable.Register(() => styler.Object, typeof(IStyler)); PerspexLocator.CurrentMutable.Bind<IStyler>().ToConstant(styler.Object);
root.Child = target; root.Child = target;
@ -42,7 +41,7 @@ namespace Perspex.Controls.UnitTests
[Fact] [Fact]
public void Adding_Tree_To_ILayoutRoot_Should_Style_Controls() public void Adding_Tree_To_ILayoutRoot_Should_Style_Controls()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
var root = new TestRoot(); var root = new TestRoot();
var parent = new Border(); var parent = new Border();
@ -50,7 +49,7 @@ namespace Perspex.Controls.UnitTests
var grandchild = new Control(); var grandchild = new Control();
var styler = new Mock<IStyler>(); var styler = new Mock<IStyler>();
Locator.CurrentMutable.Register(() => styler.Object, typeof(IStyler)); PerspexLocator.CurrentMutable.Bind<IStyler>().ToConstant(styler.Object);
parent.Child = child; parent.Child = child;
child.Child = grandchild; child.Child = grandchild;

6
tests/Perspex.Controls.UnitTests/DropDownTests.cs

@ -9,7 +9,6 @@ using Perspex.Controls.Templates;
using Perspex.Platform; using Perspex.Platform;
using Ploeh.AutoFixture; using Ploeh.AutoFixture;
using Ploeh.AutoFixture.AutoMoq; using Ploeh.AutoFixture.AutoMoq;
using Splat;
using Xunit; using Xunit;
namespace Perspex.Controls.UnitTests namespace Perspex.Controls.UnitTests
@ -58,10 +57,11 @@ namespace Perspex.Controls.UnitTests
private IDisposable RegisterServices() private IDisposable RegisterServices()
{ {
var result = Locator.CurrentMutable.WithResolver(); var result = PerspexLocator.EnterScope();
var fixture = new Fixture().Customize(new AutoMoqCustomization()); var fixture = new Fixture().Customize(new AutoMoqCustomization());
var renderInterface = fixture.Create<IPlatformRenderInterface>(); var renderInterface = fixture.Create<IPlatformRenderInterface>();
Locator.CurrentMutable.RegisterConstant(renderInterface, typeof(IPlatformRenderInterface)); PerspexLocator.CurrentMutable.Bind<IPlatformRenderInterface>().ToConstant(renderInterface);
return result; return result;
} }
} }

3
tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj

@ -59,9 +59,6 @@
<Reference Include="Ploeh.AutoFixture.AutoMoq, Version=3.31.1.0, Culture=neutral, PublicKeyToken=b24654c590009d4f"> <Reference Include="Ploeh.AutoFixture.AutoMoq, Version=3.31.1.0, Culture=neutral, PublicKeyToken=b24654c590009d4f">
<HintPath>..\..\packages\AutoFixture.AutoMoq.3.31.1\lib\net40\Ploeh.AutoFixture.AutoMoq.dll</HintPath> <HintPath>..\..\packages\AutoFixture.AutoMoq.3.31.1\lib\net40\Ploeh.AutoFixture.AutoMoq.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
</Reference>
<Reference Include="System.Reactive.Core"> <Reference Include="System.Reactive.Core">
<HintPath>..\..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll</HintPath> <HintPath>..\..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll</HintPath>
</Reference> </Reference>

16
tests/Perspex.Controls.UnitTests/Primitives/PopupTests.cs

@ -13,7 +13,6 @@ using Perspex.LogicalTree;
using Perspex.Platform; using Perspex.Platform;
using Perspex.Styling; using Perspex.Styling;
using Perspex.VisualTree; using Perspex.VisualTree;
using Splat;
using Xunit; using Xunit;
namespace Perspex.Controls.UnitTests.Primitives namespace Perspex.Controls.UnitTests.Primitives
@ -248,7 +247,7 @@ namespace Perspex.Controls.UnitTests.Primitives
private static IDisposable CreateServices() private static IDisposable CreateServices()
{ {
var result = Locator.Current.WithResolver(); var result = PerspexLocator.EnterScope();
var styles = new Styles var styles = new Styles
{ {
@ -264,11 +263,14 @@ namespace Perspex.Controls.UnitTests.Primitives
var globalStyles = new Mock<IGlobalStyles>(); var globalStyles = new Mock<IGlobalStyles>();
globalStyles.Setup(x => x.Styles).Returns(styles); globalStyles.Setup(x => x.Styles).Returns(styles);
Locator.CurrentMutable.Register(() => globalStyles.Object, typeof(IGlobalStyles));
Locator.CurrentMutable.Register(() => new LayoutManager(), typeof(ILayoutManager)); PerspexLocator.CurrentMutable
Locator.CurrentMutable.Register(() => new Mock<IPlatformThreadingInterface>().Object, typeof(IPlatformThreadingInterface)); .Bind<ILayoutManager>().ToTransient<LayoutManager>()
Locator.CurrentMutable.Register(() => new Mock<IPopupImpl>().Object, typeof(IPopupImpl)); .Bind<IGlobalStyles>().ToFunc(() => globalStyles.Object)
Locator.CurrentMutable.Register(() => new Styler(), typeof(IStyler)); .Bind<IPlatformThreadingInterface>().ToConstant(new Mock<IPlatformThreadingInterface>().Object)
.Bind<IPopupImpl>().ToConstant(new Mock<IPopupImpl>().Object)
.Bind<IStyler>().ToTransient<Styler>();
return result; return result;
} }

6
tests/Perspex.Controls.UnitTests/TemplatedControlTests.cs

@ -9,7 +9,6 @@ using Perspex.Controls.Primitives;
using Perspex.Controls.Templates; using Perspex.Controls.Templates;
using Perspex.Styling; using Perspex.Styling;
using Perspex.VisualTree; using Perspex.VisualTree;
using Splat;
using Xunit; using Xunit;
namespace Perspex.Controls.UnitTests namespace Perspex.Controls.UnitTests
@ -143,10 +142,11 @@ namespace Perspex.Controls.UnitTests
[Fact] [Fact]
public void Templated_Children_Should_Be_Styled() public void Templated_Children_Should_Be_Styled()
{ {
using (Locator.Current.WithResolver()) using (PerspexLocator.EnterScope())
{ {
var styler = new Mock<IStyler>(); var styler = new Mock<IStyler>();
Locator.CurrentMutable.Register(() => styler.Object, typeof(IStyler));
PerspexLocator.CurrentMutable.Bind<IStyler>().ToConstant(styler.Object);
TestTemplatedControl target; TestTemplatedControl target;

57
tests/Perspex.Controls.UnitTests/TopLevelTests.cs

@ -14,7 +14,6 @@ using Perspex.Rendering;
using Perspex.Styling; using Perspex.Styling;
using Ploeh.AutoFixture; using Ploeh.AutoFixture;
using Ploeh.AutoFixture.AutoMoq; using Ploeh.AutoFixture.AutoMoq;
using Splat;
using Xunit; using Xunit;
namespace Perspex.Controls.UnitTests namespace Perspex.Controls.UnitTests
@ -24,7 +23,7 @@ namespace Perspex.Controls.UnitTests
[Fact] [Fact]
public void ClientSize_Should_Be_Set_On_Construction() public void ClientSize_Should_Be_Set_On_Construction()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
RegisterServices(); RegisterServices();
@ -40,7 +39,7 @@ namespace Perspex.Controls.UnitTests
[Fact] [Fact]
public void Width_Should_Not_Be_Set_On_Construction() public void Width_Should_Not_Be_Set_On_Construction()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
RegisterServices(); RegisterServices();
@ -56,7 +55,7 @@ namespace Perspex.Controls.UnitTests
[Fact] [Fact]
public void Height_Should_Not_Be_Set_On_Construction() public void Height_Should_Not_Be_Set_On_Construction()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
RegisterServices(); RegisterServices();
@ -72,7 +71,7 @@ namespace Perspex.Controls.UnitTests
[Fact] [Fact]
public void Layout_Pass_Should_Not_Be_Automatically_Scheduled() public void Layout_Pass_Should_Not_Be_Automatically_Scheduled()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
RegisterServices(); RegisterServices();
@ -88,10 +87,10 @@ namespace Perspex.Controls.UnitTests
[Fact] [Fact]
public void Bounds_Should_Be_Set_After_Layout_Pass() public void Bounds_Should_Be_Set_After_Layout_Pass()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
RegisterServices(); RegisterServices();
Locator.CurrentMutable.RegisterConstant(new LayoutManager(), typeof(ILayoutManager)); PerspexLocator.CurrentMutable.Bind<ILayoutManager>().ToConstant(new LayoutManager());
var impl = new Mock<ITopLevelImpl>(); var impl = new Mock<ITopLevelImpl>();
impl.SetupProperty(x => x.ClientSize); impl.SetupProperty(x => x.ClientSize);
@ -120,10 +119,10 @@ namespace Perspex.Controls.UnitTests
[Fact] [Fact]
public void Impl_ClientSize_Should_Be_Set_After_Layout_Pass() public void Impl_ClientSize_Should_Be_Set_After_Layout_Pass()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
RegisterServices(); RegisterServices();
Locator.CurrentMutable.RegisterConstant(new LayoutManager(), typeof(ILayoutManager)); PerspexLocator.CurrentMutable.Bind<ILayoutManager>().ToConstant(new LayoutManager());
var impl = new Mock<ITopLevelImpl>(); var impl = new Mock<ITopLevelImpl>();
@ -150,7 +149,7 @@ namespace Perspex.Controls.UnitTests
[Fact] [Fact]
public void Width_And_Height_Should_Not_Be_Set_After_Layout_Pass() public void Width_And_Height_Should_Not_Be_Set_After_Layout_Pass()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
RegisterServices(); RegisterServices();
@ -168,11 +167,11 @@ namespace Perspex.Controls.UnitTests
[Fact] [Fact]
public void Render_Should_Be_Scheduled_After_Layout_Pass() public void Render_Should_Be_Scheduled_After_Layout_Pass()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
RegisterServices(); RegisterServices();
var completed = new Subject<Unit>(); var completed = new Subject<Unit>();
var layoutManagerMock = Mock.Get(Locator.Current.GetService<ILayoutManager>()); var layoutManagerMock = Mock.Get(PerspexLocator.Current.GetService<ILayoutManager>());
layoutManagerMock.Setup(x => x.LayoutCompleted).Returns(completed); layoutManagerMock.Setup(x => x.LayoutCompleted).Returns(completed);
var impl = new Mock<ITopLevelImpl>(); var impl = new Mock<ITopLevelImpl>();
@ -181,7 +180,7 @@ namespace Perspex.Controls.UnitTests
var target = new TestTopLevel(impl.Object); var target = new TestTopLevel(impl.Object);
completed.OnNext(Unit.Default); completed.OnNext(Unit.Default);
var renderManagerMock = Mock.Get(Locator.Current.GetService<IRenderManager>()); var renderManagerMock = Mock.Get(PerspexLocator.Current.GetService<IRenderManager>());
renderManagerMock.Verify(x => x.InvalidateRender(target)); renderManagerMock.Verify(x => x.InvalidateRender(target));
} }
} }
@ -189,7 +188,7 @@ namespace Perspex.Controls.UnitTests
[Fact] [Fact]
public void Width_And_Height_Should_Be_Set_After_Window_Resize_Notification() public void Width_And_Height_Should_Be_Set_After_Window_Resize_Notification()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
RegisterServices(); RegisterServices();
@ -209,7 +208,7 @@ namespace Perspex.Controls.UnitTests
[Fact] [Fact]
public void Activate_Should_Call_Impl_Activate() public void Activate_Should_Call_Impl_Activate()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
RegisterServices(); RegisterServices();
@ -225,7 +224,7 @@ namespace Perspex.Controls.UnitTests
[Fact] [Fact]
public void Impl_Activate_Should_Call_Raise_Activated_Event() public void Impl_Activate_Should_Call_Raise_Activated_Event()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
RegisterServices(); RegisterServices();
@ -245,7 +244,7 @@ namespace Perspex.Controls.UnitTests
[Fact] [Fact]
public void Impl_Close_Should_Call_Raise_Closed_Event() public void Impl_Close_Should_Call_Raise_Closed_Event()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
RegisterServices(); RegisterServices();
@ -265,7 +264,7 @@ namespace Perspex.Controls.UnitTests
[Fact] [Fact]
public void Impl_Deactivate_Should_Call_Raise_Activated_Event() public void Impl_Deactivate_Should_Call_Raise_Activated_Event()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
RegisterServices(); RegisterServices();
@ -285,7 +284,7 @@ namespace Perspex.Controls.UnitTests
[Fact] [Fact]
public void Impl_Input_Should_Pass_Input_To_InputManager() public void Impl_Input_Should_Pass_Input_To_InputManager()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
RegisterServices(); RegisterServices();
@ -308,7 +307,7 @@ namespace Perspex.Controls.UnitTests
private void RegisterServices() private void RegisterServices()
{ {
var fixture = new Fixture().Customize(new AutoMoqCustomization()); var fixture = new Fixture().Customize(new AutoMoqCustomization());
var l = Locator.CurrentMutable; var l = PerspexLocator.CurrentMutable;
var formattedText = fixture.Create<IFormattedTextImpl>(); var formattedText = fixture.Create<IFormattedTextImpl>();
var globalStyles = new Mock<IGlobalStyles>(); var globalStyles = new Mock<IGlobalStyles>();
@ -320,14 +319,16 @@ namespace Perspex.Controls.UnitTests
globalStyles.Setup(x => x.Styles).Returns(theme); globalStyles.Setup(x => x.Styles).Returns(theme);
l.RegisterConstant(new Mock<IInputManager>().Object, typeof(IInputManager));
l.RegisterConstant(new Mock<IFocusManager>().Object, typeof(IFocusManager)); PerspexLocator.CurrentMutable
l.RegisterConstant(globalStyles.Object, typeof(IGlobalStyles)); .Bind<IInputManager>().ToConstant(new Mock<IInputManager>().Object)
l.RegisterConstant(layoutManager, typeof(ILayoutManager)); .Bind<IFocusManager>().ToConstant(new Mock<IFocusManager>().Object)
l.RegisterConstant(new Mock<IPlatformThreadingInterface>().Object, typeof(IPlatformThreadingInterface)); .Bind<IGlobalStyles>().ToConstant(globalStyles.Object)
l.RegisterConstant(renderInterface, typeof(IPlatformRenderInterface)); .Bind<ILayoutManager>().ToConstant(layoutManager)
l.RegisterConstant(renderManager, typeof(IRenderManager)); .Bind<IPlatformRenderInterface>().ToConstant(renderInterface)
l.RegisterConstant(new Styler(), typeof(IStyler)); .Bind<IPlatformThreadingInterface>().ToConstant(new Mock<IPlatformThreadingInterface>().Object)
.Bind<IRenderManager>().ToConstant(renderManager)
.Bind<IStyler>().ToConstant(new Styler());
} }
private class TestTopLevel : TopLevel private class TestTopLevel : TopLevel

1
tests/Perspex.Controls.UnitTests/packages.config

@ -8,7 +8,6 @@
<package id="Rx-Linq" version="2.2.5" targetFramework="net45" /> <package id="Rx-Linq" version="2.2.5" targetFramework="net45" />
<package id="Rx-Main" version="2.2.5" targetFramework="net45" /> <package id="Rx-Main" version="2.2.5" targetFramework="net45" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="net45" /> <package id="Rx-PlatformServices" version="2.2.5" targetFramework="net45" />
<package id="Splat" version="1.6.2" targetFramework="net45" />
<package id="xunit" version="2.0.0" targetFramework="net45" /> <package id="xunit" version="2.0.0" targetFramework="net45" />
<package id="xunit.abstractions" version="2.0.0" targetFramework="net45" /> <package id="xunit.abstractions" version="2.0.0" targetFramework="net45" />
<package id="xunit.assert" version="2.0.0" targetFramework="net45" /> <package id="xunit.assert" version="2.0.0" targetFramework="net45" />

5
tests/Perspex.Direct2D1.UnitTests/Controls/Shapes/PathTests.cs

@ -4,7 +4,6 @@
using Perspex.Controls.Shapes; using Perspex.Controls.Shapes;
using Perspex.Layout; using Perspex.Layout;
using Perspex.Media; using Perspex.Media;
using Splat;
using Xunit; using Xunit;
namespace Perspex.Direct2D1.UnitTests.Controls.Shapes namespace Perspex.Direct2D1.UnitTests.Controls.Shapes
@ -16,7 +15,7 @@ namespace Perspex.Direct2D1.UnitTests.Controls.Shapes
[Fact] [Fact]
public void Should_Measure_Expander_Triangle_Correctly() public void Should_Measure_Expander_Triangle_Correctly()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
Direct2D1Platform.Initialize(); Direct2D1Platform.Initialize();
@ -39,7 +38,7 @@ namespace Perspex.Direct2D1.UnitTests.Controls.Shapes
[Fact] [Fact]
public void Should_Measure_Expander_Triangle_With_Stroke_Correctly() public void Should_Measure_Expander_Triangle_With_Stroke_Correctly()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
Direct2D1Platform.Initialize(); Direct2D1Platform.Initialize();

5
tests/Perspex.Direct2D1.UnitTests/Media/GeometryTests.cs

@ -2,7 +2,6 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information. // Licensed under the MIT license. See licence.md file in the project root for full license information.
using Perspex.Media; using Perspex.Media;
using Splat;
using Xunit; using Xunit;
namespace Perspex.Direct2D1.UnitTests.Media namespace Perspex.Direct2D1.UnitTests.Media
@ -14,7 +13,7 @@ namespace Perspex.Direct2D1.UnitTests.Media
[Fact] [Fact]
public void Should_Measure_Expander_Triangle_Correctly() public void Should_Measure_Expander_Triangle_Correctly()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
Direct2D1Platform.Initialize(); Direct2D1Platform.Initialize();
@ -27,7 +26,7 @@ namespace Perspex.Direct2D1.UnitTests.Media
[Fact] [Fact]
public void Should_Measure_Expander_Triangle_With_Stroke_Correctly() public void Should_Measure_Expander_Triangle_With_Stroke_Correctly()
{ {
using (Locator.CurrentMutable.WithResolver()) using (PerspexLocator.EnterScope())
{ {
Direct2D1Platform.Initialize(); Direct2D1Platform.Initialize();

3
tests/Perspex.Direct2D1.UnitTests/Perspex.Direct2D1.UnitTests.csproj

@ -44,9 +44,6 @@
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Net.Http" /> <Reference Include="System.Net.Http" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
</Reference>
<Reference Include="xunit.abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c"> <Reference Include="xunit.abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c">
<HintPath>..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll</HintPath> <HintPath>..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll</HintPath>
</Reference> </Reference>

1
tests/Perspex.Direct2D1.UnitTests/packages.config

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Splat" version="1.6.2" targetFramework="net45" />
<package id="xunit" version="2.0.0" targetFramework="net45" /> <package id="xunit" version="2.0.0" targetFramework="net45" />
<package id="xunit.abstractions" version="2.0.0" targetFramework="net45" /> <package id="xunit.abstractions" version="2.0.0" targetFramework="net45" />
<package id="xunit.assert" version="2.0.0" targetFramework="net45" /> <package id="xunit.assert" version="2.0.0" targetFramework="net45" />

3
tests/Perspex.Input.UnitTests/Perspex.Input.UnitTests.csproj

@ -44,9 +44,6 @@
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
</Reference>
<Reference Include="xunit.abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c"> <Reference Include="xunit.abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c">
<HintPath>..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll</HintPath> <HintPath>..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll</HintPath>
</Reference> </Reference>

1
tests/Perspex.Input.UnitTests/packages.config

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Splat" version="1.6.2" targetFramework="net45" />
<package id="xunit" version="2.0.0" targetFramework="net45" /> <package id="xunit" version="2.0.0" targetFramework="net45" />
<package id="xunit.abstractions" version="2.0.0" targetFramework="net45" /> <package id="xunit.abstractions" version="2.0.0" targetFramework="net45" />
<package id="xunit.assert" version="2.0.0" targetFramework="net45" /> <package id="xunit.assert" version="2.0.0" targetFramework="net45" />

3
tests/Perspex.Interactivity.UnitTests/Perspex.Interactivity.UnitTests.csproj

@ -49,9 +49,6 @@
<Reference Include="xunit.core"> <Reference Include="xunit.core">
<HintPath>..\..\packages\xunit.extensibility.core.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.core.dll</HintPath> <HintPath>..\..\packages\xunit.extensibility.core.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.core.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
</Reference>
<Reference Include="xunit.abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c"> <Reference Include="xunit.abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c">
<HintPath>..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll</HintPath> <HintPath>..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll</HintPath>
</Reference> </Reference>

1
tests/Perspex.Interactivity.UnitTests/packages.config

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Splat" version="1.6.2" targetFramework="net45" />
<package id="xunit" version="2.0.0" targetFramework="net45" /> <package id="xunit" version="2.0.0" targetFramework="net45" />
<package id="xunit.abstractions" version="2.0.0" targetFramework="net45" /> <package id="xunit.abstractions" version="2.0.0" targetFramework="net45" />
<package id="xunit.assert" version="2.0.0" targetFramework="net45" /> <package id="xunit.assert" version="2.0.0" targetFramework="net45" />

24
tests/Perspex.Layout.UnitTests/FullLayoutTests.cs

@ -17,7 +17,6 @@ using Perspex.Styling;
using Perspex.Themes.Default; using Perspex.Themes.Default;
using Ploeh.AutoFixture; using Ploeh.AutoFixture;
using Ploeh.AutoFixture.AutoMoq; using Ploeh.AutoFixture.AutoMoq;
using Splat;
using Xunit; using Xunit;
namespace Perspex.Layout.UnitTests namespace Perspex.Layout.UnitTests
@ -27,7 +26,7 @@ namespace Perspex.Layout.UnitTests
[Fact] [Fact]
public void Grandchild_Size_Changed() public void Grandchild_Size_Changed()
{ {
using (var context = Locator.CurrentMutable.WithResolver()) using (var context = PerspexLocator.EnterScope())
{ {
RegisterServices(); RegisterServices();
@ -66,7 +65,7 @@ namespace Perspex.Layout.UnitTests
[Fact] [Fact]
public void Test_ScrollViewer_With_TextBlock() public void Test_ScrollViewer_With_TextBlock()
{ {
using (var context = Locator.CurrentMutable.WithResolver()) using (var context = PerspexLocator.EnterScope())
{ {
RegisterServices(); RegisterServices();
@ -130,7 +129,7 @@ namespace Perspex.Layout.UnitTests
private void RegisterServices() private void RegisterServices()
{ {
var fixture = new Fixture().Customize(new AutoMoqCustomization()); var fixture = new Fixture().Customize(new AutoMoqCustomization());
var l = Locator.CurrentMutable;
var formattedText = fixture.Create<IFormattedTextImpl>(); var formattedText = fixture.Create<IFormattedTextImpl>();
var globalStyles = new Mock<IGlobalStyles>(); var globalStyles = new Mock<IGlobalStyles>();
@ -143,14 +142,15 @@ namespace Perspex.Layout.UnitTests
windowImpl.Setup(x => x.MaxClientSize).Returns(new Size(1024, 1024)); windowImpl.Setup(x => x.MaxClientSize).Returns(new Size(1024, 1024));
globalStyles.Setup(x => x.Styles).Returns(theme); globalStyles.Setup(x => x.Styles).Returns(theme);
l.RegisterConstant(new Mock<IInputManager>().Object, typeof(IInputManager)); PerspexLocator.CurrentMutable
l.RegisterConstant(globalStyles.Object, typeof(IGlobalStyles)); .Bind<IInputManager>().ToConstant(new Mock<IInputManager>().Object)
l.RegisterConstant(new LayoutManager(), typeof(ILayoutManager)); .Bind<IGlobalStyles>().ToConstant(globalStyles.Object)
l.RegisterConstant(renderInterface, typeof(IPlatformRenderInterface)); .Bind<ILayoutManager>().ToConstant(new LayoutManager())
l.RegisterConstant(new Mock<IPlatformThreadingInterface>().Object, typeof(IPlatformThreadingInterface)); .Bind<IPlatformRenderInterface>().ToConstant(renderInterface)
l.RegisterConstant(renderManager, typeof(IRenderManager)); .Bind<IPlatformThreadingInterface>().ToConstant(new Mock<IPlatformThreadingInterface>().Object)
l.RegisterConstant(new Styler(), typeof(IStyler)); .Bind<IRenderManager>().ToConstant(renderManager)
l.RegisterConstant(windowImpl.Object, typeof(IWindowImpl)); .Bind<IStyler>().ToConstant(new Styler())
.Bind<IWindowImpl>().ToConstant(windowImpl.Object);
} }
} }
} }

3
tests/Perspex.Layout.UnitTests/Perspex.Layout.UnitTests.csproj

@ -56,9 +56,6 @@
<Reference Include="Ploeh.AutoFixture.AutoMoq, Version=3.31.1.0, Culture=neutral, PublicKeyToken=b24654c590009d4f"> <Reference Include="Ploeh.AutoFixture.AutoMoq, Version=3.31.1.0, Culture=neutral, PublicKeyToken=b24654c590009d4f">
<HintPath>..\..\packages\AutoFixture.AutoMoq.3.31.1\lib\net40\Ploeh.AutoFixture.AutoMoq.dll</HintPath> <HintPath>..\..\packages\AutoFixture.AutoMoq.3.31.1\lib\net40\Ploeh.AutoFixture.AutoMoq.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
</Reference>
<Reference Include="xunit.abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c"> <Reference Include="xunit.abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c">
<HintPath>..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll</HintPath> <HintPath>..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll</HintPath>
</Reference> </Reference>

1
tests/Perspex.Layout.UnitTests/packages.config

@ -3,7 +3,6 @@
<package id="AutoFixture" version="3.31.3" targetFramework="net45" /> <package id="AutoFixture" version="3.31.3" targetFramework="net45" />
<package id="AutoFixture.AutoMoq" version="3.31.1" targetFramework="net45" /> <package id="AutoFixture.AutoMoq" version="3.31.1" targetFramework="net45" />
<package id="Moq" version="4.2.1507.0118" targetFramework="net45" /> <package id="Moq" version="4.2.1507.0118" targetFramework="net45" />
<package id="Splat" version="1.6.2" targetFramework="net45" />
<package id="xunit" version="2.0.0" targetFramework="net45" /> <package id="xunit" version="2.0.0" targetFramework="net45" />
<package id="xunit.abstractions" version="2.0.0" targetFramework="net45" /> <package id="xunit.abstractions" version="2.0.0" targetFramework="net45" />
<package id="xunit.assert" version="2.0.0" targetFramework="net45" /> <package id="xunit.assert" version="2.0.0" targetFramework="net45" />

3
tests/Perspex.RenderTests/Perspex.Cairo.RenderTests.csproj

@ -53,9 +53,6 @@
<Reference Include="Magick.NET.Core, Version=7.0.0.0, Culture=neutral, PublicKeyToken=2004825badfa91ec"> <Reference Include="Magick.NET.Core, Version=7.0.0.0, Culture=neutral, PublicKeyToken=2004825badfa91ec">
<HintPath>..\..\packages\Magick.NET-Q16-AnyCPU.7.0.0.0018\lib\net40-client\Magick.NET.Core.dll</HintPath> <HintPath>..\..\packages\Magick.NET-Q16-AnyCPU.7.0.0.0018\lib\net40-client\Magick.NET.Core.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
</Reference>
<Reference Include="xunit.abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c"> <Reference Include="xunit.abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c">
<HintPath>..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll</HintPath> <HintPath>..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll</HintPath>
</Reference> </Reference>

1
tests/Perspex.RenderTests/packages.config

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Magick.NET-Q16-AnyCPU" version="7.0.0.0018" targetFramework="net45" /> <package id="Magick.NET-Q16-AnyCPU" version="7.0.0.0018" targetFramework="net45" />
<package id="Splat" version="1.6.2" targetFramework="net45" />
<package id="xunit" version="2.0.0" targetFramework="net45" /> <package id="xunit" version="2.0.0" targetFramework="net45" />
<package id="xunit.abstractions" version="2.0.0" targetFramework="net45" /> <package id="xunit.abstractions" version="2.0.0" targetFramework="net45" />
<package id="xunit.assert" version="2.0.0" targetFramework="net45" /> <package id="xunit.assert" version="2.0.0" targetFramework="net45" />

3
tests/Perspex.SceneGraph.UnitTests/Perspex.SceneGraph.UnitTests.csproj

@ -47,9 +47,6 @@
<Reference Include="xunit.core"> <Reference Include="xunit.core">
<HintPath>..\..\packages\xunit.extensibility.core.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.core.dll</HintPath> <HintPath>..\..\packages\xunit.extensibility.core.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.core.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
</Reference>
<Reference Include="System.Reactive.Core, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> <Reference Include="System.Reactive.Core, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<HintPath>..\..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll</HintPath> <HintPath>..\..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll</HintPath>
</Reference> </Reference>

1
tests/Perspex.SceneGraph.UnitTests/packages.config

@ -5,7 +5,6 @@
<package id="Rx-Linq" version="2.2.5" targetFramework="net45" /> <package id="Rx-Linq" version="2.2.5" targetFramework="net45" />
<package id="Rx-Main" version="2.2.5" targetFramework="net45" /> <package id="Rx-Main" version="2.2.5" targetFramework="net45" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="net45" /> <package id="Rx-PlatformServices" version="2.2.5" targetFramework="net45" />
<package id="Splat" version="1.6.2" targetFramework="net45" />
<package id="xunit" version="2.0.0" targetFramework="net45" /> <package id="xunit" version="2.0.0" targetFramework="net45" />
<package id="xunit.abstractions" version="2.0.0" targetFramework="net45" /> <package id="xunit.abstractions" version="2.0.0" targetFramework="net45" />
<package id="xunit.assert" version="2.0.0" targetFramework="net45" /> <package id="xunit.assert" version="2.0.0" targetFramework="net45" />

3
tests/Perspex.Styling.UnitTests/Perspex.Styling.UnitTests.csproj

@ -50,9 +50,6 @@
<Reference Include="Moq, Version=4.2.1507.118, Culture=neutral, PublicKeyToken=69f491c39445e920"> <Reference Include="Moq, Version=4.2.1507.118, Culture=neutral, PublicKeyToken=69f491c39445e920">
<HintPath>..\..\packages\Moq.4.2.1507.0118\lib\net40\Moq.dll</HintPath> <HintPath>..\..\packages\Moq.4.2.1507.0118\lib\net40\Moq.dll</HintPath>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
</Reference>
<Reference Include="System.Reactive.Core"> <Reference Include="System.Reactive.Core">
<HintPath>..\..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll</HintPath> <HintPath>..\..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll</HintPath>
</Reference> </Reference>

1
tests/Perspex.Styling.UnitTests/packages.config

@ -6,7 +6,6 @@
<package id="Rx-Linq" version="2.2.5" targetFramework="net45" /> <package id="Rx-Linq" version="2.2.5" targetFramework="net45" />
<package id="Rx-Main" version="2.2.5" targetFramework="net45" /> <package id="Rx-Main" version="2.2.5" targetFramework="net45" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="net45" /> <package id="Rx-PlatformServices" version="2.2.5" targetFramework="net45" />
<package id="Splat" version="1.6.2" targetFramework="net45" />
<package id="xunit" version="2.0.0" targetFramework="net45" /> <package id="xunit" version="2.0.0" targetFramework="net45" />
<package id="xunit.abstractions" version="2.0.0" targetFramework="net45" /> <package id="xunit.abstractions" version="2.0.0" targetFramework="net45" />
<package id="xunit.assert" version="2.0.0" targetFramework="net45" /> <package id="xunit.assert" version="2.0.0" targetFramework="net45" />

Loading…
Cancel
Save