diff --git a/.gitignore b/.gitignore
index a599a267d4..a8ef638bda 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,7 +16,6 @@
[Dd]ebug/
[Rr]elease/
x64/
-build/
[Bb]in/
[Oo]bj/
diff --git a/Perspex.sln b/Perspex.sln
index 874bab37ef..89a70f102b 100644
--- a/Perspex.sln
+++ b/Perspex.sln
@@ -57,9 +57,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Perspex.Input.UnitTests", "
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Perspex.Direct2D1.UnitTests", "tests\Perspex.Direct2D1.UnitTests\Perspex.Direct2D1.UnitTests.csproj", "{EFB11458-9CDF-41C0-BE4F-44AF45A4CAB8}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Perspex.Xaml", "src\Markup\Perspex.Xaml\Perspex.Xaml.csproj", "{3E53A01A-B331-47F3-B828-4A5717E77A24}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Perspex.Xaml.Desktop", "src\Markup\Perspex.Xaml.Desktop\Perspex.Xaml.Desktop.csproj", "{EB468C39-AAC4-4963-A7B2-0A405EA63EDD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Perspex.Markup.Xaml", "src\Markup\Perspex.Markup.Xaml\Perspex.Markup.Xaml.csproj", "{3E53A01A-B331-47F3-B828-4A5717E77A24}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlTestApplication", "samples\XamlTestApplication\XamlTestApplication.csproj", "{78CAFE33-DBEB-4132-8A28-81CFE8A4933C}"
EndProject
@@ -178,10 +176,6 @@ Global
{3E53A01A-B331-47F3-B828-4A5717E77A24}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E53A01A-B331-47F3-B828-4A5717E77A24}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E53A01A-B331-47F3-B828-4A5717E77A24}.Release|Any CPU.Build.0 = Release|Any CPU
- {EB468C39-AAC4-4963-A7B2-0A405EA63EDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {EB468C39-AAC4-4963-A7B2-0A405EA63EDD}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {EB468C39-AAC4-4963-A7B2-0A405EA63EDD}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {EB468C39-AAC4-4963-A7B2-0A405EA63EDD}.Release|Any CPU.Build.0 = Release|Any CPU
{78CAFE33-DBEB-4132-8A28-81CFE8A4933C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{78CAFE33-DBEB-4132-8A28-81CFE8A4933C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{78CAFE33-DBEB-4132-8A28-81CFE8A4933C}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -205,7 +199,6 @@ Global
{AC18926A-E784-40FE-B09D-BB0FE2B599F0} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B}
{EFB11458-9CDF-41C0-BE4F-44AF45A4CAB8} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B}
{3E53A01A-B331-47F3-B828-4A5717E77A24} = {8B6A8209-894F-4BA1-B880-965FD453982C}
- {EB468C39-AAC4-4963-A7B2-0A405EA63EDD} = {8B6A8209-894F-4BA1-B880-965FD453982C}
{78CAFE33-DBEB-4132-8A28-81CFE8A4933C} = {9B9E3891-2366-4253-A952-D08BCEB71098}
EndGlobalSection
EndGlobal
diff --git a/nuget/.gitignore b/nuget/.gitignore
new file mode 100644
index 0000000000..93a9893778
--- /dev/null
+++ b/nuget/.gitignore
@@ -0,0 +1,7 @@
+- build/
+
+**/lib/**/*.dll
+**/lib/**/*.xml
+**/build/**/*.dll
+**/build/**/*.xml
+*.nupkg
\ No newline at end of file
diff --git a/nuget/Perspex/Perspex.nuspec b/nuget/Perspex/Perspex.nuspec
new file mode 100644
index 0000000000..432f210f05
--- /dev/null
+++ b/nuget/Perspex/Perspex.nuspec
@@ -0,0 +1,24 @@
+
+
+
+ Perspex
+ 0.0.1-alpha
+ stevenk
+ stevenk
+ http://opensource.org/licenses/MIT
+ https://github.com/grokys/Perspex/
+ false
+ The Perspex UI framework
+ Initial alpha release.
+ Copyright 2015
+ Perspex
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/nuget/Perspex/build/net45/perspex.targets b/nuget/Perspex/build/net45/perspex.targets
new file mode 100644
index 0000000000..70d36cf835
--- /dev/null
+++ b/nuget/Perspex/build/net45/perspex.targets
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+ %(RecursiveDir)%(FileName)%(Extension)
+ PreserveNewest
+
+
+
\ No newline at end of file
diff --git a/nuget/build.bat b/nuget/build.bat
new file mode 100644
index 0000000000..8ef89045de
--- /dev/null
+++ b/nuget/build.bat
@@ -0,0 +1,39 @@
+SET lib="Perspex\lib\portable-windows8+net45"
+SET build="Perspex\build\net45"
+
+mkdir %lib%
+mkdir %build%
+
+copy ..\src\Perspex.Animation\bin\Release\Perspex.Animation.dll %lib%
+copy ..\src\Perspex.Animation\bin\Release\Perspex.Animation.xml %lib%
+copy ..\src\Perspex.Application\bin\Release\Perspex.Application.dll %lib%
+copy ..\src\Perspex.Application\bin\Release\Perspex.Application.xml %lib%
+copy ..\src\Perspex.Base\bin\Release\Perspex.Base.dll %lib%
+copy ..\src\Perspex.Base\bin\Release\Perspex.Base.xml %lib%
+copy ..\src\Perspex.Controls\bin\Release\Perspex.Controls.dll %lib%
+copy ..\src\Perspex.Controls\bin\Release\Perspex.Controls.xml %lib%
+copy ..\src\Perspex.Diagnostics\bin\Release\\Perspex.Diagnostics.dll %lib%
+copy ..\src\Perspex.Diagnostics\bin\Release\\Perspex.Diagnostics.xml %lib%
+copy ..\src\Perspex.Input\bin\Release\Perspex.Input.dll %lib%
+copy ..\src\Perspex.Input\bin\Release\Perspex.Input.xml %lib%
+copy ..\src\Perspex.Interactivity\bin\Release\Perspex.Interactivity.dll %lib%
+copy ..\src\Perspex.Interactivity\bin\Release\Perspex.Interactivity.xml %lib%
+copy ..\src\Perspex.Layout\bin\Release\Perspex.Layout.dll %lib%
+copy ..\src\Perspex.Layout\bin\Release\Perspex.Layout.xml %lib%
+copy ..\src\Perspex.SceneGraph\bin\Release\Perspex.SceneGraph.dll %lib%
+copy ..\src\Perspex.SceneGraph\bin\Release\Perspex.SceneGraph.xml %lib%
+copy ..\src\Perspex.Styling\bin\Release\Perspex.Styling.dll %lib%
+copy ..\src\Perspex.Styling\bin\Release\Perspex.Styling.xml %lib%
+copy ..\src\Perspex.Themes.Default\bin\Release\Perspex.Themes.Default.dll %lib%
+copy ..\src\Perspex.Themes.Default\bin\Release\Perspex.Themes.Default.xml %lib%
+copy ..\src\Markup\Perspex.Markup.Xaml\bin\Release\Perspex.Markup.Xaml.dll %lib%
+copy ..\src\Markup\Perspex.Markup.Xaml\bin\Release\Perspex.Markup.Xaml.xml %lib%
+copy ..\src\NGenerics\bin\Release\NGenerics.dll %lib%
+
+copy ..\src\Windows\Perspex.Direct2D1\bin\Release\Perspex.Direct2D1.dll %build%
+copy ..\src\Windows\Perspex.Direct2D1\bin\Release\SharpDX.dll %build%
+copy ..\src\Windows\Perspex.Direct2D1\bin\Release\SharpDX.Direct2D1.dll %build%
+copy ..\src\Windows\Perspex.Direct2D1\bin\Release\SharpDX.DXGI.dll %build%
+copy ..\src\Windows\Perspex.Win32\bin\Release\Perspex.Win32.dll %build%
+
+nuget.exe pack Perspex\Perspex.nuspec
\ No newline at end of file
diff --git a/samples/XamlTestApplication/Program.cs b/samples/XamlTestApplication/Program.cs
index 5b8f3ba0ba..e24f228086 100644
--- a/samples/XamlTestApplication/Program.cs
+++ b/samples/XamlTestApplication/Program.cs
@@ -1,22 +1,14 @@
-#if PERSPEX_GTK
-using Perspex.Gtk;
-#endif
-
-namespace XamlTestApplication
+namespace XamlTestApplication
{
using System;
using System.Diagnostics;
using System.Windows.Threading;
- using Glass;
- using OmniXaml.AppServices.Mvvm;
- using OmniXaml.AppServices.NetCore;
using Perspex;
using Perspex.Collections;
using Perspex.Controls;
using Perspex.Controls.Templates;
- using Perspex.Input;
- using Perspex.Xaml.Desktop;
using ReactiveUI;
+ using Views;
class Item
{
@@ -55,12 +47,7 @@ namespace XamlTestApplication
var testCommand = ReactiveCommand.Create();
testCommand.Subscribe(_ => Debug.WriteLine("Test command executed."));
- var typeFactory = new PerspexInflatableTypeFactory();
-
- var viewFactory = new ViewFactory(typeFactory);
- viewFactory.RegisterViews(ViewRegistration.FromTypes(Assemblies.AssembliesInAppFolder.AllExportedTypes()));
-
- var window = (Window) viewFactory.GetWindow("Main");
+ var window = new MainWindow();
window.Show();
Application.Current.Run(window);
}
diff --git a/samples/XamlTestApplication/Views/MainWindow.cs b/samples/XamlTestApplication/Views/MainWindow.cs
index e3f19512be..18760d9601 100644
--- a/samples/XamlTestApplication/Views/MainWindow.cs
+++ b/samples/XamlTestApplication/Views/MainWindow.cs
@@ -1,15 +1,27 @@
namespace XamlTestApplication.Views
{
- using OmniXaml.AppServices.Mvvm;
+ using System;
+ using System.Globalization;
+ using System.IO;
+ using System.Reflection;
+ using System.Resources;
+ using OmniXaml;
+ using Perspex.Controls;
using Perspex.Diagnostics;
- using Perspex.Xaml.Desktop;
+ using Perspex.Markup.Xaml;
- [ViewToken("Main", typeof(MainWindow))]
- public class MainWindow : PerspexWindow
+ public class MainWindow : Window
{
public MainWindow()
{
+ this.InitializeComponent();
+
DevTools.Attach(this);
}
+
+ private void InitializeComponent()
+ {
+ PerspexXamlLoader.Load(this);
+ }
}
}
\ No newline at end of file
diff --git a/samples/XamlTestApplication/Views/MainWindow.xaml b/samples/XamlTestApplication/Views/MainWindow.xaml
index ad313cccb6..3294edb8b0 100644
--- a/samples/XamlTestApplication/Views/MainWindow.xaml
+++ b/samples/XamlTestApplication/Views/MainWindow.xaml
@@ -1,4 +1,7 @@
-
+
diff --git a/samples/XamlTestApplication/XamlTestApplication.csproj b/samples/XamlTestApplication/XamlTestApplication.csproj
index ef9447af18..d365195058 100644
--- a/samples/XamlTestApplication/XamlTestApplication.csproj
+++ b/samples/XamlTestApplication/XamlTestApplication.csproj
@@ -177,11 +177,7 @@
{3e10a5fa-e8da-48b1-ad44-6a5b6cb7750f}
Perspex.Themes.Default
-
- {eb468c39-aac4-4963-a7b2-0a405ea63edd}
- Perspex.Xaml.Desktop
-
-
+
{3e53a01a-b331-47f3-b828-4a5717e77a24}
Perspex.Xaml
diff --git a/src/Markup/Perspex.Xaml/Context/PerspexObjectAssembler.cs b/src/Markup/Perspex.Markup.Xaml/Context/PerspexObjectAssembler.cs
similarity index 96%
rename from src/Markup/Perspex.Xaml/Context/PerspexObjectAssembler.cs
rename to src/Markup/Perspex.Markup.Xaml/Context/PerspexObjectAssembler.cs
index b147ad42ee..23e7eb3696 100644
--- a/src/Markup/Perspex.Xaml/Context/PerspexObjectAssembler.cs
+++ b/src/Markup/Perspex.Markup.Xaml/Context/PerspexObjectAssembler.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.Context
+namespace Perspex.Markup.Xaml.Context
{
using System;
using OmniXaml;
diff --git a/src/Markup/Perspex.Xaml.Desktop/PerspexParserFactory.cs b/src/Markup/Perspex.Markup.Xaml/Context/PerspexParserFactory.cs
similarity index 87%
rename from src/Markup/Perspex.Xaml.Desktop/PerspexParserFactory.cs
rename to src/Markup/Perspex.Markup.Xaml/Context/PerspexParserFactory.cs
index 3253d53f85..0c065bb1bf 100644
--- a/src/Markup/Perspex.Xaml.Desktop/PerspexParserFactory.cs
+++ b/src/Markup/Perspex.Markup.Xaml/Context/PerspexParserFactory.cs
@@ -1,19 +1,23 @@
-namespace Perspex.Xaml.Desktop
+namespace Perspex.Markup.Xaml.Context
{
- using Context;
- using HighLevel;
using OmniXaml;
using OmniXaml.ObjectAssembler;
using OmniXaml.Parsers.ProtoParser;
using OmniXaml.Parsers.XamlNodes;
+ using Perspex.Markup.Xaml.Context;
public class PerspexParserFactory : IXamlParserFactory
{
private readonly IWiringContext wiringContext;
+ public PerspexParserFactory()
+ : this(new TypeFactory())
+ {
+ }
+
public PerspexParserFactory(ITypeFactory typeFactory)
{
- wiringContext = PerspexWiringContextFactory.GetContext(typeFactory);
+ wiringContext = new PerspexWiringContext(typeFactory);
}
public IXamlParser CreateForReadingFree()
diff --git a/src/Markup/Perspex.Xaml/Context/PerspexTypeRepository.cs b/src/Markup/Perspex.Markup.Xaml/Context/PerspexTypeRepository.cs
similarity index 95%
rename from src/Markup/Perspex.Xaml/Context/PerspexTypeRepository.cs
rename to src/Markup/Perspex.Markup.Xaml/Context/PerspexTypeRepository.cs
index fa7dc74fc4..21079e6cac 100644
--- a/src/Markup/Perspex.Xaml/Context/PerspexTypeRepository.cs
+++ b/src/Markup/Perspex.Markup.Xaml/Context/PerspexTypeRepository.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.Context
+namespace Perspex.Markup.Xaml.Context
{
using System;
using DataBinding;
diff --git a/src/Markup/Perspex.Xaml/Context/PerspexWiringContext.cs b/src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs
similarity index 99%
rename from src/Markup/Perspex.Xaml/Context/PerspexWiringContext.cs
rename to src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs
index c97a5cc8f2..d52fe9df92 100644
--- a/src/Markup/Perspex.Xaml/Context/PerspexWiringContext.cs
+++ b/src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.Context
+namespace Perspex.Markup.Xaml.Context
{
using System.Collections.Generic;
using System.Collections.ObjectModel;
diff --git a/src/Markup/Perspex.Xaml/Context/PerspexXamlMember.cs b/src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlMember.cs
similarity index 95%
rename from src/Markup/Perspex.Xaml/Context/PerspexXamlMember.cs
rename to src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlMember.cs
index 58ad1c6c64..d1c8575afc 100644
--- a/src/Markup/Perspex.Xaml/Context/PerspexXamlMember.cs
+++ b/src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlMember.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.Context
+namespace Perspex.Markup.Xaml.Context
{
using DataBinding;
using OmniXaml;
diff --git a/src/Markup/Perspex.Xaml/Context/PerspexXamlMemberValuePlugin.cs b/src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlMemberValuePlugin.cs
similarity index 98%
rename from src/Markup/Perspex.Xaml/Context/PerspexXamlMemberValuePlugin.cs
rename to src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlMemberValuePlugin.cs
index e52031e023..175706d5fa 100644
--- a/src/Markup/Perspex.Xaml/Context/PerspexXamlMemberValuePlugin.cs
+++ b/src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlMemberValuePlugin.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.Context
+namespace Perspex.Markup.Xaml.Context
{
using System;
using System.Reactive.Linq;
diff --git a/src/Markup/Perspex.Xaml/Context/PerspexXamlType.cs b/src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlType.cs
similarity index 96%
rename from src/Markup/Perspex.Xaml/Context/PerspexXamlType.cs
rename to src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlType.cs
index bf377d03df..687d70dae8 100644
--- a/src/Markup/Perspex.Xaml/Context/PerspexXamlType.cs
+++ b/src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlType.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.Context
+namespace Perspex.Markup.Xaml.Context
{
using System;
using DataBinding;
diff --git a/src/Markup/Perspex.Xaml/Converters/BitmapConverter.cs b/src/Markup/Perspex.Markup.Xaml/Converters/BitmapConverter.cs
similarity index 95%
rename from src/Markup/Perspex.Xaml/Converters/BitmapConverter.cs
rename to src/Markup/Perspex.Markup.Xaml/Converters/BitmapConverter.cs
index 3d758163d8..3075e234c9 100644
--- a/src/Markup/Perspex.Xaml/Converters/BitmapConverter.cs
+++ b/src/Markup/Perspex.Markup.Xaml/Converters/BitmapConverter.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.Converters
+namespace Perspex.Markup.Xaml.Converters
{
using System;
using System.Globalization;
diff --git a/src/Markup/Perspex.Xaml/Converters/BrushConverter.cs b/src/Markup/Perspex.Markup.Xaml/Converters/BrushConverter.cs
similarity index 98%
rename from src/Markup/Perspex.Xaml/Converters/BrushConverter.cs
rename to src/Markup/Perspex.Markup.Xaml/Converters/BrushConverter.cs
index 28e50ac615..5236df0df8 100644
--- a/src/Markup/Perspex.Xaml/Converters/BrushConverter.cs
+++ b/src/Markup/Perspex.Markup.Xaml/Converters/BrushConverter.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.Converters
+namespace Perspex.Markup.Xaml.Converters
{
using System;
using System.Globalization;
diff --git a/src/Markup/Perspex.Xaml/Converters/GridLengthTypeConverter.cs b/src/Markup/Perspex.Markup.Xaml/Converters/GridLengthTypeConverter.cs
similarity index 96%
rename from src/Markup/Perspex.Xaml/Converters/GridLengthTypeConverter.cs
rename to src/Markup/Perspex.Markup.Xaml/Converters/GridLengthTypeConverter.cs
index 0a013a92a4..3f3b2d39f6 100644
--- a/src/Markup/Perspex.Xaml/Converters/GridLengthTypeConverter.cs
+++ b/src/Markup/Perspex.Markup.Xaml/Converters/GridLengthTypeConverter.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.Converters
+namespace Perspex.Markup.Xaml.Converters
{
using System;
using System.Globalization;
diff --git a/src/Markup/Perspex.Xaml/Converters/ThicknessConverter.cs b/src/Markup/Perspex.Markup.Xaml/Converters/ThicknessConverter.cs
similarity index 97%
rename from src/Markup/Perspex.Xaml/Converters/ThicknessConverter.cs
rename to src/Markup/Perspex.Markup.Xaml/Converters/ThicknessConverter.cs
index 54c98316f6..e4768c1afe 100644
--- a/src/Markup/Perspex.Xaml/Converters/ThicknessConverter.cs
+++ b/src/Markup/Perspex.Markup.Xaml/Converters/ThicknessConverter.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.Converters
+namespace Perspex.Markup.Xaml.Converters
{
using System;
using System.Collections.Generic;
diff --git a/src/Markup/Perspex.Xaml/DataBinding/ChangeTracking/ObservablePropertyBranch.cs b/src/Markup/Perspex.Markup.Xaml/DataBinding/ChangeTracking/ObservablePropertyBranch.cs
similarity index 98%
rename from src/Markup/Perspex.Xaml/DataBinding/ChangeTracking/ObservablePropertyBranch.cs
rename to src/Markup/Perspex.Markup.Xaml/DataBinding/ChangeTracking/ObservablePropertyBranch.cs
index 5a1ccb6faa..b13b5d4bf9 100644
--- a/src/Markup/Perspex.Xaml/DataBinding/ChangeTracking/ObservablePropertyBranch.cs
+++ b/src/Markup/Perspex.Markup.Xaml/DataBinding/ChangeTracking/ObservablePropertyBranch.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.DataBinding.ChangeTracking
+namespace Perspex.Markup.Xaml.DataBinding.ChangeTracking
{
using System;
using System.Collections.Generic;
diff --git a/src/Markup/Perspex.Xaml/DataBinding/ChangeTracking/PropertyMountPoint.cs b/src/Markup/Perspex.Markup.Xaml/DataBinding/ChangeTracking/PropertyMountPoint.cs
similarity index 95%
rename from src/Markup/Perspex.Xaml/DataBinding/ChangeTracking/PropertyMountPoint.cs
rename to src/Markup/Perspex.Markup.Xaml/DataBinding/ChangeTracking/PropertyMountPoint.cs
index 40e73793f3..6b5819302f 100644
--- a/src/Markup/Perspex.Xaml/DataBinding/ChangeTracking/PropertyMountPoint.cs
+++ b/src/Markup/Perspex.Markup.Xaml/DataBinding/ChangeTracking/PropertyMountPoint.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.DataBinding.ChangeTracking
+namespace Perspex.Markup.Xaml.DataBinding.ChangeTracking
{
using System;
using System.Reflection;
diff --git a/src/Markup/Perspex.Xaml/DataBinding/ChangeTracking/PropertyPath.cs b/src/Markup/Perspex.Markup.Xaml/DataBinding/ChangeTracking/PropertyPath.cs
similarity index 90%
rename from src/Markup/Perspex.Xaml/DataBinding/ChangeTracking/PropertyPath.cs
rename to src/Markup/Perspex.Markup.Xaml/DataBinding/ChangeTracking/PropertyPath.cs
index 9485af8b5b..9a08ee4354 100644
--- a/src/Markup/Perspex.Xaml/DataBinding/ChangeTracking/PropertyPath.cs
+++ b/src/Markup/Perspex.Markup.Xaml/DataBinding/ChangeTracking/PropertyPath.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.DataBinding.ChangeTracking
+namespace Perspex.Markup.Xaml.DataBinding.ChangeTracking
{
public class PropertyPath
{
diff --git a/src/Markup/Perspex.Xaml/DataBinding/ChangeTracking/TargettedProperty.cs b/src/Markup/Perspex.Markup.Xaml/DataBinding/ChangeTracking/TargettedProperty.cs
similarity index 93%
rename from src/Markup/Perspex.Xaml/DataBinding/ChangeTracking/TargettedProperty.cs
rename to src/Markup/Perspex.Markup.Xaml/DataBinding/ChangeTracking/TargettedProperty.cs
index 28913efc48..518d9fca64 100644
--- a/src/Markup/Perspex.Xaml/DataBinding/ChangeTracking/TargettedProperty.cs
+++ b/src/Markup/Perspex.Markup.Xaml/DataBinding/ChangeTracking/TargettedProperty.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.DataBinding.ChangeTracking
+namespace Perspex.Markup.Xaml.DataBinding.ChangeTracking
{
using System;
using System.Reflection;
diff --git a/src/Markup/Perspex.Xaml/DataBinding/DataContextChangeSynchronizer.cs b/src/Markup/Perspex.Markup.Xaml/DataBinding/DataContextChangeSynchronizer.cs
similarity index 99%
rename from src/Markup/Perspex.Xaml/DataBinding/DataContextChangeSynchronizer.cs
rename to src/Markup/Perspex.Markup.Xaml/DataBinding/DataContextChangeSynchronizer.cs
index 739f7d26b5..d0ff23c8dc 100644
--- a/src/Markup/Perspex.Xaml/DataBinding/DataContextChangeSynchronizer.cs
+++ b/src/Markup/Perspex.Markup.Xaml/DataBinding/DataContextChangeSynchronizer.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.DataBinding
+namespace Perspex.Markup.Xaml.DataBinding
{
using System;
using System.Diagnostics;
diff --git a/src/Markup/Perspex.Xaml/DataBinding/IPerspexPropertyBinder.cs b/src/Markup/Perspex.Markup.Xaml/DataBinding/IPerspexPropertyBinder.cs
similarity index 86%
rename from src/Markup/Perspex.Xaml/DataBinding/IPerspexPropertyBinder.cs
rename to src/Markup/Perspex.Markup.Xaml/DataBinding/IPerspexPropertyBinder.cs
index 13cc8c6da0..968c64ecb5 100644
--- a/src/Markup/Perspex.Xaml/DataBinding/IPerspexPropertyBinder.cs
+++ b/src/Markup/Perspex.Markup.Xaml/DataBinding/IPerspexPropertyBinder.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.DataBinding
+namespace Perspex.Markup.Xaml.DataBinding
{
using System.Collections.Generic;
diff --git a/src/Markup/Perspex.Xaml/DataBinding/PerspexPropertyBinder.cs b/src/Markup/Perspex.Markup.Xaml/DataBinding/PerspexPropertyBinder.cs
similarity index 97%
rename from src/Markup/Perspex.Xaml/DataBinding/PerspexPropertyBinder.cs
rename to src/Markup/Perspex.Markup.Xaml/DataBinding/PerspexPropertyBinder.cs
index 00be05674c..7aaab8377d 100644
--- a/src/Markup/Perspex.Xaml/DataBinding/PerspexPropertyBinder.cs
+++ b/src/Markup/Perspex.Markup.Xaml/DataBinding/PerspexPropertyBinder.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.DataBinding
+namespace Perspex.Markup.Xaml.DataBinding
{
using System;
using System.Collections.Generic;
diff --git a/src/Markup/Perspex.Xaml/DataBinding/SourceBindingEndpoint.cs b/src/Markup/Perspex.Markup.Xaml/DataBinding/SourceBindingEndpoint.cs
similarity index 93%
rename from src/Markup/Perspex.Xaml/DataBinding/SourceBindingEndpoint.cs
rename to src/Markup/Perspex.Markup.Xaml/DataBinding/SourceBindingEndpoint.cs
index cc5ac9c2f5..8669e38086 100644
--- a/src/Markup/Perspex.Xaml/DataBinding/SourceBindingEndpoint.cs
+++ b/src/Markup/Perspex.Markup.Xaml/DataBinding/SourceBindingEndpoint.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.DataBinding
+namespace Perspex.Markup.Xaml.DataBinding
{
using System;
using System.ComponentModel;
diff --git a/src/Markup/Perspex.Xaml/DataBinding/TargetBindingEndpoint.cs b/src/Markup/Perspex.Markup.Xaml/DataBinding/TargetBindingEndpoint.cs
similarity index 87%
rename from src/Markup/Perspex.Xaml/DataBinding/TargetBindingEndpoint.cs
rename to src/Markup/Perspex.Markup.Xaml/DataBinding/TargetBindingEndpoint.cs
index 87d3f8ce0d..2143c264c3 100644
--- a/src/Markup/Perspex.Xaml/DataBinding/TargetBindingEndpoint.cs
+++ b/src/Markup/Perspex.Markup.Xaml/DataBinding/TargetBindingEndpoint.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.DataBinding
+namespace Perspex.Markup.Xaml.DataBinding
{
public class TargetBindingEndpoint
{
diff --git a/src/Markup/Perspex.Xaml/DataBinding/XamlBinding.cs b/src/Markup/Perspex.Markup.Xaml/DataBinding/XamlBinding.cs
similarity index 97%
rename from src/Markup/Perspex.Xaml/DataBinding/XamlBinding.cs
rename to src/Markup/Perspex.Markup.Xaml/DataBinding/XamlBinding.cs
index ce560d052f..7703fa4c23 100644
--- a/src/Markup/Perspex.Xaml/DataBinding/XamlBinding.cs
+++ b/src/Markup/Perspex.Markup.Xaml/DataBinding/XamlBinding.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.DataBinding
+namespace Perspex.Markup.Xaml.DataBinding
{
using System;
using System.Diagnostics;
diff --git a/src/Markup/Perspex.Xaml/DataBinding/XamlBindingDefinition.cs b/src/Markup/Perspex.Markup.Xaml/DataBinding/XamlBindingDefinition.cs
similarity index 94%
rename from src/Markup/Perspex.Xaml/DataBinding/XamlBindingDefinition.cs
rename to src/Markup/Perspex.Markup.Xaml/DataBinding/XamlBindingDefinition.cs
index 26847901b7..1505330cee 100644
--- a/src/Markup/Perspex.Xaml/DataBinding/XamlBindingDefinition.cs
+++ b/src/Markup/Perspex.Markup.Xaml/DataBinding/XamlBindingDefinition.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.DataBinding
+namespace Perspex.Markup.Xaml.DataBinding
{
using ChangeTracking;
using Controls;
diff --git a/src/Markup/Perspex.Markup.Xaml/GlobalSuppressions.cs b/src/Markup/Perspex.Markup.Xaml/GlobalSuppressions.cs
new file mode 100644
index 0000000000..3d080850f1
--- /dev/null
+++ b/src/Markup/Perspex.Markup.Xaml/GlobalSuppressions.cs
@@ -0,0 +1,14 @@
+// -----------------------------------------------------------------------
+//
+// Copyright 2015 MIT Licence. See licence.md for more information.
+//
+// -----------------------------------------------------------------------
+
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(
+ "StyleCop.CSharp.MaintainabilityRules",
+ "SA1401:Fields must be private",
+ Justification = "PerspexProperty fields should not be private.")]
+[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(
+ "StyleCop.CSharp.DocumentationRules",
+ "SA1609:Property documentation must have value",
+ Justification = "This rule is fscking pointless")]
\ No newline at end of file
diff --git a/src/Markup/Perspex.Xaml/MarkupExtensions/BindingExtension.cs b/src/Markup/Perspex.Markup.Xaml/MarkupExtensions/BindingExtension.cs
similarity index 96%
rename from src/Markup/Perspex.Xaml/MarkupExtensions/BindingExtension.cs
rename to src/Markup/Perspex.Markup.Xaml/MarkupExtensions/BindingExtension.cs
index e76839ab46..aacf80dfda 100644
--- a/src/Markup/Perspex.Xaml/MarkupExtensions/BindingExtension.cs
+++ b/src/Markup/Perspex.Markup.Xaml/MarkupExtensions/BindingExtension.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.MarkupExtensions
+namespace Perspex.Markup.Xaml.MarkupExtensions
{
using System.Linq;
using Controls;
diff --git a/src/Markup/Perspex.Xaml/MarkupExtensions/TypeExtension.cs b/src/Markup/Perspex.Markup.Xaml/MarkupExtensions/TypeExtension.cs
similarity index 95%
rename from src/Markup/Perspex.Xaml/MarkupExtensions/TypeExtension.cs
rename to src/Markup/Perspex.Markup.Xaml/MarkupExtensions/TypeExtension.cs
index ab5dc16e5e..8a8cff7b4c 100644
--- a/src/Markup/Perspex.Xaml/MarkupExtensions/TypeExtension.cs
+++ b/src/Markup/Perspex.Markup.Xaml/MarkupExtensions/TypeExtension.cs
@@ -1,4 +1,4 @@
-namespace Perspex.Xaml.MarkupExtensions
+namespace Perspex.Markup.Xaml.MarkupExtensions
{
using System;
using Glass;
diff --git a/src/Markup/Perspex.Xaml/Perspex.Xaml.csproj b/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj
similarity index 92%
rename from src/Markup/Perspex.Xaml/Perspex.Xaml.csproj
rename to src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj
index 00ae1936a3..b1dfe8478d 100644
--- a/src/Markup/Perspex.Xaml/Perspex.Xaml.csproj
+++ b/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj
@@ -8,8 +8,8 @@
{3E53A01A-B331-47F3-B828-4A5717E77A24}
Library
Properties
- Perspex.Xaml
- Perspex.Xaml
+ Perspex.Markup.Xaml
+ Perspex.Markup.Xaml
en-US
512
{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
@@ -32,16 +32,15 @@
TRACE
prompt
4
+ bin\Release\Perspex.Markup.Xaml.XML
Properties\SharedAssemblyInfo.cs
-
-
-
+
@@ -50,6 +49,7 @@
+
@@ -68,6 +68,7 @@
+
@@ -78,6 +79,10 @@
{d211e587-d8bc-45b9-95a4-f297c8fa5200}
Perspex.Animation
+
+ {799a7bb5-3c2c-48b6-85a7-406a12c420da}
+ Perspex.Application
+
{B09B78D8-9B26-48B0-9149-D64A2F120F3F}
Perspex.Base
@@ -149,6 +154,9 @@
True
+
+
+
-
\ No newline at end of file
diff --git a/src/Markup/Perspex.Xaml.Desktop/PerspexInflatableTypeFactory.cs b/src/Markup/Perspex.Xaml.Desktop/PerspexInflatableTypeFactory.cs
deleted file mode 100644
index 17f6b2dfb6..0000000000
--- a/src/Markup/Perspex.Xaml.Desktop/PerspexInflatableTypeFactory.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-namespace Perspex.Xaml.Desktop
-{
- using System;
- using System.Collections.ObjectModel;
- using Controls;
- using OmniXaml;
- using OmniXaml.AppServices;
- using OmniXaml.AppServices.NetCore;
-
- public class PerspexInflatableTypeFactory : InflatableTypeFactory
- {
- public PerspexInflatableTypeFactory() : base(new TypeFactory(), new InflatableResourceTranslator(), typeFactory => new PerspexXamlLoader(typeFactory))
- {
- Inflatables = new Collection { typeof(Window), typeof(UserControl) };
- }
- }
-}
\ No newline at end of file
diff --git a/src/Markup/Perspex.Xaml.Desktop/PerspexWindow.cs b/src/Markup/Perspex.Xaml.Desktop/PerspexWindow.cs
deleted file mode 100644
index 23c727e5b5..0000000000
--- a/src/Markup/Perspex.Xaml.Desktop/PerspexWindow.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-namespace Perspex.Xaml.Desktop
-{
- using Controls;
- using OmniXaml.AppServices.Mvvm;
-
- public class PerspexWindow : Window, IView
- {
- public void SetViewModel(object viewModel)
- {
- this.DataContext = viewModel;
- }
- }
-}
\ No newline at end of file
diff --git a/src/Markup/Perspex.Xaml.Desktop/PerspexXamlLoader.cs b/src/Markup/Perspex.Xaml.Desktop/PerspexXamlLoader.cs
deleted file mode 100644
index 2d2bb68f45..0000000000
--- a/src/Markup/Perspex.Xaml.Desktop/PerspexXamlLoader.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-namespace Perspex.Xaml.Desktop
-{
- using OmniXaml;
-
- public class PerspexXamlLoader : XamlLoader
- {
- public PerspexXamlLoader(ITypeFactory typeFactory) : base(new PerspexParserFactory(typeFactory))
- {
- }
- }
-}
\ No newline at end of file
diff --git a/src/Markup/Perspex.Xaml.Desktop/Properties/AssemblyInfo.cs b/src/Markup/Perspex.Xaml.Desktop/Properties/AssemblyInfo.cs
deleted file mode 100644
index 841674882b..0000000000
--- a/src/Markup/Perspex.Xaml.Desktop/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-// -----------------------------------------------------------------------
-//
-// Copyright 2015 MIT Licence. See licence.md for more information.
-//
-// -----------------------------------------------------------------------
-
-using System.Reflection;
-
-[assembly: AssemblyTitle("Perspex.Xaml.Desktop")]
diff --git a/src/Markup/Perspex.Xaml.Desktop/packages.config b/src/Markup/Perspex.Xaml.Desktop/packages.config
deleted file mode 100644
index 50be3b2d3b..0000000000
--- a/src/Markup/Perspex.Xaml.Desktop/packages.config
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/Markup/Perspex.Xaml/HighLevel/IResourceProvider.cs b/src/Markup/Perspex.Xaml/HighLevel/IResourceProvider.cs
deleted file mode 100644
index 151a06d60f..0000000000
--- a/src/Markup/Perspex.Xaml/HighLevel/IResourceProvider.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace Perspex.Xaml.HighLevel
-{
- using System;
- using System.IO;
-
- public interface IResourceProvider
- {
- Stream GetStream(Uri uri);
- }
-}
\ No newline at end of file
diff --git a/src/Markup/Perspex.Xaml/HighLevel/PerspexLoaderFactory.cs b/src/Markup/Perspex.Xaml/HighLevel/PerspexLoaderFactory.cs
deleted file mode 100644
index aafad7c322..0000000000
--- a/src/Markup/Perspex.Xaml/HighLevel/PerspexLoaderFactory.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-namespace Perspex.Xaml.HighLevel
-{
- using Context;
- using OmniXaml;
-
- public static class PerspexWiringContextFactory
- {
- private static IWiringContext context;
-
- public static IWiringContext GetContext(ITypeFactory factory)
- {
- if (context == null)
- {
- context = new PerspexWiringContext(factory);
- }
-
- return context;
- }
- }
-}
\ No newline at end of file
diff --git a/src/Markup/Perspex.Xaml/HighLevel/PerspexObjectAssemblerFactory.cs b/src/Markup/Perspex.Xaml/HighLevel/PerspexObjectAssemblerFactory.cs
deleted file mode 100644
index 6de80663fb..0000000000
--- a/src/Markup/Perspex.Xaml/HighLevel/PerspexObjectAssemblerFactory.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-namespace Perspex.Xaml.HighLevel
-{
- using OmniXaml;
- using Context;
- using OmniXaml.ObjectAssembler;
-
- public class PerspexObjectAssemblerFactory : IObjectAssemblerFactory
- {
- private readonly WiringContext context;
-
- public PerspexObjectAssemblerFactory(WiringContext context)
- {
- this.context = context;
- }
-
- public IObjectAssembler CreateAssembler(ObjectAssemblerSettings settings)
- {
- return new PerspexObjectAssembler(context, settings);
- }
- }
-}
\ No newline at end of file
diff --git a/src/Perspex.Application/Perspex.Application.csproj b/src/Perspex.Application/Perspex.Application.csproj
index 6f47a06bda..c378be1bee 100644
--- a/src/Perspex.Application/Perspex.Application.csproj
+++ b/src/Perspex.Application/Perspex.Application.csproj
@@ -72,6 +72,7 @@
Properties\SharedAssemblyInfo.cs
+
diff --git a/src/Perspex.Application/Platform/IAssetLoader.cs b/src/Perspex.Application/Platform/IAssetLoader.cs
new file mode 100644
index 0000000000..3ac4abc994
--- /dev/null
+++ b/src/Perspex.Application/Platform/IAssetLoader.cs
@@ -0,0 +1,27 @@
+// -----------------------------------------------------------------------
+//
+// Copyright 2015 MIT Licence. See licence.md for more information.
+//
+// -----------------------------------------------------------------------
+
+namespace Perspex.Platform
+{
+ using System;
+ using System.IO;
+
+ ///
+ /// Loads assets compiled into the application binary.
+ ///
+ public interface IAssetLoader
+ {
+ ///
+ /// Opens the resource with the requested URI.
+ ///
+ /// The URI.
+ /// A stream containing the resource contents.
+ ///
+ /// The resource was not found.
+ ///
+ Stream Open(Uri uri);
+ }
+}
diff --git a/src/Windows/Perspex.Win32/AssetLoader.cs b/src/Windows/Perspex.Win32/AssetLoader.cs
new file mode 100644
index 0000000000..1d0c008459
--- /dev/null
+++ b/src/Windows/Perspex.Win32/AssetLoader.cs
@@ -0,0 +1,48 @@
+// -----------------------------------------------------------------------
+//
+// Copyright 2015 MIT Licence. See licence.md for more information.
+//
+// -----------------------------------------------------------------------
+
+namespace Perspex.Win32
+{
+ using System;
+ using System.Globalization;
+ using System.IO;
+ using System.Reflection;
+ using System.Resources;
+ using Perspex.Platform;
+
+ ///
+ /// Loads assets compiled into the application binary.
+ ///
+ public class AssetLoader : IAssetLoader
+ {
+ ///
+ /// Opens the resource with the requested URI.
+ ///
+ /// The URI.
+ /// A stream containing the resource contents.
+ ///
+ /// The resource was not found.
+ ///
+ public Stream Open(Uri uri)
+ {
+ var assembly = Assembly.GetEntryAssembly();
+ var resourceName = assembly.GetName().Name + ".g";
+ var manager = new ResourceManager(resourceName, assembly);
+
+ using (var resourceSet = manager.GetResourceSet(CultureInfo.CurrentCulture, true, true))
+ {
+ var stream = (Stream)resourceSet.GetObject(uri.ToString(), true);
+
+ if (stream == null)
+ {
+ throw new FileNotFoundException($"The requested asset could not be found: {uri}");
+ }
+
+ return stream;
+ }
+ }
+ }
+}
diff --git a/src/Windows/Perspex.Win32/Perspex.Win32.csproj b/src/Windows/Perspex.Win32/Perspex.Win32.csproj
index 3f8486b194..7f83e98d5c 100644
--- a/src/Windows/Perspex.Win32/Perspex.Win32.csproj
+++ b/src/Windows/Perspex.Win32/Perspex.Win32.csproj
@@ -63,6 +63,7 @@
Properties\SharedAssemblyInfo.cs
+
@@ -81,6 +82,10 @@
{d211e587-d8bc-45b9-95a4-f297c8fa5200}
Perspex.Animation
+
+ {799a7bb5-3c2c-48b6-85a7-406a12c420da}
+ Perspex.Application
+
{B09B78D8-9B26-48B0-9149-D64A2F120F3F}
Perspex.Base
diff --git a/src/Windows/Perspex.Win32/Win32Platform.cs b/src/Windows/Perspex.Win32/Win32Platform.cs
index 6ae2a65940..b96b9d5719 100644
--- a/src/Windows/Perspex.Win32/Win32Platform.cs
+++ b/src/Windows/Perspex.Win32/Win32Platform.cs
@@ -51,12 +51,14 @@ namespace Perspex.Win32
public static void Initialize()
{
var locator = Locator.CurrentMutable;
+
locator.Register(() => new PopupImpl(), typeof(IPopupImpl));
locator.Register(() => new WindowImpl(), typeof(IWindowImpl));
locator.Register(() => WindowsKeyboardDevice.Instance, typeof(IKeyboardDevice));
locator.Register(() => WindowsMouseDevice.Instance, typeof(IMouseDevice));
locator.Register(() => instance, typeof(IPlatformSettings));
locator.Register(() => instance, typeof(IPlatformThreadingInterface));
+ locator.RegisterConstant(new AssetLoader(), typeof(IAssetLoader));
}
public bool HasMessages()