convert Pilz.Collections to c#
This commit is contained in:
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
|
||||
</startup>
|
||||
</configuration>
|
||||
16
Pilz.Collections/Pilz.Collections.csproj
Normal file
16
Pilz.Collections/Pilz.Collections.csproj
Normal file
@@ -0,0 +1,16 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
|
||||
<StartupObject />
|
||||
<TargetFrameworks>net8.0</TargetFrameworks>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<Version>2.0.0</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
@@ -1,62 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<StartupObject />
|
||||
<TargetFrameworks>netstandard2.0;net8.0</TargetFrameworks>
|
||||
<DocumentationFile>Pilz.Collections.xml</DocumentationFile>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DefineDebug>true</DefineDebug>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022,40008</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DefineDebug>false</DefineDebug>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
<RemoveIntegerChecks>true</RemoveIntegerChecks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionExplicit>On</OptionExplicit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionCompare>Binary</OptionCompare>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionStrict>Off</OptionStrict>
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<Version>2.0.0</Version>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<DefineDebug>true</DefineDebug>
|
||||
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022,40008</NoWarn>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<UseVSHostingProcess>true</UseVSHostingProcess>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
|
||||
<RemoveIntegerChecks>true</RemoveIntegerChecks>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.VisualBasic" Version="10.3.0" />
|
||||
<PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
|
||||
<PackageReference Include="System.Net.Http" Version="4.3.4" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Import Include="Microsoft.VisualBasic" />
|
||||
<Import Include="System" />
|
||||
<Import Include="System.Collections" />
|
||||
<Import Include="System.Collections.Generic" />
|
||||
<Import Include="System.Data" />
|
||||
<Import Include="System.Drawing" />
|
||||
<Import Include="System.Linq" />
|
||||
<Import Include="System.Xml.Linq" />
|
||||
<Import Include="System.Threading.Tasks" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Remove="SimpleHistory\Enums.vb" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,12 +0,0 @@
|
||||
Namespace SimpleHistory
|
||||
|
||||
''' <summary>
|
||||
''' Specify which member types you would include.
|
||||
''' </summary>
|
||||
Public Enum ObjectValueType
|
||||
None = 0
|
||||
Field = 1
|
||||
[Property] = 2
|
||||
End Enum
|
||||
|
||||
End Namespace
|
||||
615
Pilz.Collections/SimpleHistory/HistoryPoint.cs
Normal file
615
Pilz.Collections/SimpleHistory/HistoryPoint.cs
Normal file
@@ -0,0 +1,615 @@
|
||||
using System.Data;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Pilz.Collections.SimpleHistory;
|
||||
|
||||
/// <summary>
|
||||
/// Represent some Object States and Actions.
|
||||
/// </summary>
|
||||
public class HistoryPoint
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents the Name of this History Point
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// A List of Object States and Actions.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public List<ObjectBase> Entries { get; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Some data can be refered on this HistoryPoint. Don't know, in some situations this can be helpful.
|
||||
/// </summary>
|
||||
public readonly object? Tag = null;
|
||||
|
||||
public bool HasEntries<T>() where T : ObjectBase
|
||||
{
|
||||
return Entries.Where(n => n is T).Any();
|
||||
}
|
||||
|
||||
internal void Undo()
|
||||
{
|
||||
foreach (var s in Entries.OrderBy(n => n.UndoPriority))
|
||||
{
|
||||
switch (s)
|
||||
{
|
||||
case ObjectState state:
|
||||
state.Patch();
|
||||
break;
|
||||
case ObjectAction action:
|
||||
action.Undo();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal void Redo()
|
||||
{
|
||||
foreach (var s in Entries.OrderBy(n => n.RedoPriority))
|
||||
{
|
||||
switch (s)
|
||||
{
|
||||
case ObjectState state:
|
||||
state.Patch();
|
||||
break;
|
||||
case ObjectAction action:
|
||||
action.Redo();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The objects that should be included.</param>
|
||||
/// <param name="whiteList">Specify which members to include.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] obj, MemberWhiteList whiteList)
|
||||
{
|
||||
return FromObject([obj], ObjectValueType.None, (object)whiteList, BindingFlags.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The objects that should be included.</param>
|
||||
/// <param name="blackList">Specify which members to exclude.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] obj, MemberBlackList blackList)
|
||||
{
|
||||
return FromObject([obj], ObjectValueType.None, (object)blackList, BindingFlags.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The objects that should be included.</param>
|
||||
/// <param name="memberName">The member names to include.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] obj, params string[] memberName)
|
||||
{
|
||||
return FromObject(obj, true, memberName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The objects that should be included.</param>
|
||||
/// <param name="isWhiteList">If true, the memberName-Array has member names that should be included.</param>
|
||||
/// <param name="memberName">The member names to include/exclude.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] obj, bool isWhiteList, params string[] memberName)
|
||||
{
|
||||
if (isWhiteList)
|
||||
return FromObject([obj], ObjectValueType.None, (object)new MemberWhiteList(memberName), BindingFlags.Default);
|
||||
else
|
||||
return FromObject([obj], ObjectValueType.None, (object)new MemberBlackList(memberName), BindingFlags.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The objects that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="memberName">The member names to include.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] obj, ObjectValueType membersToStore, params string[] memberName)
|
||||
{
|
||||
return FromObject(obj, membersToStore, true, memberName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The objects that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="isWhiteList">If true, the memberName-Array has member names that should be included.</param>
|
||||
/// <param name="memberName">The member names to include/exclude.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] obj, ObjectValueType membersToStore, bool isWhiteList, params string[] memberName)
|
||||
{
|
||||
if (isWhiteList)
|
||||
return FromObject([obj], membersToStore, (object)new MemberWhiteList(memberName), BindingFlags.Default);
|
||||
else
|
||||
return FromObject([obj], membersToStore, (object)new MemberBlackList(memberName), BindingFlags.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The objects that should be included.</param>
|
||||
/// <param name="flags">The Binding Flags that the members should have.</param>
|
||||
/// <param name="memberName">The member names to include.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] obj, BindingFlags flags, params string[] memberName)
|
||||
{
|
||||
return FromObject(obj, flags, true, memberName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The objects that should be included.</param>
|
||||
/// <param name="flags">The Binding Flags that the members should have.</param>
|
||||
/// <param name="isWhiteList">If true, the memberName-Array has member names that should be included.</param>
|
||||
/// <param name="memberName">The member names to include/exclude.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] obj, BindingFlags flags, bool isWhiteList, params string[] memberName)
|
||||
{
|
||||
if (isWhiteList)
|
||||
return FromObject([obj], ObjectValueType.None, (object)new MemberWhiteList(memberName), flags);
|
||||
else
|
||||
return FromObject([obj], ObjectValueType.None, (object)new MemberBlackList(memberName), flags);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The objects that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="flags">The Binding Flags that the members should have.</param>
|
||||
/// <param name="memberName">The member names to include.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] obj, ObjectValueType membersToStore, BindingFlags flags, params string[] memberName)
|
||||
{
|
||||
return FromObject(obj, flags, true, memberName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The objects that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="flags">The Binding Flags that the members should have.</param>
|
||||
/// <param name="isWhiteList">If true, the memberName-Array has member names that should be included.</param>
|
||||
/// <param name="memberName">The member names to include/exclude.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] obj, ObjectValueType membersToStore, BindingFlags flags, bool isWhiteList, params string[] memberName)
|
||||
{
|
||||
if (isWhiteList)
|
||||
return FromObject([obj], membersToStore, (object)new MemberWhiteList(memberName), flags);
|
||||
else
|
||||
return FromObject([obj], membersToStore, (object)new MemberBlackList(memberName), flags);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <param name="whiteList">Specify which members to include.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj, MemberWhiteList whiteList)
|
||||
{
|
||||
return FromObject([obj], ObjectValueType.None, (object)whiteList, BindingFlags.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <param name="blackList">Specify which members to exclude.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj, MemberBlackList blackList)
|
||||
{
|
||||
return FromObject([obj], ObjectValueType.None, (object)blackList, BindingFlags.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <param name="memberName">The member names to include/exclude.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj, params string[] memberName)
|
||||
{
|
||||
return FromObject(obj, true, memberName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <param name="isWhiteList">If true, the memberName-Array has member names that should be included.</param>
|
||||
/// <param name="memberName">The member names to include/exclude.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj, bool isWhiteList, params string[] memberName)
|
||||
{
|
||||
if (isWhiteList)
|
||||
return FromObject([obj], ObjectValueType.None, (object)new MemberWhiteList(memberName), BindingFlags.Default);
|
||||
else
|
||||
return FromObject([obj], ObjectValueType.None, (object)new MemberBlackList(memberName), BindingFlags.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="memberName">The member names to include.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, params string[] memberName)
|
||||
{
|
||||
return FromObject(obj, membersToStore, true, memberName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="isWhiteList">If true, the memberName-Array has member names that should be included.</param>
|
||||
/// <param name="memberName">The member names to include/exclude.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, bool isWhiteList, params string[] memberName)
|
||||
{
|
||||
if (isWhiteList)
|
||||
return FromObject([obj], membersToStore, (object)new MemberWhiteList(memberName), BindingFlags.Default);
|
||||
else
|
||||
return FromObject([obj], membersToStore, (object)new MemberBlackList(memberName), BindingFlags.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <param name="flags">The Binding Flags that the members should have.</param>
|
||||
/// <param name="memberName">The member names to include.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj, BindingFlags flags, params string[] memberName)
|
||||
{
|
||||
return FromObject(obj, flags, true, memberName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <param name="flags">The Binding Flags that the members should have.</param>
|
||||
/// <param name="isWhiteList">If true, the memberName-Array has member names that should be included.</param>
|
||||
/// <param name="memberName">The member names to include/exclude.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj, BindingFlags flags, bool isWhiteList, params string[] memberName)
|
||||
{
|
||||
if (isWhiteList)
|
||||
return FromObject([obj], ObjectValueType.None, (object)new MemberWhiteList(memberName), flags);
|
||||
else
|
||||
return FromObject([obj], ObjectValueType.None, (object)new MemberBlackList(memberName), flags);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="flags">The Binding Flags that the members should have.</param>
|
||||
/// <param name="memberName">The member names to include.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, BindingFlags flags, params string[] memberName)
|
||||
{
|
||||
return FromObject(obj, flags, true, memberName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="flags">The Binding Flags that the members should have.</param>
|
||||
/// <param name="isWhiteList">If true, the memberName-Array has member names that should be included.</param>
|
||||
/// <param name="memberName">The member names to include/exclude.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, BindingFlags flags, bool isWhiteList, params string[] memberName)
|
||||
{
|
||||
if (isWhiteList)
|
||||
return FromObject([obj], membersToStore, (object)new MemberWhiteList(memberName), flags);
|
||||
else
|
||||
return FromObject([obj], membersToStore, (object)new MemberBlackList(memberName), flags);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj)
|
||||
{
|
||||
return FromObject([obj], ObjectValueType.None, default(object), BindingFlags.Default);
|
||||
}
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore)
|
||||
{
|
||||
return FromObject([obj], membersToStore, default(object), BindingFlags.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="whiteList">Specify which members to include.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, MemberWhiteList whiteList)
|
||||
{
|
||||
return FromObject([obj], membersToStore, (object)whiteList, BindingFlags.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="blackList">Specify which members to exclude.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, MemberBlackList blackList)
|
||||
{
|
||||
return FromObject([obj], membersToStore, (object)blackList, BindingFlags.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <param name="flags">The Binding Flags that the members should have.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj, BindingFlags flags)
|
||||
{
|
||||
return FromObject([obj], ObjectValueType.None, default(object), flags);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="flags">The Binding Flags that the members should have.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, BindingFlags flags)
|
||||
{
|
||||
return FromObject([obj], membersToStore, default(object), flags);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="whiteList">Specify which members to include.</param>
|
||||
/// <param name="flags">The Binding Flags that the members should have.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, MemberWhiteList whiteList, BindingFlags flags)
|
||||
{
|
||||
return FromObject([obj], membersToStore, (object)whiteList, flags);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="blackList">Specify which members to exclude.</param>
|
||||
/// <param name="flags">The Binding Flags that the members should have.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, MemberBlackList blackList, BindingFlags flags)
|
||||
{
|
||||
return FromObject([obj], membersToStore, (object)blackList, flags);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="objs">The objects that should be included.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] objs)
|
||||
{
|
||||
return FromObject(objs, ObjectValueType.None, default(object), BindingFlags.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="objs">The objects that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] objs, ObjectValueType membersToStore)
|
||||
{
|
||||
return FromObject(objs, membersToStore, default(object), BindingFlags.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="objs">The objects that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="whiteList">Specify which members to include.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] objs, ObjectValueType membersToStore, MemberWhiteList whiteList)
|
||||
{
|
||||
return FromObject(objs, membersToStore, (object)whiteList, BindingFlags.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="objs">The objects that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="blackList">Specify which members to exclude.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] objs, ObjectValueType membersToStore, MemberBlackList blackList)
|
||||
{
|
||||
return FromObject(objs, membersToStore, (object)blackList, BindingFlags.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="objs">The objects that should be included.</param>
|
||||
/// <param name="flags">The Binding Flags that the members should have.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] objs, BindingFlags flags)
|
||||
{
|
||||
return FromObject(objs, ObjectValueType.None, default(object), flags);
|
||||
}
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="objs">The objects that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="flags">The Binding Flags that the members should have.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] objs, ObjectValueType membersToStore, BindingFlags flags)
|
||||
{
|
||||
return FromObject(objs, membersToStore, default(object), flags);
|
||||
}
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="objs">The objects that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="whiteList">Specify which members to include.</param>
|
||||
/// <param name="flags">The Binding Flags that the members should have.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] objs, ObjectValueType membersToStore, MemberWhiteList whiteList, BindingFlags flags)
|
||||
{
|
||||
return FromObject(objs, membersToStore, (object)whiteList, flags);
|
||||
}
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="objs">The objects that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="blackList">Specify which members to exclude.</param>
|
||||
/// <param name="flags">The Binding Flags that the members should have.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
public static HistoryPoint FromObject(object[] objs, ObjectValueType membersToStore, MemberBlackList blackList, BindingFlags flags)
|
||||
{
|
||||
return FromObject(objs, membersToStore, (object)blackList, flags);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates an History Point with Object States automaticly from input.
|
||||
/// </summary>
|
||||
/// <param name="objs">The objects that should be included.</param>
|
||||
/// <param name="membersToStore">Specify what member types to include.</param>
|
||||
/// <param name="whiteOrBlackList">Specify which members to include.</param>
|
||||
/// <param name="flags">The Binding Flags that the members should have.</param>
|
||||
/// <returns>A History Point with Object States.</returns>
|
||||
private static HistoryPoint FromObject(object[] objs, ObjectValueType membersToStore, object? whiteOrBlackList, BindingFlags flags)
|
||||
{
|
||||
var hp = new HistoryPoint();
|
||||
|
||||
whiteOrBlackList ??= new MemberBlackList();
|
||||
var isWhiteList = whiteOrBlackList is MemberWhiteList;
|
||||
|
||||
if (flags == BindingFlags.Default)
|
||||
flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
|
||||
|
||||
if (membersToStore == ObjectValueType.None)
|
||||
membersToStore = ObjectValueType.Field | ObjectValueType.Property;
|
||||
|
||||
foreach (var obj in objs)
|
||||
{
|
||||
if ((membersToStore & ObjectValueType.Field) == ObjectValueType.Field)
|
||||
{
|
||||
foreach (var fi in obj.GetType().GetFields(flags))
|
||||
{
|
||||
var contains = ((List<string>)whiteOrBlackList).Contains(fi.Name);
|
||||
if (isWhiteList ? contains : !contains)
|
||||
{
|
||||
var os = new ObjectState
|
||||
{
|
||||
Object = obj,
|
||||
MemberName = fi.Name,
|
||||
MemberType = ObjectValueType.Field,
|
||||
MemberFlags = flags,
|
||||
ValueToPatch = fi.GetValue(obj)
|
||||
};
|
||||
hp.Entries.Add(os);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((membersToStore & ObjectValueType.Property) == ObjectValueType.Property)
|
||||
{
|
||||
foreach (var pi in obj.GetType().GetProperties(flags))
|
||||
{
|
||||
var contains = ((List<string>)whiteOrBlackList).Contains(pi.Name);
|
||||
if (isWhiteList ? contains : !contains)
|
||||
{
|
||||
var os = new ObjectState
|
||||
{
|
||||
Object = obj,
|
||||
MemberName = pi.Name,
|
||||
MemberType = ObjectValueType.Property,
|
||||
MemberFlags = flags,
|
||||
ValueToPatch = pi.GetValue(obj)
|
||||
};
|
||||
hp.Entries.Add(os);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return hp;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Combines some History Points to one.
|
||||
/// </summary>
|
||||
/// <param name="hps">An array of History Points to combine.</param>
|
||||
/// <returns>One History Point that contains all Data of inputted History Points.</returns>
|
||||
public static HistoryPoint Concat(params HistoryPoint[] hps)
|
||||
{
|
||||
return Concat(null, hps);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Combines some History Points to one.
|
||||
/// </summary>
|
||||
/// <param name="hps">An array of History Points to combine.</param>
|
||||
/// <param name="newName">The new name for the History Point after concating.</param>
|
||||
/// <returns>One History Point that contains all Data of inputted History Points.</returns>
|
||||
public static HistoryPoint Concat(string? newName, params HistoryPoint[] hps)
|
||||
{
|
||||
var hp = new HistoryPoint();
|
||||
|
||||
foreach (var _hp in hps)
|
||||
hp.Entries.AddRange(_hp.Entries);
|
||||
|
||||
if (newName != null)
|
||||
hp.Name = newName;
|
||||
else
|
||||
hp.Name = hps.FirstOrDefault()?.Name ?? string.Empty;
|
||||
|
||||
return hp;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,543 +0,0 @@
|
||||
Imports System.Reflection
|
||||
|
||||
Namespace SimpleHistory
|
||||
|
||||
''' <summary>
|
||||
''' Represent some Object States and Actions.
|
||||
''' </summary>
|
||||
Public Class HistoryPoint
|
||||
|
||||
''' <summary>
|
||||
''' Represents the Name of this History Point
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Name As String = ""
|
||||
''' <summary>
|
||||
''' A List of Object States and Actions.
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public ReadOnly Property Entries As New List(Of ObjectBase)
|
||||
''' <summary>
|
||||
''' Some data can be refered on this HistoryPoint. Don't know, in some situations this can be helpful.
|
||||
''' </summary>
|
||||
Public ReadOnly Tag As Object = Nothing
|
||||
|
||||
Public Function HasEntries(Of T As ObjectBase)() As Boolean
|
||||
Return Entries.Where(Function(n) TypeOf n Is T).Count > 0
|
||||
End Function
|
||||
|
||||
Friend Sub Undo()
|
||||
For Each s As ObjectBase In Entries.OrderBy(Function(n) n.UndoPriority)
|
||||
If TypeOf s Is ObjectState Then
|
||||
CType(s, ObjectState).Patch()
|
||||
ElseIf TypeOf s Is ObjectAction Then
|
||||
CType(s, ObjectAction).Undo()
|
||||
End If
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Friend Sub Redo()
|
||||
For Each s As ObjectBase In Entries.OrderBy(Function(n) n.RedoPriority)
|
||||
If TypeOf s Is ObjectState Then
|
||||
CType(s, ObjectState).Patch()
|
||||
ElseIf TypeOf s Is ObjectAction Then
|
||||
CType(s, ObjectAction).Redo()
|
||||
End If
|
||||
Next
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The objects that should be included.</param>
|
||||
''' <param name="whiteList">Specify which members to include.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object(), whiteList As MemberWhiteList) As HistoryPoint
|
||||
Return FromObject({obj}, ObjectValueType.None, CObj(whiteList), BindingFlags.Default)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The objects that should be included.</param>
|
||||
''' <param name="blackList">Specify which members to exclude.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object(), blackList As MemberBlackList) As HistoryPoint
|
||||
Return FromObject({obj}, ObjectValueType.None, CObj(blackList), BindingFlags.Default)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The objects that should be included.</param>
|
||||
''' <param name="memberName">The member names to include.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object(), ParamArray memberName As String()) As HistoryPoint
|
||||
Return FromObject(obj, True, memberName)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The objects that should be included.</param>
|
||||
''' <param name="isWhiteList">If true, the memberName-Array has member names that should be included.</param>
|
||||
''' <param name="memberName">The member names to include/exclude.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object(), isWhiteList As Boolean, ParamArray memberName As String()) As HistoryPoint
|
||||
If isWhiteList Then
|
||||
Return FromObject({obj}, ObjectValueType.None, CObj(New MemberWhiteList(memberName)), BindingFlags.Default)
|
||||
Else
|
||||
Return FromObject({obj}, ObjectValueType.None, CObj(New MemberBlackList(memberName)), BindingFlags.Default)
|
||||
End If
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The objects that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="memberName">The member names to include.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object(), membersToStore As ObjectValueType, ParamArray memberName As String()) As HistoryPoint
|
||||
Return FromObject(obj, membersToStore, True, memberName)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The objects that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="isWhiteList">If true, the memberName-Array has member names that should be included.</param>
|
||||
''' <param name="memberName">The member names to include/exclude.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object(), membersToStore As ObjectValueType, isWhiteList As Boolean, ParamArray memberName As String()) As HistoryPoint
|
||||
If isWhiteList Then
|
||||
Return FromObject({obj}, membersToStore, CObj(New MemberWhiteList(memberName)), BindingFlags.Default)
|
||||
Else
|
||||
Return FromObject({obj}, membersToStore, CObj(New MemberBlackList(memberName)), BindingFlags.Default)
|
||||
End If
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The objects that should be included.</param>
|
||||
''' <param name="flags">The Binding Flags that the members should have.</param>
|
||||
''' <param name="memberName">The member names to include.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object(), flags As BindingFlags, ParamArray memberName As String()) As HistoryPoint
|
||||
Return FromObject(obj, flags, True, memberName)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The objects that should be included.</param>
|
||||
''' <param name="flags">The Binding Flags that the members should have.</param>
|
||||
''' <param name="isWhiteList">If true, the memberName-Array has member names that should be included.</param>
|
||||
''' <param name="memberName">The member names to include/exclude.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object(), flags As BindingFlags, isWhiteList As Boolean, ParamArray memberName As String()) As HistoryPoint
|
||||
If isWhiteList Then
|
||||
Return FromObject({obj}, ObjectValueType.None, CObj(New MemberWhiteList(memberName)), flags)
|
||||
Else
|
||||
Return FromObject({obj}, ObjectValueType.None, CObj(New MemberBlackList(memberName)), flags)
|
||||
End If
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The objects that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="flags">The Binding Flags that the members should have.</param>
|
||||
''' <param name="memberName">The member names to include.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object(), membersToStore As ObjectValueType, flags As BindingFlags, ParamArray memberName As String()) As HistoryPoint
|
||||
Return FromObject(obj, flags, True, memberName)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The objects that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="flags">The Binding Flags that the members should have.</param>
|
||||
''' <param name="isWhiteList">If true, the memberName-Array has member names that should be included.</param>
|
||||
''' <param name="memberName">The member names to include/exclude.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object(), membersToStore As ObjectValueType, flags As BindingFlags, isWhiteList As Boolean, ParamArray memberName As String()) As HistoryPoint
|
||||
If isWhiteList Then
|
||||
Return FromObject({obj}, membersToStore, CObj(New MemberWhiteList(memberName)), flags)
|
||||
Else
|
||||
Return FromObject({obj}, membersToStore, CObj(New MemberBlackList(memberName)), flags)
|
||||
End If
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <param name="whiteList">Specify which members to include.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object, whiteList As MemberWhiteList) As HistoryPoint
|
||||
Return FromObject({obj}, ObjectValueType.None, CObj(whiteList), BindingFlags.Default)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <param name="blackList">Specify which members to exclude.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object, blackList As MemberBlackList) As HistoryPoint
|
||||
Return FromObject({obj}, ObjectValueType.None, CObj(blackList), BindingFlags.Default)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <param name="memberName">The member names to include/exclude.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object, ParamArray memberName As String()) As HistoryPoint
|
||||
Return FromObject(obj, True, memberName)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <param name="isWhiteList">If true, the memberName-Array has member names that should be included.</param>
|
||||
''' <param name="memberName">The member names to include/exclude.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object, isWhiteList As Boolean, ParamArray memberName As String()) As HistoryPoint
|
||||
If isWhiteList Then
|
||||
Return FromObject({obj}, ObjectValueType.None, CObj(New MemberWhiteList(memberName)), BindingFlags.Default)
|
||||
Else
|
||||
Return FromObject({obj}, ObjectValueType.None, CObj(New MemberBlackList(memberName)), BindingFlags.Default)
|
||||
End If
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="memberName">The member names to include.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, ParamArray memberName As String()) As HistoryPoint
|
||||
Return FromObject(obj, membersToStore, True, memberName)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="isWhiteList">If true, the memberName-Array has member names that should be included.</param>
|
||||
''' <param name="memberName">The member names to include/exclude.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, isWhiteList As Boolean, ParamArray memberName As String()) As HistoryPoint
|
||||
If isWhiteList Then
|
||||
Return FromObject({obj}, membersToStore, CObj(New MemberWhiteList(memberName)), BindingFlags.Default)
|
||||
Else
|
||||
Return FromObject({obj}, membersToStore, CObj(New MemberBlackList(memberName)), BindingFlags.Default)
|
||||
End If
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <param name="flags">The Binding Flags that the members should have.</param>
|
||||
''' <param name="memberName">The member names to include.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object, flags As BindingFlags, ParamArray memberName As String()) As HistoryPoint
|
||||
Return FromObject(obj, flags, True, memberName)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <param name="flags">The Binding Flags that the members should have.</param>
|
||||
''' <param name="isWhiteList">If true, the memberName-Array has member names that should be included.</param>
|
||||
''' <param name="memberName">The member names to include/exclude.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object, flags As BindingFlags, isWhiteList As Boolean, ParamArray memberName As String()) As HistoryPoint
|
||||
If isWhiteList Then
|
||||
Return FromObject({obj}, ObjectValueType.None, CObj(New MemberWhiteList(memberName)), flags)
|
||||
Else
|
||||
Return FromObject({obj}, ObjectValueType.None, CObj(New MemberBlackList(memberName)), flags)
|
||||
End If
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="flags">The Binding Flags that the members should have.</param>
|
||||
''' <param name="memberName">The member names to include.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, flags As BindingFlags, ParamArray memberName As String()) As HistoryPoint
|
||||
Return FromObject(obj, flags, True, memberName)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="flags">The Binding Flags that the members should have.</param>
|
||||
''' <param name="isWhiteList">If true, the memberName-Array has member names that should be included.</param>
|
||||
''' <param name="memberName">The member names to include/exclude.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, flags As BindingFlags, isWhiteList As Boolean, ParamArray memberName As String()) As HistoryPoint
|
||||
If isWhiteList Then
|
||||
Return FromObject({obj}, membersToStore, CObj(New MemberWhiteList(memberName)), flags)
|
||||
Else
|
||||
Return FromObject({obj}, membersToStore, CObj(New MemberBlackList(memberName)), flags)
|
||||
End If
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object) As HistoryPoint
|
||||
Return FromObject({obj}, ObjectValueType.None, CObj(Nothing), BindingFlags.Default)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType) As HistoryPoint
|
||||
Return FromObject({obj}, membersToStore, CObj(Nothing), BindingFlags.Default)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="whiteList">Specify which members to include.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, whiteList As MemberWhiteList) As HistoryPoint
|
||||
Return FromObject({obj}, membersToStore, CObj(whiteList), BindingFlags.Default)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="blackList">Specify which members to exclude.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, blackList As MemberBlackList) As HistoryPoint
|
||||
Return FromObject({obj}, membersToStore, CObj(blackList), BindingFlags.Default)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <param name="flags">The Binding Flags that the members should have.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object, flags As BindingFlags) As HistoryPoint
|
||||
Return FromObject({obj}, ObjectValueType.None, CObj(Nothing), flags)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="flags">The Binding Flags that the members should have.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, flags As BindingFlags) As HistoryPoint
|
||||
Return FromObject({obj}, membersToStore, CObj(Nothing), flags)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="whiteList">Specify which members to include.</param>
|
||||
''' <param name="flags">The Binding Flags that the members should have.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, whiteList As MemberWhiteList, flags As BindingFlags) As HistoryPoint
|
||||
Return FromObject({obj}, membersToStore, CObj(whiteList), flags)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The object that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="blackList">Specify which members to exclude.</param>
|
||||
''' <param name="flags">The Binding Flags that the members should have.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, blackList As MemberBlackList, flags As BindingFlags) As HistoryPoint
|
||||
Return FromObject({obj}, membersToStore, CObj(blackList), flags)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="objs">The objects that should be included.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(objs As Object()) As HistoryPoint
|
||||
Return FromObject(objs, ObjectValueType.None, CObj(Nothing), BindingFlags.Default)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="objs">The objects that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(objs As Object(), membersToStore As ObjectValueType) As HistoryPoint
|
||||
Return FromObject(objs, membersToStore, CObj(Nothing), BindingFlags.Default)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="objs">The objects that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="whiteList">Specify which members to include.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(objs As Object(), membersToStore As ObjectValueType, whiteList As MemberWhiteList) As HistoryPoint
|
||||
Return FromObject(objs, membersToStore, CObj(whiteList), BindingFlags.Default)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="objs">The objects that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="blackList">Specify which members to exclude.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(objs As Object(), membersToStore As ObjectValueType, blackList As MemberBlackList) As HistoryPoint
|
||||
Return FromObject(objs, membersToStore, CObj(blackList), BindingFlags.Default)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="objs">The objects that should be included.</param>
|
||||
''' <param name="flags">The Binding Flags that the members should have.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(objs As Object(), flags As BindingFlags) As HistoryPoint
|
||||
Return FromObject(objs, ObjectValueType.None, CObj(Nothing), flags)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="objs">The objects that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="flags">The Binding Flags that the members should have.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(objs As Object(), membersToStore As ObjectValueType, flags As BindingFlags) As HistoryPoint
|
||||
Return FromObject(objs, membersToStore, CObj(Nothing), flags)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="objs">The objects that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="whiteList">Specify which members to include.</param>
|
||||
''' <param name="flags">The Binding Flags that the members should have.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(objs As Object(), membersToStore As ObjectValueType, whiteList As MemberWhiteList, flags As BindingFlags) As HistoryPoint
|
||||
Return FromObject(objs, membersToStore, CObj(whiteList), flags)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="objs">The objects that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="blackList">Specify which members to exclude.</param>
|
||||
''' <param name="flags">The Binding Flags that the members should have.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Public Shared Function FromObject(objs As Object(), membersToStore As ObjectValueType, blackList As MemberBlackList, flags As BindingFlags) As HistoryPoint
|
||||
Return FromObject(objs, membersToStore, CObj(blackList), flags)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Creates an History Point with Object States automaticly from input.
|
||||
''' </summary>
|
||||
''' <param name="objs">The objects that should be included.</param>
|
||||
''' <param name="membersToStore">Specify what member types to include.</param>
|
||||
''' <param name="whiteOrBlackList">Specify which members to include.</param>
|
||||
''' <param name="flags">The Binding Flags that the members should have.</param>
|
||||
''' <returns>A History Point with Object States.</returns>
|
||||
Private Shared Function FromObject(objs As Object(), membersToStore As ObjectValueType, whiteOrBlackList As Object, flags As BindingFlags) As HistoryPoint
|
||||
Dim hp As New HistoryPoint
|
||||
|
||||
If whiteOrBlackList Is Nothing Then whiteOrBlackList = New MemberBlackList
|
||||
Dim isWhiteList As Boolean = TypeOf whiteOrBlackList Is MemberWhiteList
|
||||
|
||||
If flags = BindingFlags.Default Then
|
||||
flags = BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.NonPublic
|
||||
End If
|
||||
If membersToStore = ObjectValueType.None Then
|
||||
membersToStore = ObjectValueType.Field Or ObjectValueType.Property
|
||||
End If
|
||||
|
||||
For Each obj As Object In objs
|
||||
If (membersToStore And ObjectValueType.Field) = ObjectValueType.Field Then
|
||||
|
||||
For Each fi As FieldInfo In obj.GetType.GetFields(flags)
|
||||
|
||||
Dim contains As Boolean = CType(whiteOrBlackList, List(Of String)).Contains(fi.Name)
|
||||
If If(isWhiteList, contains, Not contains) Then
|
||||
|
||||
Dim os As New ObjectState
|
||||
os.Object = obj
|
||||
os.MemberName = fi.Name
|
||||
os.MemberType = ObjectValueType.Field
|
||||
os.MemberFlags = flags
|
||||
os.ValueToPatch = fi.GetValue(obj)
|
||||
hp.Entries.Add(os)
|
||||
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
End If
|
||||
|
||||
If (membersToStore And ObjectValueType.Property) = ObjectValueType.Property Then
|
||||
|
||||
For Each pi As PropertyInfo In obj.GetType.GetProperties(flags)
|
||||
|
||||
Dim contains As Boolean = CType(whiteOrBlackList, List(Of String)).Contains(pi.Name)
|
||||
If If(isWhiteList, contains, Not contains) Then
|
||||
|
||||
Dim os As New ObjectState
|
||||
os.Object = obj
|
||||
os.MemberName = pi.Name
|
||||
os.MemberType = ObjectValueType.Property
|
||||
os.MemberFlags = flags
|
||||
os.ValueToPatch = pi.GetValue(obj)
|
||||
hp.Entries.Add(os)
|
||||
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
End If
|
||||
Next
|
||||
|
||||
Return hp
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Combines some History Points to one.
|
||||
''' </summary>
|
||||
''' <param name="hps">An array of History Points to combine.</param>
|
||||
''' <returns>One History Point that contains all Data of inputted History Points.</returns>
|
||||
Public Shared Function Concat(ParamArray hps As HistoryPoint()) As HistoryPoint
|
||||
Return Concat(hps.FirstOrDefault?.Name, hps)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Combines some History Points to one.
|
||||
''' </summary>
|
||||
''' <param name="hps">An array of History Points to combine.</param>
|
||||
''' <returns>One History Point that contains all Data of inputted History Points.</returns>
|
||||
Public Shared Function Concat(newName As String, ParamArray hps As HistoryPoint()) As HistoryPoint
|
||||
Dim hp As New HistoryPoint
|
||||
|
||||
For Each _hp As HistoryPoint In hps
|
||||
hp.Entries.AddRange(_hp.Entries)
|
||||
Next
|
||||
|
||||
Return hp
|
||||
End Function
|
||||
|
||||
End Class
|
||||
|
||||
End Namespace
|
||||
31
Pilz.Collections/SimpleHistory/MemberLists.cs
Normal file
31
Pilz.Collections/SimpleHistory/MemberLists.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
namespace Pilz.Collections.SimpleHistory;
|
||||
|
||||
/// <summary>
|
||||
/// List contianing member names to include.
|
||||
/// </summary>
|
||||
public class MemberWhiteList : List<string>
|
||||
{
|
||||
|
||||
public MemberWhiteList() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public MemberWhiteList(string[] entries) : base(entries)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// List contianing member names to exclude
|
||||
/// </summary>
|
||||
public class MemberBlackList : List<string>
|
||||
{
|
||||
|
||||
public MemberBlackList() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public MemberBlackList(string[] entries) : base(entries)
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
Namespace SimpleHistory
|
||||
|
||||
''' <summary>
|
||||
''' List contianing member names to include.
|
||||
''' </summary>
|
||||
Public Class MemberWhiteList
|
||||
Inherits List(Of String)
|
||||
|
||||
Public Sub New()
|
||||
MyBase.New
|
||||
End Sub
|
||||
|
||||
Public Sub New(entries As String())
|
||||
MyBase.New(entries)
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
''' <summary>
|
||||
''' List contianing member names to exclude
|
||||
''' </summary>
|
||||
Public Class MemberBlackList
|
||||
Inherits List(Of String)
|
||||
|
||||
Public Sub New()
|
||||
MyBase.New
|
||||
End Sub
|
||||
|
||||
Public Sub New(entries As String())
|
||||
MyBase.New(entries)
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
End Namespace
|
||||
176
Pilz.Collections/SimpleHistory/ObjectAction.cs
Normal file
176
Pilz.Collections/SimpleHistory/ObjectAction.cs
Normal file
@@ -0,0 +1,176 @@
|
||||
using System.Reflection;
|
||||
|
||||
namespace Pilz.Collections.SimpleHistory;
|
||||
|
||||
public class ObjectAction : ObjectBase
|
||||
{
|
||||
public object? Object { get; set; } = null;
|
||||
public List<object> ParametersUndo { get; } = [];
|
||||
public List<object> ParametersRedo { get; } = [];
|
||||
public MethodInfo? MethodUndo { get; set; } = null;
|
||||
public MethodInfo? MethodRedo { get; set; } = null;
|
||||
public bool AutogenerateObject { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new Instance of Object Action.
|
||||
/// </summary>
|
||||
public ObjectAction()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new Instance of Object Action.
|
||||
/// </summary>
|
||||
/// <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
/// <param name="methodNameUndo">The name of the methode to call on Undo.</param>
|
||||
/// <param name="methodNameRedo">The name of the methode to call on Redo.</param>
|
||||
public ObjectAction(object obj, string methodNameUndo, string methodNameRedo) : this(obj, methodNameUndo, methodNameRedo, [], [], BindingFlags.Default, BindingFlags.Default)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new Instance of Object Action.
|
||||
/// </summary>
|
||||
/// <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
/// <param name="methodNameUndo">The name of the methode to call on Undo.</param>
|
||||
/// <param name="methodNameRedo">The name of the methode to call on Redo.</param>
|
||||
/// <param name="paramsUndo">The parameters for calling the methode on Undo.</param>
|
||||
/// <param name="paramsRedo">The parameters for calling the methode on Redo.</param>
|
||||
public ObjectAction(object obj, string methodNameUndo, string methodNameRedo, object[] paramsUndo, object[] paramsRedo) : this(obj, methodNameUndo, methodNameRedo, paramsUndo, paramsRedo, BindingFlags.Default, BindingFlags.Default)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new Instance of Object Action.
|
||||
/// </summary>
|
||||
/// <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
/// <param name="methodNameUndo">The name of the methode to call on Undo.</param>
|
||||
/// <param name="methodNameRedo">The name of the methode to call on Redo.</param>
|
||||
/// <param name="paramsUndo">The parameters for calling the methode on Undo.</param>
|
||||
/// <param name="paramsRedo">The parameters for calling the methode on Redo.</param>
|
||||
/// <param name="methodFlagsUndo">The Binding Flags of Methode on Undo.</param>
|
||||
/// <param name="methodFlagsRedo">The Binding Flags of Methode on Redo.</param>
|
||||
public ObjectAction(object obj, string methodNameUndo, string methodNameRedo, object[] paramsUndo, object[] paramsRedo, BindingFlags methodFlagsUndo, BindingFlags methodFlagsRedo)
|
||||
{
|
||||
Object = obj;
|
||||
ParametersUndo.AddRange(paramsUndo);
|
||||
ParametersRedo.AddRange(paramsRedo);
|
||||
MethodUndo = GetMethodInfo(obj, methodNameUndo, GetFlags(methodFlagsUndo));
|
||||
MethodRedo = GetMethodInfo(obj, methodNameRedo, GetFlags(methodFlagsRedo));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new Instance of Object Action.
|
||||
/// </summary>
|
||||
/// <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
/// <param name="methodNameUndo">The name of the methode to call on Undo.</param>
|
||||
/// <param name="methodNameRedo">The name of the methode to call on Redo.</param>
|
||||
/// <param name="methodFlagsUndo">The Binding Flags of Methode on Undo.</param>
|
||||
/// <param name="methodFlagsRedo">The Binding Flags of Methode on Redo.</param>
|
||||
public ObjectAction(object obj, string methodNameUndo, string methodNameRedo, BindingFlags methodFlagsUndo, BindingFlags methodFlagsRedo) : this(obj, methodNameUndo, methodNameRedo, [], [], methodFlagsUndo, methodFlagsRedo)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new Instance of Object Action.
|
||||
/// </summary>
|
||||
/// <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
/// <param name="methodUndo">The MethodInfo of the methode to call on Undo.</param>
|
||||
/// <param name="methodRedo">The MethodInfo of the methode to call on Redo.</param>
|
||||
public ObjectAction(object obj, MethodInfo methodUndo, MethodInfo methodRedo)
|
||||
{
|
||||
Object = obj;
|
||||
MethodUndo = methodUndo;
|
||||
MethodRedo = methodRedo;
|
||||
}
|
||||
/// <summary>
|
||||
/// Creates a new Instance of Object Action.
|
||||
/// </summary>
|
||||
/// <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
/// <param name="methodUndo">The MethodInfo of the methode to call on Undo.</param>
|
||||
/// <param name="methodRedo">The MethodInfo of the methode to call on Redo.</param>
|
||||
/// <param name="paramsUndo">The parameters for calling the methode on Undo.</param>
|
||||
/// <param name="paramsRedo">The parameters for calling the methode on Redo.</param>
|
||||
public ObjectAction(object obj, MethodInfo methodUndo, MethodInfo methodRedo, object[] paramsUndo, object[] paramsRedo) : this(obj, methodUndo, methodRedo)
|
||||
{
|
||||
ParametersUndo.AddRange(paramsUndo);
|
||||
ParametersRedo.AddRange(paramsRedo);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new Instance of Object Action.
|
||||
/// </summary>
|
||||
/// <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
/// <param name="methodUndo">The Delegate of the methode to call on Undo.</param>
|
||||
/// <param name="methodRedo">The Delegate of the methode to call on Redo.</param>
|
||||
public ObjectAction(object obj, Delegate methodUndo, Delegate methodRedo)
|
||||
{
|
||||
Object = obj;
|
||||
MethodUndo = methodUndo.Method;
|
||||
MethodRedo = methodRedo.Method;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new Instance of Object Action.
|
||||
/// </summary>
|
||||
/// <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
/// <param name="methodUndo">The Delegate of the methode to call on Undo.</param>
|
||||
/// <param name="methodRedo">The Delegate of the methode to call on Redo.</param>
|
||||
/// <param name="paramsUndo">The parameters for calling the methode on Undo.</param>
|
||||
/// <param name="paramsRedo">The parameters for calling the methode on Redo.</param>
|
||||
public ObjectAction(object obj, Delegate methodUndo, Delegate methodRedo, object[] paramsUndo, object[] paramsRedo) : this(obj, methodUndo, methodRedo)
|
||||
{
|
||||
ParametersUndo.AddRange(paramsUndo);
|
||||
ParametersRedo.AddRange(paramsRedo);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new Instance of Object Action.
|
||||
/// </summary>
|
||||
/// <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
/// <param name="methodUndo">The Action of the methode to call on Undo.</param>
|
||||
/// <param name="methodRedo">The Action of the methode to call on Redo.</param>
|
||||
public ObjectAction(object obj, Action methodUndo, Action methodRedo)
|
||||
{
|
||||
Object = obj;
|
||||
MethodUndo = methodUndo.Method;
|
||||
MethodRedo = methodRedo.Method;
|
||||
}
|
||||
|
||||
private static BindingFlags GetFlags(BindingFlags flags)
|
||||
{
|
||||
if (flags == BindingFlags.Default)
|
||||
flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
|
||||
return flags;
|
||||
}
|
||||
|
||||
private static MethodInfo? GetMethodInfo(object obj, string name, BindingFlags flags)
|
||||
{
|
||||
return obj.GetType().GetMethod(name, flags);
|
||||
}
|
||||
|
||||
internal void Undo()
|
||||
{
|
||||
CheckIfObjIsNothing(MethodUndo);
|
||||
MethodUndo?.Invoke(Object, ParametersUndo.ToArray());
|
||||
}
|
||||
|
||||
internal void Redo()
|
||||
{
|
||||
CheckIfObjIsNothing(MethodRedo);
|
||||
MethodRedo?.Invoke(Object, ParametersRedo.ToArray());
|
||||
}
|
||||
|
||||
private void CheckIfObjIsNothing(MethodInfo? mi)
|
||||
{
|
||||
if (mi is not null && !mi.IsStatic && AutogenerateObject)
|
||||
{
|
||||
if ((Object is null || Object.GetType() != mi.ReflectedType) && !mi.IsStatic)
|
||||
{
|
||||
var constructor = mi.ReflectedType?.GetConstructor(Type.EmptyTypes);
|
||||
var classObject = constructor?.Invoke([]);
|
||||
Object = classObject;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,164 +0,0 @@
|
||||
Imports System.Reflection
|
||||
|
||||
Namespace SimpleHistory
|
||||
|
||||
Public Class ObjectAction
|
||||
Inherits ObjectBase
|
||||
|
||||
Public Property [Object] As Object = Nothing
|
||||
Public ReadOnly Property ParametersUndo As New List(Of Object)
|
||||
Public ReadOnly Property ParametersRedo As New List(Of Object)
|
||||
Public Property MethodUndo As MethodInfo = Nothing
|
||||
Public Property MethodRedo As MethodInfo = Nothing
|
||||
Public Property AutogenerateObject As Boolean = True
|
||||
|
||||
''' <summary>
|
||||
''' Creates a new Instance of Object Action.
|
||||
''' </summary>
|
||||
Public Sub New()
|
||||
End Sub
|
||||
|
||||
Private Function GetMethodInfo(obj As Object, name As String, flags As BindingFlags)
|
||||
Return obj.GetType.GetMethod(name, flags)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Creates a new Instance of Object Action.
|
||||
''' </summary>
|
||||
''' <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
''' <param name="methodNameUndo">The name of the methode to call on Undo.</param>
|
||||
''' <param name="methodNameRedo">The name of the methode to call on Redo.</param>
|
||||
Public Sub New(obj As Object, methodNameUndo As String, methodNameRedo As String)
|
||||
Me.New(obj, methodNameUndo, methodNameRedo, {}, {}, BindingFlags.Default, BindingFlags.Default)
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' Creates a new Instance of Object Action.
|
||||
''' </summary>
|
||||
''' <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
''' <param name="methodNameUndo">The name of the methode to call on Undo.</param>
|
||||
''' <param name="methodNameRedo">The name of the methode to call on Redo.</param>
|
||||
''' <param name="paramsUndo">The parameters for calling the methode on Undo.</param>
|
||||
''' <param name="paramsRedo">The parameters for calling the methode on Redo.</param>
|
||||
Public Sub New(obj As Object, methodNameUndo As String, methodNameRedo As String, paramsUndo As Object(), paramsRedo As Object())
|
||||
Me.New(obj, methodNameUndo, methodNameRedo, paramsUndo, paramsRedo, BindingFlags.Default, BindingFlags.Default)
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' Creates a new Instance of Object Action.
|
||||
''' </summary>
|
||||
''' <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
''' <param name="methodNameUndo">The name of the methode to call on Undo.</param>
|
||||
''' <param name="methodNameRedo">The name of the methode to call on Redo.</param>
|
||||
''' <param name="paramsUndo">The parameters for calling the methode on Undo.</param>
|
||||
''' <param name="paramsRedo">The parameters for calling the methode on Redo.</param>
|
||||
''' <param name="methodFlagsUndo">The Binding Flags of Methode on Undo.</param>
|
||||
''' <param name="methodFlagsRedo">The Binding Flags of Methode on Redo.</param>
|
||||
Public Sub New(obj As Object, methodNameUndo As String, methodNameRedo As String, paramsUndo As Object(), paramsRedo As Object(), methodFlagsUndo As BindingFlags, methodFlagsRedo As BindingFlags)
|
||||
[Object] = obj
|
||||
ParametersUndo.AddRange(paramsUndo)
|
||||
ParametersRedo.AddRange(paramsRedo)
|
||||
MethodUndo = GetMethodInfo(obj, methodNameUndo, GetFlags(methodFlagsUndo))
|
||||
MethodRedo = GetMethodInfo(obj, methodNameRedo, GetFlags(methodFlagsRedo))
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' Creates a new Instance of Object Action.
|
||||
''' </summary>
|
||||
''' <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
''' <param name="methodNameUndo">The name of the methode to call on Undo.</param>
|
||||
''' <param name="methodNameRedo">The name of the methode to call on Redo.</param>
|
||||
''' <param name="methodFlagsUndo">The Binding Flags of Methode on Undo.</param>
|
||||
''' <param name="methodFlagsRedo">The Binding Flags of Methode on Redo.</param>
|
||||
Public Sub New(obj As Object, methodNameUndo As String, methodNameRedo As String, methodFlagsUndo As BindingFlags, methodFlagsRedo As BindingFlags)
|
||||
Me.New(obj, methodNameUndo, methodNameRedo, {}, {}, methodFlagsUndo, methodFlagsRedo)
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' Creates a new Instance of Object Action.
|
||||
''' </summary>
|
||||
''' <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
''' <param name="methodUndo">The MethodInfo of the methode to call on Undo.</param>
|
||||
''' <param name="methodRedo">The MethodInfo of the methode to call on Redo.</param>
|
||||
Public Sub New(obj As Object, methodUndo As MethodInfo, methodRedo As MethodInfo)
|
||||
[Object] = obj
|
||||
Me.MethodUndo = methodUndo
|
||||
Me.MethodRedo = methodRedo
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' Creates a new Instance of Object Action.
|
||||
''' </summary>
|
||||
''' <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
''' <param name="methodUndo">The MethodInfo of the methode to call on Undo.</param>
|
||||
''' <param name="methodRedo">The MethodInfo of the methode to call on Redo.</param>
|
||||
''' <param name="paramsUndo">The parameters for calling the methode on Undo.</param>
|
||||
''' <param name="paramsRedo">The parameters for calling the methode on Redo.</param>
|
||||
Public Sub New(obj As Object, methodUndo As MethodInfo, methodRedo As MethodInfo, paramsUndo As Object(), paramsRedo As Object())
|
||||
Me.New(obj, methodUndo, methodRedo)
|
||||
ParametersUndo.AddRange(paramsUndo)
|
||||
ParametersRedo.AddRange(paramsRedo)
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' Creates a new Instance of Object Action.
|
||||
''' </summary>
|
||||
''' <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
''' <param name="methodUndo">The Delegate of the methode to call on Undo.</param>
|
||||
''' <param name="methodRedo">The Delegate of the methode to call on Redo.</param>
|
||||
Public Sub New(obj As Object, methodUndo As [Delegate], methodRedo As [Delegate])
|
||||
[Object] = obj
|
||||
Me.MethodUndo = methodUndo.Method
|
||||
Me.MethodRedo = methodRedo.Method
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' Creates a new Instance of Object Action.
|
||||
''' </summary>
|
||||
''' <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
''' <param name="methodUndo">The Delegate of the methode to call on Undo.</param>
|
||||
''' <param name="methodRedo">The Delegate of the methode to call on Redo.</param>
|
||||
''' <param name="paramsUndo">The parameters for calling the methode on Undo.</param>
|
||||
''' <param name="paramsRedo">The parameters for calling the methode on Redo.</param>
|
||||
Public Sub New(obj As Object, methodUndo As [Delegate], methodRedo As [Delegate], paramsUndo As Object(), paramsRedo As Object())
|
||||
Me.New(obj, methodUndo, methodRedo)
|
||||
ParametersUndo.AddRange(paramsUndo)
|
||||
ParametersRedo.AddRange(paramsRedo)
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' Creates a new Instance of Object Action.
|
||||
''' </summary>
|
||||
''' <param name="obj">The Objects that contains the methodes to call.</param>
|
||||
''' <param name="methodUndo">The Action of the methode to call on Undo.</param>
|
||||
''' <param name="methodRedo">The Action of the methode to call on Redo.</param>
|
||||
Public Sub New(obj As Object, methodUndo As Action, methodRedo As Action)
|
||||
[Object] = obj
|
||||
Me.MethodUndo = methodUndo.Method
|
||||
Me.MethodRedo = methodRedo.Method
|
||||
End Sub
|
||||
|
||||
Private Function GetFlags(flags As BindingFlags) As BindingFlags
|
||||
If flags = BindingFlags.Default Then
|
||||
flags = BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.NonPublic
|
||||
End If
|
||||
Return flags
|
||||
End Function
|
||||
|
||||
Friend Sub Undo()
|
||||
CheckIfObjIsNothing(MethodUndo)
|
||||
MethodUndo?.Invoke([Object], ParametersUndo.ToArray)
|
||||
End Sub
|
||||
|
||||
Friend Sub Redo()
|
||||
CheckIfObjIsNothing(MethodRedo)
|
||||
MethodRedo?.Invoke([Object], ParametersRedo.ToArray)
|
||||
End Sub
|
||||
|
||||
Private Sub CheckIfObjIsNothing(mi As MethodInfo)
|
||||
If mi IsNot Nothing AndAlso Not mi.IsStatic AndAlso AutogenerateObject Then
|
||||
If (Me.Object Is Nothing OrElse Me.Object.GetType <> mi.ReflectedType) AndAlso Not mi.IsStatic Then
|
||||
Dim constructor As ConstructorInfo = mi.ReflectedType.GetConstructor(Type.EmptyTypes)
|
||||
Dim classObject As Object = constructor.Invoke({})
|
||||
Me.Object = classObject
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
|
||||
|
||||
End Namespace
|
||||
10
Pilz.Collections/SimpleHistory/ObjectBase.cs
Normal file
10
Pilz.Collections/SimpleHistory/ObjectBase.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace Pilz.Collections.SimpleHistory;
|
||||
|
||||
public class ObjectBase
|
||||
{
|
||||
public static int DefaultPriorityValue { get; set; } = 1000;
|
||||
|
||||
public int UndoPriority { get; set; } = DefaultPriorityValue;
|
||||
|
||||
public int RedoPriority { get; set; } = DefaultPriorityValue;
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
Namespace SimpleHistory
|
||||
|
||||
Public Class ObjectBase
|
||||
|
||||
Public Shared Property DefaultPriorityValue As Integer = 1000
|
||||
|
||||
Public Property UndoPriority As Integer = DefaultPriorityValue
|
||||
Public Property RedoPriority As Integer = DefaultPriorityValue
|
||||
|
||||
End Class
|
||||
|
||||
|
||||
End Namespace
|
||||
88
Pilz.Collections/SimpleHistory/ObjectState.cs
Normal file
88
Pilz.Collections/SimpleHistory/ObjectState.cs
Normal file
@@ -0,0 +1,88 @@
|
||||
using System.Reflection;
|
||||
|
||||
namespace Pilz.Collections.SimpleHistory;
|
||||
|
||||
public class ObjectState : ObjectBase
|
||||
{
|
||||
/// <summary>
|
||||
/// The Object including the members to patch.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public object? Object { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// The name of the Member to patch.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public string MemberName { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// The Value that should be patched.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public object? ValueToPatch { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// The member types to include at searching for the member.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ObjectValueType MemberType { get; set; } = ObjectValueType.Field;
|
||||
|
||||
/// <summary>
|
||||
/// The Binding Flags that are used at searching for the member.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public BindingFlags MemberFlags { get; set; } = BindingFlags.Default;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new Instance of ObjectState from input.
|
||||
/// </summary>
|
||||
/// <param name="obj">The Object including the members to patch.</param>
|
||||
/// <param name="valname">The name of the Member to patch.</param>
|
||||
/// <param name="valToPatch">The member types to include at searching for the member.</param>
|
||||
/// <param name="valtype">The Binding Flags that are used at searching for the member.</param>
|
||||
public ObjectState(object obj, string valname, object valToPatch, ObjectValueType valtype)
|
||||
{
|
||||
Object = obj;
|
||||
MemberName = valname;
|
||||
ValueToPatch = valToPatch;
|
||||
MemberType = valtype;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new Instance of ObjectState.
|
||||
/// </summary>
|
||||
public ObjectState()
|
||||
{
|
||||
}
|
||||
|
||||
internal void Patch()
|
||||
{
|
||||
if (Object is null)
|
||||
return;
|
||||
|
||||
var t = Object.GetType();
|
||||
|
||||
switch (MemberType)
|
||||
{
|
||||
case ObjectValueType.Field:
|
||||
if (t.GetField(MemberName, MemberFlags) is FieldInfo f)
|
||||
{
|
||||
var temp = f.GetValue(Object);
|
||||
f.SetValue(Object, ValueToPatch);
|
||||
ValueToPatch = temp;
|
||||
}
|
||||
break;
|
||||
case ObjectValueType.Property:
|
||||
if (t.GetProperty(MemberName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static) is PropertyInfo p)
|
||||
{
|
||||
var temp = p.GetValue(Object);
|
||||
p.SetValue(Object, ValueToPatch);
|
||||
ValueToPatch = temp;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new Exception("ValueType is invalid!");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
Imports System.Reflection
|
||||
|
||||
Namespace SimpleHistory
|
||||
|
||||
Public Class ObjectState
|
||||
Inherits ObjectBase
|
||||
|
||||
''' <summary>
|
||||
''' The Object including the members to patch.
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property [Object] As Object = Nothing
|
||||
''' <summary>
|
||||
''' The name of the Member to patch.
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property MemberName As String = ""
|
||||
''' <summary>
|
||||
''' The Value that should be patched.
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property ValueToPatch As Object = Nothing
|
||||
''' <summary>
|
||||
''' The member types to include at searching for the member.
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property MemberType As ObjectValueType = ObjectValueType.Field
|
||||
''' <summary>
|
||||
''' The Binding Flags that are used at searching for the member.
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property MemberFlags As BindingFlags = BindingFlags.Default
|
||||
|
||||
''' <summary>
|
||||
''' Creates a new Instance of ObjectState from input.
|
||||
''' </summary>
|
||||
''' <param name="obj">The Object including the members to patch.</param>
|
||||
''' <param name="valname">The name of the Member to patch.</param>
|
||||
''' <param name="valToPatch">The member types to include at searching for the member.</param>
|
||||
''' <param name="valtype">The Binding Flags that are used at searching for the member.</param>
|
||||
Public Sub New(obj As Object, valname As String, valToPatch As Object, valtype As ObjectValueType)
|
||||
[Object] = obj
|
||||
MemberName = valname
|
||||
ValueToPatch = valToPatch
|
||||
MemberType = valtype
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' Creates a new Instance of ObjectState.
|
||||
''' </summary>
|
||||
Public Sub New()
|
||||
End Sub
|
||||
|
||||
Friend Sub Patch()
|
||||
Dim t As Type = [Object].GetType
|
||||
Select Case MemberType
|
||||
Case ObjectValueType.Field
|
||||
Dim f As FieldInfo = t.GetField(MemberName, MemberFlags)
|
||||
Dim temp As Object = Nothing
|
||||
|
||||
If f IsNot Nothing Then
|
||||
temp = f.GetValue([Object])
|
||||
f.SetValue([Object], ValueToPatch)
|
||||
ValueToPatch = temp
|
||||
End If
|
||||
|
||||
Case ObjectValueType.Property
|
||||
Dim p As PropertyInfo = t.GetProperty(MemberName, BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Static)
|
||||
Dim temp As Object = Nothing
|
||||
|
||||
If p IsNot Nothing Then
|
||||
temp = p.GetValue([Object])
|
||||
p.SetValue([Object], ValueToPatch)
|
||||
ValueToPatch = temp
|
||||
End If
|
||||
|
||||
Case Else
|
||||
Throw New Exception("ValueType is invalid!")
|
||||
End Select
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
|
||||
End Namespace
|
||||
11
Pilz.Collections/SimpleHistory/ObjectValueType.cs
Normal file
11
Pilz.Collections/SimpleHistory/ObjectValueType.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
namespace Pilz.Collections.SimpleHistory;
|
||||
|
||||
/// <summary>
|
||||
/// Specify which member types you would include.
|
||||
/// </summary>
|
||||
public enum ObjectValueType
|
||||
{
|
||||
None = 0,
|
||||
Field = 1,
|
||||
Property = 2,
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
Namespace SimpleHistory
|
||||
|
||||
''' <summary>
|
||||
''' Specify which member types you would include.
|
||||
''' </summary>
|
||||
Public Enum ObjectValueType
|
||||
None = 0
|
||||
Field = 1
|
||||
[Property] = 2
|
||||
End Enum
|
||||
|
||||
End Namespace
|
||||
101
Pilz.Collections/SimpleHistory/SimpleHistory.cs
Normal file
101
Pilz.Collections/SimpleHistory/SimpleHistory.cs
Normal file
@@ -0,0 +1,101 @@
|
||||
namespace Pilz.Collections.SimpleHistory;
|
||||
|
||||
public class HistoryStack
|
||||
{
|
||||
private readonly Stack<HistoryPoint> stackPast = new();
|
||||
private readonly Stack<HistoryPoint> stackFuture = new();
|
||||
|
||||
/// <summary>
|
||||
/// Gets the count of history points.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public int ChangesCount => stackPast.Count;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current stack of all past HistoryPoints that are used for the Undo function.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public HistoryPoint[] PastHistoryPoints => [.. stackPast];
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current stack of all future HistoryPoints that are used for the Redo function.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public HistoryPoint[] FutureHistoryPoints => [.. stackFuture];
|
||||
|
||||
/// <summary>
|
||||
/// Checks if the History has past changes.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool HasChanges() => stackPast.Count > 0;
|
||||
|
||||
/// <summary>
|
||||
/// Patch Object States and call Undo Actions.
|
||||
/// </summary>
|
||||
public HistoryPoint? Undo()
|
||||
{
|
||||
HistoryPoint? ret;
|
||||
|
||||
if (stackPast.Count > 0)
|
||||
{
|
||||
var hp = stackPast.Pop();
|
||||
hp.Undo();
|
||||
stackFuture.Push(hp);
|
||||
ret = hp;
|
||||
}
|
||||
else
|
||||
ret = null;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Patch Object States and call Redo Actions.
|
||||
/// </summary>
|
||||
public HistoryPoint? Redo()
|
||||
{
|
||||
HistoryPoint? ret;
|
||||
|
||||
if (stackFuture.Count > 0)
|
||||
{
|
||||
var hp = stackFuture.Pop();
|
||||
hp.Redo();
|
||||
stackPast.Push(hp);
|
||||
ret = hp;
|
||||
}
|
||||
else
|
||||
ret = null;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clear the History.
|
||||
/// </summary>
|
||||
public void Clear()
|
||||
{
|
||||
stackPast.Clear();
|
||||
stackFuture.Clear();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Store a History Point.
|
||||
/// </summary>
|
||||
/// <param name="point">The History Point to add to the past changes.</param>
|
||||
/// <param name="newName">The name to set for the History Point.</param>
|
||||
public void Store(HistoryPoint point, string newName)
|
||||
{
|
||||
point.Name = newName;
|
||||
Store(point);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Store a History Point.
|
||||
/// </summary>
|
||||
/// <param name="point">The History Point to add to the past changes.</param>
|
||||
public void Store(HistoryPoint point)
|
||||
{
|
||||
stackPast.Push(point);
|
||||
stackFuture.Clear();
|
||||
}
|
||||
}
|
||||
@@ -1,111 +0,0 @@
|
||||
Namespace SimpleHistory
|
||||
|
||||
Public Class HistoryStack
|
||||
|
||||
Private stackPast As New Stack(Of HistoryPoint)
|
||||
Private stackFuture As New Stack(Of HistoryPoint)
|
||||
|
||||
''' <summary>
|
||||
''' Gets the count of history points.
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public ReadOnly Property ChangesCount As Boolean
|
||||
Get
|
||||
Return stackPast.Count
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' Gets the current stack of all past HistoryPoints that are used for the Undo function.
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public ReadOnly Property PastHistoryPoints As HistoryPoint()
|
||||
Get
|
||||
Return stackPast.ToArray
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' Gets the current stack of all future HistoryPoints that are used for the Redo function.
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public ReadOnly Property FutureHistoryPoints As HistoryPoint()
|
||||
Get
|
||||
Return stackFuture.ToArray
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' Checks if the History has past changes.
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Function HasChanges() As Boolean
|
||||
Return stackPast.Count > 0
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Patch Object States and call Undo Actions.
|
||||
''' </summary>
|
||||
Public Function Undo() As HistoryPoint
|
||||
Dim ret As HistoryPoint
|
||||
|
||||
If stackPast.Count > 0 Then
|
||||
Dim hp As HistoryPoint = stackPast.Pop
|
||||
hp.Undo()
|
||||
stackFuture.Push(hp)
|
||||
ret = hp
|
||||
Else
|
||||
ret = Nothing
|
||||
End If
|
||||
|
||||
Return ret
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Patch Object States and call Redo Actions.
|
||||
''' </summary>
|
||||
Public Function Redo() As HistoryPoint
|
||||
Dim ret As HistoryPoint
|
||||
|
||||
If stackFuture.Count > 0 Then
|
||||
Dim hp As HistoryPoint = stackFuture.Pop
|
||||
hp.Redo()
|
||||
stackPast.Push(hp)
|
||||
ret = hp
|
||||
Else
|
||||
ret = Nothing
|
||||
End If
|
||||
|
||||
Return ret
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Clear the History.
|
||||
''' </summary>
|
||||
Public Sub Clear()
|
||||
stackPast.Clear()
|
||||
stackFuture.Clear()
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' Store a History Point.
|
||||
''' </summary>
|
||||
''' <param name="point">The History Point to add to the past changes.</param>
|
||||
''' <param name="newName">The name to set for the History Point.</param>
|
||||
Public Sub Store(point As HistoryPoint, newName As String)
|
||||
point.Name = newName
|
||||
Store(point)
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' Store a History Point.
|
||||
''' </summary>
|
||||
''' <param name="point">The History Point to add to the past changes.</param>
|
||||
Public Sub Store(point As HistoryPoint)
|
||||
stackPast.Push(point)
|
||||
stackFuture.Clear()
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
|
||||
End Namespace
|
||||
18
Pilz.sln
18
Pilz.sln
@@ -9,7 +9,7 @@ Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz.Drawing", "Pilz.Drawin
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.UI", "Pilz.UI\Pilz.UI.csproj", "{3058E1D4-81CA-02C8-10A8-88FBF0A55201}"
|
||||
EndProject
|
||||
Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz.Collections", "Pilz.Collections\Pilz.Collections.vbproj", "{E4B2D294-8479-4014-942D-0B460E453DEA}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Collections", "Pilz.Collections\Pilz.Collections.csproj", "{569653FF-4821-0FE5-1675-C1386CD2094A}"
|
||||
EndProject
|
||||
Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz.Threading", "Pilz.Threading\Pilz.Threading.vbproj", "{D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}"
|
||||
EndProject
|
||||
@@ -77,14 +77,14 @@ Global
|
||||
{3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Release|x86.Build.0 = Release|Any CPU
|
||||
{E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{E4B2D294-8479-4014-942D-0B460E453DEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E4B2D294-8479-4014-942D-0B460E453DEA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E4B2D294-8479-4014-942D-0B460E453DEA}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{E4B2D294-8479-4014-942D-0B460E453DEA}.Release|x86.Build.0 = Release|Any CPU
|
||||
{569653FF-4821-0FE5-1675-C1386CD2094A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{569653FF-4821-0FE5-1675-C1386CD2094A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{569653FF-4821-0FE5-1675-C1386CD2094A}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{569653FF-4821-0FE5-1675-C1386CD2094A}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{569653FF-4821-0FE5-1675-C1386CD2094A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{569653FF-4821-0FE5-1675-C1386CD2094A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{569653FF-4821-0FE5-1675-C1386CD2094A}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{569653FF-4821-0FE5-1675-C1386CD2094A}.Release|x86.Build.0 = Release|Any CPU
|
||||
{D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
|
||||
231
Pilz.sln.bak
Normal file
231
Pilz.sln.bak
Normal file
@@ -0,0 +1,231 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.7.34018.315
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz", "Pilz\Pilz.csproj", "{9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}"
|
||||
EndProject
|
||||
Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz.Drawing", "Pilz.Drawing\Pilz.Drawing.vbproj", "{1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.UI", "Pilz.UI\Pilz.UI.csproj", "{3058E1D4-81CA-02C8-10A8-88FBF0A55201}"
|
||||
EndProject
|
||||
Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz.Collections", "Pilz.Collections\Pilz.Collections.vbproj", "{E4B2D294-8479-4014-942D-0B460E453DEA}"
|
||||
EndProject
|
||||
Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz.Threading", "Pilz.Threading\Pilz.Threading.vbproj", "{D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.IO", "Pilz.IO\Pilz.IO.csproj", "{877D980E-4F61-0E53-0E8B-5C50B7D1440C}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Win32", "Pilz.Win32\Pilz.Win32.csproj", "{B9C4C3E6-60CF-07E3-2FA4-A7036239D037}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Configuration", "Pilz.Configuration\Pilz.Configuration.csproj", "{1748E038-0A47-04E1-3C5E-FF9566DFFB7C}"
|
||||
EndProject
|
||||
Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz.Drawing.Drawing3D.OpenGLFactory", "Pilz.Drawing.Drawing3D.OpenGLRenderer\Pilz.Drawing.Drawing3D.OpenGLFactory.vbproj", "{5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}"
|
||||
EndProject
|
||||
Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz.Simple3DFileParser", "Pilz.Simple3DFileParser\Pilz.Simple3DFileParser.vbproj", "{AC955819-7910-450C-940C-7C1989483D4B}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.LicenseHelper", "Pilz.LicenseHelper\Pilz.LicenseHelper.csproj", "{67593FF7-C1D1-4529-98C4-61CBD0615F08}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Net", "Pilz.Net\Pilz.Net.csproj", "{F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Cryptography", "Pilz.Cryptography\Pilz.Cryptography.csproj", "{3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.UI.Telerik", "Pilz.UI.Telerik\Pilz.UI.Telerik.csproj", "{DF674119-CC28-40AA-968F-1E23D184A491}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Net.CloudProviders.Nextcloud", "Pilz.Net.CloudProviders.Nextcloud\Pilz.Net.CloudProviders.Nextcloud.csproj", "{A91E966B-3A82-4F32-A703-2FC1C7654FD1}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Plugins", "Pilz.Plugins\Pilz.Plugins.csproj", "{1170FCA6-192D-42FE-A79F-49EE03035554}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Plugins.Advanced", "Pilz.Plugins.Advanced\Pilz.Plugins.Advanced.csproj", "{72153EC8-B297-4A94-80AA-3574544BE8CF}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Gaming.Minecraft", "Pilz.Gaming.Minecraft\Pilz.Gaming.Minecraft.csproj", "{B285DA24-39C9-4BA2-AF3D-A1A05737268B}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Plugins.Advanced.UI", "Pilz.Plugins.Advanced.UI\Pilz.Plugins.Advanced.UI.csproj", "{5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Plugins.Advanced.UI.Telerik", "Pilz.Plugins.Advanced.UI.Telerik\Pilz.Plugins.Advanced.UI.Telerik.csproj", "{0A837BD6-A19C-4A05-A57D-CBB0CD64B244}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pilz.Extensions", "Pilz.Extensions\Pilz.Extensions.csproj", "{63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}.Release|x86.Build.0 = Release|Any CPU
|
||||
{1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Release|x86.Build.0 = Release|Any CPU
|
||||
{3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Release|x86.Build.0 = Release|Any CPU
|
||||
{E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{E4B2D294-8479-4014-942D-0B460E453DEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E4B2D294-8479-4014-942D-0B460E453DEA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E4B2D294-8479-4014-942D-0B460E453DEA}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{E4B2D294-8479-4014-942D-0B460E453DEA}.Release|x86.Build.0 = Release|Any CPU
|
||||
{D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Release|x86.Build.0 = Release|Any CPU
|
||||
{877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Release|x86.Build.0 = Release|Any CPU
|
||||
{B9C4C3E6-60CF-07E3-2FA4-A7036239D037}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B9C4C3E6-60CF-07E3-2FA4-A7036239D037}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B9C4C3E6-60CF-07E3-2FA4-A7036239D037}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{B9C4C3E6-60CF-07E3-2FA4-A7036239D037}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{B9C4C3E6-60CF-07E3-2FA4-A7036239D037}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B9C4C3E6-60CF-07E3-2FA4-A7036239D037}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B9C4C3E6-60CF-07E3-2FA4-A7036239D037}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{B9C4C3E6-60CF-07E3-2FA4-A7036239D037}.Release|x86.Build.0 = Release|Any CPU
|
||||
{1748E038-0A47-04E1-3C5E-FF9566DFFB7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1748E038-0A47-04E1-3C5E-FF9566DFFB7C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1748E038-0A47-04E1-3C5E-FF9566DFFB7C}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{1748E038-0A47-04E1-3C5E-FF9566DFFB7C}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{1748E038-0A47-04E1-3C5E-FF9566DFFB7C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1748E038-0A47-04E1-3C5E-FF9566DFFB7C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1748E038-0A47-04E1-3C5E-FF9566DFFB7C}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{1748E038-0A47-04E1-3C5E-FF9566DFFB7C}.Release|x86.Build.0 = Release|Any CPU
|
||||
{5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Release|x86.Build.0 = Release|Any CPU
|
||||
{AC955819-7910-450C-940C-7C1989483D4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AC955819-7910-450C-940C-7C1989483D4B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AC955819-7910-450C-940C-7C1989483D4B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{AC955819-7910-450C-940C-7C1989483D4B}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{AC955819-7910-450C-940C-7C1989483D4B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AC955819-7910-450C-940C-7C1989483D4B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AC955819-7910-450C-940C-7C1989483D4B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{AC955819-7910-450C-940C-7C1989483D4B}.Release|x86.Build.0 = Release|Any CPU
|
||||
{67593FF7-C1D1-4529-98C4-61CBD0615F08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{67593FF7-C1D1-4529-98C4-61CBD0615F08}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{67593FF7-C1D1-4529-98C4-61CBD0615F08}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{67593FF7-C1D1-4529-98C4-61CBD0615F08}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|x86.Build.0 = Release|Any CPU
|
||||
{F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}.Release|x86.Build.0 = Release|Any CPU
|
||||
{3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Release|x86.Build.0 = Release|Any CPU
|
||||
{DF674119-CC28-40AA-968F-1E23D184A491}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{DF674119-CC28-40AA-968F-1E23D184A491}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DF674119-CC28-40AA-968F-1E23D184A491}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{DF674119-CC28-40AA-968F-1E23D184A491}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{DF674119-CC28-40AA-968F-1E23D184A491}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DF674119-CC28-40AA-968F-1E23D184A491}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{DF674119-CC28-40AA-968F-1E23D184A491}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{DF674119-CC28-40AA-968F-1E23D184A491}.Release|x86.Build.0 = Release|Any CPU
|
||||
{A91E966B-3A82-4F32-A703-2FC1C7654FD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A91E966B-3A82-4F32-A703-2FC1C7654FD1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A91E966B-3A82-4F32-A703-2FC1C7654FD1}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{A91E966B-3A82-4F32-A703-2FC1C7654FD1}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{A91E966B-3A82-4F32-A703-2FC1C7654FD1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A91E966B-3A82-4F32-A703-2FC1C7654FD1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A91E966B-3A82-4F32-A703-2FC1C7654FD1}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{A91E966B-3A82-4F32-A703-2FC1C7654FD1}.Release|x86.Build.0 = Release|Any CPU
|
||||
{1170FCA6-192D-42FE-A79F-49EE03035554}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1170FCA6-192D-42FE-A79F-49EE03035554}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1170FCA6-192D-42FE-A79F-49EE03035554}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{1170FCA6-192D-42FE-A79F-49EE03035554}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{1170FCA6-192D-42FE-A79F-49EE03035554}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1170FCA6-192D-42FE-A79F-49EE03035554}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1170FCA6-192D-42FE-A79F-49EE03035554}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{1170FCA6-192D-42FE-A79F-49EE03035554}.Release|x86.Build.0 = Release|Any CPU
|
||||
{72153EC8-B297-4A94-80AA-3574544BE8CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{72153EC8-B297-4A94-80AA-3574544BE8CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{72153EC8-B297-4A94-80AA-3574544BE8CF}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{72153EC8-B297-4A94-80AA-3574544BE8CF}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{72153EC8-B297-4A94-80AA-3574544BE8CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{72153EC8-B297-4A94-80AA-3574544BE8CF}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{72153EC8-B297-4A94-80AA-3574544BE8CF}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{72153EC8-B297-4A94-80AA-3574544BE8CF}.Release|x86.Build.0 = Release|Any CPU
|
||||
{B285DA24-39C9-4BA2-AF3D-A1A05737268B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B285DA24-39C9-4BA2-AF3D-A1A05737268B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B285DA24-39C9-4BA2-AF3D-A1A05737268B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{B285DA24-39C9-4BA2-AF3D-A1A05737268B}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{B285DA24-39C9-4BA2-AF3D-A1A05737268B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B285DA24-39C9-4BA2-AF3D-A1A05737268B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B285DA24-39C9-4BA2-AF3D-A1A05737268B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{B285DA24-39C9-4BA2-AF3D-A1A05737268B}.Release|x86.Build.0 = Release|Any CPU
|
||||
{5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}.Release|x86.Build.0 = Release|Any CPU
|
||||
{0A837BD6-A19C-4A05-A57D-CBB0CD64B244}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0A837BD6-A19C-4A05-A57D-CBB0CD64B244}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0A837BD6-A19C-4A05-A57D-CBB0CD64B244}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{0A837BD6-A19C-4A05-A57D-CBB0CD64B244}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{0A837BD6-A19C-4A05-A57D-CBB0CD64B244}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0A837BD6-A19C-4A05-A57D-CBB0CD64B244}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0A837BD6-A19C-4A05-A57D-CBB0CD64B244}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{0A837BD6-A19C-4A05-A57D-CBB0CD64B244}.Release|x86.Build.0 = Release|Any CPU
|
||||
{63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {728F13B2-34E5-46C6-BB39-3203EE238C2A}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
Reference in New Issue
Block a user