diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Extensions/Office/Associations/Presentation/HyperCardDataFormat.uexml b/Content/UniversalEditor.Content.PlatformIndependent/Extensions/Office/Associations/Presentation/HyperCardDataFormat.uexml new file mode 100644 index 00000000..3276f8d4 --- /dev/null +++ b/Content/UniversalEditor.Content.PlatformIndependent/Extensions/Office/Associations/Presentation/HyperCardDataFormat.uexml @@ -0,0 +1,20 @@ + + + + + + + + *.wild + + + + + + + + + + + + diff --git a/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj b/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj index 8315fae1..9d5d248f 100644 --- a/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj +++ b/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj @@ -743,6 +743,7 @@ + @@ -808,6 +809,9 @@ + + + diff --git a/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/HyperCardDataFormat.cs b/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/HyperCardDataFormat.cs new file mode 100644 index 00000000..411c3de5 --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/HyperCardDataFormat.cs @@ -0,0 +1,72 @@ +// +// HyperCardDataFormat.cs +// +// Author: +// Michael Becker +// +// Copyright (c) 2020 Mike Becker's Software +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +using System; +using System.Collections.Generic; +using UniversalEditor.Accessors; +using UniversalEditor.ObjectModels.Chunked; +using UniversalEditor.Plugins.Office.DataFormats.Presentation.HyperCard.Internal.STAK; +using UniversalEditor.Plugins.Office.ObjectModels.Presentation; + +namespace UniversalEditor.Plugins.Office.DataFormats.Presentation.HyperCard +{ + public class HyperCardDataFormat : Internal.HyperCardChunkedDataFormat + { + private static DataFormatReference _dfr = null; + protected override DataFormatReference MakeReferenceInternal() + { + if (_dfr == null) + { + _dfr = new DataFormatReference(GetType()); + _dfr.Capabilities.Add(typeof(PresentationObjectModel), DataFormatCapabilities.All); + } + return _dfr; + } + protected override void BeforeLoadInternal(Stack objectModels) + { + base.BeforeLoadInternal(objectModels); + objectModels.Push(new ChunkedObjectModel()); + } + protected override void AfterLoadInternal(Stack objectModels) + { + base.AfterLoadInternal(objectModels); + + ChunkedObjectModel chunked = (objectModels.Pop() as ChunkedObjectModel); + PresentationObjectModel pres = (objectModels.Pop() as PresentationObjectModel); + + RIFFDataChunk chunk_stak = (chunked.Chunks["STAK"] as RIFFDataChunk); + STAKDataFormat stak_df = new STAKDataFormat(); + STAKObjectModel stak_om = new STAKObjectModel(); + + Document.Load(stak_om, stak_df, new MemoryAccessor(chunk_stak.Data)); + + + } + protected override void BeforeSaveInternal(Stack objectModels) + { + base.BeforeSaveInternal(objectModels); + + PresentationObjectModel pres = (objectModels.Pop() as PresentationObjectModel); + ChunkedObjectModel chunked = new ChunkedObjectModel(); + + objectModels.Push(chunked); + } + } +} diff --git a/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/HyperCardScript.cs b/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/HyperCardScript.cs new file mode 100644 index 00000000..d872abdb --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/HyperCardScript.cs @@ -0,0 +1,38 @@ +// +// HyperCardScript.cs +// +// Author: +// Michael Becker +// +// Copyright (c) 2020 Mike Becker's Software +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +using System; +namespace UniversalEditor.Plugins.Office.DataFormats.Presentation.HyperCard +{ + public class HyperCardScript + { + public static HyperCardScript Parse(string text) + { + return new HyperCardScript(text); + } + + public string Text { get; private set; } = null; + + private HyperCardScript(string text) + { + Text = text; + } + } +} diff --git a/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/HyperCardUserLevel.cs b/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/HyperCardUserLevel.cs new file mode 100644 index 00000000..a119b504 --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/HyperCardUserLevel.cs @@ -0,0 +1,35 @@ +// +// HyperCardUserLevel.cs +// +// Author: +// Michael Becker +// +// Copyright (c) 2020 Mike Becker's Software +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +namespace UniversalEditor.Plugins.Office.DataFormats.Presentation.HyperCard +{ + /// + /// Indicates the user level setting under which to run this stack. + /// + public enum HyperCardUserLevel : ushort + { + Browsing = 1, + Typing = 2, + Painting = 3, + Authoring = 4, + Scripting = 5 + } +} diff --git a/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/Internal/HyperCardChunkedDataFormat.cs b/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/Internal/HyperCardChunkedDataFormat.cs new file mode 100644 index 00000000..e1149e6f --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/Internal/HyperCardChunkedDataFormat.cs @@ -0,0 +1,64 @@ +// +// HyperCardChunkedDataFormat.cs +// +// Author: +// Michael Becker +// +// Copyright (c) 2020 Mike Becker's Software +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +using System; +using UniversalEditor.IO; +using UniversalEditor.ObjectModels.Chunked; + +namespace UniversalEditor.Plugins.Office.DataFormats.Presentation.HyperCard.Internal +{ + public class HyperCardChunkedDataFormat : DataFormat + { + private static DataFormatReference _dfr = null; + protected override DataFormatReference MakeReferenceInternal() + { + if (_dfr == null) + { + _dfr = base.MakeReferenceInternal(); + _dfr.Capabilities.Add(typeof(ChunkedObjectModel), DataFormatCapabilities.All); + } + return _dfr; + } + + protected override void LoadInternal(ref ObjectModel objectModel) + { + ChunkedObjectModel chunked = (objectModel as ChunkedObjectModel); + + Reader reader = Accessor.Reader; + reader.Endianness = Endianness.BigEndian; + + while (!reader.EndOfStream) + { + uint chunkSize = reader.ReadUInt32(); + string chunkName = reader.ReadFixedLengthString(4); + + RIFFDataChunk chunk = new RIFFDataChunk(); + chunk.ID = chunkName; + chunk.Data = reader.ReadBytes(chunkSize - 8); + chunked.Chunks.Add(chunk); + } + } + + protected override void SaveInternal(ObjectModel objectModel) + { + throw new NotImplementedException(); + } + } +} diff --git a/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/Internal/STAK/STAKDataFormat.cs b/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/Internal/STAK/STAKDataFormat.cs new file mode 100644 index 00000000..217e9672 --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/Internal/STAK/STAKDataFormat.cs @@ -0,0 +1,104 @@ +// +// STAKDataFormat.cs +// +// Author: +// Michael Becker +// +// Copyright (c) 2020 Mike Becker's Software +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +using System; +using UniversalEditor.IO; + +namespace UniversalEditor.Plugins.Office.DataFormats.Presentation.HyperCard.Internal.STAK +{ + public class STAKDataFormat : DataFormat + { + protected override void LoadInternal(ref ObjectModel objectModel) + { + STAKObjectModel stak = (objectModel as STAKObjectModel); + + Reader reader = Accessor.Reader; + reader.Endianness = Endianness.BigEndian; + + int blockId = reader.ReadInt32(); + byte[] unknown1 = reader.ReadBytes(32); + + stak.CardCount = reader.ReadUInt32(); + uint cardIDOne = reader.ReadUInt32(); // starting card? + uint listBlockID = reader.ReadUInt32(); + + byte[] unknown2 = reader.ReadBytes(16); + + stak.UserLevel = (HyperCardUserLevel)reader.ReadUInt16(); + ushort unknown3 = reader.ReadUInt16(); + ushort flags = reader.ReadUInt16(); // Bit 10 is cantPeek, 11 is cantAbort, 13 is privateAccess, 14 is cantDelete, 15 is cantModify + + byte[] unknown4 = reader.ReadBytes(18); + + // Three 4-byte NumVersion entries containing the HyperCard version numbers that created, last edited or compacted + // this stack. (A/N: I know the "documentation" says "three 4-byte", but it also says "16 bytes", so idk...) + uint[] numVersions = reader.ReadUInt32Array(4); + + byte[] unknown5 = reader.ReadBytes(328); // ??? + stak.Height = reader.ReadUInt16(); // the height, in pixels, of cards in this stack + stak.Width = reader.ReadUInt16(); // the width, in pixels, of cards in this stack + + byte[] unknown6 = reader.ReadBytes(260); + + uint patternCount = 40; + for (uint i = 0; i < patternCount; i++) + { + byte[] patternData = reader.ReadBytes(8); // raw data for an 8x8 bitmap, with one byte representing one row + } + + byte[] unknown7 = reader.ReadBytes(512); + + stak.Script = HyperCardScript.Parse(reader.ReadNullTerminatedString()); + } + + protected override void SaveInternal(ObjectModel objectModel) + { + STAKObjectModel stak = (objectModel as STAKObjectModel); + + Writer writer = Accessor.Writer; + writer.Endianness = Endianness.BigEndian; + + writer.WriteInt32(-1); // block id + writer.WriteBytes(new byte[32]); // unknown1 + + writer.WriteUInt32(stak.CardCount); + writer.WriteUInt32(0); // cardIDOne - starting card? + writer.WriteUInt32(0); // listBlockID + + writer.WriteBytes(new byte[16]); + + writer.WriteUInt16((ushort)stak.UserLevel); + + writer.WriteUInt16(0); // unknown3 + ushort flags = 0; + writer.WriteUInt16(flags); // Bit 10 is cantPeek, 11 is cantAbort, 13 is privateAccess, 14 is cantDelete, 15 is cantModify + + writer.WriteBytes(new byte[18]); // unknown4 + writer.WriteUInt32Array(new uint[4]); //versions + writer.WriteBytes(new byte[328]); // unknown5 + writer.WriteUInt16(stak.Height); + writer.WriteUInt16(stak.Width); + writer.WriteBytes(new byte[260]); // unknown6 + writer.WriteBytes(new byte[40 * 8]); // pattern data + writer.WriteBytes(new byte[512]); + writer.WriteNullTerminatedString(stak.Script.Text); + } + } +} diff --git a/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/Internal/STAK/STAKObjectModel.cs b/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/Internal/STAK/STAKObjectModel.cs new file mode 100644 index 00000000..da31874b --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Office/DataFormats/Presentation/HyperCard/Internal/STAK/STAKObjectModel.cs @@ -0,0 +1,61 @@ +// +// STAKObjectModel.cs +// +// Author: +// Michael Becker +// +// Copyright (c) 2020 Mike Becker's Software +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +using System; +namespace UniversalEditor.Plugins.Office.DataFormats.Presentation.HyperCard.Internal.STAK +{ + public class STAKObjectModel : ObjectModel + { + /// + /// Gets or sets the script associated with this stack. + /// + /// The script associated with this stack. + public HyperCardScript Script { get; set; } = null; + + /// + /// Gets or sets the width, in pixels, of cards in this stack. + /// + /// The width, in pixels, of cards in this stack. + public ushort Width { get; set; } = 320; + /// + /// Gets or sets the height, in pixels, of cards in this stack. + /// + /// The height, in pixels, of cards in this stack. + public ushort Height { get; set; } = 240; + + /// + /// Gets or sets the number of cards in this stack. + /// + /// The number of cards in this stack. + public uint CardCount { get; set; } = 0; + /// + /// Gets or sets the user level setting under which to run this stack. + /// + /// The user level setting under which to run this stack. + public HyperCardUserLevel UserLevel { get; set; } = HyperCardUserLevel.Scripting; + + public override void Clear() + { + } + public override void CopyTo(ObjectModel where) + { + } + } +} diff --git a/Plugins/UniversalEditor.Plugins.Office/ObjectModels/Presentation/PresentationObjectModel.cs b/Plugins/UniversalEditor.Plugins.Office/ObjectModels/Presentation/PresentationObjectModel.cs new file mode 100644 index 00000000..4ebdba2d --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Office/ObjectModels/Presentation/PresentationObjectModel.cs @@ -0,0 +1,56 @@ +// +// PresentationObjectModel.cs +// +// Author: +// Michael Becker +// +// Copyright (c) 2020 Mike Becker's Software +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +using System; + +namespace UniversalEditor.Plugins.Office.ObjectModels.Presentation +{ + public class PresentationObjectModel : ObjectModel + { + private static ObjectModelReference _omr = null; + protected override ObjectModelReference MakeReferenceInternal() + { + if (_omr == null) + { + _omr = base.MakeReferenceInternal(); + _omr.Title = "Presentation"; + _omr.Path = new string[] { "General", "Office", "Presentation" }; + } + return _omr; + } + + public Slide.SlideCollection Slides { get; } = new Slide.SlideCollection(); + + public override void Clear() + { + Slides.Clear(); + } + + public override void CopyTo(ObjectModel where) + { + PresentationObjectModel clone = (where as PresentationObjectModel); + for (int i = 0; i < Slides.Count; i++) + { + clone.Slides.Add(Slides[i].Clone() as Slide); + } + } + } +} diff --git a/Plugins/UniversalEditor.Plugins.Office/ObjectModels/Presentation/Slide.cs b/Plugins/UniversalEditor.Plugins.Office/ObjectModels/Presentation/Slide.cs new file mode 100644 index 00000000..a6efe728 --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Office/ObjectModels/Presentation/Slide.cs @@ -0,0 +1,38 @@ +// +// Slide.cs +// +// Author: +// Michael Becker +// +// Copyright (c) 2020 Mike Becker's Software +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +using System; +namespace UniversalEditor.Plugins.Office.ObjectModels.Presentation +{ + public class Slide : ICloneable + { + public class SlideCollection + : System.Collections.ObjectModel.Collection + { + + } + + public object Clone() + { + Slide clone = new Slide(); + return clone; + } + } +} diff --git a/Plugins/UniversalEditor.Plugins.Office/Properties/AssemblyInfo.cs b/Plugins/UniversalEditor.Plugins.Office/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..e6bae384 --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Office/Properties/AssemblyInfo.cs @@ -0,0 +1,46 @@ +// +// AssemblyInfo.cs +// +// Author: +// Michael Becker +// +// Copyright (c) 2020 Mike Becker's Software +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle("UniversalEditor.Plugins.Office")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Mike Becker's Software")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("Mike Becker's Software")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion("1.0.*")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] diff --git a/Plugins/UniversalEditor.Plugins.Office/UniversalEditor.Plugins.Office.csproj b/Plugins/UniversalEditor.Plugins.Office/UniversalEditor.Plugins.Office.csproj new file mode 100644 index 00000000..02006e35 --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Office/UniversalEditor.Plugins.Office.csproj @@ -0,0 +1,64 @@ + + + + Debug + AnyCPU + {5D62192C-EB3E-4E73-A440-C53579B6EB47} + Library + UniversalEditor.Plugins.Office + UniversalEditor.Plugins.Office + v4.7 + 4.0.2019.12 + + + true + full + false + ..\..\Output\Debug\Plugins + DEBUG; + prompt + 4 + false + + + true + ..\..\Output\Release\Plugins + prompt + 4 + false + + + + + + + + + + + + + + + + + + + + + + + + + + + {2D4737E6-6D95-408A-90DB-8DFF38147E85} + UniversalEditor.Core + + + {30467E5C-05BC-4856-AADC-13906EF4CADD} + UniversalEditor.Essential + + + + \ No newline at end of file diff --git a/UniversalEditor.sln b/UniversalEditor.sln index d8f54c93..a256a290 100644 --- a/UniversalEditor.sln +++ b/UniversalEditor.sln @@ -173,6 +173,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalEditor.Plugins.Des EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalEditor.Plugins.NewWorldComputing.UserInterface", "Plugins.UserInterface\UniversalEditor.Plugins.NewWorldComputing.UserInterface\UniversalEditor.Plugins.NewWorldComputing.UserInterface.csproj", "{03B0D6C8-1C3C-4972-B102-3350FB628C5D}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalEditor.Plugins.Office", "Plugins\UniversalEditor.Plugins.Office\UniversalEditor.Plugins.Office.csproj", "{5D62192C-EB3E-4E73-A440-C53579B6EB47}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalEditor.Plugins.Office.UserInterface", "Plugins.UserInterface\UniversalEditor.Plugins.Office.UserInterface\UniversalEditor.Plugins.Office.UserInterface.csproj", "{317CDFBC-9B41-4157-B2C0-D37E2BCEB42B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -501,6 +505,14 @@ Global {03B0D6C8-1C3C-4972-B102-3350FB628C5D}.Debug|Any CPU.Build.0 = Debug|Any CPU {03B0D6C8-1C3C-4972-B102-3350FB628C5D}.Release|Any CPU.ActiveCfg = Release|Any CPU {03B0D6C8-1C3C-4972-B102-3350FB628C5D}.Release|Any CPU.Build.0 = Release|Any CPU + {5D62192C-EB3E-4E73-A440-C53579B6EB47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5D62192C-EB3E-4E73-A440-C53579B6EB47}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5D62192C-EB3E-4E73-A440-C53579B6EB47}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5D62192C-EB3E-4E73-A440-C53579B6EB47}.Release|Any CPU.Build.0 = Release|Any CPU + {317CDFBC-9B41-4157-B2C0-D37E2BCEB42B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {317CDFBC-9B41-4157-B2C0-D37E2BCEB42B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {317CDFBC-9B41-4157-B2C0-D37E2BCEB42B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {317CDFBC-9B41-4157-B2C0-D37E2BCEB42B}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2} = {05D15661-E684-4EC9-8FBD-C014BA433CC5} @@ -582,6 +594,8 @@ Global {BCEB66A6-24E3-4877-B8D4-83FCF8EC748B} = {2ED32D16-6C06-4450-909A-40D32DA67FB4} {08168BEA-E652-4493-8D89-5AB72B225841} = {7B535D74-5496-4802-B809-89ED88274A91} {03B0D6C8-1C3C-4972-B102-3350FB628C5D} = {7B535D74-5496-4802-B809-89ED88274A91} + {5D62192C-EB3E-4E73-A440-C53579B6EB47} = {2ED32D16-6C06-4450-909A-40D32DA67FB4} + {317CDFBC-9B41-4157-B2C0-D37E2BCEB42B} = {7B535D74-5496-4802-B809-89ED88274A91} EndGlobalSection GlobalSection(MonoDevelopProperties) = preSolution Policies = $0 @@ -589,6 +603,7 @@ Global $1.NoTabsAfterNonTabs = True $1.scope = text/plain $1.FileWidth = 80 + $1.EolMarker = Unix $0.DotNetNamingPolicy = $2 $2.DirectoryNamespaceAssociation = PrefixedHierarchical $0.TextStylePolicy = $3